Pada protokol ESPNOW, kita bisa menggunakannya untuk komunikasi dua arah. Dari ESP32 Master kirim data ke ESP32 Slave, kemudian dari ESP32 Slave balikin lagi ke ESP32 Master.
Kode Cek Mac Address
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include "WiFi.h" | |
void setup(){ | |
Serial.begin(115200); | |
WiFi.mode(WIFI_MODE_STA); | |
Serial.println(WiFi.macAddress()); | |
} | |
void loop(){ | |
} |
Kode ESP32 Master
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <WiFi.h> | |
#include <esp_now.h> | |
// mac address tujuan | |
uint8_t mac_addr_tujuan[] = {0xA4, 0xCF, 0x12, 0x05, 0xD5, 0x98}; | |
// struktur data yang dikirim | |
typedef struct struct_message { | |
unsigned long waktu; | |
} struct_message; | |
struct_message data_ku; | |
// variabel peerInfo | |
esp_now_peer_info_t peerInfo; | |
// callback Jika data terkirim | |
void cb_kirim(const uint8_t *mac_addr, esp_now_send_status_t status) { | |
Serial.print("Status Pengiriman: "); | |
if(status == ESP_NOW_SEND_SUCCESS){ | |
Serial.println("Sukses"); | |
} | |
else{ | |
Serial.println("Gagal"); | |
} | |
} | |
// callback jika menerima data | |
void cb_terima(const uint8_t *mac_addr, const uint8_t *dataDiterima, int panjang) { | |
memcpy(&data_ku, dataDiterima, sizeof(data_ku)); | |
Serial.print("Bytes diterima: "); | |
Serial.println(panjang); | |
Serial.print("Waktu Dikirim: "); | |
Serial.println(data_ku.waktu); | |
Serial.print("Waktu Diterima: "); | |
Serial.println(millis()); | |
Serial.println(); | |
} | |
void setup() { | |
Serial.begin(115200); | |
// mengatur esp ke mode station | |
WiFi.mode(WIFI_STA); | |
// inisialisasi espnow | |
if (esp_now_init() != ESP_OK) { | |
Serial.println("Gagal Inisialisasi espnow"); | |
return; | |
} | |
// mendaftarkan fungsi callback | |
esp_now_register_send_cb(cb_kirim); | |
// Mendata Peer / Kawan | |
memcpy(peerInfo.peer_addr, mac_addr_tujuan, 6); | |
peerInfo.channel = 0; | |
peerInfo.encrypt = false; | |
// Menambahkan Peer / Kawan | |
if (esp_now_add_peer(&peerInfo) != ESP_OK){ | |
Serial.println("Gagal Menambah Peer"); | |
return; | |
} | |
// mendaftarkan fungsi callback | |
esp_now_register_recv_cb(cb_terima); | |
} | |
void loop() { | |
// mengisi nilai ke variabel | |
data_ku.waktu = millis(); | |
// mengirim data | |
esp_now_send(mac_addr_tujuan, (uint8_t *) &data_ku, sizeof(data_ku)); | |
delay(2000); | |
} |
Kode ESP32 Slave
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <WiFi.h> | |
#include <esp_now.h> | |
// mac address tujuan | |
uint8_t mac_addr_tujuan[] = {0xF0, 0x08, 0xD1, 0x62, 0xD6, 0xE8}; | |
// struktur data yang diterima | |
typedef struct struct_message { | |
unsigned long waktu; | |
} struct_message; | |
struct_message data_ku; | |
// variabel peerInfo | |
esp_now_peer_info_t peerInfo; | |
// callback Jika data terkirim | |
void cb_kirim(const uint8_t *mac_addr, esp_now_send_status_t status) { | |
Serial.print("Status Pengiriman: "); | |
if(status == ESP_NOW_SEND_SUCCESS){ | |
Serial.println("Sukses"); | |
} | |
else{ | |
Serial.println("Gagal"); | |
} | |
} | |
// callback jika menerima data | |
void cb_terima(const uint8_t *mac_addr, const uint8_t *dataDiterima, int panjang) { | |
memcpy(&data_ku, dataDiterima, sizeof(data_ku)); | |
esp_now_send(mac_addr_tujuan, (uint8_t *) &data_ku, sizeof(data_ku)); | |
Serial.print("Bytes diterima: "); | |
Serial.println(panjang); | |
Serial.print("Waktu: "); | |
Serial.println(data_ku.waktu); | |
Serial.println(); | |
// esp_now_send(mac_/addr_tujuan, (uint8_t *) &data_ku, sizeof(data_ku)); | |
} | |
void setup() { | |
Serial.begin(115200); | |
// mengatur esp ke mode station | |
WiFi.mode(WIFI_STA); | |
// inisialisasi espnow | |
if (esp_now_init() != ESP_OK) { | |
Serial.println("Gagal Inisialisasi espnow"); | |
return; | |
} | |
// mendaftarkan fungsi callback | |
esp_now_register_send_cb(cb_kirim); | |
// Mendata Peer / Kawan | |
memcpy(peerInfo.peer_addr, mac_addr_tujuan, 6); | |
peerInfo.channel = 0; | |
peerInfo.encrypt = false; | |
// Menambahkan Peer / Kawan | |
if (esp_now_add_peer(&peerInfo) != ESP_OK){ | |
Serial.println("Gagal Menambah Peer"); | |
return; | |
} | |
// mendaftarkan fungsi callback | |
esp_now_register_recv_cb(cb_terima); | |
} | |
void loop() { | |
} |
Video
Kerjasama Robotik ID
https://linktr.ee/robotikidYoutube: https://www.youtube.com/robotikid
Instagram: https://www.instagram.com/robotikid/
Facebook: https://www.facebook.com/RobotikID/
Website: https://www.robotikindonesia.com/
Tokopedia: http://tokopedia.com/instrumentrobot
0 Comments