ESP32 MQTT – Publikasikan dan Berlangganan dengan Arduino IDE

Proyek ini menunjukkan cara menggunakan protokol komunikasi MQTT dengan ESP32 untuk memublikasikan pesan dan berlangganan topik. Sebagai contoh, kami akan memublikasikan pembacaan sensor BME280 ke Dasbor Node-RED, dan mengontrol output ESP32. ESP32 kita akan diprogram menggunakan Arduino IDE.

Ulasan Proyek

Dalam contoh ini, ada aplikasi Node-RED yang mengontrol output ESP32 dan menerima pembacaan sensor dari ESP32 menggunakan protokol komunikasi MQTT. Aplikasi Node-RED berjalan di Raspberry Pi.

Kami akan menggunakan broker Mosquitto yang diinstal pada Raspberry Pi yang sama. Pialang bertanggung jawab untuk menerima semua pesan, menyaring pesan, memutuskan siapa yang tertarik dengannya dan menerbitkan pesan ke semua klien yang berlangganan.

Gambar berikut menunjukkan gambaran umum tentang apa yang akan kita lakukan dalam tutorial ini.

• Aplikasi Node-RED menerbitkan pesan (“on” atau “off”) dalam topik esp32/output. ESP32 berlangganan topik itu. Jadi, ia menerima pesan dengan "on" atau "off" untuk menyalakan atau mematikan LED.

• ESP32 menerbitkan suhu pada topik esp32/suhu dan kelembaban pada topik esp32/kelembaban. Aplikasi Node-RED berlangganan topik tersebut. Jadi, ia menerima pembacaan suhu dan kelembaban yang dapat ditampilkan pada grafik atau pengukur, misalnya.

Catatan: ada juga tutorial serupa tentang cara menggunakan ESP8266 dan Node-RED dengan MQTT.

Prasyarat

    • Anda harus terbiasa dengan Raspberry Pi – baca Memulai dengan Raspberry Pi.

    • Anda harus menginstal sistem operasi Raspbian di Raspberry Pi Anda – baca Menginstal Raspbian Lite, Mengaktifkan,dan Menghubungkan dengan SSH.

    • Anda perlu menginstal Node-RED di Pi dan Dashboard Node-RED Anda.

    • Pelajari apa itu MQTT dan cara kerjanya.

Jika Anda menyukai otomatisasi rumah dan ingin mempelajari lebih lanjut tentang Node-RED, Raspberry Pi, ESP8266, dan Arduino, kami sarankan untuk mencoba kursus kami: Membangun Sistem OtomasiRumah dengan Node-RED, ESP8266, dan Arduino. Kami juga memiliki kursus yang didedikasikan untuk ESP32: Mendaftar di kursus Belajar ESP32 dengan ArduinoIDE.

Bagian yang Diperlukan

Ini adalah bagian yang diperlukan untuk membangun sirkuit (klik tautan di bawah untuk menemukan harga terbaik di Maker Advisor):

    Raspberry Pibaca Kit Pemula RaspberryPi 3 Terbaik

    Papan ESP32 DOIT DEVKIT V1bacaTinjauan dan Perbandingan Papan Pengembangan ESP32

    Modul sensor BME280

    1x5mm LED

     1x220 Ohm resistor

    Breadboard

    Kabel jumper

Memperkenalkan Modul Sensor BME280

Modul sensor BME280 membaca suhu, kelembaban, dan tekanan. Karena tekanan berubah dengan ketinggian, Anda juga dapat memperkirakan ketinggian. Namun, dalam tutorial ini kita hanya akan membaca suhu dan kelembapan. Ada beberapa versi modul sensor ini, tetapi kami menggunakan yang ditunjukkan pada gambar di bawah ini.

Sensor dapat berkomunikasi menggunakan protokol komunikasi SPI atau I2C (ada modul sensor ini yang hanya berkomunikasi dengan I2C, ini hanya dilengkapi dengan empat pin).

Untuk menggunakan protokol komunikasi SPI, gunakan pin berikut:

    • SCK – ini adalah pin Jam SPI

    • SDO – MISO

    • SDI – MOSI

    • CS – Pilihan Chip

Untuk menggunakan protokol komunikasi I2C, sensor menggunakan pin berikut:

    • SCK – pin SCL

    • Pin SDI – SDA

Skema

Kami akan menggunakan komunikasi I2C dengan modul sensor BME280. Untuk itu, hubungkan sensor ke pin ESP32 SDA dan SCL, seperti yang ditunjukkan pada diagram skema berikut.

Kami juga akan mengontrol output ESP32, LED yang terhubung ke GPIO 4.

Begini tampilan sirkuit Anda:

Mempersiapkan Arduino IDE

Ada add-on untuk Arduino IDE yang memungkinkan Anda memprogram ESP32 menggunakan Arduino IDE dan bahasa pemrogramannya. Ikuti salah satu tutorial berikutnya untuk mempersiapkan Arduino IDE Anda untuk bekerja dengan ESP32, jika Anda belum melakukannya.

    Instruksi Windows – Papan ESP32 diArduino IDE

    Instruksi Mac dan Linux – Papan ESP32 diArduino IDE

Setelah memastikan Anda telah menginstal add-on ESP32, Anda dapat melanjutkan dengan tutorial ini.

Memasang Pustaka PubSubClient

Pustaka PubSubClient menyediakan klien untuk melakukan publish/subscribe messaging sederhana dengan server yang mendukung MQTT (pada dasarnya memungkinkan ESP32 Anda untuk berbicara dengan Node-RED).

1. Klik di sini untuk mengunduh pustakaPubSubClient. Anda harus memiliki folder .zip di folder Unduhan Anda

2. Buka zip folder .zip dan Anda akan mendapatkan folder pubsubclient-master

3. Ganti nama folder Anda dari pubsubclient-master menjadi pubsubclient

4. Pindahkan folder pubsubclient ke folder library instalasi Arduino IDE Anda

5. Kemudian, buka kembali Arduino IDE Anda

Perpustakaan dilengkapi dengan sejumlah contoh sketsa. Lihat File >Examples > PubSubClient dalam perangkat lunak Arduino IDE.

Penting: PubSubClient tidak sepenuhnya kompatibel dengan ESP32, tetapi contoh yang diberikan dalam tutorial ini bekerja dengan sangat andal selama pengujian kami.

Menginstal Library BME280

Untuk mengambil bacaan dari modul sensor BME280 kami akan menggunakan library Adafruit_BME280. Ikuti langkah-langkah selanjutnya untuk menginstal perpustakaan di Arduino IDE Anda:

1. Klik di sini untuk mengunduh pustaka Adafruit-BME280. Anda harus memiliki folder .zip di folder Unduhan Anda

2. Buka zip folder .zip dan Anda akan mendapatkan folder Adafruit-BME280-Library-master

3. Ganti nama folder Anda dari Adafruit-BME280-Library-master menjadi Adafruit_BME280_Library

4. Pindahkan folder Adafruit_BMPE280_Library ke folder library instalasi Arduino IDE Anda

5. Terakhir, buka kembali Arduino IDE Anda

Atau, Anda dapat pergi ke Sketch > Include Library > Manage Libraries dan ketik “adafruit bme280” untuk mencari library. Kemudian, klik instal.

Memasang pustaka Adafruit_Sensor

Untuk menggunakan perpustakaan BME280, Anda juga perlu menginstal library Adafruit_Sensor. Ikuti langkah-langkah selanjutnya untuk menginstal perpustakaan:

1. Klik di sini untuk mengunduh pustaka Adafruit_Sensor. Anda harus memiliki folder .zip di folder Unduhan Anda

2. Buka zip folder .zip dan Anda akan mendapatkan folder Adafruit_Sensor-master

3. Ganti nama folder Anda dari Adafruit_Sensor-master menjadi Adafruit_Sensor

4. Pindahkan folder Adafruit_Sensor ke folder library instalasi Arduino IDE Anda

5. Terakhir, buka kembali Arduino IDE Anda

Mengunggah kode

Sekarang, Anda dapat mengunggah kode berikut ke ESP32 Anda. Kode dikomentari di mana Anda perlu melakukan perubahan. Anda perlu mengedit kode dengan SSID, kata sandi, dan alamat IP Raspberry Pi Anda sendiri.

 







Kode ini menerbitkan pembacaan suhu dan kelembaban pada topik esp32/temperature dan esp32/humidity melalui protokol MQTT.

ESP32 berlangganan topik esp32/output untuk menerima pesan yang dipublikasikan pada topik tersebut oleh aplikasi Node-RED. Kemudian, sesuai dengan pesan yang diterima, LED akan menyala atau mati.

Berlangganan topik MQTT

Dalam fungsi reconnect(), Anda dapat berlangganan topik MQTT. Dalam hal ini, ESP32 hanya berlangganan ke esp32/output:

Dalam fungsi callback(), ESP32 menerima pesan MQTT dari topik yang dilanggan. Menurut topik dan pesan MQTT, ini menyalakan atau mematikan LED:

Menerbitkan pesan MQTT

Di loop(), pembacaan baru diterbitkan setiap 5 detik:

Secara default, ESP32 mengirimkan suhu dalam Celcius, tetapi Anda dapat menghapus komentar pada baris terakhir untuk mengirim suhu dalam Fahrenheit:


Anda perlu mengonversi variabel float suhu ke array char, sehingga Anda dapat memublikasikan pembacaan suhu di topik esp32/temperature:

Proses yang sama diulang untuk mempublikasikan pembacaan kelembaban di topik esp32/kelembaban:

Membuat aliran Node-RED

Sebelum membuat alur, Anda harus menginstal di Raspberry Pi Anda:

    Node-MERAH

    Dasbor Node-RED

    Broker Nyamuk

Setelah itu, impor aliran Node-RED yang disediakan. Buka repositori GitHub atau klik gambar di bawah untuk melihat file mentah, dan salin kode yang disediakan.


Selanjutnya, di jendela Node-RED, di sudut kanan atas, pilih menu, dan pergi ke Import > Clipboard.

Kemudian, rekatkan kode yang disediakan dan klik Impor.



Node berikut harus dimuat:

Setelah melakukan perubahan, klik tombol Deploy untuk menyimpan semua perubahan.

UI Node-RED

Sekarang, aplikasi Node-RED Anda sudah siap. Untuk mengakses Node-RED UI dan melihat tampilan aplikasi Anda, akses browser apa pun di jaringan lokal Anda dan ketik:

Aplikasi Anda akan terlihat seperti yang ditunjukkan pada gambar berikut. Anda dapat mengontrol dan mematikan LED dengan sakelar atau Anda dapat melihat pembacaan suhu dalam grafik dan nilai kelembaban dalam pengukur.

Demonstrasi

Tonton video berikutnya untuk demonstrasi langsung:

Buka monitor serial Arduino IDE untuk melihat pesan MQTT yang diterima dan dipublikasikan.

Membungkus

Singkatnya, kami telah menunjukkan kepada Anda konsep dasar yang memungkinkan Anda menyalakan lampu dan memantau sensor dengan ESP32 Anda menggunakan Node-RED dan protokol komunikasi MQTT. Anda dapat menggunakan contoh ini untuk mengintegrasikan dalam sistem otomatisasi rumah Anda sendiri, mengontrol lebih banyak output, atau memantau sensor lainnya.

Anda mungkin juga suka membaca:

    Belajar ESP32 dengan Kursus Arduino IDE

    Alexa (Echo) dengan ESP32 dan ESP8266 –Relay Terkendali Suara

    Bangun Pelindung Stasiun Cuaca ESP32All-in-One

    ESP32 Memublikasikan Pembacaan Sensor keGoogle Spreadsheet

    ESP32 dengan Server Web Kelembaban SuhuDHT11 DHT22

    Server Web ESP32 dengan Arduino IDE

Kami harap tutorial ini bermanfaat bagi Anda.

Sumber : randomnerdtutorials.com

Posting Komentar

0 Komentar