Isi kandungan:
- Bekalan
- Langkah 1: Dapatkan Alamat Mac Papan
- Langkah 2: Cara Menjadikan ESP-SEKARANG Berfungsi
- Langkah 3: FUNGSI ESP-SEKARANG (ESP32)
- Langkah 4: FUNGSI ESP-SEKARANG (ESP8266)
- Langkah 5: Komunikasi Sehala (ESP32 Sebagai Pengirim)
- Langkah 6: Komunikasi Sehala (ESP8266 Sebagai Pengirim)
- Langkah 7: KOMUNIKASI DUA CARA
- Langkah 8: RUJUKAN
Video: Cara Membuat Pelbagai Perbincangan ESP Melalui ESP-SEKARANG Menggunakan Langkah ESP32 dan ESP8266: 8
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:08
Pada projek saya yang sedang berjalan, saya memerlukan banyak ESP untuk bercakap antara satu sama lain tanpa penghala. Untuk melakukan ini, saya akan menggunakan ESP-SEKARANG untuk membuat komunikasi tanpa wayar antara satu sama lain tanpa penghala pada ESP.
Bekalan
Perkara yang saya gunakan:
Modul DEV ESP32
NODEMCU 1.0 (Modul ESP12E)
Langkah 1: Dapatkan Alamat Mac Papan
Melalui ESP-sekarang, peranti ESP saling berbual dengan menghantar data ke alamat unik mereka sambil disambungkan ke rangkaian titik akses dalaman yang dibuat setelah menilai esp sekarang.. Oleh itu, tentukan alamat MAC setiap peranti. Yang dilampirkan ialah Tetapan Papan ESP32 dan ESP8266 saya
UNTUK ESP32
#masuk "WiFi.h" // Untuk mengakses keupayaan ESP32 WIFI
persediaan tidak sah () {Serial.begin (115200); Serial.print ("Alamat MAC Papan ESP32:"); Serial.println (WiFi.macAddress ()); // mencetak Alamat MACnya} gelung kosong () {}
UNTUK ESP8266
#include // Perpustakaan yang digunakan untuk mengakses keupayaan WIFI ESP8266
persediaan tidak sah () {Serial.begin (115200); Bersiri.println (); Serial.print ("Alamat MAC Papan ESP8266:"); Serial.println (WiFi.macAddress ()); // mencetak Alamat MACnya} gelung kosong () {}
ALAMAT MAC saya adalah:
- ESP32 - 30: AE: A4: F5: 03: A4
- ESP8266: A4: CF: 12: C7: 9C: 77
Langkah 2: Cara Menjadikan ESP-SEKARANG Berfungsi
Berikut adalah gambaran keseluruhan mengenai cara membuatnya berfungsi:
- Sertakan perpustakaan esp sekarang dan wifi
- Simpan alamat mac penerima ESP
- Tentukan struktur data mesej yang dihantar / diterima
- Pada persediaan, tetapkan wifi ke mod stesen
- Permulaan esp_now
- membuat dan mendaftarkan fungsi panggilan balik yang dipanggil setelah menghantar dan menerima data
- Untuk Esp8266, tentukan peranannya
- daftarkan rakan sebaya atau penerima
- Hantar data
Langkah 3: FUNGSI ESP-SEKARANG (ESP32)
esp_now_init (tidak sah)
Kembali:
- ESP_OK: berjaya
- ESP_ERR_ESPNOW_INTERNAL: Ralat dalaman
Penerangan:
Memulakan fungsi ESPNOW
esp_now_register_send_cb (cb)
Pulangan:
- ESP_OK: berjaya
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW tidak dimulakan
- ESP_ERR_ESPNOW_INTERNAL: ralat dalaman
Parameter:
-
cb: nama fungsi panggilan balik setelah menghantar data ESPNOW dengan parameter ini:
-
batal cb (const uint8_t * mac_addr, esp_now_send_status_t status)
- mac_addr: alamat mac penerima
-
status:
- 1 = kejayaan
- 0 = gagal
-
Penerangan:
Panggil fungsi OnDataSent setelah menghantar data ESPNOW
esp_now_add_peerconst esp_now_peer_info_t * rakan sebaya)
Pulangan:
- ESP_OK: berjaya
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW tidak dimulakan
- ESP_ERR_ESPNOW_ARG: argumen tidak sah
- ESP_ERR_ESPNOW_FULL: senarai rakan sebaya penuh
- ESP_ERR_ESPNOW_NO_MEM: kehabisan memori
- ESP_ERR_ESPNOW_EXIST: rakan sebaya telah wujud
Parameter:
-
peer: maklumat rakan sebaya dengan data berikut:
-
uint8_t
rakan sebaya [ESP_NOW_ETH_ALEN]; ESPNOW alamat MAC rakan sebaya yang juga merupakan alamat MAC stesen atau softap
-
uint8_t lmk [ESP_NOW_KEY_LEN]
ESPNOW kunci induk tempatan peer yang digunakan untuk menyulitkan data
-
saluran uint8_t
Saluran Wi-Fi yang digunakan rakan sebaya untuk menghantar / menerima data ESPNOW. Sekiranya nilainya 0, gunakan saluran semasa stesen atau softap yang dihidupkan. Jika tidak, ia mesti ditetapkan sebagai saluran di mana stesen atau softap dihidupkan
-
wifi_interface_t ifidx
Antara muka Wi-Fi yang digunakan rakan sebaya untuk menghantar / menerima data ESPNOW
-
penyulitan bool
ESPNOW data yang dihantar / diterima oleh rakan sebaya ini disulitkan atau tidak
-
batal * priv
ESPNOW data peribadi sebaya
-
Penerangan:
Tambahkan senarai rakan sebaya
esp_now_send (const uint8_t * peer_addr, const uint8_t * data, size_t len)
Pulangan:
- ESP_OK: berjaya
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW tidak dimulakan
- ESP_ERR_ESPNOW_ARG: argumen tidak sah
- ESP_ERR_ESPNOW_INTERNAL: ralat dalaman
- ESP_ERR_ESPNOW_NO_MEM: kehabisan memori
- ESP_ERR_ESPNOW_NOT_FOUND: rakan sebaya tidak dijumpai
- ESP_ERR_ESPNOW_IF: antara muka WiFi semasa tidak sesuai dengan rakan sebaya
Parameter:
- peer_addr: alamat MAC rakan sebaya
- data: data untuk dihantar
- len: panjang data
Penerangan:
Hantar data ESPNOW. Untuk beberapa kes, ini berlaku:
- Sekiranya peer_addr bukan NULL, hantarkan data kepada rakan yang alamat MACnya sepadan dengan peer_addr
- Sekiranya peer_addr adalah NULL, hantarkan data ke semua rakan sebaya yang ditambahkan ke senarai rakan sebaya
- Panjang maksimum data mestilah kurang dari ESP_NOW_MAX_DATA_LEN
- Penyangga yang ditunjukkan oleh argumen data tidak perlu berlaku setelah esp_now_send kembali
esp_now_register_recv_cb (cb)
Pulangan:
- ESP_OK: berjaya
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW tidak dimulakan
- ESP_ERR_ESPNOW_INTERNAL: ralat dalaman
Parameter:
-
cb: fungsi panggilan balik untuk menerima data ESPNOW
-
void cb (const uint8_t * mac_addr, const uint8_t * data, int data_len)
-
mac_addr:
alamat mac penerima
-
* data:
data menerima
-
data_len
panjang bait data
-
-
Penerangan:
Panggil fungsi cb setelah menerima data ESPNOW
Langkah 4: FUNGSI ESP-SEKARANG (ESP8266)
KETERANGAN FUNGSI ESP32 ESP8266
int esp_now_init (tidak sah)
Pulangan:
- 1 = kejayaan
- 0 = gagal
Penerangan
Memulakan fungsi ESPNOW
int esp_now_set_self_role (peranan u8)
Parameter:
- ESP_NOW_ROLE_IDLE: penghantaran data tidak dibenarkan.
- ESP_NOW_ROLE_CONTROLLER: keutamaan diberikan kepada antara muka Sation
- ESP_NOW_ROLE_SLAVE: keutamaan diberikan kepada antara muka SoftAP
- ESP_NOW_ROLE_COMBO: keutamaan diberikan kepada SoftAPinterface
Penerangan
Menetapkan Peranan peranti
int esp_now_register_send_cb (cb)
Pulangan:
- 1 = kejayaan
- 0 = gagal
Parameter:
-
cb: nama fungsi panggilan balik setelah menghantar data ESPNOW dengan parameter ini:
-
batal cb (const uint8_t * mac_addr, esp_now_send_status_t status)
- mac_addr: alamat mac penerima
-
status:
- 1 = kejayaan
- 0 = gagal
-
Penerangan
Panggil fungsi OnDataSent setelah menghantar data ESPNOW
int esp_now_add_peer (u8 * mac_addr, peranan u8, saluran u8, kekunci u8 *, kunci_8 u8)
Pulangan:
- 1 = kejayaan
- 0 = gagal
Parameter:
-
mac_addr
alamat mac rakan sebaya
- peranan
-
saluran
Sekiranya nilainya 0, gunakan saluran semasa stesen atau softap yang dihidupkan. Jika tidak, ia mesti ditetapkan sebagai saluran di mana stesen atau softap dihidupkan
-
* kunci
kunci untuk penyulitan
-
kunci_len
panjang kunci
Penerangan:
Tambahkan senarai rakan sebaya ke rakan sebaya
int esp_now_send (const uint8_t * peer_addr, const uint8_t * data, size_t len)
Pulangan:
- 1 = Kejayaan
- 0 = Gagal
Parameter:
- peer_addr: alamat MAC rakan sebaya
- data: data untuk dihantar
- len: panjang data
Penerangan:
Hantar data ESPNOW. Untuk beberapa kes, ini berlaku:
- Sekiranya peer_addr bukan NULL, hantarkan data kepada rakan yang alamat MACnya sepadan dengan peer_addr
- Sekiranya peer_addr adalah NULL, hantarkan data ke semua rakan sebaya yang ditambahkan ke senarai rakan sebaya
- Panjang maksimum data mestilah kurang dari ESP_NOW_MAX_DATA_LEN
- Penyangga yang ditunjukkan oleh argumen data tidak perlu berlaku setelah esp_now_send kembali
int esp_now_register_recv_cb (cb)
Pulangan:
- 1 = Kejayaan
- 0 = Gagal
Parameter:
-
cb: fungsi panggilan balik untuk menerima data ESPNOW
-
void cb (const uint8_t * mac_addr, const uint8_t * data, int data_len)
-
mac_addr:
alamat mac penerima
-
* data:
data menerima
-
data_len
panjang bait data
-
-
Penerangan:
Panggil fungsi cb setelah menerima data ESPNOW
Langkah 5: Komunikasi Sehala (ESP32 Sebagai Pengirim)
ESP32 menghantar data ke ESP8266. dengan kod ini. Tukar siaranAddress ke alamat mac penerima yang sesuai. Tambang adalah A4: CF: 12: C7: 9C: 77
// Tambahkan perpustakaan yang diperlukan
#include // Untuk mengakses fungsi esp sekarang #include // Untuk Menambah Kemampuan Wifi pada ESP32 // simpan Alamat MAC dalam array bernama broadcastAddress; uint8_t broadcastAddress = {0xA4, 0xCF, 0x12, 0xC7, 0x9C, 0x77}; // Alamat MAC penerima saya / * tentukan jenis data dari pelbagai pemboleh ubah yang disusun dan dinamakan semula semuanya sebagai struct_message * / typedef struct struct_message {char a [32]; int b; apungan c; Rentetan d; bool e; } mesej_struktur; // Buat struct_message yang dipanggil myData struct_message myData; // fungsi dipanggil semasa data dihantar untuk mencetak statusnya tidak sah OnDataSent (const uint8_t * mac_addr, esp_now_send_status_t status) {Serial.print ("\ r / nL Status Penghantaran Paket Terakhir: / t"); Serial.println (status == ESP_NOW_SEND_SUCCESS? "Kejayaan penghantaran": "Penghantaran Gagal"); } batal persediaan () {// Tetapkan kadar baud untuk komunikasi bersiri dengan ESP Serial.begin (115200); // Tetapkan peranti sebagai Stesen Wi-Fi WiFi.mode (WIFI_STA); // Memulakan wifi // Masukkan ESP-SEKARANG dan mengembalikan statusnya jika (esp_now_init ()! = ESP_OK) {Serial.println ("Kesalahan memulakan ESP -SEKARANG "); kembali; } // panggil fungsi OnDataSent setelah mengirim data ESPNOW esp_now_register_send_cb (OnDataSent); // Daftar rakan sebaya esp_now_peer_info_t peerInfo; // memulakan dan menetapkan maklumat rakan sebaya sebagai penunjuk ke memcpy addres (peerInfo.peer_addr, broadcastAddress, 6); // salin nilai siaranAddress dengan 6 bait ke peerInfo.peer_addr peerInfo.channel = 0; // saluran di mana esp bercakap. 0 bermaksud tidak ditentukan dan data akan dihantar pada saluran semasa. 1-14 adalah saluran yang sah yang sama dengan peranti tempatan peerInfo.encrypt = false; // tidak dienkripsi // Tambahkan peranti ke senarai peranti berpasangan jika (esp_now_add_peer (& peerInfo)! = ESP_OK) {Serial.println ("Gagal menambahkan rakan sebaya"); kembali; }} gelung void () {// Tetapkan nilai untuk menghantar strcpy (myData.a, "INI ADALAH CAJ"); // simpan "INI ADALAH CAJ" untuk mengubah satu "data" saya yang ditentukan sebelumnya myData.b = rawak (1, 20); // simpan nilai rawak myData.c = 1.2; // simpan apungan myData.d = "Hello"; // simpan rentetan myData.e = false; // save bool // Hantar data kurang daripada atau sama 250 bita melalui ESP-SEKARANG dan mengembalikan statusnya esp_err_t hasil = esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); if (hasil == ESP_OK) {Serial.println ("Dihantar dengan kejayaan"); } lain {Serial.println ("Ralat menghantar data"); } kelewatan (2000); }
ESP8266 menerima data dari ESP32 menggunakan kod ini.
// Tambahkan perpustakaan yang diperlukan
#include // Untuk Menambahkan Kemampuan Wifi pada ESP32 #include // Untuk mengakses fungsi esp sekarang / * tentukan jenis data dari pelbagai pemboleh ubah yang disusun dan dinamakan semula semuanya sebagai struct_message * / typedef struct struct_message {char a [32]; int b; apungan c; Rentetan d; bool e; } mesej_struktur; // Buat pembolehubah struct_message yang dipanggil myData struct_message myData; // fungsi dipanggil semasa data diterima dan mencetaknya tidak berlaku OnDataRecv (uint8_t * mac, uint8_t * incomingData, uint8_t len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Byte diterima:"); Serial.println (len); Serial.print ("Char:"); Serial.println (myData.a); Serial.print ("Int:"); Serial.println (myData.b); Serial.print ("Float:"); Serial.println (myData.c); Serial.print ("Rentetan:"); Serial.println (myData.d); Serial.print ("Bool:"); Serial.println (myData.e); Bersiri.println (); } batal persediaan () {// Tetapkan kadar baud untuk komunikasi bersiri dengan ESP Serial.begin (115200); // Tetapkan peranti sebagai Stesen Wi-Fi WiFi.mode (WIFI_STA); // Memulakan wifi // Masukkan ESP-SEKARANG dan mengembalikan statusnya jika (esp_now_init ()! = 0) {Serial.println ("Ralat memulakan ESP-SEKARANG"); kembali; } esp_now_set_self_role (ESP_NOW_ROLE_SLAVE); // Mentakrifkan peranan esp ini esp_now_register_recv_cb (OnDataRecv); // panggil fungsi OnDataRecv setelah menerima data ESPNOW} gelung kosong () {}
Langkah 6: Komunikasi Sehala (ESP8266 Sebagai Pengirim)
ESP8266 menghantar data ke ESP32. dengan kod ini. Tukar siaranAddress ke alamat mac penerima yang sesuai. Alamat esp32 saya ialah 30: AE: A4: F5: 03: A4. Untuk fungsi lain untuk esp8266 pergi ke sini
// Tambahkan perpustakaan yang diperlukan
#include // Untuk Menambah Kemampuan Wifi pada ESP32 #include // Untuk mengakses fungsi esp sekarang // simpan Alamat MAC dalam array bernama broadcastAddress; uint8_t broadcastAddress = {0x30, 0xAE, 0xA4, 0xF5, 0x03, 0xA4}; / * tentukan jenis data dari beberapa pemboleh ubah yang disusun dan dinamakan semula semuanya sebagai struct_message * / typedef struct struct_message {char a [32]; int b; apungan c; Rentetan d; bool e; } mesej_struktur; // Buat pemboleh ubah berstruktur yang disebut myData struct_message myData; // fungsi dipanggil semasa data dihantar dan mencetak statusnya tidak sah OnDataSent (uint8_t * mac_addr, uint8_t sendStatus) {Serial.print ("\ r / n Status Penghantaran Paket Terakhir: / t"); Serial.println (sendStatus == 1? "Kejayaan Penghantaran": "Penghantaran Gagal"); } batal persediaan () {// Tetapkan kadar baud untuk komunikasi bersiri dengan ESP Serial.begin (115200); // Tetapkan peranti sebagai Stesen Wi-Fi WiFi.mode (WIFI_STA); // Memulakan wifi // Masukkan ESP-SEKARANG dan mengembalikan statusnya jika (esp_now_init ()) {Serial.println ("Kesalahan memulakan ESP-SEKARANG"); kembali; } esp_now_register_send_cb (OnDataSent); // panggil fungsi OnDataSent setelah mengirim data ESPNOW // Tambahkan peranti ke senarai peranti berpasangan jika (esp_now_add_peer (broadcastAddress, ESP_NOW_ROLE_CONTROLLER, 1, NULL, 0)) {Serial.println ("Gagal menambahkan rakan sebaya"); kembali; }} gelung void () {// Tetapkan nilai untuk menghantar strcpy (myData.a, "INI ADALAH CAJ"); // simpan "INI ADALAH CAJ" untuk mengubah satu "data" saya yang ditentukan sebelumnya myData.b = rawak (1, 20); // simpan nilai rawak myData.c = 1.2; // simpan apungan myData.d = "SP8266"; // simpan rentetan myData.e = false; // save bool // Hantar data kurang dari atau sama 250 bita melalui ESP-SEKARANG dan mengembalikan statusnya hasil int = esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); if (esp_now_init ()! = 0) {Serial.println ("Dihantar dengan kejayaan"); } lain {Serial.println ("Ralat menghantar data"); } kelewatan (2000); }
ESP32 menerima data dari ESP8266. dengan kod ini. Untuk fungsi lain adalah pengadil di sini
// Tambahkan perpustakaan yang diperlukan
#include // Untuk mengakses fungsi esp sekarang #include // Untuk Menambah Keupayaan Wifi pada ESP32 / * tentukan jenis data dari pelbagai pemboleh ubah yang disusun dan dinamakan semula semuanya sebagai struct_message * / typedef struct struct_message {char a [32]; int b; apungan c; Rentetan d; bool e; } struct_message; // Buat pembolehubah struct_message yang dipanggil myData struct_message myData; // fungsi dipanggil semasa data diterima dan mencetaknya tidak sah OnDataRecv (const uint8_t * mac, const uint8_t * incomingData, int len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Byte diterima:"); Serial.println (len); Serial.print ("Char:"); Serial.println (myData.a); Serial.print ("Int:"); Serial.println (myData.b); Serial.print ("Float:"); Serial.println (myData.c); Serial.print ("Rentetan:"); Serial.println (myData.d); Serial.print ("Bool:"); Serial.println (myData.e); Bersiri.println (); } batal persediaan () {// Tetapkan kadar baud untuk komunikasi bersiri dengan ESP Serial.begin (115200); // Tetapkan peranti sebagai Stesen Wi-Fi WiFi.mode (WIFI_STA); // Memulakan wifi // Masukkan ESP-SEKARANG dan mengembalikan statusnya jika (esp_now_init ()! = 0) {Serial.println ("Ralat memulakan ESP-SEKARANG"); kembali; } esp_now_register_recv_cb (OnDataRecv); // panggil fungsi OnDataRecv setelah menerima data ESPNOW} gelung kosong () {}
Langkah 7: KOMUNIKASI DUA CARA
ESP32 menghantar data pada permulaan ke ESP8266. ESP8266 mencetak mesej yang diterima dan kemudian balasan yang dicetak oleh ESP32 pada monitor bersirinya.
KOD ESP32
// Tambahkan perpustakaan yang diperlukan
#include // Untuk mengakses fungsi esp sekarang #include // Untuk Menambah Kemampuan Wifi pada ESP32 // simpan Alamat MAC dalam array bernama broadcastAddress; uint8_t broadcastAddress = {0xA4, 0xCF, 0x12, 0xC7, 0x9C, 0x77}; // Alamat MAC penerima saya / * tentukan jenis data dari pelbagai pemboleh ubah yang disusun dan dinamakan semula semuanya sebagai struct_message * / typedef struct struct_message {char a [32]; int b; apungan c; Rentetan d; bool e; } mesej_struktur; // Buat struct_message yang dipanggil myData struct_message myData; // fungsi dipanggil semasa data dihantar untuk mencetak statusnya tidak sah OnDataSent (const uint8_t * mac_addr, esp_now_send_status_t status) {Serial.print ("\ r / n Status Penghantaran Paket Terakhir: / t"); Serial.println (status == ESP_NOW_SEND_SUCCESS? "Kejayaan Penghantaran": "Penghantaran Gagal"); if (status! = ESP_NOW_SEND_SUCCESS) {send_data ();}} batal OnDataRecv (const uint8_t * mac, const uint8_t * incomingData, int len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Byte diterima:"); Serial.println (len); Serial.print ("Char:"); Serial.println (myData.a); Serial.print ("Int:"); Serial.println (myData.b); Serial.print ("Float:"); Serial.println (myData.c); Serial.print ("Rentetan:"); Serial.println (myData.d); Serial.print ("Bool:"); Serial.println (myData.e); Bersiri.println (); } batal persediaan () {// Tetapkan kadar baud untuk komunikasi bersiri dengan ESP Serial.begin (115200); // Tetapkan peranti sebagai Stesen Wi-Fi WiFi.mode (WIFI_STA); // Memulakan wifi // Masukkan ESP-SEKARANG dan mengembalikan statusnya jika (esp_now_init ()! = ESP_OK) {Serial.println ("Kesalahan memulakan ESP -SEKARANG "); kembali; } // panggil fungsi OnDataSent setelah mengirim data ESPNOW esp_now_register_send_cb (OnDataSent); // Daftar rakan sebaya esp_now_peer_info_t peerInfo; // memulakan dan menetapkan maklumat rakan sebaya sebagai penunjuk ke memcpy addres (peerInfo.peer_addr, broadcastAddress, 6); // salin nilai siaranAddress dengan 6 bait ke peerInfo.peer_addr peerInfo.channel = 0; // saluran di mana esp bercakap. 0 bermaksud tidak ditentukan dan data akan dihantar pada saluran semasa.1-14 adalah saluran yang sah yang sama dengan peranti tempatan peerInfo.encrypt = false; // tidak dienkripsi // Tambahkan peranti ke senarai peranti berpasangan jika (esp_now_add_peer (& peerInfo)! = ESP_OK) {Serial.println ("Gagal menambahkan rakan sebaya"); kembali; } esp_now_register_recv_cb (OnDataRecv); // panggil fungsi OnDataRecv setelah menerima ESPNOW data send_data (); } gelung void () {} void send_data () {Serial.println ("Menghantar"); // Tetapkan nilai untuk menghantar strcpy (myData.a, "INI ADALAH CAJ"); // simpan "INI ADALAH CAJ" untuk mengubah satu "data" saya yang ditentukan sebelumnya myData.b = rawak (1, 20); // simpan nilai rawak myData.c = 1.2; // simpan apungan myData.d = "ESP32"; // simpan rentetan myData.e = false; // save bool // Hantar data kurang daripada atau sama 250 bita melalui ESP-SEKARANG dan mengembalikan statusnya esp_err_t hasil = esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); if (hasil == ESP_OK) {Serial.println ("Dihantar dengan kejayaan");} lain {Serial.println ("Ralat menghantar data"); }}
KOD ESP8266
// Tambahkan perpustakaan yang diperlukan
#include // Untuk Menambah Kemampuan Wifi pada ESP32 #include // Untuk mengakses fungsi esp sekarang // simpan Alamat MAC dalam array bernama broadcastAddress; uint8_t broadcastAddress = {0x30, 0xAE, 0xA4, 0xF5, 0x03, 0xA4}; / * tentukan jenis data dari beberapa pemboleh ubah yang disusun dan dinamakan semula semuanya sebagai struct_message * / typedef struct struct_message {char a [32]; int b; apungan c; Rentetan d; bool e; } mesej_struktur; // Buat pembolehubah struct_message yang dipanggil myData struct_message myData; // fungsi dipanggil semasa data diterima dan mencetaknya tidak berlaku OnDataRecv (uint8_t * mac, uint8_t * incomingData, uint8_t len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Byte diterima:"); Serial.println (len); Serial.print ("Char:"); Serial.println (myData.a); Serial.print ("Int:"); Serial.println (myData.b); Serial.print ("Float:"); Serial.println (myData.c); Serial.print ("Rentetan:"); Serial.println (myData.d); Serial.print ("Bool:"); Serial.println (myData.e); Bersiri.println (); hantar_data (); } batal OnDataSent (uint8_t * mac_addr, uint8_t sendStatus) {Serial.print ("\ r / n Status Penghantaran Paket Terakhir: / t"); Serial.println (sendStatus == 1? "Kejayaan Penghantaran": "Penghantaran Gagal"); jika (sendStatus! = 1) {send_data (); }} batal send_data () {// Tetapkan nilai untuk menghantar strcpy (myData.a, "INI ADALAH CAJ"); // simpan "INI ADALAH CAJ" untuk mengubah satu "data" saya yang ditentukan sebelumnya myData.b = rawak (1, 20); // simpan nilai rawak myData.c = 1.2; // simpan apungan myData.d = "ESP8266"; // simpan rentetan myData.e = false; // simpan bool esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); } batal persediaan () {// Tetapkan kadar baud untuk komunikasi bersiri dengan ESP Serial.begin (115200); // Tetapkan peranti sebagai Stesen Wi-Fi WiFi.mode (WIFI_STA); // Memulakan wifi // Masukkan ESP-SEKARANG dan mengembalikan statusnya jika (esp_now_init ()! = 0) {Serial.println ("Ralat memulakan ESP-SEKARANG"); kembali; } jika (esp_now_add_peer (broadcastAddress, ESP_NOW_ROLE_SLAVE, 1, NULL, 0)) {Serial.println ("Gagal menambahkan rakan sebaya"); kembali; } esp_now_set_self_role (ESP_NOW_ROLE_COMBO); esp_now_register_send_cb (OnDataSent); esp_now_set_self_role (ESP_NOW_ROLE_COMBO); // Mentakrifkan peranan esp ini esp_now_register_recv_cb (OnDataRecv); // panggil fungsi OnDataRecv setelah menerima data ESPNOW} gelung kosong () {}
Langkah 8: RUJUKAN
ESPNOW_32_Contohnya
ESPNOW_8266 Contoh
WIFI.h
ESP8266WiFi.h
esp_now.h untuk ESP8266
esp_now.h untuk ESP32
dokumen rasmi esp_now (Penjelasan fungsi yang lebih baik)
Panduan Rasmi ESP-SEKARANG
Disyorkan:
Mengawal Aplikasi Led Melalui Blynk Menggunakan Nodemcu Melalui Internet: 5 Langkah
Mengawal Led Melalui Aplikasi Blynk Menggunakan Nodemcu Melalui Internet: Halo Semua Hari Ini Kami Akan Menunjukkan kepada Anda Bagaimana Anda Boleh Mengendalikan LED Menggunakan Telefon Pintar Melalui Internet
Cara Membaca Pelbagai Nilai Analog Menggunakan Satu Pin Analog: 6 Langkah (dengan Gambar)
Cara Membaca Beberapa Nilai Analog Menggunakan Satu Pin Analog: Dalam tutorial ini, saya akan menunjukkan kepada anda cara membaca pelbagai nilai analog dengan hanya menggunakan satu pin input analog
Cara Menggunakan SIM800L untuk Menghantar SMS dan Relay Kawalan melalui SMS: 3 Langkah
Cara Menggunakan SIM800L untuk Menghantar SMS dan Mengendalikan Relay melalui SMS: Penerangan: Tutorial ini menunjukkan cara menggunakan SIM800L untuk mengirim sms dan menerima sms untuk mengawal relay. Modul SIM800L berukuran kecil dan dapat digunakan untuk berinteraksi dengan Arduino untuk mengirim sms, menerima sms, panggilan, menerima panggilan dan lain-lain. Dalam tutorial ini
Tutorial ESP8266 NODEMCU BLYNK IOT - Esp8266 IOT Menggunakan IDE Blunk dan Arduino - Mengawal LED Melalui Internet: 6 Langkah
Tutorial ESP8266 NODEMCU BLYNK IOT | Esp8266 IOT Menggunakan IDE Blunk dan Arduino | Mengawal LED Melalui Internet: Hai Guys dalam instruksi ini kita akan belajar bagaimana menggunakan IOT dengan ESP8266 atau Nodemcu kami. Kami akan menggunakan aplikasi blynk untuk itu. Oleh itu, kami akan menggunakan esp8266 / nodemcu kami untuk mengawal LED melalui internet. Oleh itu, aplikasi Blynk akan disambungkan ke esp8266 atau Nodemcu kami
Cara Membuat LED WS2812B Muzik Reaktif Dengan Pelbagai Corak: 4 Langkah
Cara Membuat LED WS2812B Muzik Reaktif Dengan Pelbagai Corak: WS2812, WS2812B adalah sumber cahaya LED terkawal pintar. ia mempunyai cip kawalan dalaman dan mempunyai 4 pin. V +, V-, Din & Dout. Untuk mengawal LED ini, kami ingin menggunakan MCU seperti Arduino, PIC atau Rasberry pie. Saya menggunakan Arduino UNO untuk projek ini