lch
发布于 2026-04-20 / 0 阅读
0

如何使用 MicroPython 在 ESP8266 上构建 ESP-NOW 无线控制系列

大多数 物联网 项目都依赖于 WiFi、MQTT 代理或云平台来实现设备之间的通信。但由 Espressif 开发的 ESP-NOW 协议则让 ESP8266 和 ESP32 板本能够通过 2.4GHz 频段直接使用 MAC 地址进行通信——无需路由器、无需接入点、也无需互联网。其延迟时间在个位数毫秒范围内,而且即使 WiFi 完全关闭,该协议也能正常运行。

这篇文章介绍了我“ 物联网 100 天挑战”期间所完成的 4 个逐步推进的项目,所有项目均使用 MicroPython 语言编写。

本项目所用物品:

硬件:

•2 块 ESP8266 NodeMCU 板子

•按钮(共 4 个,用于第 56 天)

•LEDs(发光二极管)

•四通道继电器模块

•DHT11/DHT22 传感器

•SSD1306 OLED 显示屏(128x64)

•跳线、面包板

软件:

•适用于 ESP8266 的 MicroPython 固件

•Thonny IDE

•espnow MicroPython 库

为何选择 ESP-NOW?

在构建远程控制系统时,通常采用的方案是使用 WiFi 和 MQTT。但这需要两台设备都连接到同一个网络,会增加代理延迟,并且如果路由器出现故障,整个系统就会完全失效。而 ESP-NOW 则解决了所有这些问题。它是一种点对点、无连接且速度极快的方案。您只需要接收设备的 MAC 地址,就可以开始使用了。

以下是这个系列的进展情况:

第 54 天 — ESP-NOW 灯控功能

最简单的起始方案。一台 ESP8266 作为发送器,通过 ESP-NOW 发送信息。另一台 ESP8266 作为接收器,在接收到信息时会切换一个 LED。此项目验证了完整的发送-接收流程,并确认了两个板之间的 ESP-NOW 工作正常。

关键学习内容:如何在 MicroPython 中初始化 ESP-NOW、使用 MAC 地址注册对等设备,以及发送/接收原始字节。

第 55 天 — 按钮控制 LED

发送板上的一个物理按钮会触发接收板上的一个 LED 发光——这种连接是无线的、实时的。没有轮询延迟,也没有 WiFi 协议握手过程。按下按钮,另一个设备上的 LED 会立即切换状态。

关键学习点:在 MicroPython 中的抖动处理、基于中断的按钮操作以及将物理输入映射到无线输出。

第 56 天 — 四通道无线中继控制器

发送器上有四个按钮,接收器上有四个继电器。每个按钮都能通过 ESP-NOW 独立控制其对应的继电器。这就是该项目真正具有实际应用价值的地方——想象一下无需在控制面板和负载端之间铺设任何线路,就能实现电器、灯光或电机的无线切换。

关键学习点:构建多通道命令数据包、实现继电器逻辑控制以及妥善处理多个 GPIO 输入信号。

第 57 天 — 双向智能中继与传感器系统

这是该系列中最完备的一个项目。发送方仍像以往那样控制接收方的继电器,但现在接收方还会将实时的 DHT 温湿度数据发送回给发送方,发送方会将这些数据显示在一块 SSD1306 OLED 屏幕上。通过 ESP-NOW 实现了完全双向通信——控制信息单向传输,而传感器数据则反向传输。

关键学习点:双向 ESP-NOW 通信、构建响应数据包以及使用 MicroPython 在 OLED 屏幕上呈现实时传感器数据。

本文编译自hackster.io