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

如何用Node.js结合Raspberry Pi 3与5V继电器实现灯具通断控制?

Node.js控制树莓派3继电器实现灯具开关方案

嘿,我之前也用Node.js折腾过树莓派控制继电器,完全懂你找了一周示例却跑不起来的崩溃!既然Python已经搞定,转Node.js其实很简单,我给你一套亲测可行的步骤,跟着来绝对没问题:

第一步:安装靠谱的GPIO控制库

推荐用onoff这个库,它是树莓派GPIO控制里最稳定、文档最清晰的Node.js库之一,比一些小众库靠谱多了。在树莓派的终端里运行:

npm install onoff

第二步:确认硬件接线(对应你的图)

先确认你的继电器和树莓派的接线(断电操作!安全第一):

  • 继电器的VCC接树莓派的5V引脚(物理引脚2或4)
  • 继电器的GND接树莓派的GND引脚(比如物理引脚6)
  • 继电器的IN接树莓派的任意GPIO引脚,我这里用BCM编号17(对应物理引脚11,你可以根据自己的接线调整)
  • 继电器输出端:家用灯具的火线接继电器的NO(常开端),继电器公共端COM接灯具一端,零线直接接灯具另一端

第三步:基础开关控制代码

先写个最简单的测试代码,验证继电器能正常工作:

const Gpio = require('onoff').Gpio;

// 初始化GPIO:BCM17引脚,输出模式,初始电平为低(继电器断开,灯具关闭)
const relay = new Gpio(17, 'out', 'low');

// 打开灯具(继电器闭合)
function turnLightOn() {
  relay.writeSync(1);
  console.log('灯具已打开 ✅');
}

// 关闭灯具(继电器断开)
function turnLightOff() {
  relay.writeSync(0);
  console.log('灯具已关闭 ❌');
}

// 测试:打开5秒后自动关闭
turnLightOn();
setTimeout(turnLightOff, 5000);

// 程序退出时清理GPIO资源(重要,避免引脚占用)
process.on('SIGINT', () => {
  relay.unexport();
  console.log('已释放GPIO资源,程序退出');
  process.exit();
});

运行代码的时候需要注意:访问树莓派GPIO需要root权限,所以要用sudo运行:

sudo node relay-control.js

第四步:进阶:Web远程控制(可选)

如果想通过手机或电脑远程控制,加个简单的Web服务就行,用express框架:
首先安装express:

npm install express

然后写Web控制代码:

const express = require('express');
const Gpio = require('onoff').Gpio;
const app = express();
const port = 3000;

const relay = new Gpio(17, 'out', 'low');

// 打开灯具接口
app.get('/light/on', (req, res) => {
  relay.writeSync(1);
  res.send('<h1>灯具已打开 ✅</h1>');
});

// 关闭灯具接口
app.get('/light/off', (req, res) => {
  relay.writeSync(0);
  res.send('<h1>灯具已关闭 ❌</h1>');
});

// 查询灯具状态接口
app.get('/light/status', (req, res) => {
  const status = relay.readSync() ? '打开' : '关闭';
  res.send(`<h1>当前灯具状态:${status}</h1>`);
});

// 启动服务器
app.listen(port, () => {
  console.log(`控制服务器已启动,访问地址:http://你的树莓派IP:${port}`);
});

// 退出时清理GPIO
process.on('SIGINT', () => {
  relay.unexport();
  process.exit();
});

运行后,在浏览器里输入http://树莓派IP:3000/light/on就能打开灯具,输入/light/off关闭,非常方便!

常见坑点提醒

  1. GPIO编号问题:onoff用的是BCM编号(树莓派的GPIO编号),不是物理引脚编号,别搞混了!
  2. 权限问题:必须用sudo运行Node程序,否则会提示无法访问GPIO
  3. 继电器触发电平:有些继电器是低电平触发,那初始化的时候要改成'high',如果你的继电器接上去没反应,试试调整初始电平
  4. 电源问题:如果继电器带动的灯具功率较大,树莓派的5V引脚可能供电不足,这时候需要给继电器加外部5V电源

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:35:44