使用 NodeMCU 和 Tasmota 控制 LED 灯珠模块
ESP8266 和 ESP32 是由乐鑫科技推出的包含 Wifi 模块的物联网芯片。NodeMCU 是针对 ESP8266 和 ESP32 模组设计的核心开发版。Tasmota 是一个为 ESP 设备设计和开发的固件。基于 NodeMCU 开发版和 Tasmota 固件,再加上传感器模块、外设等,可以快速地构建物联网应用。本文介绍一个通过 Tasmota 控制 GPIO 输出,以控制 LED 灯珠开关的小制作。
硬件准备 🔗
- ESP8266 NodeMCU 开发版。目前网上的售价在 10 元到 15 元之间。
- LED 灯珠模块。我买到的 LED 模块是一个 5V 直流的 3W 灯珠模块,包括3个引脚:正极(
+)、负极(G)和控制信号端口(S)。价格在 2元左右。见下图。 - 若干杜邦线。如有需要,可使用面包版辅助固定 LED 灯珠模块。
- USB 数据线。用于连接电脑和 NodeMCU 开发版。
ESP8266-NodeMCU 开发版引脚排列图如下所示:

LED 灯珠模块如下所示: 
更新:该模块的控制信号引脚(S)支持 PMW。也就是说,不仅可使用高低电平控制LED灯珠的亮和灭,还可以通过 PWM 控制其亮度。
搭建过程 🔗
将 Tasmota 刷入 NodeMCU 开发版 🔗
刷入固件最简单的方式是使用 Tasmota 官网的 Web Installer。使用 USB 数据线连接好电脑和 NodeMCU 模块,然后打开 Web Installer 按提示刷写固件即可(有可能还需要安装串口驱动)。然后通过浏览器打开 Tasmota 的 WebUI,确保刷写成功。
接线 🔗
刷写固件成功后,拔下 USB 数据线,接下来连接 NodeMCU 开发版和 LED 灯珠模块:
- 由于 LED 灯珠模块模块是 5V 供电,那么使用杜邦线将 LED 灯珠模块的正极(
+)与开发版的VIN引脚连接;将负极(G)与任意一个GND引脚连接。 - 选择 NodeMCU 上的一个针脚与LED 灯珠模块的控制信号引脚(
S)连接。我选择的是D5,D5对应的是GPIO14,但无需记忆,因为 Tasmota 的模块设置里标注了D5即为GPIO14。
设置 Tasmota 模块 🔗
在 Tasmota 的 WebUI,打开 “设置” - “模块设置”,可将模块设置为 Generic(18),然后将 D5 GPIO14 设置为 Relay,即继电器。右边数字不变,保持为 1。最终配置如下图所示:

点击“保存”,设备会在几秒后重启。重启之后,就会在 Tasmota 的首页看到大大的 OFF 字样以及 开/关 按钮。
控制开关 🔗
在 WebUI 控制 🔗
在 Tasmota 页面,点击开/关按钮,即可控制 LED 灯珠模块的亮与不亮。另外,Tasmota 的 WebUI 是自适应的,从手机浏览器访问时,体验不错。如此这样,就可以用手机远程控制了。

使用命令控制 🔗
除了在 WebUI 中点击按钮之外,还可以通过“命令”控制继电器。
Tasmota 官网里的《Commands》页面详细介绍了命令的使用。但是,作为一个新手,阅读这样的详尽文档还是很吃力的。幸运的是,“豆包”对 Tasmota 也有了解,结合“豆包”的回复和官网,可以知道通过 Power<x> 命令控制继电器。比如:
Power1:打印第一个电源输出(也就是继电器)的状态。Power1 1:打开第一个电源输出。Power1 0:关闭第一个电源输出。Power1 toggle:反转第一个电源输出。Power1 blink:将电源输出反转若干次,也就是删除若干次。次数由BlinkCount决定,每次时长由BlinkTime决定。
在 WebUI 打开“控制台”,输入以上命令即可进行测试。除此之外,还可通过 Web请求、MQTT 和串口进行控制,详见文档《How to use commands》。比如,通过如下 HTTP Get 请求发送命令,反转第一个电源输出:
$ curl "http://x.x.x.x/cm?cmnd=Power1%20TOGGLE"
{"POWER":"ON"}
$ curl "http://x.x.x.x/cm?cmnd=Power1%20TOGGLE"
{"POWER":"OFF"}
功耗测量 🔗
使用 USB 电压电流测试仪和数显电力检测仪测量功耗,结果如下:
| 仪器 | 灯亮时 | 灯灭时 |
|---|---|---|
| USB 电压电流测试仪 | 电压为 4.96V,电流约为 0.10~0.23A | 电压为 4.99V,电流为 0.02~0.08A |
| 数显电力检测仪 | 功率约为 1.3~1.6W | 功率约为 0.4~0.7W |