继电器模块接Arduino控制台灯,新手一次点亮

2026-11-07 07:11:40 15阅读

家里那盏台灯想让它听 Arduino 的话?难点只有一个:Arduino 是 5V 的小世界,台灯插的是 220V 的市电,这两边直接碰不得。这道坎的解法其实很老派——用一个继电器模块,让小电流去"扳动"大电流的开关。这次把 lastminuteengineers 那篇单通道继电器教程理顺了一遍,接线、代码、坑点全部过一遍,新手照着走就能点亮。

继电器模块便宜、到处能买到,一块蓝色的板上一个白色方盒子,边上留着一排接线端子。它本质上是一个"电控开关":Arduino 只负责给个信号,真正接通台灯的是继电器内部的金属触点。下面这张接线图就是今天要搭的全部东西。

单通道继电器模块与Arduino控制台灯接线图

继电器是怎么工作的

先花两分钟搞懂原理,后面接线就不会懵。继电器内部有一组线圈,缠在铁芯上。线圈通电时产生磁场,吸下一片叫衔铁的金属片,衔铁一动,就把高压侧的电路接通了;线圈断电,磁场消失,衔铁弹回去,电路断开。小电流控制大电流,靠的就是这个"电磁铁扳开关"的动作。

一个典型继电器底部有五个引脚:三个管你要控制的设备,叫 NC(常闭)、NO(常开)、COM(公共端);另外两个是线圈引脚,通电就吸合。看下面这张底部引脚图更直观。

继电器内部触点引脚示意图

设备接在 COM 和 NC 之间还是 COM 和 NO 之间,效果完全不同。继电器没吸合时,COM 和 NC 是通的——想要"默认开着、一触发就关",接 NC;想要"默认关着、一触发才开",接 NO。我们做的是"我让它开它才开"的台灯,所以走 COM 加 NO。

认识单通道继电器模块

模块上的继电器标称能扛 10A 电流、250V 交流或 30V 直流,点一盏台灯、一个小风扇绰绰有余。板子上有两颗 LED:电源灯常亮,状态灯在继电器吸合时亮,调试时看一眼就知道有没有动作。

接线端子那侧就是 NC、NO、COM 三颗螺丝端子。另一侧是控制引脚,这里有个新手最容易栽的坑:控制脚是低电平有效的——你给 IN 一个 LOW(0V),继电器反而吸合;给 HIGH(5V),它反而断开。跟直觉反着来,代码里要记住这一点。

继电器模块引脚定义图

模块引脚定义如上:GND 接公共地,VCC 接 Arduino 的 5V,IN 接控制脚。模块工作在 5V,继电器吸合时大概吃 70mA 电流,Arduino 板载 5V 供电带得动。另外板上有一颗续流二极管并联在线圈旁边——线圈断电瞬间会产生一个反向电压尖峰(叫反电动势),这颗二极管就是给这个尖峰泄放用的,保护你的 Arduino 不被打坏。

接线:低压侧和高压侧

低压侧三根线,一分钟搞定:

  • 继电器 VCC 接 Arduino 的 5V
  • 继电器 GND 接 Arduino 的 GND
  • 继电器 IN 接 Arduino 数字脚 6

高压侧动之前,先说一句重话:这一步碰的是市电,接错能出人命。不熟悉市电操作的话,这一步请找懂行的人带着做,或者干脆先用 12V 直流灯练手,逻辑完全一样。动手前必须确认台灯插头已拔、电源已断。

常规做法是剪断台灯电源线的火线(live wire),把来自插座那一端接到 COM,把通向台灯那一端接到 NO。这样灯默认是断开的,只有继电器吸合时才通电。所有螺丝务必拧紧,接线完成后任何裸露金属都不要用手去碰。

代码:三行核心就够

控制继电器和控制一个 LED 没区别,就是 digitalWrite 拉高拉低。下面这段程序让继电器吸合 3 秒、断开 3 秒,循环往复:

int RelayPin = 6;

void setup() {
  // Set RelayPin as an output pin
  pinMode(RelayPin, OUTPUT);
}

void loop() {
  // Let's turn on the relay...
  digitalWrite(RelayPin, LOW);
  delay(3000);

  // Let's turn off the relay...
  digitalWrite(RelayPin, HIGH);
  delay(3000);
}

逐段拆开看:第一行定义变量 RelayPin 并设为 6,对应刚才接的数字脚 6。setup() 里把 RelayPin 设为输出模式,因为信号是 Arduino 发出去的。loop() 里先把脚拉 LOW——还记得前面说的低电平有效吗,LOW 才是吸合——保持 3 秒;再拉 HIGH 断开,等 3 秒,如此往复。

烧录进去之后,你会听到继电器每 3 秒"咔哒"一声,台灯跟着一明一灭。这个咔哒声是衔铁机械动作的声音,正常现象,不是坏。

几个容易翻车的点

一是逻辑反了。很多人第一次写代码用了 HIGH 开灯,结果发现灯一直是灭的——那是低电平有效的锅,LOW 才吸合。二是吸合没反应,先看状态灯亮不亮:灯亮但不通,多半是端子螺丝没拧紧,线根本没压进去。三是千万别拿继电器去直接带大功率电机或加热器,启动电流远超标称 10A,触点会焊死,留足余量才是正道。

想扩展的话,路子很宽:换成 2 路、4 路、8 路继电器模块,接线方式完全类似,一个通道管一个设备;再往后把 Arduino 换成带 WiFi 的 ESP32,就能做成网页控制的智能开关。原理通了,后面的都是堆数量的事。

一句话收尾:继电器就是把 Arduino 的 5V 小信号放大成"能扳动市电"的机械动作,接对 COM/NO、记住低电平有效、高压侧断电操作,这三条守住,新手一次就能点亮。


作者:隔壁老王的教程
链接:https://www.aiddithome.com/p/645130fe4426f.html
本作版权归作者所有,未经允许请勿转载。若存在违规行为,您可以点击 “举报”。


登录 后发表评论
4条评论
拆机党
1楼 · 18小时前

这个低电平有效的坑我真的踩过!当时照着网上抄的代码用HIGH开灯,结果灯死活不亮,查了一晚上才反应过来继电器是反着来的。文章里把这个点单独拎出来说,对新手太友好了。另外补充一句,有些模块板子上的跳线帽(VCC和JD-VCC之间)别乱拔,拔了光耦隔离要另外给继电器供电,不然怎么都不吸合。

锡点
2楼 · 18小时前

咔哒声那个形容太真实了,第一次听见还以为短路了吓得赶紧拔电源哈哈

胶佬憨憨
3楼 · 18小时前

高压侧那段写得稳,没瞎教人。我就是先拿12V的LED灯条练的手,逻辑一模一样,练顺了才敢碰台灯,新手建议都这么来。

深圳打工人Alan
4楼 · 18小时前

问一下,ESP32控制的话3.3V的信号能直接推5V继电器模块吗,还是要加个三极管?