使用 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 灯珠模块如下所示:
搭建过程 🔗
将 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 |