Memulai dengan ESP-NOW (ESP32 dengan Arduino IDE)

Pelajari cara menggunakan ESP-NOW untuk bertukar data antara papan ESP32 yang diprogram dengan Arduino IDE. ESP-NOW adalah protokol komunikasi tanpa koneksi yang dikembangkan oleh Espressif yang menampilkan transmisi paket pendek. Protokol ini memungkinkan beberapa perangkat untuk berbicara satu sama lain dengan cara yang mudah.

Kami memiliki tutorial lain untuk ESP-NOW dengan ESP32 :

    ESP-NOW Komunikasi Dua Arah Antara PapanESP32

    ESP-NOW dengan ESP32: Kirim Data keBeberapa Papan (satu-ke-banyak)

    ESP-NOW dengan ESP32: Menerima Data dariBeberapa Papan (banyak-ke-satu)

    ESP32: Dasbor Sensor Server Web ESP-NOW(ESP-NOW + Wi-Fi)

Arduino IDE

Kami akan memprogram papan ESP32 menggunakan Arduino IDE, jadi sebelum melanjutkan dengan tutorial ini Anda harus menginstal add-on ESP32 di Arduino IDE Anda. Ikuti panduan selanjutnya:

    Memasang Board ESP32 di Arduino IDE(instruksi Windows, Mac OS X, dan Linux)

Catatan: kami memiliki panduan serupa untuk Papan NodeMCU ESP8266: Memulai dengan ESP-NOW (ESP8266 NodeMCU dengan Arduino IDE)

Memperkenalkan ESP-NOW

Untuk pengenalan video protokol ESP-NOW, tonton yang berikut (coba proyek yang ditampilkan dalam video ini):

Menyatakan situs web Espressif, ESP-NOW adalah “protokol yang dikembangkan oleh Espressif, yang memungkinkan beberapa perangkat untuk berkomunikasi satu sama lain tanpa menggunakan Wi-Fi. Protokol ini mirip dengan konektivitas nirkabel 2.4GHz berdaya rendah (…) . Pasangan antar perangkat diperlukan sebelum komunikasi mereka. Setelah pemasangan selesai, koneksi aman dan peer-to-peer, tanpa perlu berjabat tangan.”

Ini berarti bahwa setelah memasangkan perangkat satu sama lain, koneksi tetap ada. Dengan kata lain, jika tiba-tiba salah satu papan Anda kehilangan daya atau reset, ketika restart, secara otomatis akan terhubung ke rekan untuk melanjutkan komunikasi.

ESP-NOW mendukung fitur berikut :

    • Komunikasi unicast terenkripsi dan tidak terenkripsi;

    • Perangkat peer terenkripsi dan tidak terenkripsi campuran;

    • Muatan hingga 250 byte dapat dibawa;

    • Mengirim fungsi panggilan balik yang dapat diatur untuk menginformasikan lapisan aplikasi tentang keberhasilan atau kegagalan transmisi.

Teknologi ESP-NOW juga memiliki keterbatasan sebagai berikut :

    • Rekan terenkripsi terbatas. 10 rekan terenkripsi paling banyak didukung dalam mode Stasiun; 6 paling banyak dalam mode SoftAP atau SoftAP + Station;

    • Beberapa rekan yang tidak terenkripsi didukung, namun jumlah totalnya harus kurang dari 20, termasuk rekan terenkripsi;

    Payload dibatasi hingga 250 byte.

Dengan kata sederhana, ESP-NOW adalah protokol komunikasi cepat yang dapat digunakan untuk bertukar pesan kecil (hingga 250 byte) antara papan ESP32.

ESP-NOW sangat fleksibel dan Anda dapat memiliki komunikasi satu arah atau dua arah dalam pengaturan yang berbeda.

Komunikasi Satu Arah ESP-NOW

Misalnya, dalam komunikasi satu arah, Anda dapat memiliki skenario seperti ini:

    Satu papan ESP32 mengirim data ke papan ESP32 lain

Konfigurasi ini sangat mudah diterapkan dan sangat bagus untuk mengirim data dari satu papan ke papan lainnya seperti pembacaan sensor atau perintah ON dan OFF untuk mengontrol GPIO.

    ESP32 "master" mengirim data ke beberapa "slave" ESP32

Satu papan ESP32 mengirimkan perintah yang sama atau berbeda ke papan ESP32 yang berbeda. Konfigurasi ini sangat ideal untuk membangun sesuatu seperti remote control. Anda dapat memiliki beberapa papan ESP32 di sekitar rumah yang dikendalikan oleh satu papan ESP32 utama.

     Satu "slave" ESP32 menerima data dari beberapa "master"

Konfigurasi ini sangat ideal jika Anda ingin mengumpulkan data dari beberapa node sensor ke dalam satu papan ESP32. Ini dapat dikonfigurasi sebagai server web untuk menampilkan data dari semua papan lainnya, misalnya.

Catatan: dalam dokumentasi ESP-NOW tidak ada yang namanya “sender/master” dan “receiver/slave”. Setiap papan bisa menjadi pengirim atau penerima. Namun, untuk memperjelas, kami akan menggunakan istilah "pengirim" dan "penerima" atau "master" dan "budak".

Komunikasi Dua Arah ESP-NOW

Dengan ESP-NOW, setiap board dapat menjadi pengirim dan penerima pada saat yang bersamaan. Jadi, Anda dapat menjalin komunikasi dua arah antar papan.

Misalnya, Anda dapat memiliki dua papan yang berkomunikasi satu sama lain.

Anda dapat menambahkan lebih banyak papan ke konfigurasi ini dan memiliki sesuatu yang tampak seperti jaringan (semua papan ESP32 berkomunikasi satu sama lain).

Singkatnya, ESP-NOW sangat ideal untuk membangun jaringan di mana Anda dapat memiliki beberapa papan ESP32 yang saling bertukar data.

ESP32: Mendapatkan Alamat MAC Papan

Untuk berkomunikasi melalui ESP-NOW, Anda perlu mengetahui MAC Address dari penerima ESP32. Begitulah cara Anda mengetahui ke perangkat mana Anda akan mengirim data.

Setiap ESP32 memiliki alamat MAC yang unik dan begitulah cara kami mengidentifikasi setiap papan untuk mengirim data ke sana menggunakan ESP-NOW (pelajari cara Mendapatkan dan Mengubah Alamat MACESP32).

Untuk mendapatkan Alamat MAC papan Anda, unggah kode berikut.

Setelah mengupload kode, buka Serial Monitor dengan baud rate 115200 dan tekan tombol ESP32 RST/EN. Alamat MAC harus dicetak sebagai berikut:

Simpan alamat MAC papan Anda karena Anda akan membutuhkannya untuk mengirim data ke papan yang tepat melalui ESP-NOW.

ESP-NOW Komunikasi Titik ke Titik Satu Arah

Untuk memulai komunikasi nirkabel ESP-NOW, kami akan membuat proyek sederhana yang menunjukkan cara mengirim pesan dari satu ESP32 ke ESP32 lainnya. Satu ESP32 akan menjadi "pengirim" dan ESP32 lainnya akan menjadi "penerima".

Kami akan mengirimkan struktur yang berisi variabel bertipe char, int, float, dan boolean. Kemudian, Anda dapat memodifikasi struktur untuk mengirim jenis variabel mana pun yang cocok untuk proyek Anda (seperti pembacaan sensor, atau variabel boolean untuk mengaktifkan atau menonaktifkan sesuatu).

Untuk pemahaman yang lebih baik, kami akan memanggil "pengirim" ke ESP32 #1 dan "penerima" ke ESP32 #2.

Inilah yang harus kami sertakan dalam sketsa pengirim:

    • Inisialisasi ESP-SEKARANG;

    • Daftarkan fungsi panggilan balik saat mengirim data – fungsi OnDataSent akan dijalankan saat pesan dikirim. Ini dapat memberi tahu kami apakah pesan berhasil dikirim atau tidak;

    • Tambahkan perangkat peer (penerima). Untuk ini, Anda perlu mengetahui alamat MAC penerima;

    • Kirim pesan ke perangkat peer.

Di sisi penerima, sketsa harus mencakup:

    • Inisialisasi ESP-SEKARANG;

    • Mendaftar untuk menerima fungsi panggilan balik (OnDataRecv). Ini adalah fungsi yang akan dijalankan ketika pesan diterima.

    • Di dalam fungsi panggilan balik itu, simpan pesan ke dalam variabel untuk menjalankan tugas apa pun dengan informasi itu.

ESP-NOW bekerja dengan fungsi panggilan balik yang dipanggil saat perangkat menerima pesan atau saat pesan dikirim (Anda mendapatkan jika pesan berhasil dikirim atau gagal).

ESP-SEKARANG Fungsi Berguna

Berikut ringkasan fungsi ESP-NOW yang paling penting :

Nama Fungsi dan Deskripsi

esp_now_init() Menginisialisasi ESP-NOW. Anda harus menginisialisasi Wi-Fi sebelum menginisialisasi ESP-NOW.

esp_now_add_peer() Panggil fungsi ini untuk memasangkan perangkat dan meneruskan sebagai argumen alamat MAC rekan.

esp_now_send() Kirim data dengan ESP-NOW.

esp_now_register_send_cb() Daftarkan fungsi panggilan balik yang dipicu saat mengirim data. Saat pesan dikirim, sebuah fungsi dipanggil – fungsi ini mengembalikan apakah pengiriman berhasil atau tidak.

esp_now_register_rcv_cb() Daftarkan fungsi panggilan balik yang dipicu saat menerima data. Ketika data diterima melalui ESP-NOW, sebuah fungsi dipanggil.

Untuk informasi lebih lanjut tentang fungsi-fungsi ini, baca dokumentasi ESP-NOW di Read the Docs.

Sketsa Pengirim ESP32 (ESP-SEKARANG)

Berikut kode untuk papan Pengirim ESP32. Salin kode ke Arduino IDE Anda, tetapi jangan mengunggahnya dulu. Anda perlu membuat beberapa modifikasi untuk membuatnya bekerja untuk Anda.






Cara kerja kode

Pertama, sertakan library esp_now.h dan WiFi.h.

Di baris berikutnya, Anda harus memasukkan alamat MAC penerima ESP32.

Dalam kasus kami, alamat MAC penerima adalah: 30:AE:A4:07:0D:64, tetapi Anda perlu mengganti variabel itu dengan alamat MAC Anda sendiri.

Kemudian, buat struktur yang berisi tipe data yang ingin kita kirim. Kami menyebut struktur ini struct_message dan berisi 4 tipe variabel yang berbeda. Anda dapat mengubah ini untuk mengirim jenis variabel lainnya.

Kemudian, buat variabel baru dengan tipe struct_message yang disebut myData yang akan menyimpan nilai variabel.

Buat variabel tipe esp_now_peer_info_t untuk menyimpan informasi tentang rekan.

Selanjutnya, tentukan fungsi OnDataSent(). Ini adalah fungsi panggilan balik yang akan dijalankan ketika pesan dikirim. Dalam hal ini, fungsi ini hanya mencetak jika pesan berhasil dikirim atau tidak.

Di setup(), inisialisasi monitor serial untuk keperluan debugging:

Mengatur perangkat sebagai stasiun Wi-Fi:

Inisialisasi ESP-SEKARANG:

Setelah berhasil menginisialisasi ESP-NOW, daftarkan fungsi callback yang akan dipanggil saat pesan terkirim. Dalam hal ini, kami mendaftar untuk fungsi OnDataSent() yang dibuat sebelumnya.

Setelah itu, kita perlu memasangkan dengan perangkat ESP-NOW lain untuk mengirim data. Itulah yang kami lakukan di baris berikutnya:

Di loop(), kami akan mengirim pesan melalui ESP-NOW setiap 2 detik (Anda dapat mengubah waktu tunda ini).

Pertama, kami menetapkan nilai variabel sebagai berikut:

Ingat bahwa myData adalah sebuah struktur. Di sini kita menetapkan nilai yang ingin kita kirim ke dalam struktur. Misalnya, baris pertama memberikan karakter, baris kedua memberikan nomor Int acak, Float, dan variabel Boolean.

Kami membuat struktur semacam ini untuk menunjukkan kepada Anda cara mengirim jenis variabel yang paling umum. Anda dapat mengubah struktur untuk mengirim tipe data lain.

Terakhir, kirim pesan sebagai berikut:

Periksa apakah pesan berhasil dikirim:

Loop() dijalankan setiap 2000 milidetik (2 detik).

Sketsa Penerima ESP32 (ESP-SEKARANG)

Unggah kode berikut ke papan penerima ESP32 Anda.




Cara kerja kode

Sama halnya dengan pengirim, mulailah dengan menyertakan perpustakaan:

Buat struktur untuk menerima data. Struktur ini harus sama didefinisikan dalam sketsa pengirim.

Buat variabel struct_message bernama myData.

Buat fungsi panggilan balik yang akan dipanggil saat ESP32 menerima data melalui ESP-NOW. Fungsi ini disebut onDataRecv() dan harus menerima beberapa parameter sebagai berikut:

Kami menyalin konten variabel data data masuk ke variabel myData.

Sekarang, struktur myData berisi beberapa variabel di dalamnya dengan nilai yang dikirim oleh pengirim ESP32. Untuk mengakses variabel a, misalnya, kita hanya perlu memanggil myData.a.

Dalam contoh ini, kami hanya mencetak data yang diterima, tetapi dalam aplikasi praktis Anda dapat mencetak data pada layar, misalnya.

Di setup(), inisialisasi Serial Monitor.

Atur perangkat sebagai Stasiun Wi-Fi.

Inisialisasi ESP-SEKARANG:

Mendaftar untuk fungsi panggilan balik yang akan dipanggil saat data diterima. Dalam hal ini, kami mendaftar untuk fungsi OnDataRecv() yang telah dibuat sebelumnya.

Menguji Komunikasi ESP-NOW

Unggah sketsa pengirim ke papan ESP32 pengirim dan sketsa penerima ke papan ESP32 penerima.

Sekarang, buka dua jendela Arduino IDE. Satu untuk penerima, dan satu lagi untuk pengirim. Buka Serial Monitor untuk setiap papan. Ini harus menjadi port COM yang berbeda untuk setiap papan.

Inilah yang harus Anda dapatkan di sisi pengirim.

Dan inilah yang harus Anda dapatkan di sisi penerima. Perhatikan bahwa variabel Int berubah di antara setiap pembacaan yang diterima (karena kami menyetelnya ke nomor acak di sisi pengirim).

Kami menguji jangkauan komunikasi antara dua papan, dan kami bisa mendapatkan komunikasi yang stabil hingga 220 meter (sekitar 722 kaki) di lapangan terbuka. Dalam percobaan ini kedua antena on-board ESP32 saling menunjuk.

Membungkus

Kami mencoba membuat contoh kami sesederhana mungkin sehingga Anda lebih memahami cara kerja semuanya. Ada lebih banyak fungsi terkait ESP-NOW yang dapat berguna dalam proyek Anda, seperti: mengelola rekan, menghapus rekan, memindai perangkat budak, dll... Untuk contoh lengkap, di Arduino IDE Anda, Anda bisa pergi ke File > Contoh > ESP32 > ESPSekarang dan pilih salah satu contoh sketsa.

Kami harap pengantar ESP-NOW ini bermanfaat bagi Anda. Sebagai contoh sederhana untuk memulai, kami telah menunjukkan kepada Anda cara mengirim data sebagai struktur dari satu ESP32 ke ESP32 lainnya. Idenya adalah untuk mengganti nilai struktur dengan pembacaan sensor atau status GPIO, misalnya.

Selain itu, dengan ESP-NOW, setiap board secara bersamaan dapat menjadi pengirim dan penerima. Satu papan dapat mengirimdata ke beberapa papan dan juga menerima data dari beberapa papan.

Kami juga memiliki tutorial tentang ESP-NOW dengan ESP8266 : Memulai dengan ESP-NOW (ESP8266 NodeMCU dengan Arduino IDE).

Untuk mempelajari lebih lanjut tentang papan ESP32, pastikan Anda melihat sumber daya kami :

    ESP-NOW Komunikasi Dua Arah Antara PapanESP32

    Belajar ESP32 dengan Arduino IDE (kursusvideo + eBook);

    Pemrograman MicroPython dengan ESP32 danESP8266

    Sumber daya ESP32 lainnya…

 Sumber : randomnerdtutorials.com

Posting Komentar

0 Komentar