You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派3b+用Node.js控制Arduino Uno遇模块缺失及连接超时问题求助

解决Johnny-Five + Arduino Uno在树莓派3B+上的两大问题

嘿,别担心!新手折腾硬件+JS的时候碰到这些问题太正常了,咱们一步步拆解解决你遇到的两个核心问题:


1. 「Cannot find module 'johnny_five'」错误

这个错误大概率是两个原因之一:

拼写错误(最常见!)

仔细看你的led.js第一行的引入代码——是不是写成了require('johnny_five')?Johnny-Five的正确模块名是johnny-five(用破折号,不是下划线)!把下划线改成破折号,这个问题通常就解决了。

模块未安装到本地项目

如果拼写没问题,那可能你是全局安装的Johnny-Five,但Node.js在你的本地目录(/home/pi)里找不到它。进入/home/pi目录,运行:

npm install johnny-five

把模块安装到本地项目的依赖中,这样Node.js就能正确加载了。要是之前已经全局装过,也可以用npm link johnny-five把全局模块链接到本地。


2. 「Device or Firmware Error」连接超时错误

解决完模块问题后出现的这个错误,是Johnny-Five没法和Arduino建立连接,咱们从这几个方向排查:

确认刷入的Firmata版本

Johnny-Five推荐使用StandardFirmataPlus(不是默认的StandardFirmata),打开Arduino IDE:

  • 点击「文件」→「示例」→「Firmata」→「StandardFirmataPlus」
  • 确保选中的是你的Arduino Uno板和正确的串口端口,然后点击上传按钮重新刷入固件。

指定正确的串口端口

错误里显示程序在连接/dev/ttyAMA0,但树莓派上Arduino Uno一般会被识别为/dev/ttyUSB0或/dev/ttyACM0。先运行命令查看所有串口设备:

ls /dev/tty*

找到对应的Arduino端口后,在你的代码里手动指定:

const five = require("johnny-five");
const board = new five.Board({ port: "/dev/ttyUSB0" }); // 换成你查到的端口

修复串口权限问题

树莓派默认用户pi可能没有访问串口的权限,把用户加入dialout组:

sudo usermod -a -G dialout pi

执行完后重启树莓派,权限才会生效。

检查硬件连接

  • 确保你用的USB线是支持数据传输的(有些廉价线只能充电),换个USB口试试。
  • 重新插拔Arduino板,等待几秒钟再运行你的node led.js程序。

按照上面的步骤一步步来,先解决模块找不到的问题,再处理连接超时的问题,应该就能顺利点亮LED啦!

内容的提问来源于stack exchange,提问作者CrazyNinjaCan15

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 23:23:00