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 :
0 komentar:
Posting Komentar