如何通过Node.js扩展Raspberry Pi GPIO,MCP23017选onoff还是pigpio?
MCP23017 GPIO扩展实现方案(Node.js环境)
现有onoff模块适配说明
onoff模块的能力仅限于控制树莓派板载的原生GPIO引脚,没有内置I2C设备的控制逻辑,所以无法直接用它操作MCP23017扩展出来的引脚,你可以按以下步骤实现扩展:
- 先开启树莓派的I2C功能:运行
sudo raspi-config,在「Interface Options」中找到I2C选项选择开启,重启设备后执行i2cdetect -y 1,如果能输出I2C设备列表就说明总线正常 - 安装MCP23017专属的Node.js驱动:直接npm安装
mcp23017模块即可,该模块支持多芯片同时挂载,你可以通过调整每块MCP23017的A0、A1、A2引脚的电平来设置不同的I2C地址,最多可同时接8块芯片,合计扩展128个GPIO引脚,完全满足你的需求 - 驱动的使用逻辑和onoff非常接近:先按芯片地址初始化实例,再把对应扩展引脚设置为输入/输出模式,之后就可以正常读写电平,原有onoff的使用经验可以直接复用,不需要额外学习成本
是否需要切换到pigpio模块
不需要为了这个扩展需求特意切换pigpio,你可以根据实际项目需求判断:
- pigpio的核心优势是支持高精度时序控制、硬件PWM输出、硬件级中断监听,更适合驱动舵机、步进电机、读取高频传感器这类对时序要求高的场景,但它和onoff一样,本身不直接支持MCP23017的扩展引脚,切换之后还是需要搭配MCP23017驱动使用
- 如果你已经用onoff写完了原生GPIO的控制逻辑,继续保留onoff控制原生引脚、用mcp23017模块控制扩展引脚是成本最低的方案,完全不需要调整现有代码
- 如果你后续需要用到扩展引脚的中断触发功能,只需要额外对接I2C总线的中断监听逻辑即可,也不需要整体切换到pigpio
内容的提问来源于stack exchange,提问作者ErrorGamer2000
相关产品推荐
相关产品推荐

