如何组装便携式网络设备
“Cyberdeck”(意为“网络空间设备”)这一概念最早于20世纪80年代出现在科幻爱好者中,当时人们设想使用便携式计算机来入侵企业网络,甚至将意识接入虚拟矩阵。如今,这种坚固、可携带、适用于野外环境且无需联网的设备正受到一类新类型用户的青睐,包括喜爱TikTok的#小屋风潮用户——他们喜欢在户外安静地坐着,观察蚂蚁、聆听鸟鸣。
这些对大型科技、大数据和大型AI模型持保留态度的用户,被一种专为特定用途设计、可搭配传感器甚至小型AI模型、完全离线运行,并能全面掌控个人数据共享方式的设备所吸引。
受TikTok上以女性为主的网络社区启发,他们将紧凑型设备、小马宝莉收纳盒、Polly Pocket包以及旧款贝壳式钱包重新利用,打造了定制化的计算设备。我们推出了B.L.O.O.M.,这一项目汲取了格林纳尔大学开创的野外笔记科学传统,融合了赛博装置(cyberdeck)理念。
B.L.O.O.M. 的全称是“连接本地观察,公开测绘”(Bridging Local Observations, Openly Mapped)。该系统设计为离线运行,让全球的自然爱好者能够记录自己的野外笔记,并在恢复网络连接后即时同步至云端,从而形成开放、众包的本地动植物野外记录资源。一个专为该项目开发的配套网页应用,可将这些笔记以标准的格林纳尔格式收集起来,方便用户阅读与学习。
本项目属于我所创立的非营利组织Her AI Studio课程体系的一部分。该组织旨在鼓励更多女性进入人工智能工程领域,通过包容性实践实现“更好地构建AI,更高效地构建AI”。更多信息请访问heraistudio.org。本套工具的基础组件属于我们为该计划学生提供的“AI工具包”(AI Kit)内容。该设备将在第5周和第6周进行复制,之后学生将取回自己的套件,并对其进行个性化改造,以完成最终项目。
硬件
包含一个小型HDMI屏幕,用于记录现场笔记、照片和草图;迷你蓝牙键盘和鼠标;用于捕捉和分析鸟类鸣叫的麦克风;以及用于拍摄照片的相机。其“大脑”是Arduino Uno Q,具备足够的电力来运行小型AI模型,电源由移动电源提供。
软件
内置自研的AI音频模型,用于解析鸟类鸣叫;本地大语言模型(LLM)“野外助手”,可与用户聊天获取更多信息并回答问题;本地网页应用在设备上运行,用于收集印象和笔记;用户可根据需要按下按钮,在恢复网络连接后将笔记推送到云端。配套的网页应用会同步这些字段笔记,通过Netlify函数临时上传至GitHub,并转换为Markdown文件,供网站使用。
外壳:延续了重复使用现有外壳设计的传统,我使用了在eBay上找到的兰蔻化妆品“旅行箱”作为外壳,侧面开一个小孔用于安装摄像头。由于本项目旨在激励并教育自然爱好者走出户外,分享他们对大自然的热爱,因此我们决定减少塑料使用,尽可能重复利用现有材料。我还重新利用了手头现有的电线,设计了一个模块化分层的外壳系统,以便可以方便地更换部件、为移动电源充电,并进行其他必要的调整。火车箱体内的搁板采用再生泡沫和布料制成,提供了坚固且模块化的内部结构。
注意:请小心使用泡沫或布料材质的外壳,确保电子设备不会过热!你也可以尝试用回收的藤编垫或其他透气材料制作搁板。
由于这个机箱有点高,顶部留有空间,可以放一些“离线”小物件,比如用于存放标本的叶片/花朵压板、放大镜和零食!选择你的网络设备机箱非常重要!我为此制作了这个TikTok视频。
接下来我们一步步来讲解如何组装这个网络设备机箱。
1. 组装并连接各个组件
这个项目的“大脑”是Arduino Uno Q,4GB内存。一位同事推荐它作为学习AI模型的绝佳设备,因为它足以在设备上运行轻量级大语言模型(LLM)和其他AI模型。我们希望这个网络工作台能在野外使用,因此需要构建以下内容:
- 一个音频模型和麦克风,能够“听到”鸟类鸣叫,并通过AI识别它们
- 一台摄像头,用于拍摄有趣的动植物照片
- 一张素描本,搭配蓝牙鼠标实现快速绘图(注意:目前使用的是鼠标,建议未来升级为支持真正触摸屏的更好显示器!)
- 一个笔记区域,用于记录观察结果,配备蓝牙键盘进行打字
- 一个针对小型HDMI连接显示器优化的网页应用,用于收集上述所有信息
- 电源(我重新利用了一个移动电源),并配备合适的线缆
- 一个USB集线器,用于连接所有外设
- 一个专门设计的外壳,方便插入、拔出组件,便于通电并安全携带
在开发阶段,不必担心将所有部件固定进外壳中。先确保所有外设都已连接好。
显示器:将您的HDMI显示器通过HDMI接口连接到USB集线器,再将显示器的微型USB接口插入集线器的一个USB-A接口。
麦克风:将微型麦克风插入USB集线器的USB-A接口。
摄像头:将摄像头插入USB集线器的USB-A接口。
电源:将移动电源插入USB集线器的USB-C接口。
Uno:将集线器内置的USB-C插头插入Uno的USB接口。
打开Uno并启动设备。在此步骤中,请保持设备连接网络,以便后续轻松进行代码刷写。由于您需要登录Uno上的Debian实例并连接两个蓝牙设备,因此接下来可能需要暂时使用连接到USB集线器的有线鼠标和键盘。请使用Debian界面中的小型蓝牙图标,配对您的小型键盘和鼠标。现在您可以断开任何有线鼠标/键盘,重新释放集线器上宝贵的USB接口!
2. 闪存软件
该设置可作为独立计算机良好运行(任何网络设备项目的核心,以经典的“SBC”模式运行)。但我们希望为这个设备添加一些自定义功能,使其真正能够用于野外观测。我使用 App Lab 构建了基础代码:一个小型、适合横向操作的网页应用,界面简洁,以便快速捕捉照片、草图和笔记。
但我在开发过程中发现了一个问题:基础 Web UI 模块在 Debian 系统上运行不稳定——当在 Uno 上运行 App Lab 并调用 Chromium 时,弹出窗口无法进入前台。这是一个棘手的问题,因为我的电脑上运行正常。因此,我不得不开发一个定制的“kiosk”模块,以在 kiosk 模式下启动 Chromium 浏览器:
这种方式能有效让用户专注于当前任务——打开机箱顶部,快速记录笔记,同时可以拍照、绘制草图或输入文字。
本应用中使用的其他 App Lab 模块包括:
•Web UI —— 用于渲染 kiosk 打开的用户界面
•LLM —— 提供聊天接口支持,通过 App Lab 将 Gemma 模型下载到 Uno
•音频分类——这个模块让麦克风能够捕捉鸟鸣声。但要做到这一点,你需要一个定制的人工智能模型,接下来就让我们来构建它吧!
3. 构建自定义AI模型
App Lab 与第三方服务 Edge Impulse 有良好的连接,你可以使用其免费版来训练自己的自定义模型,或重新训练他人的模型。
我在 Edge Impulse 的社区展示中找到了一首鸟鸣模型,但其数据不平衡且数量极少。我们需要一种更有效的方法来识别鸟类。于是,我按照以下步骤操作:
- 复制该数据集
- 去除无用的数据
- 从知名野生动物音频数据集 xeno-canto 中下载至少每种鸟类(蓝鸦、哀鸽和红雀)20个示例的鸣叫声
- 将所有音频样本转换为 WAV 文件
- 将每个文件组上传至 Edge Impulse 数据集,并按适当标签分类
- 重新平衡训练/测试数据划分,并对模型进行再训练
- 将这个新模型连接到我的 App Lab 应用上。你可以在这里克隆并立即使用!
现在,如果你幸运地在使用你的网络设备时听到美妙的鸟鸣,麦克风就能捕捉到声音,只需按下设备上的按钮,即可识别鸟类并将其数据记录为一条音符。
4. 连接网络应用
B.L.O.O.M. 架构的一个重要特点是,用户可以选择完全私密地保存数据,通过本地的 SQL 数据库进行存储。或者,他们也可以选择将笔记同步到云端,与热爱自然的社区共享。为此,我开发了一个简单的 Astro.js 网络应用来存储这些观测记录。其中最具挑战性的是让设备上的 SQLite 数据库能够与托管在 Netlify 上的网页应用通信。此外,我还希望界面呈现出美观而复古的风格,使用 AI 生成的图像,这些图像基于笔记中拍摄的照片构建而成。
为满足这些需求,我设计了一套机制:当用户点击“同步到云端”时,Arduino 应用会直接将请求的数据发送至 Netlify 的函数。Netlify 函数接收到数据后,会使用 Octokit 库在存放应用程序代码的 GitHub 仓库中创建一个拉取请求(PR):
现在,该应用具备了打开 PR 并生成 Markdown 页面的能力。当你批准 PR 后,系统便会启动构建流程,更新你的应用程序,并将你提交给社区的实地笔记内容融入其中。这一机制有助于对社区内容进行审核和验证。
接下来,我设定了一个目标:为每条笔记添加一张由AI生成的复古风格手绘插图,如下所示:
我使用了Cloudinary的新服务,结合你选择的图像生成模型和参考图片来创建图像。我在Netlify函数中添加了以下代码,当生成一条笔记时,其AI对应的图像就会由Nano Banana(谷歌出色的图像生成模型,尤其擅长处理文本)绘制出来。请将你的Cloudinary API凭证保存在Netlify的环境变量中,并将参考图片上传至Cloudinary的存储空间。下面的函数调用Cloudinary全新的图像生成API,该API可免费使用,但仅限有限用途:
如今,字段笔记社区应用已完美完成,包含笔记、AI生成的图像以提供更多信息,以及由你们社区共同创作的所有用户生成内容。
5. 搭建你的机箱
完成所有软件和硬件的准备工作后,搭建一个网络设备机箱(cyberdeck enclosure)就像是一项有趣的工艺手工项目。
市面上有很多可供打印的3D CAD设计,适用于各种类型的网络机箱。但第一,我没有方便地获得3D打印机;第二,我希望能重复利用或回收旧机箱以减少塑料浪费。如上所述,我用的是一个复古的火车包作为机箱,不过你也可以选择任何便于携带、透气性好的机箱。我的机箱足够高,因此我加装了一些布制泡沫隔板,用来在底部隐藏电源模块。
我在上方再加一层隔板,用于遮挡部分线缆,并使用扎带固定USB集线器。在侧面开了一个小孔,安装摄像头,然后按照电路图将所有线缆连接到集线器和电源上。
我还制作了一个纸板背板,用来固定屏幕,同时留出足够的空间让线缆在屏幕打开或关闭时自由移动。此外,我为Uno电路板做了一个小型“沙发”式支架,但需要注意的是,使用泡沫和布料来固定这类设备较为复杂——务必检查是否有足够的空气流通空间,避免过热。
火车箱为你提供了充足的储物空间,可以存放键盘、鼠标等物品,还可以加入一个压花工具套装、迷你水彩颜料盒,甚至一些零食。你已准备好开启森林探险之旅了!
6. 去触碰草地吧!
现在是时候把你的设备带进树林,或者至少带到你后院。打开它,开机运行,让它聆听鸟鸣,并拍摄你看到的有趣事物。记得记录下你的观察内容,包括地点、天气和地面状况,然后与你的LLM聊天,了解更多你所见的景象。当你重新连接网络后,将笔记同步到我们的社区仓库,加入我们,一起重现这种古老而质朴的世界观察方式。
本文编译自hackster.io





