工位上摆一台会认东西、会挥手、还会给你放个心跳动画的小机器人,听起来要花不少功夫。JBR-001 是 syntheticAIdata 发在 Arduino Project Hub 上的开源项目,整套东西压在一块 Arduino UNO Q 上,外壳 3D 打印,代码 CC0 授权随便用。项目页现在 8.5 万次浏览、8 个 respects,在创客圈里算跑出来了。
先说清它不是什么。它不是会翻跟头会跑的四足,也不是能跟你聊天的语音助手。它是一个固定在工作台上的桌面伴侣:三个舵机管脑袋和两条胳膊,一块 8×13 的 LED 点阵当脸,一个距离传感器管有人靠近,一个蜂鸣器管打招呼,再加一颗 USB 摄像头管看见。

官方装配指南里的接线总图:中间是 Arduino UNO Q,左边是 Eye 摄像头和 USB 集线器,上方是蜂鸣器和距离模块,右边是三个舵机加一路外接舵机电源,底部是线色图例。
硬件就五样,全挂在 UNO Q 上
官方装配指南列得很干净:Arduino UNO Q 2GB 一块、Modulino Distance 一个、Modulino Buzzer 一个、Modulino Motors 一套、Arduino 八合一 USB-C Hub 一个,外加一台桌面 3D 打印机打外壳。舵机不占主控的电,单独走一路外接电源。
Modulino 是 Arduino 这两年推的一套 I2C 小模块,四针 Qwiic 线一串就通,不用焊、不用查引脚。距离、蜂鸣器、电机都是这个系列。这一点对新手特别友好:接线图上统共没几根线,颜色还区分得很清楚。

Modulino Buzzer 模块的实物,蓝色 PCB 上一颗黑色蜂鸣器,四针 I2C 接口。这类模块用 Qwiic 线一串就通,不用焊也不用查引脚。
接线图上有三处容易看漏。一是三个舵机分别占 GPIO 9、10、11,脑袋一个、左臂一个、右臂一个,代码里就写死了这三个脚。二是 Eye 摄像头走的是 USB-C Hub,不是 UNO Q 板上的排针。三是舵机电源独立成一路,跟主板分开,不然三个舵机一起动的时候电流一冲,主板容易重启。
UNO Q 到底是什么板
这块板值得单独说两句,因为它跟很多人印象里的 Uno 完全不是一回事。
UNO Q 是两块芯片焊在一块板上:一颗高通的 QRB2210,四核 Cortex-A53 跑到 2.0GHz,跑完整的 Debian Linux;另一颗是 STM32U585,Cortex-M33 核,160MHz,跑 Zephyr 实时系统。两颗芯片在板内连着,你在 Arduino 里写的是微控制器那一侧,Linux 那一侧跑 Python、跑视觉模型、跑网络。内存 2GB LPDDR4,存储 16GB eMMC,Wi-Fi 5 加蓝牙 5.1。
所以它跟老 Uno 那颗 8 位 ATmega328P 是两个物种。老 Uno 连个摄像头都带不动,UNO Q 能直接在板上跑一个量化过的视觉模型。JBR-001 之所以能在一块板子上把看见、判断、动作这条链走完,靠的就是这个双核结构。
板子上还有一样东西被这个项目用得很巧:8×13 的蓝色 LED 点阵,外加 4 颗可控 RGB。JBR-001 的脸就是这块点阵,不用外接屏幕。
代码不长,三套动作
核心代码就是三个 Servo 对象加两个 Modulino 对象。脑袋、左臂、右臂分别接 9、10、11,中位都写 90 度。开机先做三件事:点阵画一颗心、三个舵机依次回中位、蜂鸣器奏一段问候音。
问候音是 C5、E5、G5、C6 四个音,523、659、784、1047 赫兹,每个音 120 到 250 毫秒,中间留 150 到 270 毫秒的间隔。四个音一路往上爬,听着就是一个上扬的你好。
心跳动画用了两张 8×13 的位图,一颗大心一颗小心:大心 120 毫秒、小心 100 毫秒、再大心 160 毫秒、再小心 700 毫秒,然后循环。700 毫秒那个停顿是关键,没有它就成了抽搐,加上它才像心跳。
起身动作也简单:脑袋先转到 70 度看左边,400 毫秒后转到 110 度看右边,再回 90 度;然后左右臂一高一低对摆两次,最后回中位。整套不到 3 秒。
视觉这块,走的是外部平台
这里要说清一件事,因为很多转述把它讲成板载跑 MobileNet。不是。
项目页给的视觉链路是这样:先用 Modulino 的合成图像数据集训一个目标检测模型,训练在 Edge Impulse 上做,输入尺寸选 96×96,标签就是 Modulino 那几个模块类型,蜂鸣器、按钮、距离、温湿度。模型训完导出,部署到 UNO Q 的 Linux 那一侧跑。摄像头抓一帧,模型认出画面里是哪块 Modulino 板,置信度到 92% 这种量级,就触发对应动作,比如挥个手。

训练那一步的配置界面:上传到 Edge Impulse 时要选图片数量、输入分辨率和分类标签。这里选的是 96×96,标签就是蜂鸣器、按钮、距离、温湿度这四类 Modulino 模块。

项目页给的五步链路:摄像头采集画面,UNO Q 处理,Edge Impulse 训出来的模型做目标检测,框出 Modulino 板并给出置信度,最后触发机器人挥手。
所以它的认东西不是识别猫狗人脸,是识别自家那几块小板子。范围窄,但闭环完整:采集、标注、训练、部署、动作触发,一条链全走通了。对想入门边缘 AI 的人来说,这个窄范围反而是好事,一天能跑完一遍。
距离触发里有个细节值得抄
距离传感器那段逻辑很短,但写得比很多人讲究。检测阈值是 200 毫米,复位阈值是 250 毫米。
两个数不一样,这叫滞回。如果检测和复位都用 200,物体刚好停在 200 附近,读数一抖就会反复触发,机器人会抽风。拉开 50 毫米的间隔,进了 200 才触发,退到 250 才复位,中间这段不动。做传感器项目的人都知道这个坑,但真写代码的时候经常忘。
这套东西的价值在哪
第一,它把桌面伴侣机器人这个听起来很玄的概念,拆成了四个 I2C 模块加六十行逻辑。你想加个动作,加几行 Servo.write 就行;你想换个表情,画一张 8×13 的位图就行。
第二,它把 AI 那条链的门槛压到了最低。不用自己标数据、不用自己搭训练环境,Arduino 那边已经把 Modulino 的合成数据集做好了,你只要在 Edge Impulse 上传一遍、选个分辨率、导出来。
第三,成本压得住。UNO Q 2GB 一块、三个 SG90 级别的舵机、两个 Modulino 模块、一个 USB Hub,加一卷打印耗材,比买一台成品桌面机器人便宜得多。
局限也说清楚:三个自由度只够转头和摆臂,做不了行走;没有麦克风阵列,不能语音对话;没有激光雷达,做不了建图导航;AI 识别范围就是那几块 Modulino 板,出了这个范围不认。想往深了做,得自己加硬件、自己重训模型。
谁适合做这个
刚摸过 Arduino、想往 AI 加机器人这个方向迈一步的人,这个项目是最合适的台阶。硬件不多、接线简单、代码短、每一步都能看到结果。
想做一个能走能跑的机器人,去看四足那类项目。想要能对话的陪伴机器人,去看带语音链路的产品。JBR-001 的定位很清楚:一张工作台、一个会看你、会跟你打招呼的小东西,剩下的全看你怎么改。
项目在 Arduino Project Hub 上,搜 JBR-001 就能找到,代码和接线图都在页面上,CC0 授权,商用也不用问。












Arduino Uno Q这块板子确实有意思,ATmega328P+ESP32-S3双芯方案省了很多通信设计的麻烦。不过两块芯片之间的UART延迟对实时控制有没有影响?
MobileNet-V1跑图像分类几百毫秒的延迟,桌面场景确实够用。我试过一个类似的ESP32-S3摄像头项目,帧率大概2-3fps,识别个杯子和手机还是没问题的。
接入Home Assistant这个玩法不错。我之前用ESP32做了一个简单的门口检测器,但只有人体感应没有视觉识别。JBR-001这个方案更完整。
50-80美元的成本挺合理的。不过那个SG90塑料齿轮舵机确实不太耐用,建议直接用MG90S替换,贵几块钱但寿命长很多。