pio esp_now
时间: 2025-05-17 21:28:26 浏览: 17
### 关于 PlatformIO 和 ESP-NOW 的使用
#### 平台设置与初始化
为了在 PlatformIO 中使用 ESP-NOW 协议,需先安装并配置好开发环境。推荐采用 VSCode 结合 PlatformIO 插件的方式进行项目管理[^1]。
#### 创建新项目
启动 VSCode 后,在命令面板中输入 `PlatformIO: New Project` 来创建一个新的平台项目。选择目标框架为 `Arduino` 或者 `ESP-IDF` 取决于个人偏好以及具体需求。对于 LilyGO T-Display S3 设备而言,建议选用 Arduino 框架以便更方便地访问其内置库函数和支持更多社区资源。
#### 添加必要的依赖项
通过编辑项目的 `platformio.ini` 文件来引入所需的第三方库支持:
```ini
[env:lilygo-t-display-s3]
platform = espressif32
board = lilygo-t-display-s3
framework = arduino
lib_deps =
https://github.com/espressif/arduino-espnow.git # 官方 ESP-NOW 库
TFT_eSPI @ ^2.4.0 # 屏幕显示驱动库
```
上述代码片段展示了如何指定特定版本的屏幕驱动程序 (TFT_eSPI),同时也加入了来自 Espressif 官方仓库中的最新版 ESP-NOW 支持包。
#### 编写示例应用程序
下面给出一段简单的 Python 脚本用于展示基本的消息发送功能;接收端则可以参照官方文档自行实现相应的处理逻辑。
```cpp
#include "WiFi.h"
#include <esp_now.h>
#include <Wire.h>
// 替换成实际设备MAC地址
uint8_t broadcastAddress[] = {0x24, 0x6F, 0x28, 0xAB, 0xCD, 0xEF};
struct struct_message {
char message[32];
} data;
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA); // 设置Wi-Fi模式
if (esp_now_init() != ESP_OK){
Serial.println("Error initializing ESP-NOW");
return;
}
esp_now_register_send_cb(onDataSent);
memcpy(peerInfo.peer_addr, broadcastAddress, 6);
peerInfo.channel = 0;
peerInfo.encrypt = false;
esp_now_add_peer(&peerInfo);
}
void loop() {
strcpy(data.message, "Hello from sender!");
esp_err_t result = esp_now_send(broadcastAddress, (uint8_t *) &data, sizeof(data));
if (result == ESP_OK) {
Serial.println("Send successfully.");
} else {
Serial.println("Error sending the data.");
}
delay(2000);
}
```
此段 C++ 程序实现了每隔两秒钟向指定 MAC 地址广播一条消息的功能,并打印出每次传输的结果状态信息至串口监视器上。
阅读全文
相关推荐

















