Menjelajahi Konektivitas IoT: Menerapkan MQTT dengan Wemos D1 untuk Komunikasi yang Mulus
Implementasi MQTT dengan Wemos D1
Dalam era Internet of Things (IoT), koneksi perangkat yang handal dan efisien sangat penting untuk keberhasilan proyek pintar. MQTT (Message Queuing Telemetry Transport) adalah protokol komunikasi yang sangat populer dan dapat diandalkan untuk proyek Internet of Things yang memungkinkan perangkat Internet of Things berkomunikasi secara real-time, mengirim dan menerima data dengan kecepatan dan efisiensi yang tinggi sambil menggunakan jumlah daya yang relatif rendah.
Dalam artikel ini, kami akan melakukan implementasi MQTT dengan menggunakan Wemos D1, sebuah mikrokontroler yang berbasis ESP8266. Wemos D1 adalah pilihan yang populer di komunitas IoT berkat kemampuannya untuk terhubung ke jaringan Wi-Fi dan kontrol yang mudah dengan Arduino IDE. Dalam tutorial ini, kami akan membahas konfigurasi dan penggunaan MQTT dengan Wemos D1. Ini akan memungkinkan berbagai aplikasi pintar, seperti pengontrolan rumah cerdas dan monitoring lingkungan. Mari kita lihat bagaimana mengintegrasikan protokol MQTT dengan Wemos D1 untuk meningkatkan konektivitas dan efisiensi proyek IoT Anda.
Pengenalan MQTT (Message Queuing Telemetry Transport)
MQTT (Message Queuing Telemetry Transport) adalah protokol komunikasi ringan dan berbasis pesan yang dirancang khusus untuk proyek-proyek Internet of Things (IoT). Protokol ini memungkinkan perangkat IoT untuk saling berkomunikasi secara efisien dan andal melalui jaringan yang tidak stabil.
Publish-Subscribe Model
MQTT menggunakan model publish-subscribe di mana perangkat IoT berperan sebagai penerbit (publisher) dan/atau pelanggan (subscriber). Penerbit mengirimkan pesan ke topik (topic), dan pelanggan yang berlangganan pada topik tersebut menerima pesan tersebut. Model ini memungkinkan komunikasi yang bersifat one-to-many, memungkinkan perangkat untuk berkomunikasi dengan sejumlah besar perangkat lainnya secara simultan.
Quality of Service (QoS) Levels
MQTT mendukung tiga tingkat kualitas Layanan:
- QoS 0: Pengiriman pesan sekali tanpa konfirmasi.
- QoS 1: Pengiriman pesan setidaknya sekali dengan konfirmasi penerimaan.
- QoS 2: Pengiriman pesan tepat sekali dengan konfirmasi penerimaan dan penghindaran duplikasi.
Wemos D1
Wemos D1 adalah salah satu varian dari papan pengembangan mikrokontroler yang sangat populer, terutama dalam proyek-proyek IoT (Internet of Things).
Spesifikasi Wemos D1
- Wifi Protocol : 802.11 b/g/n (802.11n up to 150 Mbps)
- Frekuensi : 2.4 GHz~2.5 GHz
- Bluetooth : v4.2 BR/EDR and BLE with 97 dBm sensitivity
- SPI Flash : 4MBit
- Internal Clock : 40Mhz
- Chip Op Voltage : 2.7~3.6V DC
- Module Op Voltage: 5V DC via MicroUSB port
- Op Current: 80mA
- Minimum USB Current: 500mA
- On-chip Sensor: Hall Sensor
- Audio: CVSD and SBC
Memulai Implementasi MQTT dengan Wemos D1 R32
Konfigurasi Arduino IDE untuk Wemos D1
Untuk menggunakan Arduino IDE untuk memprogram Wemos D1 R32 ada beberapa hal yang perlu dilakukan, berikut diantaranya;
- Download dan install Arduino IDE Download Disini (Sesuaikan dengan OS device)
- Setelah terinstal, buka software Arduino IDE.
- Pilih dan klik File -> preferences.
- Pada bagian “Additional Boards Manager URL’s” masukan link dibawah berikut ini , lalu klik ok.http://arduino.esp8266.com/stable/package_esp8266com_index.json
- Setelah itu, klik “Boards Manager” pada menu Tools -> board -> boards manager.
- Ketikan pada bar search "esp32" -> esp32 by Espressif Systems
- Kemudian klik install, dan tunggu beberapa detik sampai proses selesai lalu close.
- Setelah instalasi selesai,kembali ke pilihan board pilih "ESP32 Dev Module".
Pilih menu Tools -> board -> ESP32 Arduino -> ESP32 Dev Module.
Karena Wemos D1 Mini ini mengunakan Chip CH340, maka kamu harus menginstall driver chip CH340 di devicemu agar bisa kamu pakai, download dan install drivernya disini .
Install Library PubSubClient
Kita akan melanjutkan dengan menginstal perpustakaan klien MQTT PubSubClient. Dikembangkan oleh Nick O'Leary, PubSubClient adalah pustaka klien MQTT kecil yang dirancang untuk proyek berbasis Arduino dan memungkinkan klien untuk mengirimkan pesan publikasi atau berlangganan dengan server MQTT. Ini membuat komunikasi MQTT lebih mudah dan memungkinkan pertukaran data yang efektif dalam aplikasi IoT berbasis Arduino.
Untuk menginstal perpustakaan PubSubClient, ikuti prosedur ini:
- Buka Arduino IDE, lalu pilih "Sketch" di pilihan menu.
- Pilih "Manage Libraries" pada menu Include Libary -> Manage Libraries.
- Pada Library Manager, ketik "PubSubClient" ke dalam bar pencarian.
- Lihat hasil dan pilih library "PubSubClient" oleh Nick O'Leary dan klik "Install".
Anda akan berhasil menginstal perpustakaan PubSubClient ke dalam IDE Arduino Anda jika Anda mengikuti langkah-langkah ini.
Menghubungkan Koneksi MQTT Di Wemos D1 R32 (ESP32 based Board)
- Buka Arduino IDE, pastikan select board "ESP32 Dev Module" pada menu Tools -> Board.
- Import library WiFi dan PubSubClient, library WiFi digunakan untuk membuat koneksi dengan jaringan WiFi, sedangkan library PubSubClient memungkinkan Wemos terhubung ke broker MQTT.
#include <WiFi.h> // Import library WiFi #include <PubSubClient.h> // Import library PubSubClient - Masukkan SSID WiFi Name dan Password WiFi kamu serta MQTT broker yang akan di sambungkan.
Untuk postingan blog ini, saya menggunakan broker MQTT publik gratis di broker.emqx.ioMQTT Broker InfoServer:broker.emqx.ioTCP Port:1883WebSocket Port:8083SSL/TLS Port:8883Secure WebSocket Port:8084Parameter berikut harus dikonfigurasi: kata sandi dan nama jaringan Wi-Fi, alamat dan port broker MQTT, dan topik ke emqx/esp32.
// WiFi const char *ssid = "xxxxx"; // Masukan nama WiFi kamu const char *password = "xxxxx"; // Masukan Password WiFi kamu // MQTT Broker const char *mqtt_broker = "broker.emqx.io"; const char *topic = "emqx/esp32"; const char *mqtt_username = "emqx"; const char *mqtt_password = "public"; const int mqtt_port = 1883; - Buat Serial.println untuk memberikan feedback menampilkan hasil program dan membuat koneksi ke WiFi.
// Set software serial baud to 115200; Serial.begin(115200); // Connecting to a Wi-Fi network WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.println("Connecting to WiFi.."); }serial baud 115200 merupakan baud rate yang umum pada perangkat ESP32 - Untuk menghubungi broker MQTT, gunakan PubSubClient.
client.setServer(mqtt_broker, mqtt_port); client.setCallback(callback); while (!client.connected()) { String client_id = "esp32-client-"; client_id += String(WiFi.macAddress()); Serial.printf("The client %s connects to the public MQTT broker\n", client_id.c_str()); if (client.connect(client_id.c_str(), mqtt_username, mqtt_password)) { Serial.println("Public EMQX MQTT broker connected"); } else { Serial.print("failed with state "); Serial.print(client.state()); delay(2000); } } - Publish Messages & Subscribe
Setelah koneksi ke broker MQTT berhasil dibuat, ESP32 akan menerbitkan pesan ke topik emqx/esp32 dan kemudian berlangganan topik emqx/esp32.// publish and subscribe client.publish(topic, "Hi, I'm Wemos D1 R32 ^^"); client.subscribe(topic); - Terima Pesan MQTT
Konfigurasikan fungsi callback untuk mencetak nama topik ke port serial dan mencetak pesan yang diterima dari topik emqx/esp32.void callback(char *topic, byte *payload, unsigned int length) { Serial.print("Message arrived in topic: "); Serial.println(topic); Serial.print("Message:"); for (int i = 0; i < length; i++) { Serial.print((char) payload[i]); } Serial.println(); Serial.println("-----------------------"); }
Full Code
Berikut adalah full code dari langkah-langkah yang sudah dijelaskan :
#include <WiFi.h>
#include <PubSubClient.h>
// WiFi
const char *ssid = "xxxxx"; // Enter your Wi-Fi name
const char *password = "xxxxx"; // Enter Wi-Fi password
// MQTT Broker
const char *mqtt_broker = "broker.emqx.io";
const char *topic = "emqx/esp32";
const char *mqtt_username = "emqx";
const char *mqtt_password = "public";
const int mqtt_port = 1883;
WiFiClient espClient;
PubSubClient client(espClient);
void setup() {
// Set software serial baud to 115200;
Serial.begin(115200);
// Connecting to a WiFi network
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.println("Connecting to WiFi..");
}
Serial.println("Connected to the Wi-Fi network");
//connecting to a mqtt broker
client.setServer(mqtt_broker, mqtt_port);
client.setCallback(callback);
while (!client.connected()) {
String client_id = "esp32-client-";
client_id += String(WiFi.macAddress());
Serial.printf("The client %s connects to the public MQTT broker\n", client_id.c_str());
if (client.connect(client_id.c_str(), mqtt_username, mqtt_password)) {
Serial.println("Public EMQX MQTT broker connected");
} else {
Serial.print("failed with state ");
Serial.print(client.state());
delay(2000);
}
}
// Publish and subscribe
client.publish(topic, "Hi, I'm ESP32 ^^");
client.subscribe(topic);
}
void callback(char *topic, byte *payload, unsigned int length) {
Serial.print("Message arrived in topic: ");
Serial.println(topic);
Serial.print("Message:");
for (int i = 0; i < length; i++) {
Serial.print((char) payload[i]);
}
Serial.println();
Serial.println("-----------------------");
}
void loop() {
client.loop();
}Running and Testing on Arduino IDE
- Upload kode ke mikrokontroler Wemos D1
Untuk mengunggah kode lengkap menggunakan Arduino dan daya pada Wemos D1 R32, silakan ikuti langkah-langkah berikut:- Koneksikan Wemos D1 ke komputer menggunakan kabel USB
- Buka Arduino IDE dan pilih board "Esp32 Dev Module" serta port yang sesuai dari menu "Tools".
- Copy dan paste full code ke Arduino IDE.
- Tekan tombol "Upload" untuk mengcompile dan upload kode ke mikrokontroler wemos D1.
- Setelah kode telah ter-upload, putuskan sambungan sumber power dari Wemos D1
- Sambungkan kembali sumber power Wemos D1.
- Untuk memeriksa status koneksi ESP32, buka monitor serial dan atur laju baud ke 115200.
- Untuk berkoneksi dengan broker MQTT, gunakan klien MQTTX dan kirim pesan seperti HI, saya MQTTX ke Wemos D1.
- Anda akan melihat pesan yang diterbitkan oleh MQTTX di serial monitor.




Komentar
Posting Komentar