使用 ESP-NOW 技术构建一款响应灵敏的无线机器人,具备实时控制、遥测反馈以及生动的 OLED 动态眼睛功能
扫描二维码
随时随地手机看文章
如果你曾尝试通过常规的 Wi-Fi 来控制机器人,那你应该对“延迟之苦”有所体会:你按下按钮,然后会经历一段明显的延迟之后,机器人才会做出反应。由于存在路由器依赖、TCP/IP 开销以及管理 IP 地址的诸多麻烦,制造过程往往会失去实时响应的特性。
“ESP32 机器人与 ESP-NOW(暂定名称)项目”打破了这一模式,它利用 ESP-NOW 技术在设备之间建立了一条直接且超低延迟的通信链路——无需路由器、无需网络配置,也无需智能手机。
无需依赖应用程序或触摸屏,您可以构建完全定制的实体控制器,使其与您的应用相匹配。无论是基于按钮的遥控器、操纵杆界面,还是完全独特的设计,这种做法让您能够完全掌控硬件和用户体验。
结果如何呢?这套控制系统反应极其灵敏,以至于这个机器人就像是你双手的物理延伸体一般。
让我们来探讨一下这种架构是如何将远程控制转变为一种高性能体验的。
项目概述
该项目展示了一个完全基于 ESP32 和 ESP-NOW 的无线机器人控制系统。其内容包括:
•一个带有电机控制功能和可动的 OLED 眼睛的机器人装置
•一款采用弗兰津尼奥 WiFi LAB01 技术的无线控制器
•一种用于可靠通信的自定义 ESP-NOW 协议层
•一套安全防护系统和实时遥测功能
与传统的 Wi-Fi 或蓝牙解决方案不同,ESP-NOW 具有低延迟、无连接的通信特性,因此非常适合应用于机器人领域。
主要特点
•使用 ESP-NOW 进行低延迟通信
•实时方向控制及变速功能
•会动的机器人眼睛会随着动作而变化反应
•遥测反馈(接收信号强度指示 + 连接状态)
•故障保护功能:当信号丢失时会停止机器人运行
•使用双核 ESP32 和 FreeRTOS 任务实现动画效果
系统架构
该系统分为两个主要部分:
•控制器发送移动指令
•机器人执行操作并返回状态(接收信号强度指示、链路状态)
1. 机器人(接收器)
•ESP32
•L298N 电机驱动器
•OLED 显示屏(SH1106)
•自定义动画系统(机器人眼睛)
特点/特征
•差速驱动(2 个直流电机)
•脉宽调制电机控制(8 位,1 千赫兹)
•OLED 动态眼睛(SH1106)
•故障安全系统(500 毫秒超时)
•每秒传送一次数据
机器人硬件设置
电机驱动器连接:
•IN1 → GPIO 3
•IN2 → GPIO 27
•IN3 → GPIO 32
•IN4 → GPIO 4
OLED(I2C):
•SDA → GPIO 2
•SCL → GPIO 21
功率:
•通过充电宝(USB 接口)为 ESP32 供电
2. 控制器(弗兰齐尼诺 Wi-Fi 版)
特点/特征
6 键界面:
•方向(上、下、左、右)
•速度控制(A/B)
•6 键界面:方向键(上、下、左、右) 速度控制(A/B)
OLED 显示屏显示:
•命令
•速度
•接收信号强度指示(Received Signal Strength Indicator)
•链路状态
•OLED 显示屏显示内容:命令速度、RSSI(接收信号强度指示)、链路状态
ESP-NOW 通信(由 ESPNow 协议驱动)
该项目的核心是 ESPNowProtocol 库,这是一个关键组件,它极大地简化了可靠 ESP-NOW 应用程序的开发过程。
该库并非直接使用低级的 ESP-NOW API,而是为以下内容提供了更高级别的抽象:
•利用节点标识符进行设备识别
•可靠的消息传递及自动重传功能
•结构化数据包处理(控制与遥测)
•自动对等节点发现
•基于回调的清洁式通信
这使得您能够专注于应用程序的逻辑部分,而无需关注通信细节。
为何 ESPNow 协议至关重要
如果在使用 ESP-NOW 时您需要以下情况,那么直接使用它可能会变得非常复杂:
•可靠的交付(默认情况下,ESP-NOW 并非可靠)
•可靠的交付(默认情况下,ESP-NOW 并非可靠)
•多种消息类型
•双向通信
•设备管理
ESPNow 协议库通过在 ESP-NOW 之上添加一个轻量级的协议层来解决这些问题。
示例用法
发出指令变得非常简单:
而数据的接收则是通过一个简洁的回调函数来处理的:
本项目带来的益处
启用 ESPNow 协议后:
•更快的开发(无需重新设计协议逻辑)
•控制器与机器人之间的可靠通信
•通信层与应用层之间清晰的分离
•未来项目的可重复利用架构
这一点在机器人技术领域尤为重要,因为时间控制和可靠性会直接影响机器人的行为表现。
开源与可复用性
ESPNow 协议是一个开源项目,可以在众多应用中重复使用:
•遥控器
•物联网设备通信
•传感器网络
•多节点系统
这个机器人只是基于它所能够构建出的众多产品中的一个例子。
外卖服务
如果您打算使用 ESP-NOW 来构建任何东西,那么采用像 ESPNowProtocol 这样的结构化协议将会为您节省大量时间,并帮助您从一开始就构建出更稳固的系统。
双核设计(ESP32)
该项目最突出的一个方面。
核心 0
•通信(ESP-NOW)
•控制回路
•安全保险装置;防故障装置
核心 1
•眼睛动画任务(FreeRTOS)
✔ 简洁的用户界面✔ 不影响操作控制
动画眼睛系统
这个机器人配备了使用“机器人眼睛”技术的灵动眼睛。
状态
•启动 → 探索者动画
•“静止” → “闪烁” + “随机移动”
•“向前” → 专注的目光
•“快速” → “愤怒的表情”
•“后退” → “向下看”
•超时 → 疲倦(连接中断)
这构建了一个类似人类的交互层——这是一种简单却极具影响力的用户体验改进。
遥测反馈
机器人每秒都会发送状态信息:
控制器显示:
•接收信号强度指示(Received Signal Strength Indicator)
•链路状态
表演
•延迟:约 20 毫秒
•范围:约 100 米(直线视距)
•稳定的连接并具备自动恢复功能
•流畅的动画(约 100 帧每秒的任务)
未来改进措施
•电池监测
•PID 电机控制
•ESP-NOW 加密技术
•移动桥梁(Wi-Fi/蓝牙网关)
•音频反馈(数模转换器 + WAV 格式)
原理图
本文编译自hackster.io





