Daftar Isi:
- Perlengkapan
- Langkah 1: Dapatkan Alamat Papan Mac
- Langkah 2: Cara Membuat ESP-NOW Bekerja
- Langkah 3: FUNGSI ESP-SEKARANG (ESP32)
- Langkah 4: FUNGSI ESP-SEKARANG (ESP8266)
- Langkah 5: Komunikasi Satu Arah (ESP32 Sebagai Pengirim)
- Langkah 6: Komunikasi Satu Arah (ESP8266 Sebagai Pengirim)
- Langkah 7: KOMUNIKASI DUA ARAH
- Langkah 8: REFERENSI
Video: Cara Membuat Multiple ESP Talk Via ESP-NOW Menggunakan ESP32 dan ESP8266: 8 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:54
Pada proyek saya yang sedang berlangsung, saya memerlukan beberapa ESP untuk berbicara satu sama lain tanpa router. Untuk melakukan ini, saya akan menggunakan ESP-NOW untuk membuat komunikasi nirkabel satu sama lain tanpa router di ESP.
Perlengkapan
Hal-hal yang saya Gunakan:
Modul DEV ESP32
NODEMCU 1.0 (Modul ESP12E)
Langkah 1: Dapatkan Alamat Papan Mac
Melalui ESP-sekarang, perangkat ESP berbicara satu sama lain dengan mengirimkan data ke alamat unik mereka saat terhubung ke jaringan titik akses internal yang dibuat saat mengintilasi esp sekarang.. Jadi, tentukan alamat MAC setiap perangkat. Terlampir adalah Pengaturan Papan ESP32 dan ESP8266 saya
UNTUK ESP32
#include "WiFi.h" //Untuk mengakses kemampuan WIFI ESP32
void setup(){ Serial.begin(115200); Serial.print("Alamat MAC Papan ESP32: "); Serial.println(WiFi.macAddress()); //mencetak Alamat MAC-nya } void loop(){}
UNTUK ESP8266
#include //Library yang digunakan untuk mengakses kemampuan WIFI ESP8266
void setup(){ Serial.begin(115200); Serial.println(); Serial.print("Alamat MAC Papan ESP8266: "); Serial.println(WiFi.macAddress()); //mencetak Alamat MAC-nya } void loop(){}
ALAMAT MAC saya adalah:
- ESP32 - 30:AE:A4:F5:03:A4
- ESP8266: A4:CF:12:C7:9C:77
Langkah 2: Cara Membuat ESP-NOW Bekerja
Berikut ini ikhtisar tentang cara membuatnya bekerja:
- Sertakan perpustakaan esp sekarang dan wifi
- Simpan alamat mac penerima ESP
- Tentukan struktur data dari pesan yang dikirim/diterima
- Pada pengaturan, atur wifi ke mode stasiun
- Inisialisasi esp_now
- buat dan daftarkan fungsi panggilan balik yang dipanggil setelah mengirim dan menerima data
- Untuk Esp8266, tentukan perannya
- daftarkan rekan atau penerima esp
- Kirim data
Langkah 3: FUNGSI ESP-SEKARANG (ESP32)
esp_now_init(batal)
Kembali:
- ESP_OK: berhasil
- ESP_ERR_ESPNOW_INTERNAL: Kesalahan internal
Keterangan:
Inisialisasi fungsi ESPNOW
esp_now_register_send_cb(cb)
Pengembalian:
- ESP_OK: berhasil
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW tidak diinisialisasi
- ESP_ERR_ESPNOW_INTERNAL: kesalahan internal
Parameter:
-
cb: nama fungsi panggilan balik setelah mengirim data ESPNOW dengan parameter ini:
-
batalkan cb (const uint8_t * mac_addr, esp_now_send_status_t status)
- mac_addr: alamat mac penerima
-
status:
- 1 = sukses
- 0 = gagal
-
Keterangan:
Panggil fungsi OnDataSent setelah mengirim data ESPNOW
esp_now_add_peerconst esp_now_peer_info_t *peer)
Pengembalian:
- ESP_OK: berhasil
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW tidak diinisialisasi
- ESP_ERR_ESPNOW_ARG: argumen tidak valid
- ESP_ERR_ESPNOW_FULL: daftar rekan penuh
- ESP_ERR_ESPNOW_NO_MEM: kehabisan memori
- ESP_ERR_ESPNOW_EXIST: rekan telah ada
Parameter:
-
peer:informasi rekan dengan data sebagai berikut:
-
uint8_t
peer_addr[ESP_NOW_ETH_ALEN]; Alamat MAC rekan ESPNOW yang juga merupakan alamat MAC stasiun atau softap
-
uint8_t lmk[ESP_NOW_KEY_LEN]
ESPNOW peer local master key yang digunakan untuk mengenkripsi data
-
saluran uint8_t
Saluran Wi-Fi yang digunakan peer untuk mengirim/menerima data ESPNOW. Jika nilainya 0, gunakan saluran saat ini di mana stasiun atau softap aktif. Jika tidak, itu harus disetel sebagai saluran tempat stasiun atau softap aktif
-
wifi_interface_t ifidx
Antarmuka Wi-Fi yang digunakan rekan untuk mengirim/menerima data ESPNOW
-
enkripsi bool
Data ESPNOW yang dikirim/diterima oleh rekan ini dienkripsi atau tidak
-
batal *pribadi
Data pribadi rekan ESPNOW
-
Keterangan:
Tambahkan daftar peer to peer
esp_now_send(const uint8_t *peer_addr, const uint8_t *data, size_t len)
Pengembalian:
- ESP_OK: berhasil
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW tidak diinisialisasi
- ESP_ERR_ESPNOW_ARG: argumen tidak valid
- ESP_ERR_ESPNOW_INTERNAL: kesalahan internal
- ESP_ERR_ESPNOW_NO_MEM: kehabisan memori
- ESP_ERR_ESPNOW_NOT_FOUND: rekan tidak ditemukan
- ESP_ERR_ESPNOW_IF: antarmuka WiFi saat ini tidak cocok dengan peer
Parameter:
- peer_addr: alamat MAC rekan
- data: data yang akan dikirim
- len: panjang data
Keterangan:
Kirim data ESPNOW. Untuk beberapa kasus, ini terjadi:
- Jika peer_addr bukan NULL, kirim data ke peer yang alamat MAC-nya cocok dengan peer_addr
- Jika peer_addr adalah NULL, kirim data ke semua peer yang ditambahkan ke daftar peer
- Panjang maksimum data harus kurang dari ESP_NOW_MAX_DATA_LEN
- Buffer yang ditunjukkan oleh argumen data tidak harus valid setelah esp_now_send kembali
esp_now_register_recv_cb(cb)
Pengembalian:
- ESP_OK: berhasil
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW tidak diinisialisasi
- ESP_ERR_ESPNOW_INTERNAL: kesalahan internal
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:
menerima data
-
data_len
panjang byte data
-
-
Keterangan:
Panggil fungsi cb setelah menerima data ESPNOW
Langkah 4: FUNGSI ESP-SEKARANG (ESP8266)
DESKRIPSI FUNGSI ESP32 ESP8266
int esp_now_init(batal)
Pengembalian:
- 1 = sukses
- 0=gagal
Keterangan
Inisialisasi fungsi ESPNOW
int esp_now_set_self_role(peran u8)
Parameter:
- ESP_NOW_ROLE_IDLE: transmisi data tidak diperbolehkan.
- ESP_NOW_ROLE_CONTROLLER: prioritas diberikan ke antarmuka Sation
- ESP_NOW_ROLE_SLAVE: prioritas diberikan ke antarmuka SoftAP
- ESP_NOW_ROLE_COMBO: prioritas diberikan ke SoftAPinterface
Keterangan
Setel Peran perangkat
int esp_now_register_send_cb(cb)
Pengembalian:
- 1 = sukses
- 0 = gagal
Parameter:
-
cb: nama fungsi panggilan balik setelah mengirim data ESPNOW dengan parameter ini:
-
batalkan cb (const uint8_t * mac_addr, esp_now_send_status_t status)
- mac_addr: alamat mac penerima
-
status:
- 1 = sukses
- 0 = gagal
-
Keterangan
Panggil fungsi OnDataSent setelah mengirim data ESPNOW
int esp_now_add_peer(u8 *mac_addr, peran u8, saluran u8, u8 *key, u8 key_len)
Pengembalian:
- 1 = sukses
- 0 = gagal
Parameter:
-
mac_addr
alamat mac rekan
- peran
-
saluran
Jika nilainya 0, gunakan saluran saat ini di mana stasiun atau softap aktif. Jika tidak, itu harus disetel sebagai saluran tempat stasiun atau softap aktif
-
*kunci
kunci untuk enkripsi
-
kunci_len
panjang kunci
Keterangan:
Tambahkan daftar peer to peer
int esp_now_send(const uint8_t *peer_addr, const uint8_t *data, size_t len)
Pengembalian:
- 1 = Sukses
- 0 = Gagal
Parameter:
- peer_addr: alamat MAC rekan
- data: data yang akan dikirim
- len: panjang data
Keterangan:
Kirim data ESPNOW. Untuk beberapa kasus, ini terjadi:
- Jika peer_addr bukan NULL, kirim data ke peer yang alamat MAC-nya cocok dengan peer_addr
- Jika peer_addr adalah NULL, kirim data ke semua peer yang ditambahkan ke daftar peer
- Panjang maksimum data harus kurang dari ESP_NOW_MAX_DATA_LEN
- Buffer yang ditunjukkan oleh argumen data tidak harus valid setelah esp_now_send kembali
int esp_now_register_recv_cb(cb)
Pengembalian:
- 1 = Sukses
- 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:
menerima data
-
data_len
panjang byte data
-
-
Keterangan:
Panggil fungsi cb setelah menerima data ESPNOW
Langkah 5: Komunikasi Satu Arah (ESP32 Sebagai Pengirim)
ESP32 mengirimkan data ke ESP8266. dengan kode ini. Ubah broadcastAddress ke alamat mac penerima yang sesuai. Milik saya adalah A4:CF:12:C7:9C:77
//Tambahkan perpustakaan yang diperlukan
#include //Untuk mengakses fungsi esp now #include //Untuk Menambahkan Kemampuan Wifi pada ESP32 //menyimpan MAC Address dalam array bernama broadcastAddress; uint8_t broadcastAddress = {0xA4, 0xCF, 0x12, 0xC7, 0x9C, 0x77}; //Alamat MAC penerima saya /*mendefinisikan tipe data dari beberapa variabel terstruktur dan menamai semuanya sebagai struct_message*/ typedef struct struct_message { char a[32]; int b; mengapung c; string d; bol e; } struct_message; // Buat struct_message bernama myData struct_message myData; // fungsi dipanggil saat data dikirim untuk mencetak statusnya void OnDataSent(const uint8_t *mac_addr, esp_now_send_status_t status) { Serial.print("\r\nStatus Pengiriman Paket Terakhir:\t"); Serial.println(status == ESP_NOW_SEND_SUCCESS ? "Pengiriman Berhasil": "Pengiriman Gagal"); } void setup() { //Mengatur baud rate untuk komunikasi serial dengan ESP Serial.begin(115200); // Setel perangkat sebagai Wi-Fi Station WiFi.mode(WIFI_STA);//Memulai wifi // Init ESP-NOW dan mengembalikan statusnya if (esp_now_init() != ESP_OK) { Serial.println("Error initializing ESP -SEKARANG"); kembali; } //memanggil fungsi OnDataSent setelah mengirim data ESPNOW esp_now_register_send_cb(OnDataSent); // Daftarkan rekan esp_now_peer_info_t peerInfo; //menginisialisasi dan menetapkan informasi rekan sebagai pointer ke alamat memcpy(peerInfo.peer_addr, broadcastAddress, 6); //salin nilai broadcastAddress dengan 6 byte ke peerInfo.peer_addr peerInfo.channel = 0; // saluran tempat esp berbicara. 0 berarti tidak ditentukan dan data akan dikirim pada saluran saat ini. 1-14 adalah saluran valid yang sama dengan perangkat lokal peerInfo.encrypt = false; //tidak dienkripsi //Tambahkan perangkat ke daftar perangkat yang dipasangkan if (esp_now_add_peer(&peerInfo) != ESP_OK){ Serial.println("Gagal menambahkan rekan"); kembali; } } void loop() { // Tetapkan nilai untuk mengirim strcpy(myData.a, "INI ADALAH CHAR"); //simpan "INI ADALAH CHAR" ke variabel a dari "data" saya yang didefinisikan sebelumnya myData.b = random(1, 20); //menyimpan nilai acak myData.c = 1.2; //menyimpan float myData.d = "Halo"; //menyimpan string myData.e = false; //menyimpan bool //Mengirim data kurang dari atau sama dengan 250 byte melalui ESP-NOW dan mengembalikan statusnya esp_err_t result = esp_now_send(broadcastAddress, (uint8_t *) &myData, sizeof(myData)); if (hasil == ESP_OK) { Serial.println("Terkirim dengan sukses"); } else { Serial.println("Error mengirim data"); } penundaan(2000); }
ESP8266 menerima data dari ESP32 menggunakan kode ini.
//Tambahkan perpustakaan yang diperlukan
#include //Untuk Menambahkan Kemampuan Wifi pada ESP32 #include //Untuk mengakses fungsi esp now /*mendefinisikan tipe data dari beberapa variabel terstruktur dan menamainya kembali sebagai struct_message*/ typedef struct struct_message { char a[32]; int b; mengapung c; string d; bol e; } struct_message; // Buat variabel struct_message bernama myData struct_message myData; // fungsi dipanggil saat data diterima dan mencetaknya void OnDataRecv(uint8_t * mac, uint8_t *incomingData, uint8_t len) { memcpy(&myData, incomingData, sizeof(myData)); Serial.print("Byte yang diterima: "); Serial.println(len); Serial.print("Char: "); Serial.println(Datasaya.a); Serial.print("Int: "); Serial.println(Datasaya.b); Serial.print("Mengambang: "); Serial.println(Datasaya.c); Serial.print("String: "); Serial.println(Datasaya.d); Serial.print("Bool: "); Serial.println(Datasaya.e); Serial.println(); } void setup() { //Mengatur baud rate untuk komunikasi serial dengan ESP Serial.begin(115200); // Atur perangkat sebagai Wi-Fi Station WiFi.mode(WIFI_STA); //Memulai wifi // Init ESP-NOW dan mengembalikan statusnya if (esp_now_init() != 0) { Serial.println("Error initializing ESP-NOW"); kembali; } esp_now_set_self_role(ESP_NOW_ROLE_SLAVE); //Mendefinisikan peran esp ini esp_now_register_recv_cb(OnDataRecv); //memanggil fungsi OnDataRecv setelah menerima data ESPNOW } void loop() {}
Langkah 6: Komunikasi Satu Arah (ESP8266 Sebagai Pengirim)
ESP8266 mengirimkan data ke ESP32. dengan kode ini. Ubah broadcastAddress ke alamat mac penerima yang sesuai. Alamat esp32 saya adalah 30:AE:A4:F5:03:A4. Untuk fungsi lain untuk esp8266, buka di sini
//Tambahkan perpustakaan yang diperlukan
#include //Untuk Menambahkan Kemampuan Wifi pada ESP32 #include //Untuk mengakses esp now berfungsi //menyimpan MAC Address dalam array bernama broadcastAddress; uint8_t broadcastAddress = {0x30, 0xAE, 0xA4, 0xF5, 0x03, 0xA4}; /*mendefinisikan tipe data dari beberapa variabel terstruktur dan menamai semuanya sebagai struct_message*/ typedef struct struct_message { char a[32]; int b; mengapung c; string d; bol e; } struct_message; // Buat variabel terstruktur bernama myData struct_message myData; // fungsi dipanggil saat data dikirim dan mencetak statusnya void OnDataSent(uint8_t *mac_addr, uint8_t sendStatus) { Serial.print("\r\nStatus Pengiriman Paket Terakhir:\t"); Serial.println(sendStatus == 1 ? "Pengiriman Berhasil": "Pengiriman Gagal"); } void setup() { //Mengatur baud rate untuk komunikasi serial dengan ESP Serial.begin(115200); // Mengatur perangkat sebagai Wi-Fi Station WiFi.mode(WIFI_STA);//Memulai wifi // Init ESP-NOW dan mengembalikan statusnya if (esp_now_init()) { Serial.println("Error initializing ESP-NOW"); kembali; } esp_now_register_send_cb(OnDataSent); //memanggil fungsi OnDataSent setelah mengirim data ESPNOW //Menambahkan perangkat ke daftar perangkat yang dipasangkan if (esp_now_add_peer(broadcastAddress, ESP_NOW_ROLE_CONTROLLER, 1, NULL, 0)){ Serial.println("Gagal menambahkan rekan"); kembali; } } void loop() { // Tetapkan nilai untuk mengirim strcpy(myData.a, "INI ADALAH CHAR"); //simpan "INI ADALAH CHAR" ke variabel a dari "data" saya yang didefinisikan sebelumnya myData.b = random(1, 20); //menyimpan nilai acak myData.c = 1.2; //menyimpan float myData.d = "SP8266"; //menyimpan string myData.e = false; //menyimpan bool //Mengirim data kurang dari atau sama dengan 250 byte melalui ESP-NOW dan mengembalikan statusnya int result = esp_now_send(broadcastAddress, (uint8_t *) &myData, sizeof(myData)); if (esp_now_init() != 0) { Serial.println("Terkirim dengan sukses"); } else { Serial.println("Error mengirim data"); } penundaan(2000); }
ESP32 menerima data dari ESP8266. dengan kode ini. Untuk fungsi lain lihat di sini
//Tambahkan perpustakaan yang diperlukan
#include //Untuk mengakses fungsi esp now #include //Untuk Menambahkan Kemampuan Wifi pada ESP32 /*mendefinisikan tipe data dari beberapa variabel terstruktur dan menamainya kembali sebagai struct_message*/ typedef struct struct_message { char a[32]; int b; mengapung c; string d; bol e; } struct_message; // Buat variabel struct_message bernama myData struct_message myData; // fungsi dipanggil saat data diterima dan mencetaknya void OnDataRecv(const uint8_t * mac, const uint8_t *incomingData, int len) { memcpy(&myData, incomingData, sizeof(myData)); Serial.print("Byte yang diterima: "); Serial.println(len); Serial.print("Char: "); Serial.println(Datasaya.a); Serial.print("Int: "); Serial.println(Datasaya.b); Serial.print("Mengambang: "); Serial.println(Datasaya.c); Serial.print("String: "); Serial.println(Datasaya.d); Serial.print("Bool: "); Serial.println(datasaya.e); Serial.println(); } void setup() { //Mengatur baud rate untuk komunikasi serial dengan ESP Serial.begin(115200); // Atur perangkat sebagai Wi-Fi Station WiFi.mode(WIFI_STA); //Memulai wifi // Init ESP-NOW dan mengembalikan statusnya if (esp_now_init() != 0) { Serial.println("Error initializing ESP-NOW"); kembali; } esp_now_register_recv_cb(OnDataRecv); //memanggil fungsi OnDataRecv setelah menerima data ESPNOW } void loop() {}
Langkah 7: KOMUNIKASI DUA ARAH
ESP32 mengirimkan data saat startup ke ESP8266. ESP8266 mencetak pesan yang diterima dan kemudian membalas yang dicetak oleh ESP32 pada monitor serialnya.
KODE ESP32
//Tambahkan perpustakaan yang diperlukan
#include //Untuk mengakses fungsi esp now #include //Untuk Menambahkan Kemampuan Wifi pada ESP32 //menyimpan MAC Address dalam array bernama broadcastAddress; uint8_t broadcastAddress = {0xA4, 0xCF, 0x12, 0xC7, 0x9C, 0x77}; //Alamat MAC penerima saya /*mendefinisikan tipe data dari beberapa variabel terstruktur dan menamai semuanya sebagai struct_message*/ typedef struct struct_message { char a[32]; int b; mengapung c; string d; bol e; } struct_message; // Buat struct_message bernama myData struct_message myData; // fungsi dipanggil saat data dikirim untuk mencetak statusnya void OnDataSent(const uint8_t *mac_addr, esp_now_send_status_t status) { Serial.print("\r\nStatus Pengiriman Paket Terakhir:\t"); Serial.println(status == ESP_NOW_SEND_SUCCESS ? "Pengiriman Berhasil": "Pengiriman Gagal"); if(status!=ESP_NOW_SEND_SUCCESS){send_data();} } void OnDataRecv(const uint8_t * mac, const uint8_t *incomingData, int len) { memcpy(&myData, incomingData, sizeof(myData)); Serial.print("Byte yang diterima: "); Serial.println(len); Serial.print("Char: "); Serial.println(Datasaya.a); Serial.print("Int: "); Serial.println(Datasaya.b); Serial.print("Mengambang: "); Serial.println(Datasaya.c); Serial.print("String: "); Serial.println(Datasaya.d); Serial.print("Bool: "); Serial.println(datasaya.e); Serial.println(); } void setup() { //Mengatur baud rate untuk komunikasi serial dengan ESP Serial.begin(115200); // Setel perangkat sebagai Wi-Fi Station WiFi.mode(WIFI_STA);//Memulai wifi // Init ESP-NOW dan mengembalikan statusnya if (esp_now_init() != ESP_OK) { Serial.println("Error initializing ESP -SEKARANG"); kembali; } //memanggil fungsi OnDataSent setelah mengirimkan data ESPNOW esp_now_register_send_cb(OnDataSent); // Daftarkan rekan esp_now_peer_info_t peerInfo; //menginisialisasi dan menetapkan informasi rekan sebagai pointer ke alamat memcpy(peerInfo.peer_addr, broadcastAddress, 6); //salin nilai broadcastAddress dengan 6 byte ke peerInfo.peer_addr peerInfo.channel = 0; // saluran tempat esp berbicara. 0 berarti tidak ditentukan dan data akan dikirim pada saluran saat ini.1-14 adalah saluran valid yang sama dengan perangkat lokal peerInfo.encrypt = false; //tidak dienkripsi //Tambahkan perangkat ke daftar perangkat yang dipasangkan if (esp_now_add_peer(&peerInfo) != ESP_OK){ Serial.println("Gagal menambahkan rekan"); kembali; } esp_now_register_recv_cb(OnDataRecv); //memanggil fungsi OnDataRecv setelah menerima data ESPNOW send_data(); } void loop() {} void send_data(){ Serial.println("Mengirim"); // Tetapkan nilai untuk mengirim strcpy(myData.a, "INI ADALAH CHAR"); //simpan "INI ADALAH CHAR" ke variabel a dari "data" saya yang didefinisikan sebelumnya myData.b = random(1, 20); //menyimpan nilai acak myData.c = 1.2; //menyimpan float myData.d = "ESP32"; //menyimpan string myData.e = false; //menyimpan bool //Mengirim data kurang dari atau sama dengan 250 byte melalui ESP-NOW dan mengembalikan statusnya esp_err_t result = esp_now_send(broadcastAddress, (uint8_t *) &myData, sizeof(myData)); if (hasil == ESP_OK) { Serial.println("Terkirim dengan sukses");} else { Serial.println("Error mengirim data"); } }
KODE ESP8266
//Tambahkan perpustakaan yang diperlukan
#include //Untuk Menambahkan Kemampuan Wifi pada ESP32 #include //Untuk mengakses esp now berfungsi //menyimpan MAC Address dalam array bernama broadcastAddress; uint8_t broadcastAddress = {0x30, 0xAE, 0xA4, 0xF5, 0x03, 0xA4}; /*mendefinisikan tipe data dari beberapa variabel terstruktur dan menamai semuanya sebagai struct_message*/ typedef struct struct_message { char a[32]; int b; mengapung c; string d; bol e; } struct_message; // Buat variabel struct_message bernama myData struct_message myData; // fungsi dipanggil saat data diterima dan mencetaknya void OnDataRecv(uint8_t * mac, uint8_t *incomingData, uint8_t len) { memcpy(&myData, incomingData, sizeof(myData)); Serial.print("Byte yang diterima: "); Serial.println(len); Serial.print("Char: "); Serial.println(Datasaya.a); Serial.print("Int: "); Serial.println(Datasaya.b); Serial.print("Mengambang: "); Serial.println(Datasaya.c); Serial.print("String: "); Serial.println(Datasaya.d); Serial.print("Bool: "); Serial.println(datasaya.e); Serial.println(); kirim_data(); } void OnDataSent(uint8_t *mac_addr, uint8_t sendStatus) { Serial.print("\r\nStatus Pengiriman Paket Terakhir:\t"); Serial.println(sendStatus == 1 ? "Pengiriman Berhasil": "Pengiriman Gagal"); if(sendStatus !=1){ send_data(); } } void send_data(){ // Tetapkan nilai untuk mengirim strcpy(myData.a, "INI ADALAH CHAR"); //simpan "INI ADALAH CHAR" ke variabel a dari "data" saya yang didefinisikan sebelumnya myData.b = random(1, 20); //menyimpan nilai acak myData.c = 1.2; //menyimpan float myData.d = "ESP8266"; //menyimpan string myData.e = false; //menyimpan bool esp_now_send(broadcastAddress, (uint8_t *) &myData, sizeof(myData)); } void setup() { //Mengatur baud rate untuk komunikasi serial dengan ESP Serial.begin(115200); // Atur perangkat sebagai Wi-Fi Station WiFi.mode(WIFI_STA); //Memulai wifi // Init ESP-NOW dan mengembalikan statusnya if (esp_now_init() != 0) { Serial.println("Error initializing ESP-NOW"); kembali; } if (esp_now_add_peer(broadcastAddress, ESP_NOW_ROLE_SLAVE, 1, NULL, 0)){ Serial.println("Gagal menambahkan rekan"); 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); //Mendefinisikan peran esp ini esp_now_register_recv_cb(OnDataRecv); //memanggil fungsi OnDataRecv setelah menerima data ESPNOW } void loop() {}
Langkah 8: REFERENSI
ESPNOW_32_Contoh
ESPNOW_8266 Contoh
WIFI.h
ESP8266WiFi.h
esp_now.h untuk ESP8266
esp_now.h untuk ESP32
esp_now dokumen resmi (Penjelasan Fungsi yang Lebih Baik)
Panduan Resmi ESP-NOW
Direkomendasikan:
Cara Membuat dan Menyisipkan Tabel dan Menambahkan Kolom Dan/atau Baris Tambahan ke Tabel Itu di Microsoft Office Word 2007: 11 Langkah
Cara Membuat dan Menyisipkan Tabel dan Menambahkan Kolom Dan/atau Baris Tambahan ke Tabel Itu di Microsoft Office Word 2007: Pernahkah Anda memiliki banyak data yang sedang Anda kerjakan dan pikirkan sendiri…"bagaimana saya bisa membuat semua dari data ini terlihat lebih baik dan lebih mudah dipahami?" Jika demikian, maka tabel di Microsoft Office Word 2007 mungkin bisa menjadi jawaban Anda
Cara Membuat Drone Menggunakan Arduino UNO - Membuat Quadcopter Menggunakan Mikrokontroler: 8 Langkah (dengan Gambar)
Cara Membuat Drone Menggunakan Arduino UNO | Membuat Quadcopter Menggunakan Mikrokontroler: PendahuluanKunjungi Saluran Youtube Saya Drone adalah gadget (produk) yang sangat mahal untuk dibeli. Pada postingan kali ini saya akan membahas, bagaimana cara membuatnya dengan harga murah?? Dan Bagaimana Anda bisa membuat sendiri seperti ini dengan harga murah … Nah di India semua bahan (motor, ESC
Cara Menggunakan Terminal Mac, dan Cara Menggunakan Fungsi Utama: 4 Langkah
Cara Menggunakan Terminal Mac, dan Cara Menggunakan Fungsi Utama: Kami akan menunjukkan cara membuka Terminal MAC. Kami juga akan menunjukkan kepada Anda beberapa fitur di dalam Terminal, seperti ifconfig, mengubah direktori, mengakses file, dan arp. Ifconfig akan memungkinkan Anda untuk memeriksa alamat IP Anda, dan iklan MAC Anda
Cara Membuat Perangkat IoT untuk Mengontrol Peralatan dan Memantau Cuaca Menggunakan Esp8266: 5 Langkah
Cara Membuat Perangkat IoT untuk Mengontrol Peralatan dan Memantau Cuaca Menggunakan Esp8266: Internet of things (IoT) adalah jaringan antar perangkat fisik (juga disebut sebagai "perangkat yang terhubung" dan "perangkat pintar"), gedung, dan item lainnya-disematkan dengan elektronik, perangkat lunak, sensor, aktuator, dan
Cara Membuat Kalender Kakek & Scrapbook (Bahkan Jika Anda Tidak Tahu Cara Membuat Scrapbook): 8 Langkah (dengan Gambar)
Cara Membuat Kalender Kakek & Scrapbook (bahkan Jika Anda Tidak Tahu Cara Membuat Scrapbook): Ini adalah hadiah liburan yang sangat ekonomis (dan sangat dihargai!) untuk kakek-nenek. Saya membuat 5 kalender tahun ini dengan harga masing-masing kurang dari $7. Bahan: 12 foto bagus anak Anda, anak-anak, keponakan, anjing, kucing, atau kerabat lainnya12 bagian berbeda