Semua Tentang Belajar Teknologi Digital Dalam Kehidupan Sehari - Hari

Kamis, 03 Oktober 2019

Cara Belajar IOT : Lebih lanjut dengan MQTT menggunakan ESP8266 - Wemos D1



Ketika harga modul wifi + microcontroller dengan bandrol hanya 75 ribu perak, disitu saya merasa sangat sedih, dimana penghargaan terhadap para desainer elektronika ? Cungkuok memang luar biasa dalam meng "clone" modul berbasis arduino seperti Wemos D1 yang akan kita bahas disini. Daripada galau berkepanjangan karena tidak habis pikir biaya manufaktur dari board nya di cungkuok, sebaiknya kita oprek aja menjadi barang IOT yg sedang getol-getolnya dibicarakan orang. Industri 4.0 katanya...

Wemoz D1 merupakan minimum system atau lebih tepatnya breakout board dari modul wifi terkenal ESP8266 dimana pinoutnya yg sedikit acak bisa dilihat dari gambar diatas yg saya comot dari internet. Keuntungan dari modul siap pakai ini adalah terdapat oprekan dari orang diluar sana yg menjadikan board ini bisa menggunakan IDE SKETCH nya arduino. Jadi sebelum dapat menggunakan ide arduino untuk modul ini bisa di import library nya di :  http://arduino.esp8266.com/stable/package_esp8266com_index.json , masukkan alamat terebut di preferences pada sketch. Kemudian pada menu Boards Manager bisa menambahkan boards ESP seperti pada gambar



Dan contoh-contoh program banyak bertebaran di luar sana salah satu contoh yg merupakan helloworld bisa mencoba mengirim data pembacaan suhu ke port TCP dari PC atau HP seperti yg pernah dibahas sebelumnya, script singkatnya seperti ini :

//Inisialisasi library
#include <ESP8266WiFi.h>
#include "DHT.h"

//Inisialisasi Pin DHT11 
#define DHTPIN 2
#define DHTTYPE DHT11
  
DHT dht(DHTPIN, DHTTYPE);

const char* ssid = "INDOTECH"; // Nama Wifi
const char* password =  "infrastruktur"; // Password wifi
const char* host = "192.168.1.12"; // IP tujuan
const uint16_t port = 1855; // Port Tujuan

WiFiClient klien;  // nama klien 

void setup() {
  Serial.begin(115200); // biar bisa monitor
  dht.begin();

  WiFi.begin(ssid, password); //konek ke wifi

// loop untuk mengulang koneksi jika gagal
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.println("Terhubung WiFi..");
  }
    Serial.println("Anda Terhubung Ke Wifi..");
//biar tau IP nya 
  Serial.println("");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());

}

//Membaca DHT11
void SendTempHumid(){
  
 String datae ="";
  
  float h = dht.readHumidity();
  float t = dht.readTemperature();

//trap untuk mengetahui dht sudah nyambung atau tidak
   if (isnan(h) || isnan(t) ) {
    Serial.println(F("Sensor DHT blum terpasang dengan benar!"));
    return;
  }

//tampilkan hasil dht11 ke serial monitor
datae+= F("Kelembaban: ");
datae+= String(h);
datae+= F("%  Suhu: ");
datae+= String(t); 
datae+= F(" °C") ;

Serial.println(datae);

//koneksi ke TCP
  Serial.print("Terhubung ke ");
  Serial.print(host);
  Serial.print(':');
  Serial.println(port);

  Serial.println("...Kirim data ke Lawan..\n");
  
   if (!klien.connect(host, port)) {
    Serial.println("gagal konek masbroo...");
    delay(5000);
    return;
  }

  // Kirim teks DHT 11 ke port TCP lawan
  if (klien.connected()) {
    klien.println(datae);
  }
}

void loop() {
SendTempHumid();
delay(5000);
}

Anda bisa menggunakan aplikasi PC berupa TCP Monitor atau menggunakan hotspot HP dan menginstall aplikasi android TCP server dari play store.

Kotak pandora sudah terbuka lebar dan dengan menggunakan library MQTT yg sudah dibahas pada pembahasan sebelumnya DISINI , maka kita bisa saling kirim data secara PUBLISH dan SUBSCRIBE sesuai standar MQTT. Seperti gambar paling atas saya mengunakan Wemos D1  dengan bantuan library PubSubClient untuk mengirim data suhu dan kelembaban. Sedangkan untuk proses SUBSCRIBE saya menggunakan output berupa LED dan 7 Segmen. Karena pin GPIO dari wemos terbatas maka saya menggunakan bantuan IC 7 segmen 4026 dengan catatan 7 segmennya common negatif (KATODA).


Jadi hanya perlu 2 buah PIN dari wemos menuju ic 4026 yaitu pin CLOCK dan reset. Saat ada data masuk atau perubahan angka maka program akan mereset IC 4026 dan memberikan jumlah pulsa clock sesuai angka yg diinginkan seperti kode berikut :

void segmen(int angka)
{

 int b;
 //reset 
 digitalWrite(RST,HIGH);
 digitalWrite(RST,LOW);

//loop clock sampai angka yg diinginkan
 for(b=0;b<angka;b++)
   {
         digitalWrite(CLK,HIGH);
         digitalWrite(CLK,LOW);
   }
}


Sedangkan untuk membaca data SUBSCRIBE pada MQTT brokernya, maka bisa menggunakan perintah Call back pada library PobSubClient.

..................................

#define SEGTOPIC "SEG"

..................................

client.setCallback(mqtt_callback);
    
   if (client.connected()){
     
      client.subscribe(SEGTOPIC); //subscribe ke topic 7 segmen
    }
..................................  

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

  Serial.print("Ada Pesan Baru Di Topik: ");
  Serial.println(topic);

  Serial.print("Pesan:");

  String message;
  for (int i = 0; i < length; i++) {
    message = message + (char)payload[i];  //Convert *byte to String
  }
   Serial.print(message);
//ubah 7 segmen sesuai data yg masuk
  if(message == "SEG1") {segmen(1);}
  if(message == "SEG2") {segmen(2);}
  if(message == "SEG3") {segmen(3);}
  if(message == "SEG4") {segmen(4);}
  if(message == "SEG5") {segmen(5);}
  if(message == "SEG6") {segmen(6);}
  if(message == "SEG7") {segmen(7);}
  if(message == "SEG8") {segmen(8);}
  if(message == "SEG9") {segmen(9);}
  if(message == "SEG0") {segmen(0);}
  Serial.println();
  Serial.println("-----------------------");  


}


Jadi kalau ada client MQTT yang mem PUBLISH ke topic "SEG" maka otomatis terbaca oleh microcontroller dan merubah tampilan 7 segment seperti yg terlihat pada video berikut :


Share:

0 komentar:

Posting Komentar

Kontak Penulis



12179018.png (60×60)
+628155737755

Mail : ahocool@gmail.com

Site View

Categories

555 (8) 7 segmen (3) adc (4) amplifier (2) analog (19) android (12) antares (11) arduino (27) artikel (11) attiny (3) attiny2313 (19) audio (5) baterai (5) blog (1) bluetooth (1) chatgpt (2) cmos (2) crypto (2) dasar (46) digital (11) dimmer (5) display (3) esp8266 (26) euro2020 (13) gcc (1) gsm (1) iklan (1) infrared (2) Input Output (3) iot (73) jam (7) jualan (12) kereta api (1) keyboard (1) keypad (3) kios pulsa (2) kit (6) komponen (17) komputer (3) komunikasi (1) kontrol (8) lain-lain (8) lcd (2) led (14) led matrix (6) line tracer (1) lm35 (1) lora (11) lorawan (2) MATV (1) memory (1) metal detector (4) microcontroller (70) micropython (6) mikrokontroler (1) mikrokontroller (14) mikrotik (5) modbus (9) mqtt (3) ninmedia (5) ntp (1) paket belajar (19) palang pintu otomatis (1) parabola (88) pcb (2) power (1) praktek (2) project (33) proyek (1) python (8) radio (28) raspberry pi (9) remote (1) revisi (1) rfid (1) robot (1) rpm (2) rs232 (1) script break down (3) sdcard (3) sensor (2) sharing (3) signage (1) sinyal (1) sms (6) software (18) solar (1) solusi (1) tachometer (2) technology (1) teknologi (2) telegram (2) telepon (9) televisi (167) television (28) telkomiot (4) transistor (2) troubleshoot (3) tulisan (93) tutorial (108) tv digital (6) tvri (2) vu meter (2) vumeter (2) wav player (3) wayang (1) wifi (3) yolo (7)

Arsip Blog

Diskusi


kaskus
Forum Hobby Elektronika