ESP-NOW簡介
ESP-NOW是Espressif開發的一種基于Wi-Fi的低功耗通信協議。與傳統Wi-Fi通信不同,ESP-NOW不需要配對過程,設備間可以直接通信,非常適合需要快速傳輸小數據包的應用,如傳感器網絡、遙控器和智能家居設備。它的優勢在于低延遲、低功耗和無需網絡路由器的直連通信。
使用兩塊ESP8266實現ESP-NOW通信
要使用兩塊ESP8266實現ESP-NOW通信,我們需要配置一塊作為發送設備,另一塊作為接收設備。首先,確保你已經安裝了Arduino IDE,并添加了ESP8266的開發板支持。
準備工作
-
安裝Arduino IDE和ESP8266支持包:
- 打開Arduino IDE,導航到
File
>Preferences
,在“Additional Boards Manager URLs”字段中添加以下鏈接:http://arduino.esp8266.com/stable/package_esp8266com_index.json
- 然后,打開
Tools
>Board
>Boards Manager
,搜索esp8266
并安裝。
- 打開Arduino IDE,導航到
-
庫文件:
- 安裝ESP-NOW庫:打開
Sketch
>Include Library
>Manage Libraries
,搜索ESP8266WiFi
并安裝。
- 安裝ESP-NOW庫:打開
發送端代碼
以下是ESP8266作為發送端的Arduino代碼:
#include <ESP8266WiFi.h>
#include <espnow.h>// 廣播地址,所有設備均可接收
uint8_t broadcastAddress[] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};// 發送數據結構
typedef struct struct_message {char message[32];
} struct_message;struct_message myData;void setup() {// 初始化串口監視器Serial.begin(115200);// 初始化Wi-FiWiFi.mode(WIFI_STA);// 初始化ESP-NOWif (esp_now_init() != 0) {Serial.println("Error initializing ESP-NOW");return;}// 注冊發送回調esp_now_set_self_role(ESP_NOW_ROLE_CONTROLLER);esp_now_add_peer(broadcastAddress, ESP_NOW_ROLE_COMBO, 1, NULL, 0);
}void loop() {// 填充發送數據strcpy(myData.message, "Hello, ESP-NOW!");// 發送數據esp_now_send(broadcastAddress, (uint8_t *) &myData, sizeof(myData));// 打印發送信息Serial.println("Message sent: " + String(myData.message));// 每隔2秒發送一次delay(2000);
}
接收端代碼
以下是ESP8266作為接收端的Arduino代碼:
#include <ESP8266WiFi.h>
#include <espnow.h>// 接收數據結構
typedef struct struct_message {char message[32];
} struct_message;struct_message myData;// 接收回調函數
void onDataRecv(uint8_t *mac, uint8_t *incomingData, uint8_t len) {memcpy(&myData, incomingData, sizeof(myData));Serial.print("Received message: ");Serial.println(myData.message);
}void setup() {// 初始化串口監視器Serial.begin(115200);// 初始化Wi-FiWiFi.mode(WIFI_STA);// 初始化ESP-NOWif (esp_now_init() != 0) {Serial.println("Error initializing ESP-NOW");return;}// 注冊接收回調esp_now_set_self_role(ESP_NOW_ROLE_SLAVE);esp_now_register_recv_cb(onDataRecv);
}void loop() {// 空閑
}
總結
ESP-NOW是一個強大的協議,可以在沒有Wi-Fi網絡的情況下實現設備間的快速通信。通過以上步驟,你可以使用兩塊ESP8266開發板建立一個簡單的ESP-NOW通信系統。這種方式特別適用于低功耗、低延遲和無需網絡基礎設施的應用場景。希望這篇博客能幫你快速入門ESP-NOW,開啟你的無線通信開發之旅。