Tutorial Kontrol LED dengan MQTT IoT
Tutorial Kontrol LED dengan MQTT IoT
Rangkai komponen di project board seperti pada gambar. Kemudian lakukan pengkabelan ke
masing-masing bagian dengan benar dan hati-hati untuk memastikan bahwa semua koneksi
komponen benar.
1. Rangkaian Sender
2. Rangkaian Receiver
Lakukan konfigurasi broker MQTT di EMQX melalui [Link] Kemudian
Sign In/Sign Up menggunakan akun google atau github.
Beri nama Deployment Name & Project dengan IoT atau menggunakan nama lain yang
relevan dengan projek anda:
Klik tombol Add dan masukkan Username dan Password lalu Confirm:
Lakukan pengaturan board target pada system Arduino IDE, dalam hal ini kita menggunakan
board ESP32 Dev Modul dengan cara berikut ini: Menu Tools > Board > esp32 > ESP32
Dev Modul:
Tambahkan library yang akan digunakan melalui menu: Sketch > Include Library >
Nama_Library. Dalam studi kasus ini library yang digunakan adalah WiFi, PubSubClient,
DHT, Wire, Adafruit_GFX, dan Adafruit_SSD1306.
Jika belum memiliki library diatas maka install melalui Library Manager dengan mencari
nama library yang dibutuhkan.
Tuliskan kode program berikut pada sketch baru tersebut pada Arduino IDE:
1. Kode Publisher, simpan kode ini dengan nama Node_A_Publisher
#include <WiFi.h>
#include <PubSubClient.h>
#include <DHT.h>
// MQTT
const char *mqtt_broker = "[Link]";
const int mqtt_port = 1883;
const char *mqtt_username = "IoTelkom"; //ganti dengan username yg telah anda
buat
const char *mqtt_password = "esp32"; //ganti dengan passord yg telah anda buat
// Topik MQTT
const char *topic_suhu = "sensor/suhu";
const char *topic_kelembapan = "sensor/kelembapan";
const char *topic_cahaya = "sensor/cahaya";
// Sensor
#define DHTPIN 4
#define DHTTYPE DHT11
#define LDR_PIN 34
// ================================================== //
WiFiClient espClient;
PubSubClient mqtt_client(espClient);
DHT dht(DHTPIN, DHTTYPE);
void setup() {
[Link](115200);
[Link]();
connectToWiFi();
mqtt_client.setServer(mqtt_broker, mqtt_port);
mqtt_client.setCallback(mqttCallback);
connectToMQTTBroker();
}
void connectToWiFi() {
[Link]("Menghubungkan ke WiFi: ");
[Link](ssid);
[Link](ssid, password);
while ([Link]() != WL_CONNECTED) {
delay(500);
[Link](".");
}
[Link]("\nWiFi tersambung!");
[Link]("Alamat IP: ");
[Link]([Link]());
}
void connectToMQTTBroker() {
while (!mqtt_client.connected()) {
String client_id = "esp32-nodeA-" + String((uint32_t)[Link](),
HEX);
[Link]("Menghubungkan ke MQTT broker sebagai %s...\n",
client_id.c_str());
void publishSensorData() {
float suhu = [Link]();
float kelembapan = [Link]();
int cahaya = analogRead(LDR_PIN);
if (isnan(suhu) || isnan(kelembapan)) {
[Link]("Gagal membaca dari sensor DHT11!");
return;
}
void loop() {
if (!mqtt_client.connected()) {
connectToMQTTBroker();
}
mqtt_client.loop();
publishSensorData();
delay(1000);
}
#define LED1 2
#define LED2 4
const char* ssid = "Kos Putra Lindisanti"; //ganti dengan ssid wifi anda
const char* password = "password"; //ganti dengan password wifi anda
const char* mqtt_broker = "[Link]";
const int mqtt_port = 1883;
const char* mqtt_username = "IoTelkom"; //ganti dengan username yg telah anda
buat
const char* mqtt_password = "esp32"; //ganti dengan password yg telah anda
buat
WiFiClient espClient;
PubSubClient client(espClient);
if (String(topic) == "sensor/suhu") {
suhu = message;
// Perbarui OLED
tampilkanOLED();
}
void tampilkanOLED() {
[Link]();
[Link](1);
[Link](SSD1306_WHITE);
[Link](0, 0);
[Link]("Suhu: ");
[Link](suhu + " C");
[Link]("Lembab: ");
[Link](kelembapan + " %");
[Link]("Cahaya: ");
[Link](cahaya);
[Link]();
}
void setup() {
[Link](115200);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
[Link](SSD1306_SWITCHCAPVCC, 0x3C);
[Link]();
delay(1000);
[Link]();
[Link](ssid, password);
while ([Link]() != WL_CONNECTED) {
delay(500);
[Link](".");
}
[Link](mqtt_broker, mqtt_port);
[Link](callback);
while (![Link]()) {
if ([Link]("ESP32_NodeB", mqtt_username, mqtt_password)) {
[Link]("Connected to MQTT broker");
} else {
delay(5000);
}
}
[Link]("sensor/suhu");
[Link]("sensor/kelembapan");
[Link]("sensor/cahaya");
void loop() {
[Link]();
}
Kemudian buat dashboard Blynk melalui link berikut [Link] Sign Up jika belum
memiliki akun blynk, jika sudah maka tinggal Sign In. Setelah sukses membuat akun maka
akan tampil Blynk Console seperti gambar dibawah:
Kemudian pilih menu Developer Zone dan buat template baru. Beri nama template dan
sesuaikan perangkat dan koneksi. Dalam hal ini menggunakan perangkat ESP32 dan koneksi
Wi-Fi.
Kemudian buat DataStream untuk semua Widget yang telah didrop. Secara sederhana,
Datastream adalah jalur data antara perangkat IoT ↔ Blynk Cloud ↔ Aplikasi Blynk. Untuk
membuat datastream klik icon setting pada widget:
Kemudian Konfigurasi Datastream pada Widget Suhu seperti berikut:
Kemudian lakukan hal yang sama untuk Widget lainnya. Konfigurasi semua widget sesuai
dengan Datastream dibawah ini:
Kemudian masuk ke menu Devices dan pilih From Template:
Dari Dashboard diatas kita sudah bisa melakukan kontrol terhadap 2 LED yang telah dirangkai
sebelumnya dan juga memonitor Suhu dan Kelembapan serta Intensitas Cahaya. Namun kita
juga bisa melakukan kontrol dan monitor melalui Smartphone. Unduh aplikasi Blynk melalui
Play Store atau App Store. Kemudian Log In menggunakan akun yang telah anda daftarkan
sebelumnya. Setelah sukses Log In anda dapat melihat Device yang telah anda buat
sebelumnya. Klik Device tersebut dan anda dapat mengontrol dan memonitor seperti halnya di
Browser.
Dalam kode program anda akan diminta untuk mendeklarasikan Template ID, Template Name
dan Token. Anda bisa mendapatkan kode tersebut melalui Developer Zone seperti gambar
berikut:
Tuliskan kode program berikut pada sketch baru tersebut pada Arduino IDE:
1. Kode Program, simpan kode ini dengan nama IoT_Blynk
#define BLYNK_TEMPLATE_ID "TMPL6vhE76WNW" //ganti dengan Template ID milik
anda
#define BLYNK_TEMPLATE_NAME "Kontrol Monitoring" //ganti dengan Template NAME
milik anda
#define BLYNK_AUTH_TOKEN "NANGS4-kllDysgSJ1z-0nhf1grFqdS5e" //ganti dengan
Token milik anda
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>
#define DHTPIN 4
#define DHTTYPE DHT11
#define LDR_PIN 34
#define LED1_PIN 12
#define LED2_PIN 13
BlynkTimer timer;
void setup() {
[Link](115200);
[Link](BLYNK_AUTH_TOKEN, ssid, pass);
[Link]();
pinMode(LED1_PIN, OUTPUT);
pinMode(LED2_PIN, OUTPUT);
pinMode(LDR_PIN, INPUT);
void loop() {
[Link]();
[Link]();
}