ESP32开发程序

ESP32开发程序 这里写目录标题ESP-NOW 一对一通信代码一、准备三级目录第一步:获取接收端的 MAC 地址第二部分:发送端代码 (Sender)第三部分:接收端代码 (Receiver)🔍 关键点详解与调试指南**1.为什么需要 struct_message?2.INPUT_PULLUP 的逻辑反转问题3.常见错误排查4.扩展性ESP-NOW 一对一通信代码这是一份超详细注释版的 ESP-NOW 一对一通信代码。我将代码分为了发送端和接收端,并在每一行关键代码后都添加了中文注释,解释其作用、原理以及注意事项。一、准备三级目录第一步:获取接收端的 MAC 地址在开始之前,你必须知道接收端 ESP32的物理地址(MAC 地址)。请先将以下简短代码上传到接收端 ESP32,打开串口监视器(波特率 115200),复制打印出来的地址。// === 临时代码:获取 MAC 地址 === include void setup() { Serial.begin(115200); WiFi.mode(WIFI_STA); // 设置为站点模式以激活 MAC Serial.print("本机 MAC 地址: "); Serial.println(WiFi.macAddress()); // 打印格式如:24:6F:28:XX:XX:XX Serial.println("请复制此地址填入发送端代码中!"); } void loop() { delay(1000); }记录下的地址示例:24:6F:28:A1:B2:C3 (稍后需要转换为 {0x24, 0x6F…} 格式)第二部分:发送端代码 (Sender)功能:读取 GPIO 25 和 26 的电平状态,打包并通过 ESP-NOW 发送。硬件准备:GPIO 25: 接按钮(另一端接 GND)或信号源。GPIO 26: 接按钮(另一端接 GND)或信号源。/* ESP32 ESP-NOW 发送端 (Sender) 功能:读取 2 个引脚电平,发送给指定的接收端 */ include // ESP-NOW 协议核心库 include // Wi-Fi 库 (ESP-NOW 依赖 Wi-Fi 控制器) // ================= 配置区域 ================= // 【重要】在此处填入接收端的 MAC 地址 // 格式转换:将 "24:6F:28:A1:B2:C3" 改为 {0x24, 0x6F, 0x28, 0xA1, 0xB2, 0xC3} uint8_t receiverMacAddress[] = {0x24, 0x6F, 0x28, 0xA1, 0xB2, 0xC3}; // 定义要读取的两个物理引脚号 const int PIN_INPUT_1 = 25; // 第一个输入引脚 const int PIN_INPUT_2 = 26; // 第二个输入引脚 // 定义数据传输结构体 // 结构体确保发送端和接收端的数据格式完全一致 // 这里我们发送两个字节,分别代表两个引脚的状态 (0 或 1) typedef struct struct_message { uint8_t state1; // 引脚 1 的状态 (0=低电平, 1=高电平) uint8_t state2; // 引脚 2 的状态 } struct_message; struct_message myData; // 创建用于存储发送数据的全局变量 // ================= 回调函数区域 ================= /* 发送完成回调函数 当数据包发送完毕(无论成功或失败)时,系统会自动调用此函数 参数 mac_addr: 接收