0% menganggap dokumen ini bermanfaat (0 suara)
8 tayangan21 halaman

Tutorial Kontrol LED dengan MQTT IoT

Dokumen ini menjelaskan langkah-langkah untuk melakukan percobaan kontrol LED berbasis MQTT dan sensor lingkungan menggunakan ESP32. Proses mencakup pengkabelan, konfigurasi broker MQTT, serta penulisan kode untuk publisher dan subscriber. Selain itu, juga dijelaskan cara menggunakan Blynk untuk memantau dan mengontrol LED serta sensor dari aplikasi mobile.

Diunggah oleh

Ferdilan Ramadhani
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
8 tayangan21 halaman

Tutorial Kontrol LED dengan MQTT IoT

Dokumen ini menjelaskan langkah-langkah untuk melakukan percobaan kontrol LED berbasis MQTT dan sensor lingkungan menggunakan ESP32. Proses mencakup pengkabelan, konfigurasi broker MQTT, serta penulisan kode untuk publisher dan subscriber. Selain itu, juga dijelaskan cara menggunakan Blynk untuk memantau dan mengontrol LED serta sensor dari aplikasi mobile.

Diunggah oleh

Ferdilan Ramadhani
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd

Percobaan Kontrol LED Berbasis MQTT dan Sensor Lingkungan

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.

Arahkan kursor ke Account dan pilih EMQX Cloud Console:


Buat Deployment baru:

Pilih Paket Serverless


Pilih Wilayah Asia-Pasific

Beri nama Deployment Name & Project dengan IoT atau menggunakan nama lain yang
relevan dengan projek anda:

Kemudian Deploy dan akan terlihat seperti ini:


Klik Deployment yang telah dibuat. Kemudian buka dropdown menu Acces Control dan pilih
Authentication:

Klik tombol Add dan masukkan Username dan Password lalu Confirm:

Jika sukses maka akan terlihat seperti ini:


Buka aplikasi Arduino IDE, kemudian buat sketch baru dengan shortcut Ctrl+N atau melalui
menu File > New Sketch:

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>

// ================== KONFIGURASI ================== //


// WiFi
const char *ssid = "Kos Putra Lindisanti"; //ganti dengan ssid wifi anda
const char *password = "password"; //ganti dengan password wifi anda

// 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);

// === FUNGSI PROTOTIPE === //


void connectToWiFi();
void connectToMQTTBroker();
void mqttCallback(char *topic, byte *payload, unsigned int length);
void publishSensorData();

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());

if (mqtt_client.connect(client_id.c_str(), mqtt_username, mqtt_password))


{
[Link]("Terhubung ke MQTT broker!");
} else {
[Link]("Gagal, rc=");
[Link](mqtt_client.state());
[Link](". Coba lagi dalam 5 detik.");
delay(5000);
}
}
}

void mqttCallback(char *topic, byte *payload, unsigned int length) {


[Link]("Pesan diterima di topik: ");
[Link](topic);
[Link]("Isi pesan: ");
for (unsigned int i = 0; i < length; i++) {
[Link]((char)payload[i]);
}
[Link]();
[Link]("-----------------------");
}

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;
}

[Link]("Suhu: %.2f C, Kelembapan: %.2f %%, Cahaya: %d\n", suhu,


kelembapan, cahaya);

mqtt_client.publish(topic_suhu, String(suhu).c_str(), true);


mqtt_client.publish(topic_kelembapan, String(kelembapan).c_str(), true);
mqtt_client.publish(topic_cahaya, String(cahaya).c_str(), true);
}

void loop() {
if (!mqtt_client.connected()) {
connectToMQTTBroker();
}
mqtt_client.loop();

publishSensorData();
delay(1000);
}

2. Kode Subscriber, simpan kode ini dengan nama Node_B_Subscriber


#include <WiFi.h>
#include <PubSubClient.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128


#define SCREEN_HEIGHT 64
#define OLED_RESET -1

#define LED1 2
#define LED2 4

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

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);

String suhu = "--";


String kelembapan = "--";
String cahaya = "--";

void callback(char* topic, byte* payload, unsigned int length) {


String message = "";
for (int i = 0; i < length; i++) {
message += (char)payload[i];
}

if (String(topic) == "sensor/suhu") {
suhu = message;

} else if (String(topic) == "sensor/kelembapan") {


kelembapan = message;
// Logika untuk LED1 berdasarkan kelembapan
if ([Link]() > 80) {
digitalWrite(LED1, HIGH);
} else {
digitalWrite(LED1, LOW);
}

} else if (String(topic) == "sensor/cahaya") {


cahaya = message;

// Logika untuk LED2 berdasarkan cahaya


if ([Link]() < 200) {
digitalWrite(LED2, HIGH);
} else {
digitalWrite(LED2, LOW);
}
}

// 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");

tampilkanOLED(); // Tampilkan awal


}

void loop() {
[Link]();
}

Kemudian upload kode program melalui tombol Upload:


Percobaan Pemantauan dan Kontrol LED Berbasis Blynk
Pada percobaan ini hanya menggunakan satu rangkaian seperti berikut:

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 masuk ke menu Web Dashboard dan pilih edit:


Kemudian drag and drop widget yang akan digunakan dan susun seperti pada gambar dibawah.
Untuk Suhu, Kelembapan, dan Intensitas Cahaya menggunakan Widget Label. Sedangkan
untuk tombol LED 1 dan LED 2 menggunakan Widget Switch.

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:

Pilih template yang sudah dibuat:


Berikut adalah tampilan Device setelah sukses dibuat:

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>

char ssid[] = "Kos Putra Lindisanti";


char pass[] = "password";

#define DHTPIN 4
#define DHTTYPE DHT11

#define LDR_PIN 34
#define LED1_PIN 12
#define LED2_PIN 13

DHT dht(DHTPIN, DHTTYPE);

BlynkTimer timer;

// --- Fungsi Kirim Data ke Blynk


void kirimSensorKeBlynk() {
float suhu = [Link]();
float kelembapan = [Link]();
int cahaya = analogRead(LDR_PIN);

[Link](V0, suhu); // Kirim suhu ke V3


[Link](V1, kelembapan);
[Link](V2, cahaya); // Kirim cahaya ke V4
}

// --- Kontrol LED1 dari Blynk (V1)


BLYNK_WRITE(V1) {
int value = [Link]();
digitalWrite(LED1_PIN, value);
}

// --- Kontrol LED2 dari Blynk (V2)


BLYNK_WRITE(V2) {
int value = [Link]();
digitalWrite(LED2_PIN, value);
}

void setup() {
[Link](115200);
[Link](BLYNK_AUTH_TOKEN, ssid, pass);

[Link]();
pinMode(LED1_PIN, OUTPUT);
pinMode(LED2_PIN, OUTPUT);
pinMode(LDR_PIN, INPUT);

[Link](1000L, kirimSensorKeBlynk); // Kirim data tiap 2 detik


}

void loop() {
[Link]();
[Link]();
}

Kemudian upload kode program melalui tombol Upload:

Anda mungkin juga menyukai