- Apa itu Protokol MQTT?
- Bagaimana MQTT Bekerja?
- Pialang Eclipse Mosquitto
- Komponen Diperlukan
- Eclipse MQTT Test-Circuit - Skema
- Pemrograman ESP8266 untuk Membangun Komunikasi dengan Broker
- Menguji MQTT dengan ESP8266 menggunakan Arduino
Selama beberapa tahun terakhir, perangkat IoT (Internet of Things) telah menjadi bagian yang tidak dapat dibedakan dari kehidupan kita sehari-hari. Dari rumah pintar, bohlam pintar hingga peralatan pintar; pembuat dan pengembang menggabungkan teknologi ini untuk membuat jaringan perangkat terhubung yang membuat kehidupan sehari-hari kita sedikit lebih menarik. Semua ini dimungkinkan karena kemudahan komunikasi. Ada banyak kemungkinan cara untuk berkomunikasi antar perangkat, namun pada produk komersial dan hobi, satu protokol yang umum digunakan adalah Message Queuing Telemetry Transport (MQTT). Kami sebelumnya membangun Radio FM yang Dikendalikan Suara menggunakan Arduino dan Asisten Google yang menggunakan MQTT untuk berkomunikasi dengan papan NodeMCU. Periksa apakah itu terdengar menarik bagi Anda.
Dalam proyek ini, kami akan menggunakan broker Eclipse MQTT gratis dan populer serta mempelajari cara menghubungkan perangkat IoT (dalam kasus kami, ini adalah modul NodeMCU) ke broker MQTT dan mentransfer data di antara broker MQTT dan NodeMCU.
Apa itu Protokol MQTT?
Sebelum kita melanjutkan lebih jauh, lebih baik untuk memiliki gagasan yang jelas tentang MQTT (pesan antrian Telemetry Transportasi) protokol. Ini adalah protokol perpesanan ringan yang menggunakan metode terbitkan / berlangganan dan menerjemahkan pesan di antara banyak perangkat. Dengan menggunakan protokol MQTT, kita juga dapat mengirim / menerima data dan mengontrol berbagai perangkat keluaran, seperti membaca data sensor, dll. Ini dikembangkan di atas TCP, itulah sebabnya lebih cepat daripada protokol serupa seperti HTTP. Selain itu, ia memiliki banyak keunggulan lain dibandingkan protokol lain seperti sangat ringan, sehingga tidak menghabiskan memori berlebih, dapat bekerja dengan bandwidth jaringan yang sangat sedikit, di atas itu, ia memiliki protokol keamanan yang kuat di dalamnya. Fitur ini membuatnya cocok untuk banyak aplikasi.
Bagaimana MQTT Bekerja?
Untuk memahami cara kerja protokol MQTT, kita hanya perlu memahami tiga hal dasar; diagram di atas menunjukkan itu. Juga, kami telah menjelaskannya di bawah ini di artikel.
Klien MQTT:
Sebuah MQTT klien adalah perangkat apapun (dapat mikrokontroler atau server) yang berjalan fungsi MQTT dan berkomunikasi dengan server pusat, yang dikenal sebagai “ broker.” Pialang menangani komunikasi data antara klien yang terhubung.
Penerbit MQTT:
Saat klien ingin mengirimkan informasi apa pun, klien tersebut disebut sebagai "Penerbit". Penerbit akan mempublikasikan informasi tentang topik tertentu. “ Topik ” adalah jalur di mana kita dapat mempublikasikan / berlangganan pesan. Pialang kemudian mengirimkan informasi yang diterbitkan oleh pengguna ke klien (juga dikenal sebagai Pelanggan) yang telah berlangganan topik tertentu tersebut.
Pelanggan MQTT:
The MQTT Subscriber berlangganan topik pada MQTT broker untuk membaca pesan yang dikirim oleh broker.
Pialang Eclipse Mosquitto
Eclipse Mosquitto adalah broker MQTT open-source, yang ringan dan cocok untuk digunakan pada perangkat IoT untuk komunikasi. The protokol MQTT menyediakan metode ringan mentransfer informasi menggunakan mempublikasikan / berlangganan Model. Jika Anda ingin mempelajari lebih lanjut tentang topik tersebut, Anda dapat mengunjungi situs web resmi nyamuk.
Menyiapkan broker Eclipse Mosquitto:
Untuk menjalin komunikasi dengan broker, kita perlu mengaturnya terlebih dahulu. Dalam proyek ini, aplikasi Android digunakan untuk menerbitkan dan berlangganan informasi dengan Pialang. Langkah-langkah berikut akan memberi Anda gambaran yang lebih baik tentang proses penyiapan.
Langkah 1:
Pertama, unduh aplikasi "klien MQTT" yang tersedia di Google Play Store / App Store dan instal. Dalam proyek ini, aplikasi bernama "MQTT client" digunakan, yang terlihat seperti gambar di bawah ini.
Langkah 2:
Klik pada tanda "+" untuk mendaftar opsi tambahan dalam aplikasi, di mana kita akan menambahkan broker baru. Saat tombol diklik, layar baru muncul seperti gambar di bawah ini.
Langkah-3:
Setelah itu, detail broker perlu diisi di bidang yang diperlukan. Pertama, klik opsi "Diaktifkan" yang ditunjukkan di Aplikasi. Dalam proyek ini, broker Eclipse MQTT digunakan, detail yang harus diisi diberikan di bawah ini:
Nick Name: Beri Nama Preferensi Anda
Host: mqtt.eclipse.org
Pelabuhan: 1883
ID Klien: Berikan ID Preferensi Anda
Rincian di atas perlu diisi di bidangnya masing-masing. Semua kolom lainnya tidak diperlukan dan dapat dikosongkan. Setelah berhasil, klik tombol simpan untuk menyimpan detail Broker.
Setelah selesai, proses penyiapan aplikasi android selesai dan sekarang kita dapat beralih ke sisi perangkat keras.
Komponen Diperlukan
Daftar lengkap suku cadang yang diperlukan dijelaskan di bawah ini. Karena rangkaian ini sederhana, Anda dapat menemukan semua suku cadang yang diperlukan di toko hobi setempat.
- NodeMCU
- LED
- Papan tempat memotong roti
- Menghubungkan kabel
- Kabel pemrograman
Eclipse MQTT Test-Circuit - Skema
Diagram sirkuit untuk proyek MQTT Dasar diberikan di bawah ini:
Pemrograman ESP8266 untuk Membangun Komunikasi dengan Broker
Kode Arduino sederhana menangani semua komunikasi yang diperlukan antara broker MQTT dan NodeMCU. Di bagian ini, kita akan mempelajari cara kerja fungsi ini secara detail.
Siapkan Arduino IDE dan Unggah Kode:
Jika Anda mengunggah kode ke NodeMCU untuk pertama kalinya, Anda perlu menyiapkan Arduino IDE terlebih dahulu. Untuk melakukan itu, cukup ikuti instruksi sederhana yang diberikan di bawah ini.
Pertama, Buka Arduino IDE, lalu buka File–> Preferences–> Settings .
Selanjutnya, salin URL di bawah ini dan tempelkan di bidang 'URL Manajer Papan Tambahan ', dan klik 'Ok'. Anda dapat memeriksa gambar di bawah untuk mengetahui bagaimana kami melakukannya.
Tautan:
Selanjutnya, buka Alat> Papan> Manajer Papan . Di jendela Board's Manager, Ketik ESP 8266 di kotak pencarian dan tekan enter. Kemudian pilih versi terbaru dari dropdown dan klik install. Gambar di bawah ini akan memberi Anda gambaran yang jelas.
Terakhir, setelah penginstalan selesai, buka Tools -> Board -> dan pilih NodeMCU 1.0 (ESP-12E Module). Sekarang, Anda dapat memprogram NodeMCU dengan Arduino IDE. Karena kami telah selesai menyiapkan Arduino IDE, sekarang kami dapat mengunggah kode lengkapnya. Tapi pertama-tama, baca penjelasan singkat tentang keseluruhan kode.
Pertama, kami menyertakan "ESP8266WiFi.h" untuk menggunakan ESP8266 dan "PubSubClient.h" untuk MQTT.
Anda dapat menemukan pustaka ESP8266 yang telah dibuat sebelumnya di dalam pustaka Arduino, tetapi Anda perlu mengunduh pustaka PubSubClient dari repositori GitHub yang terkait.
#include
Kemudian, tentukan kredensial jaringan seperti nama pengguna dan kata sandi Wi-Fi Anda. Ganti kredensial Anda sebagai ganti "admin" & "12345678".
const char * ssid = "admin"; const char * password = "12345678";
Selanjutnya, kita perlu mengkonfigurasi server MQTT. Kami telah menggunakan server Eclipse MQTT untuk proyek ini, itulah sebabnya alamat server diberikan sebagai "mqtt.eclipse.org". Tetapi jika Anda berencana untuk menggunakan server lain seperti Mosquitto, Adafruit, Anda dapat menggantinya dengan alamat server dan nomor port spesifik Anda.
const char * mqtt_server = "mqtt.eclipse.org"; const int mqtt_port = 1883;
Selanjutnya, instance dibuat untuk kelas WiFiClient dan PubSubClient , yang akan digunakan di seluruh program.
WiFiClient espClient; Klien PubSubClient (espClient);
Di bagian setup () , kami memanggil WiFi.begin () terlebih dahulu, memanggil metode ini akan menghubungkan ESP ke HotSpot pilihan Anda.
WiFi.begin (ssid, kata sandi);
Selanjutnya, kami memeriksa koneksi jaringan yang berhasil menggunakan metode WiFi.status () . Setelah koneksi berhasil, pesan dicetak pada Serial Monitor dengan SSID dari jaringan yang terhubung.
while (WiFi.status ()! = WL_CONNECTED) {delay (500); Serial.println ("Menghubungkan ke WiFi.."); } Serial.print ("Terhubung ke WiFi:"); Serial.println (WiFi.SSID ());
Sekarang, kita perlu membuat broker. Untuk itu, kami telah menggunakan metode setServer ; metode ini mengambil dua argumen yang telah kita tentukan sebelumnya. Sekarang, jika kita ingin menerima pesan dari server, kita perlu membuat fungsi panggilan balik. Untuk itu, kami menggunakan metode setCallback (callback) .
client.setServer (mqtt_server, mqtt_port); client.setCallback (MQTTcallback);
Sekarang, kami telah menggunakan fungsi connect (clientID) untuk terhubung ke klien ESP8266. Di sini clientID adalah nama klien, dan harus unik. Jika sudah terkoneksi, maka pesan sukses dapat ditampilkan di dalam monitor serial.
if (client.connect ("ESP8266")) {Serial.println ("connected"); } lain {Serial.print ("gagal dengan status") Serial.println (client.state ()); penundaan (2000); }
Selanjutnya, kami memanggil client.subscribe () , fungsi MQTT bawaan, yang digunakan untuk berlangganan topik tertentu. Untuk proyek ini, kami telah menggunakan " esp / test " sebagai nama pelanggan kami.
client.subscribe ("esp / test");
Sekarang, fungsi MQTTcallback dipanggil untuk memeriksa apakah informasi yang diperbarui tersedia atau tidak. Jika data baru tersedia, fungsi ini menangani data yang diterima dan mencetak pesan di monitor serial dengan pesan asli dan nama topik tempat pesan diterima.
Selanjutnya, kami mengonversi pesan menjadi string, sehingga dapat dibandingkan dan diperiksa untuk setiap tindakan pemicu. Dalam proyek ini, LED dinyalakan / dimatikan menggunakan perintah MQTT, seperti yang ditunjukkan pada kode di bawah ini.
untuk (int i = 0; i <length; i ++) {message = message + (char) payload; } Serial.print (pesan); if (pesan == "on") {digitalWrite (LED, HIGH); }
Akhirnya, untuk mempublikasikan informasi tentang topik tersebut. Fungsi client.publish () digunakan. Dalam proyek ini, status tombol-tekan dicentang, jika tombol ditekan, maka pesan diterbitkan ke Topik “ esp / test1 ” seperti yang ditunjukkan di bawah ini.
if (digitalRead (D1) == 0)) {client.publish ("esp / test1", "Halo dari ESP8266"); } lain; client.loop ();
Menguji MQTT dengan ESP8266 menggunakan Arduino
Untuk pengujian terakhir kami, kami akan menggunakan aplikasi Android, yang telah kami siapkan sebelumnya.
Buka aplikasi klien MQTT, dan pastikan ponsel Anda memiliki koneksi internet aktif. Selain itu, hotspot yang terhubung ke NodeMCU harus memiliki koneksi internet aktif. Setelah semuanya terhubung ke internet, kami akan mengirim string "Halo dari ESP8266" dari modul ESP, yang akan tercermin di dalam aplikasi Android, dan kami akan mendapatkan pemberitahuan. Selanjutnya, kami akan mengirim string dari aplikasi Android, yang akan MENGAKTIFKAN LED yang terhubung ke papan ESP8266 Node MCU.
Langkah-1: (Berlangganan ke Topik):
Klik pada opsi MQTT Tersimpan di App, yang telah kami konfigurasikan sebelumnya. Ini akan memunculkan layar, di mana ia diminta untuk "Berlangganan ke Topik". Kami sebelumnya telah mengonfigurasi topik sebagai " esp / test1 ". Jadi, di aplikasi Android, kita akan menulis “ esp / test1 ”. Klik Subscribe, setelah itu akan muncul layar seperti di bawah ini, di mana akan tertulis seperti "Tidak ada pesan yang diterima" dari Topik tertentu.
Sekarang, klik tombol 'Connected' yang terhubung ke nodeMCU. Sekarang sesuai kode kami, pesan " Halo dari ESP8266 " akan diterbitkan ke Topik dan akan ada pemberitahuan di layar dengan pesan diterima seperti yang ditunjukkan di bawah ini.
Langkah-2: Publikasikan ke Topik:
Sekarang untuk mempublikasikan dalam Topik, Klik tombol PANAH ATAS dari Aplikasi, dan itu akan membuka layar seperti yang ditunjukkan di bawah ini.
Sekarang, Di kolom Topik, tulis " esp / test " dan di kolom pesan, tulis " on " atau " off " untuk menghidupkan dan mematikan LED masing-masing. Misalnya, jika "on" dipublikasikan ke Topik, LED akan menyala dan jika "mati" dipublikasikan ke Topik, LED akan mati.
Saya harap Anda menyukai artikel ini dan mempelajari sesuatu yang baru. Jika Anda memiliki pertanyaan tentang artikel ini, silakan berkomentar di bawah ini atau Anda dapat menggunakan forum kami sebagai gantinya.