ESP-NOW Komunikasi Dua Arah Antara Papan ESP32

Dalam panduan ini, kami akan menunjukkan cara membangun komunikasi dua arah antara dua papan ESP32 menggunakan protokol komunikasi ESP-NOW. Sebagai contoh, dua papan ESP32 akan bertukar pembacaan sensor (dengan jangkauan di lapangan terbuka hingga 220 meter ~ 722 kaki).

Tonton Video Pengenalannya

Untuk pengenalan protokol ESP-NOW, Anda dapat menonton video berikut:

Memperkenalkan ESP-NOW

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 tanpa menggunakan Wi-Fi.

Ini 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.

Dalam tutorial ini, kami akan menunjukkan cara membangun komunikasi dua arah antara dua papan ESP32.

Catatan: baca Panduan Memulai ESP-NOW kami untuk pengenalan lengkap protokol ESP-NOW dengan ESP32.

Ulasan Proyek

Diagram berikut menunjukkan gambaran umum tingkat tinggi dari proyek yang akan kita bangun.

    • Dalam proyek ini kami akan memiliki dua papan ESP32. Setiap papan terhubung ke layar OLED dan sensor BME280;

    • Setiap papan mendapatkan pembacaan suhu, kelembaban dan tekanan dari sensor yang sesuai;

    • Setiap papan mengirimkan bacaannya ke papan lain melalui ESP-NOW;

    • Ketika sebuah papan menerima pembacaan, ia menampilkannya di layar OLED;

    • Setelah mengirim bacaan, papan ditampilkan di OLED jika pesan berhasil dikirim;

    • Setiap papan perlu mengetahui alamat MAC papan lainnya untuk mengirim pesan.

Dalam contoh ini, kami menggunakan komunikasi dua arah antara dua papan, tetapi Anda dapat menambahkan lebih banyak papan ke pengaturan ini, dan membuat semua papan berkomunikasi satu sama lain.

Prasyarat

Sebelum melanjutkan dengan proyek ini, pastikan Anda memeriksa prasyarat berikut.

ESP32 add-on Arduino IDE

Kami akan memprogram 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(Windows, Mac OS X, dan Linux)

Instal Libraries

Instal perpustakaan berikut di Arduino IDE Anda. Library ini dapat diinstal melalui Arduino Library Manager. Buka Sketsa > Sertakan Perpustakaan > Kelola Perpustakaan dan cari nama perpustakaan.

    • Pustaka OLED (Panduan OLED ESP32): Pustaka Adafruit_SSD1306 dan Pustaka Adafruit_GFX

    • Pustaka BME280 (Panduan ESP32 BME280): Pustaka Adafruit_BME280 dan Pustaka Sensor Terpadu Adafruit

Bagian yang Diperlukan

Untuk tutorial ini Anda memerlukan bagian-bagian berikut:

    • 2x papan pengembangan ESP32 (baca papanESP32 Terbaik)

    • 2x sensor BME280 (Panduan Lengkap BME280)

    Layar OLED 2x 0,96 inci (Panduan LengkapOLED)

    Breadboard

    Kabel Jumper

Mendapatkan Papan Alamat MAC

Untuk mengirim pesan di antara setiap papan, kita perlu mengetahui alamat MAC mereka. Setiap papan memiliki alamat MAC yang unik (pelajari cara Mendapatkan dan Mengubah Alamat MAC ESP32).

Unggah kode berikut ke setiap papan Anda untuk mendapatkan alamat MAC mereka.

Setelah mengupload kode, tekan tombol RST/EN, dan alamat MAC akan ditampilkan di Serial Monitor.

Tuliskan alamat MAC dari setiap papan untuk mengidentifikasi mereka dengan jelas.

Diagram Skematik

Hubungkan layar OLED dan sensor BME280 ke setiap papan ESP32. Ikuti diagram skema berikutnya.

Anda dapat menggunakan tabel berikut sebagai referensi saat memasang kabel sensor BME280.

Anda juga dapat mengikuti tabel berikutnya untuk menyambungkan layar OLED ke ESP32.

ESP32 Komunikasi Dua Arah Kode ESP-NOW

Unggah kode berikut ke setiap papan Anda. Sebelum mengunggah kode, Anda harus memasukkan alamat MAC papan lain (papan tempat Anda mengirim data).








Cara Kerja Kode

Kami telah membahas dengan sangat rinci cara berinteraksi dengan layar OLED dan dengan sensor BME280 di tutorial sebelumnya. Di sini, kita hanya akan melihat bagian-bagian yang relevan dalam hal ESP-NOW.

Kode dikomentari dengan baik sehingga Anda memahami apa yang dilakukan setiap baris kode.

Untuk menggunakan ESP-NOW, Anda perlu menyertakan perpustakaan berikutnya.

Di baris berikutnya, masukkan alamat MAC papan penerima:

Buat variabel untuk menyimpan pembacaan suhu, kelembaban dan tekanan dari sensor BME280. Bacaan ini akan dikirim ke papan lain:

Buat variabel untuk menyimpan pembacaan sensor yang berasal dari papan lain:

Variabel berikut akan menyimpan pesan sukses jika pembacaan berhasil dikirim ke papan lain.

Buat struktur yang menyimpan pembacaan kelembaban, suhu dan tekanan.

Kemudian, Anda perlu membuat dua contoh struktur itu. Satu untuk menerima bacaan dan satu lagi untuk menyimpan bacaan yang akan dikirim.

BME280Readings akan menyimpan bacaan yang akan dikirim.

IncomingReadings akan menyimpan data yang berasal dari board lain.

Buat variabel tipe esp_now_peer_info_t untuk menyimpan informasi tentang rekan.

Kemudian, kita perlu membuat dua fungsi panggilan balik. Satu akan dipanggil saat data dikirim, dan yang lain akan dipanggil saat data diterima.

Fungsi panggilan balik OnDataSent()

Fungsi OnDataSent() akan dipanggil saat data baru dikirim. Fungsi ini hanya mencetak jika pesan berhasil terkirim atau tidak. Jika pesan berhasil terkirim, variabel status mengembalikan 0, sehingga kami dapat mengatur pesan sukses kami ke “Delivery Success”:

Jika pesan sukses mengembalikan 1, berarti pengiriman gagal:

Fungsi panggilan balik OnDataRecv()

Fungsi OnDataRecv() akan dipanggil saat paket baru tiba.

Kami menyimpan paket baru dalam struktur IncomingReadings yang telah kami buat sebelumnya:

Kami mencetak panjang pesan pada monitor serial. Anda hanya dapat mengirim 250 byte dalam setiap paket.

Kemudian, simpan pembacaan yang masuk dalam variabel yang sesuai. Untuk mengakses variabel temperatur di dalam struktur incomingReadings, Anda hanya perlu melakukan panggilan incomingReadings.temp sebagai berikut:

Proses yang sama dilakukan untuk variabel lainnya:


setup()

Di setup(), inisialisasi ESP-NOW.


Kemudian, daftar untuk fungsi panggilan balik OnDataSent.

Untuk mengirim data ke papan lain, Anda harus memasangkannya sebagai rekan. Baris berikut mendaftar dan menambahkan rekan baru.

Daftar untuk fungsi panggilan balik OnDataRecv.

loop()

Dalam loop(), kita memanggil fungsi getReadings() yang bertanggung jawab untuk mendapatkan pembacaan suhu baru dari sensor. Fungsi itu dibuat setelah loop().

Setelah mendapatkan pembacaan suhu, kelembaban, dan tekanan baru, kami memperbarui struktur BME280Reading kami dengan nilai-nilai baru tersebut:

Kemudian, kami dapat mengirim struktur BME280Readings melalui ESP-NOW:

Terakhir, panggil fungsi updateDisplay() yang akan memperbarui tampilan OLED dengan pembacaan yang berasal dari papan ESP32 lainnya.

Loop() dijalankan setiap 10 detik.

Kurang lebih seperti itulah cara kerja kode. Anda harus mengunggah kode ke kedua papan Anda. Anda hanya perlu memodifikasi kode dengan alamat MAC dari papan tempat Anda mengirim data.

Demonstrasi

Setelah mengunggah kode ke kedua papan, Anda akan melihat OLED menampilkan pembacaan sensor dari papan lain, serta pesan pengiriman sukses.

Seperti yang Anda lihat, ini berfungsi seperti yang diharapkan:

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

Dalam tutorial ini kami telah menunjukkan kepada Anda bagaimana membangun komunikasi dua arah dengan dua papan ESP32 menggunakan ESP-NOW. Ini adalah protokol komunikasi yang sangat serbaguna yang dapat digunakan untuk mengirim paket hingga 250 byte. Protokol komunikasi ESP-NOW juga dapat digunakan dengan papan ESP8266: Memulai dengan ESP-NOW (ESP8266 NodeMCU dengan Arduino IDE).

Sebagai contoh, kami telah menunjukkan kepada Anda interaksi antara dua papan, tetapi Anda dapat menambahkan banyak papan ke pengaturan Anda. Anda hanya perlu mengetahui alamat MAC papan tempat Anda mengirim data.

Kami akan menerbitkan lebih banyak tutorial tentang ESP-NOW, jadi pantau terus. Selain itu, tulis komentar di bawah dengan mengatakan tutorial mana yang ingin Anda lihat dengan ESP-NOW.

Untuk mempelajari lebih lanjut tentang papan ESP32, lihat sumber daya kami:

    Belajar ESP32 dengan Arduino IDE (kursusvideo + eBook)

    Pemrograman MicroPython dengan ESP32 danESP8266

    Sumber daya ESP32 lainnya…

Sumber : randomnerdtutorials.com

Posting Komentar

0 Komentar