IOT - ESP32 MQTT

Monitoring Blinking LED

Deskripsi Proyek

Memantau kondisi 1 blinking LED dengan durasi tertentu.

Alat Dan Bahan

  1. ESP32 DEVKITV1
  2. Resistor 220 Ohm
  3. LED
  4. Laptop dengan koneksi internet
  5. Software Arduino IDE
  6. Software MQTT Explorer
  7. Additional Board: ESP32 by Espressif Systems
  8. Additional Library: MQTT by Joel Gaehwiler

Dasar Teori

ESP32

ESP32 adalah mikrokontroler yang populer yang dikembangkan oleh Espressif Systems. Mikrokontroler ini memiliki kemampuan WiFi dan Bluetooth yang memungkinkannya untuk berkomunikasi dengan perangkat lain dan mengakses internet. ESP32 sangat fleksibel dan dapat digunakan dalam berbagai aplikasi Internet of Things (IoT), termasuk monitoring dan kontrol jarak jauh.

MQTT (Message Queuing Telemetry Transport)

MQTT adalah protokol messaging ringan yang dirancang untuk kondisi jaringan yang tidak dapat diandalkan dan perangkat dengan sumber daya terbatas. Protokol ini biasanya digunakan dalam aplikasi IoT untuk mengirim dan menerima pesan antara perangkat. MQTT bekerja berdasarkan model publish-subscribe, di mana perangkat dapat mempublish pesan ke topik tertentu atau mensubscribe untuk menerima pesan dari topik tertentu.

Monitoring Blinking LED Dengan ESP32 Dan MQTT

Dalam proyek ini, ESP32 digunakan untuk mengontrol dan memantau status lampu LED yang berkedip. ESP32 akan mengontrol kecepatan berkedip lampu LED dan mengirimkan statusnya melalui MQTT ke broker MQTT. Perangkat lain yang mensubscribe ke topik MQTT yang sama dapat menerima status dari lampu LED dan menampilkan informasi tersebut.

Rangkaian

Pasted image 20240416110849.png

Langkah Kerja

  1. Buat rangkaian sesuai skematik yang diberikan
  2. Pastikan library ESP32 board dan MQTT sudah terinstal pada Arduino IDE
  3. Masukan program ke dalam ESP32
  4. Buka aplikasi MQTT Explorer dan masukan link broker yang digunakan
  5. Klik Advance lalu masukan topic yang akan dimonitoring

Program

#include <WiFi.h> //menggunakan library WiFi untuk ESP32
#include <MQTT.h> //menggunakan library MQTT untuk IoT

const char ssid[] = "Guru dan TU Nekat"; //Masukan nama SSID yang akan digunakan
const char pass[] = "N3k@t_p1SaN"; //Masukan password dari SSID yang digunakan

WiFiClient net; //kelas dalam library ESP32 yang digunakan untuk mengelola koneksi WiFi pada mikrokontroler.
MQTTClient client; //kelas dalam library yang digunakan untuk mengimplementasikan protokol MQTT pada ESP32

int LED=2; //variable untuk menyimpan nomor pin yang terhubung ke LED
int count=0; //variable untuk menyimpan jumlah pengulangan yang sudah dilakukan
void setup() {
pinMode(LED, OUTPUT); //Mengatur pin yang ada pada variable LED sebagai output
Serial.begin(9600); //Memulai serial monitor dengan baud rate 9600
WiFi.begin(ssid, pass); //Menhubungkan ESP32 ke internet dengan SSID dan password yang ada
connect(); //prosedur untuk memeriksa apakah ESP32 sudah terhubung ke internet atau belum
broconnect(); //prosedur untuk menghubungkan EPS32 ke broker yang digunakan
}

void connect(){

  // Menghubungkan ke WiFi

  Serial.print("Cek WiFi");

  while(WiFi.status() != WL_CONNECTED){ //jika tidak terhubung ke internet maka print . setiap 1 detik
    Serial.print(".");
    delay(1000);

  }
  Serial.println("");
  Serial.println("Sukses Terhubung ke WiFi"); // jika terhubung ke internet maka muncul tulisan ini pada serial monitor
}

void broconnect(){
	client.begin("free.mqtt.iyoti.id", net); //menghubungkan ESP32 ke link broker yang digunakan
	Serial.print("Cek Broker");
	  while(!client.connect("")){ //jika belum terhubung ke broker maka print . setiap 1 detik
	    Serial.print(".");
	    delay(1000);
	  }
	  Serial.println("");
	  Serial.println("Sukses Terhubung ke Server"); //Muncul tulisan ini ketika terhubung ke server broker
	  client.subscribe("rimulabs3/iot/#", 1); //subscribe ke semua level topic di iot 
}

void blinking(int pin, int del){ //fungsi blinking dengan parameter pin dan del
	digitalWrite(pin, HIGH); //mengatur pin ke posisi High
	client.publish("rimulabs3/iot/LED",String("ON"), true, 1); //mengirimkan string "ON" ke topic LED dan menyimpannya.
	delay(del); //delay dengan paramater del
	digitalWrite(pin, LOW); //mengatur pin ke posisi High
	client.publish("rimulabs3/iot/LED",String("OFF"), true, 1); //mengirimkan string "OFF" ke topic LED dan menyimpannya.
	delay(del); //delay dengan paramater del
}

void loop() {
  client.loop(); //digunakan untuk menjaga koneksi aktif dengan broker MQTT dan memastikan bahwa komunikasi berjalan dengan lancar.
  blinking(2, 500); //melakukan blinking pada pin 2 dengan delay 500 ms
  count++; //menambah nilai variable count 1
  if (count>20){ //jika nilai count lebih besar dari 20 maka lakukan broconnect dan buat nilai count jadi 0 lagi
    broconnect(); //memanggil prosedural broconnect yang sudah dibuat
    count=0; //reset nilai count
  } else{ //selain itu cetak nilai count di serial monitor
    Serial.println(count);
  }

}

MQTT Explorer

Pasted image 20240416221325.png

  1. Buat New Connections lalu masukan Name dan Host yang digunakan sesuai gambar

  2. Klik Advanced dan masukan topik yang akan dimonitoring yaitu rimulabs3/iot/LED
    Pasted image 20240416221513.png

  3. Klik Save lalu klik Connect