Semua Tentang Belajar Teknologi Digital Dalam Kehidupan Sehari - Hari

  • IC Timer 555 yang Multifungsi

    IC timer 555 adalah sirkuit terpadu (chip) yang digunakan dalam berbagai pembangkit timer, pulsa dan aplikasi osilator. Komponen ini digunakan secara luas, berkat kemudahan dalam penggunaan, harga rendah dan stabilitas yang baik

  • Ayo Migrasi TV Digital

    Kami bantu anda untuk memahami lebih jelas mengenai migrasi tv digital, apa sebabnya dan bagaimana efek terhadap kehidupan. Jasa teknisi juga tersedia dan siap membantu instalasi - setting perangkat - pengaturan antena dan distribusi televisi digital ke kamar kos / hotel

  • Bermain DOT Matrix - LOVEHURT

    Project Sederhana dengan Dot Matrix dan Attiny2313. Bisa menjadi hadiah buat teman atau pacarmu yang ulang tahun dengan tulisan dan animasi yang dapat dibuat sendiri.

  • JAM DIGITAL 6 DIGIT TANPA MICRO FULL CMOS

    Jika anda pencinta IC TTL datau CMOS maka project jam digital ini akan menunjukkan bahwa tidak ada salahnya balik kembali ke dasar elektronika digital , sebab semuanya BISA dibuat dengan teknologi jadul

  • Node Red - Kontrol Industri 4.0

    Teknologi kontrol sudah melampaui ekspektasi semua orang dan dengan kemajuan dunia elektronika, kini semakin leluasa berkreasi melalui Node Red

Selasa, 20 April 2021

[ Node-RED ] Komunikasi ke sensor menggunakan MQTT


Blog ini sudah banyak membahas MQTT terutama sejak 2 tahun lalu saat saya mulai melirik barang yang bernama IOT. Bagi kalian yang baru beralih dari microcontroller 8 bit ke dunia IOT atau kebalikannya  seorang IT programmer yang ingin berkecimpung di dunia 8 bit, mungkin ini suatu keputusan yg akan membingungkan. Jangan salah langkah deh pokoknya, lalu mulai dari mana sih ? Jadi saran saya adalah :


  • Jika anda pecinta elektronika, skema belajar yg tepat adalah Serial Com=>MQTT => Python => Node-RED
  • Jika anda seorang praktisi IT maka kebalikannya  Node-RED => MQTT => Arduino => Serial com

Jadi seperti saya ini yg pecinta dunia 8 bit, maka sudah tepat sekali menghindari Node-RED di awal belajar, karena akan mengalami kesulitan mengikuti logika Flow diagramnya. Sehingga saat saya sudah menguasai betul- betul MQTT sampai ke level advance ( bisa dibaca disini ), saat menghadapi Node-RED yang tinggal Drag-Drop maka akan sangat dimudahkan.



Untuk melanjutkan project MQTT pada Node-RED sebaiknya baca terlebih dahulu praktek MQTT sebelumnya pada pembahasan saya 2 tahun yang lalu : https://www.aisi555.com/2019/10/iot-lebih-lanjut-dengan-mqtt.html .

Dengan rangkaian yg masih sama dengan praktek sebelumnya, kita akan mebutuhkan modul esp8266 sebagai jembatan ke TCP/IP  menggunakan wi-fi. Sehingga akan lebih mudah jika menggunakan WeMos D1 dan sejenis. Jika tidak maka tinggal disesuaikan saja sesuai perangkat yg ada. Script yg dulu kita bahas 2 tahun yg lalu kita modifikasikan seperti ini, menggunakan DHT 22 dan 7 segmen komon katoda.



#include <DHT.h>
#include <ESP8266WiFi.h> //library esp 8266
#include <PubSubClient.h> //library MQTT pubsub client


const char *ssid =  "wifiku";   // nama AP wifi dirumah
const char *pass =  "passwordku";   
//server atau broker MQTT gratis
const char *mqtt_server = "broker.hivemq.com";
const int mqtt_port = 1883;
const char *mqtt_user = "";
const char *mqtt_pass = "";
const char *mqtt_client_name = "ahocool123"; 
//topik yang akan dituju
#define SUHUTOPIC "/test/suhu" 
#define HUMITOPIC "/test/kelembaban"
#define SEGTOPIC "/test/seg"

//Constants
#define DHTPIN 13     // what pin we're connected to
#define DHTTYPE DHT22   // DHT 22  (AM2302)
DHT dht(DHTPIN, DHTTYPE); //// Initialize DHT sensor for normal 16mhz Arduino

//7seg

#define SEGA 16
#define SEGB 5
#define SEGC 4
#define SEGD 14
#define SEGE 12
#define SEGF 0
#define SEGG 2

//timer dht22
unsigned long previousMillis = 0;
const long interval = 5000;  

//Variables
float hum;  //Stores humidity value
float temp; //Stores temperature value

int incomingByte = 0; // for incoming serial data

//inisialisasi klien wifi vs Mqtt
WiFiClient wclient;
PubSubClient client(wclient);

void setup()
{

    pinMode(SEGA, OUTPUT);
    pinMode(SEGB, OUTPUT);
    pinMode(SEGC, OUTPUT);
    pinMode(SEGD, OUTPUT);
    pinMode(SEGE, OUTPUT);
    pinMode(SEGF, OUTPUT);
    pinMode(SEGG, OUTPUT);

    client.setServer(mqtt_server, mqtt_port);
    client.setCallback(mqtt_callback);
    
    Serial.begin(9600);
    setupwifi();
    dht.begin();

}

void setupwifi()  
{
   if (WiFi.status() != WL_CONNECTED) {
    Serial.print("Connecting to Wifi:  ");
    Serial.print(ssid);
    Serial.println("...");
    WiFi.begin(ssid, pass);

    if (WiFi.waitForConnectResult() != WL_CONNECTED)
      return;
    Serial.println("WiFi connected");
    Serial.println("IP address: ");
    Serial.println(WiFi.localIP());
  }
}

void reconnectmqtt()  //ngecek broker KQTT 
{
   
    
      Serial.println("Connecting to MQTT server..");
     
      if (client.connect(mqtt_client_name,mqtt_user, mqtt_pass)) {
        Serial.println("Connected to MQTT server");
      } else {
        Serial.println("Could not connect to MQTT server");   
      }
   

    if (client.connected()){
      Serial.println("subscribe to topic: ");
      Serial.println(SEGTOPIC);
      client.subscribe(SEGTOPIC); //subscribe ke topic 7 segmen
    }  
  
}


void segmen(int angka)
{
 
   switch(angka) {
                  case 0 : { digitalWrite(SEGA, HIGH);
                             digitalWrite(SEGB, HIGH);
                             digitalWrite(SEGC, HIGH);
                             digitalWrite(SEGD, HIGH);                             
                             digitalWrite(SEGE, HIGH);
                             digitalWrite(SEGF, HIGH);
                             digitalWrite(SEGG, LOW);
                             break;
                  }
                  case 1 : { digitalWrite(SEGA, LOW);
                             digitalWrite(SEGB, HIGH);
                             digitalWrite(SEGC, HIGH);
                             digitalWrite(SEGD, LOW);                             
                             digitalWrite(SEGE, LOW);
                             digitalWrite(SEGF, LOW);
                             digitalWrite(SEGG, LOW);
                             break;
                  }
                  case 2 : { digitalWrite(SEGA, HIGH);
                             digitalWrite(SEGB, HIGH);
                             digitalWrite(SEGC, LOW);
                             digitalWrite(SEGD, HIGH);                             
                             digitalWrite(SEGE, HIGH);
                             digitalWrite(SEGF, LOW);
                             digitalWrite(SEGG, HIGH);
                             break;
                  }
                  case 3 : { digitalWrite(SEGA, HIGH);
                             digitalWrite(SEGB, HIGH);
                             digitalWrite(SEGC, HIGH);
                             digitalWrite(SEGD, HIGH);                             
                             digitalWrite(SEGE, LOW);
                             digitalWrite(SEGF, LOW);
                             digitalWrite(SEGG, HIGH);
                             break;
                  }
                  case 4 : { digitalWrite(SEGA, LOW);
                             digitalWrite(SEGB, HIGH);
                             digitalWrite(SEGC, HIGH);
                             digitalWrite(SEGD, LOW);                             
                             digitalWrite(SEGE, LOW);
                             digitalWrite(SEGF, HIGH);
                             digitalWrite(SEGG, HIGH);
                             break;
                  }

                  case 5 : { digitalWrite(SEGA, HIGH);
                             digitalWrite(SEGB, LOW);
                             digitalWrite(SEGC, HIGH);
                             digitalWrite(SEGD, HIGH);                             
                             digitalWrite(SEGE, LOW);
                             digitalWrite(SEGF, HIGH);
                             digitalWrite(SEGG, HIGH);
                             break;
                  }                                                          
                  case 6 : { digitalWrite(SEGA, HIGH);
                             digitalWrite(SEGB, LOW);
                             digitalWrite(SEGC, HIGH);
                             digitalWrite(SEGD, HIGH);                             
                             digitalWrite(SEGE, HIGH);
                             digitalWrite(SEGF, HIGH);
                             digitalWrite(SEGG, HIGH);
                             break;
                  }
                  case 7 : { digitalWrite(SEGA, HIGH);
                             digitalWrite(SEGB, HIGH);
                             digitalWrite(SEGC, HIGH);
                             digitalWrite(SEGD, LOW);                             
                             digitalWrite(SEGE, LOW);
                             digitalWrite(SEGF, LOW);
                             digitalWrite(SEGG, LOW);
                             break;
                  }
                  case 8 : { digitalWrite(SEGA, HIGH);
                             digitalWrite(SEGB, HIGH);
                             digitalWrite(SEGC, HIGH);
                             digitalWrite(SEGD, HIGH);                             
                             digitalWrite(SEGE, HIGH);
                             digitalWrite(SEGF, HIGH);
                             digitalWrite(SEGG, HIGH);
                             break;
                  }
                  case 9 : { digitalWrite(SEGA, HIGH);
                             digitalWrite(SEGB, HIGH);
                             digitalWrite(SEGC, HIGH);
                             digitalWrite(SEGD, HIGH);                             
                             digitalWrite(SEGE, LOW);
                             digitalWrite(SEGF, HIGH);
                             digitalWrite(SEGG, HIGH);
                             break;
                  }
   }
}
void loop()
{
   if (!client.connected())  //ngecek koneksi ke broker
   {
    reconnectmqtt();
   }
   else client.loop(); //cek terus kalau ada data masuk
  
    
    
    
    unsigned long currentMillis = millis();
 
   if(currentMillis - previousMillis >= interval) {
    // save the last time you read the sensor 
    previousMillis = currentMillis;   
    
    //Read data and store it to variables hum and temp
    hum = dht.readHumidity();
    temp= dht.readTemperature();
    //Print temp and humidity values to serial monitor
    Serial.print("Humidity: ");
    Serial.print(hum);
    Serial.print(" %, Temp: ");
    Serial.print(temp);
    Serial.println(" Celsius");
   
    String pubStringt = String(temp);
    String pubStringh = String(hum);
    

    Serial.println("publish to topic: " );
    Serial.print(SUHUTOPIC);
    Serial.print(" : ");
    Serial.println(pubStringt);
    char message_bufft[pubStringt.length() + 1];
    pubStringt.toCharArray(message_bufft, pubStringt.length() + 1);
    client.publish(SUHUTOPIC,message_bufft );

    Serial.println("publish to topic: " );
    Serial.print(HUMITOPIC);
    Serial.print(" : ");
    Serial.println(pubStringh);
    char message_buffh[pubStringh.length() + 1];
    pubStringh.toCharArray(message_buffh, pubStringh.length() + 1);
    client.publish(HUMITOPIC,message_buffh );
   
   
   }


}
   // call back untuk SUBSCRIBE topik 7 segmen
void mqtt_callback(char* topic, byte* payload, unsigned int length) {
 
  Serial.print("Message arrived in topic: ");
  Serial.println(topic);
 
  Serial.print("Message:");
  //ada SUB masuk
  String message;
  for (int i = 0; i < length; i++) {
    message = message + (char)payload[i];  //Conver *byte to String
  }
   Serial.print(message);
  //ubah tampilan 7 segmen
  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);}
}


   


Saya memilih broker MQTT di internet yg opensource dan gratis yaitu htp://broker.hivemq.com dengan port 1883. Jika tidak ada internet di rumah anda dapat menginstall Mosquitto pada PC berbasis linux atau raspberry pi. Penjelasannya dapat dibaca disini : https://www.aisi555.com/2020/05/iot-geopy-sebagai-pengolah-data-gis.html . Jadi jika hardware sudah terhubung dan kita ingin mengetest koneksi PUBLISH dan SUBSCRIBE nya , dapat menggunakan software MQTT FX di pc windows anda.


Setting parameter Broker :



PUBLISH message ke TOPIC di Broker


SUBSCRIBE Topic ke broker dan melihat outputnya berupa suhu dan kelembaban.


Setelah hardware arduino / wemos terhubung dengan sukses ke Broker dan bisa dilakukan kontrol terhadapnya, maka di sisi Node-RED kita perlu menambahan Node MQTT dengan perintah pada command prompt seperti berikut :

npm install node-red-contrib-mqtt-broker

Dan kita bisa langsung melakukan drag-drop node MQTT in seperti gambar dibawah ini :




Karena HiveMq sangat sederhana dan tanpa security, maka dengan setup seperti diatas kita bisa melakukan subscribe pada topic yang diinginkan , seperti  contoh yg kita pakai di topik : /test/suhu :


 
Dan kita bisa menghubungkan MQTT input ke debug sehingga dapat melihat pesan yang masuk.



Tambahkan juga untuk topik :  /test/kelembaban 



Untuk proses PUBLISH yang bertujuan ingin merubah 7 segmen maka Node-RED melakukan PUB ke topik  /test/seg , kita gunakan 10 injector saja untuk memudahkan mengirim string " SEG0 - SEG9 " ke MQTT broker.



Dan hasilnya bisa dilihat pada monitor serial di Arduino lanjut bisa dilihat pula pada display 7 segmen.





Nahh..mudah bukan ? Untuk menghadirkan tampilan yang lebih interaktif pada WEB UI seperti pada pembahasan sebelumnya ( disini ) , maka kita cukup mengganti input port serial menjadi MQTT, kemudian 7 segmennya saya tambahkan drop down menu seperti gambar dibawah :






Tampilannya pun cukup menarik sebagai interface otomasi perangkat IOT di rumah anda.




Wew ...kerennn....Lanjut ke Node-RED vs MODBUS ya pada pembahasan selanjutnya.
Share:

[ Node-RED ] Hello World Dari Pecinta IC Micro 8 bit - Part 2

 




Semangat yg ingin dibangun dari platform Node-RED adalah bagaimana alat kontrol yg sudah ada sebelumnya kini bisa menjadi terhubung secara IOT. Itulah yg menjadi latar belakang dimana orang yg berkecimpung dalam dunia kontrol, PLC, Modbus , dan sebagainya,  kini sudah dilibas juga oleh para opreker IT dengan iming-iming jargon industri 4.0. Tapi kenyataannya memang seperti itu di era setelah 2010 dimana dunia elektronika-kontrol mulai di gabungkan oleh platform hardware opensource dari eranya Arduino - Raspberry pi , hingga protokol komunikasi gratisan nan tangguh seperti MQTT. 

Bagi insinyur yang mulai memasuki masa senja tidak perlu berkecil hati karena Node-RED menyediakan segala kemudahan, tidak lebih susah dibanding saat mempelajari bahasa assembly. Hanya butuh pengenalan disisi programming berbasis web, dimana Node-RED menggunakan Java /Node JS sebagai pembuat server di PC atau raspberry pi. Jadi tidak perlu lagi menginstall PHP TRIAD jaman dulu atau database mySql yg susah itu, kini cukup hanya dengan menginstall package Node bernama dashbord maka kita bisa membuat UI (User Interface) berbasis web sebagai IO ke perangkat yang ingin kita kontrol. 



Langkah pertama untuk membuat UI yang cantik seperti gambar diatas adalah menginstall melalui command prompt :


npm i node-red-dashboard


Selanjutnya kita akan meneruskan praktek Hello World bagian pertama ( baca disini ) , dan kita akan mengontrol display 7 segmen dari UI Node-RED. 




Yang perlu diperhatikan dalam Node-RED adalah format pesan yg dialirkan melalui flow di tiap node adalah berupa JSON yang merupakan standar format komunikasi dalam Node JS / Java. Jadi pesan serial yg diterima PC melalui com port seperti berikut :


{"payload":"Humidity: 79.10 %, Temp: 28.70 Celsius\r\n","port":"COM17","_msgid":"1a33573e.67c289"}


Sehingga untuk menerima data ASCII nya yg dikirim arduino harus melakukan parsing JSON pada "payload" ( msg.payload).



Kembali ke praktek pembuatan UI web dari Node-RED, saya akan melakukan hello world ke UI dengan menuliskan pembacaan serial com port ( yg dikirim arduino sebagai suhu dan kelembaban). perhatikan gambar berikut :


Saya akan menempatkan text pada web UI dan meghubungkannya ke seral COM17 dari PC saya. Untuk itu saya butuh melakukan seting UI nya dengan pertama membuat UI GROUP sebagai canvas untuk menempatkan elemen web nya seperti text, form, grafik dan lain sebagainya.




Dari gambar diatas jangan lupa butuh meng-create nama dan tab dari group UI yg ingin ditampilkan dan hasilnya seperti gambar dibawah ini, web UI dapat diakses pada alamat : http://localhost:1880/ui .



Untuk membuat lebih cantik saya akan menambahkan item berupa gauge (meteran) dan grafik pada web UI, namun perlu melakukan parsing payload sehingga butuh script untuk mendapatkan angka suhu dan kelembaban nya saja. Saya menambahkan FUNCTION node pada flow seperti gambar dibawah :



Isi script pada function bernama temp adalah parsing nilai temperature seperti berikut :



Kita ingat payload string ascii yg dikirimkan arduino ber format seperti berikut :


Humidity: 79.10 %, Temp: 28.70 Celsius


Jadi parsingnya suhu pada karakter  25-29 dan kelembaban pada karakter 10-14. Script diatas berformat java dan hasil akhirnya mengembalikan nilai angka dalam format JSON.


Kemudian pada node gauge kita seting tampilan seperti berikut :



Saya juga menambahkan chart / grafik untuk nilai dari kelembaban. Hasil dari web UI nya seperti berikut :




Nah..bagaimana dengan kontrol 7 segmen dari web UI ? Saya akan menambahkan Slider yang kita bisa geser pada web UI dan otomatis mengirimkan ascii serial ke arduino dan mengubah 7 segmen.



 

Jangan lupa kalau data yg dikirimkan ke comport berupa ASCII karakter jadi topic yg dikirimkan harus sesuai. hasilnya bagaimana ? bagus kok ...



Bagaimana ? Tertarik untuk mengoprek lebih lanjut ? Tunggu tulisan saya berikutnya yaa....

Share:

Senin, 19 April 2021

[ Node-RED ] Hello World Dari Pecinta IC Micro 8 bit - Part 1

 


Tidak ada kata terlambat sesuai pepatah "Old Soldier Never Die", padahal Node-RED telah saya install di PC yang saya gunakan sejak 3 tahun yg lalu. Kenapa saya tinggalkan saat awal menekuni dunia IOT? Ya karena Node-RED terlalu "IT minded" seperti bahasa asing yang bagi mereka para opreker yang terbiasa menggunakan bahasa assembly 8 bit akan menjadi keder juga dibuatnya. Namun di 2021 "Racun" diberikan oleh teman dosen otomasi industri di UK Petra surabaya, dimana mahasiswanya kebanyakan mengembangkan Node-RED dalam meraih ilmu industri 4.0 , dan akhirnya saya pun menyerah dan berusaha catch up dengan anak muda gen-Z yg mulai menjauh dari generasi pre-milenial yang sedikit canggung ketika meninggalkan dunia 8 BIT.

Sepertinya dulu jaman saya kuliah teknik pengaturan / kontrol sangat benci terhadap "FLOW DIAGRAM" karena tidak seperti kabel yg sangat jujur memberitahu arah dan tujuan sinyal kemana, namun flow diagram entah kenapa sangat disukai para engineer berbasis kontrol. Jadi Node-RED adalah kompromi antara dunia KONTROL dengan INFORMATIKA, dan lahirlah sesuatu yang bagi insinyur elektronika sedikit menjelimetkan karena harus dipahami :


  • Node-RED itu membuat sistem IOT standalone berbasis prosesor minimal 32 bit 
  • Node-RED itu Node JS / Java yang membutuhkan minimum system ber - OS Linux/windows
  • Node-RED layaknya membuat web server sederhana untuk kontrol perangkat IOT 
  • Node-Red tidak bisa langsung untuk arduino, jadi microcontroller 8 bit hanya sebagai perantara menuju sensor dan I/O lainnya


Untuk mempersingkat waktu, kita akan loncat ke praktek sesungguhnya yaitu berusaha membuat Hello World menggunakan pembacaan sensor suhu kelembaban DHT 11 /22 yang sudah sangat sering saya bahas. Disisi output saya akan menggunakan 7 segmen  yang nantinya akan dikendalikan oleh Node-RED. Jadi sebelumnya pastikan hardware anda mirip dengan setup yg saya gunakan:


  • Windows PC : Win 7 minimum, Node Js + Node-RED bisa diinstal secara open source
  • Arduino atau Wemos 
  • DHT 11 /22
  • Seven Segmen komon katoda/negatif





Jika instalasi Node-RED sukses maka anda dapat mengaksesnya melalui alamat browser  http://localhost:1880 , dan perlu diperhatikan bahwa semua proses editing dan programming dilakukan melalui web browser. 





Gambar rangkaian diatas sangat umum saya bahas di blog ini, jadi anda yg rajin mengikutinya akan tidak mengalami masalah berarti, dimana scriptnya cukup sederhana membaca DHT11 tiap selang beberapa waktu dan kemudian mengirimkan datanya secara serial ke PC. Lalu PC dapat mengirimkan data kembali ke arduino untuk mengontrol display 7 segmen. Scriptnya saya bagikan seperti dibawah ini :



#include <DHT.h>

//pengaturan port DHT11
#define DHTPIN 9     // PIN 9
#define DHTTYPE DHT11   // DHT 11  sesuaikan yg anda pakai
DHT dht(DHTPIN, DHTTYPE); //// Initialize DHT sensor for normal 16mhz Arduino

//7seg

#define SEGA 2
#define SEGB 3
#define SEGC 4
#define SEGD 5
#define SEGE 6
#define SEGF 7
#define SEGG 8

//timer dht22 
unsigned long previousMillis = 0;
const long interval = 2000;  //tiap 2 detik, sesuaikan

//Variables
float hum;  //humi
float temp; //temperature 

int incomingByte = 0; // menyompan serial data

void setup()
{

    pinMode(SEGA, OUTPUT);
    pinMode(SEGB, OUTPUT);
    pinMode(SEGC, OUTPUT);
    pinMode(SEGD, OUTPUT);
    pinMode(SEGE, OUTPUT);
    pinMode(SEGF, OUTPUT);
    pinMode(SEGG, OUTPUT);

    
    Serial.begin(9600);
    dht.begin();

}



void segmen(char angka)
{
 //ini menulis 7 segmen komon katoda , balik logika kalau anda pakai komon anoda
   switch(angka) {
                  case '0' : { digitalWrite(SEGA, HIGH);
                             digitalWrite(SEGB, HIGH);
                             digitalWrite(SEGC, HIGH);
                             digitalWrite(SEGD, HIGH);                             
                             digitalWrite(SEGE, HIGH);
                             digitalWrite(SEGF, HIGH);
                             digitalWrite(SEGG, LOW);
                             break;
                  }
                  case '1' : { digitalWrite(SEGA, LOW);
                             digitalWrite(SEGB, HIGH);
                             digitalWrite(SEGC, HIGH);
                             digitalWrite(SEGD, LOW);                             
                             digitalWrite(SEGE, LOW);
                             digitalWrite(SEGF, LOW);
                             digitalWrite(SEGG, LOW);
                             break;
                  }
                  case '2' : { digitalWrite(SEGA, HIGH);
                             digitalWrite(SEGB, HIGH);
                             digitalWrite(SEGC, LOW);
                             digitalWrite(SEGD, HIGH);                             
                             digitalWrite(SEGE, HIGH);
                             digitalWrite(SEGF, LOW);
                             digitalWrite(SEGG, HIGH);
                             break;
                  }
                  case '3' : { digitalWrite(SEGA, HIGH);
                             digitalWrite(SEGB, HIGH);
                             digitalWrite(SEGC, HIGH);
                             digitalWrite(SEGD, HIGH);                             
                             digitalWrite(SEGE, LOW);
                             digitalWrite(SEGF, LOW);
                             digitalWrite(SEGG, HIGH);
                             break;
                  }
                  case '4' : { digitalWrite(SEGA, LOW);
                             digitalWrite(SEGB, HIGH);
                             digitalWrite(SEGC, HIGH);
                             digitalWrite(SEGD, LOW);                             
                             digitalWrite(SEGE, LOW);
                             digitalWrite(SEGF, HIGH);
                             digitalWrite(SEGG, HIGH);
                             break;
                  }

                  case '5' : { digitalWrite(SEGA, HIGH);
                             digitalWrite(SEGB, LOW);
                             digitalWrite(SEGC, HIGH);
                             digitalWrite(SEGD, HIGH);                             
                             digitalWrite(SEGE, LOW);
                             digitalWrite(SEGF, HIGH);
                             digitalWrite(SEGG, HIGH);
                             break;
                  }                                                          
                  case '6' : { digitalWrite(SEGA, HIGH);
                             digitalWrite(SEGB, LOW);
                             digitalWrite(SEGC, HIGH);
                             digitalWrite(SEGD, HIGH);                             
                             digitalWrite(SEGE, HIGH);
                             digitalWrite(SEGF, HIGH);
                             digitalWrite(SEGG, HIGH);
                             break;
                  }
                  case '7' : { digitalWrite(SEGA, HIGH);
                             digitalWrite(SEGB, HIGH);
                             digitalWrite(SEGC, HIGH);
                             digitalWrite(SEGD, LOW);                             
                             digitalWrite(SEGE, LOW);
                             digitalWrite(SEGF, LOW);
                             digitalWrite(SEGG, LOW);
                             break;
                  }
                  case '8' : { digitalWrite(SEGA, HIGH);
                             digitalWrite(SEGB, HIGH);
                             digitalWrite(SEGC, HIGH);
                             digitalWrite(SEGD, HIGH);                             
                             digitalWrite(SEGE, HIGH);
                             digitalWrite(SEGF, HIGH);
                             digitalWrite(SEGG, HIGH);
                             break;
                  }
                  case '9' : { digitalWrite(SEGA, HIGH);
                             digitalWrite(SEGB, HIGH);
                             digitalWrite(SEGC, HIGH);
                             digitalWrite(SEGD, HIGH);                             
                             digitalWrite(SEGE, LOW);
                             digitalWrite(SEGF, HIGH);
                             digitalWrite(SEGG, HIGH);
                             break;
                  }
   }
}
void loop()
{
    unsigned long currentMillis = millis();
 
   if(currentMillis - previousMillis >= interval) {
    // dibaca tiap jeda yg ditentukan diatas 
    previousMillis = currentMillis;   
    
    //Read data and store it to variables hum and temp
    hum = dht.readHumidity();
    temp= dht.readTemperature();
    //Print temp and humidity values to serial monitor
    Serial.print("Humidity: ");
    Serial.print(hum);
    Serial.print(" %, Temp: ");
    Serial.print(temp);
    Serial.println(" Celsius");
   }

if (Serial.available() > 0) {
    // read the incoming byte:
    incomingByte = Serial.read();

    segmen(char(incomingByte));

  //  7 segmen akan berubah sesuai 
  //  incoming byte yg masuk
   
 }
   
}

   


Hasil jika dijalankan dan dihubungkan ke PC akan seperti ini :



Kita akan menuju ke Node-Red dan jangan lupa untuk menginstal add ons / node red serial ports melalui comand prompt windows.


  npm i node-red-node-serialport


Langkah selanjutnya akan kita baca data serial port dan kita masukkan ke debuger pada Node-RED



Kita akan membaca input serial dari COM17 pada PC saya dengan baudrate 9600 dan tipe datanya berupa ASCII text. Lalu saya hubungkan dengan debuger yg bisa dipilih pada icon berderet disebelah kiri layar Node-RED. Hasil outputnya adalah sebagai berikut :




Mudah bukan ? Data pembacaan suhu DHT11 saya sudah tampil pada debugger. Bagaimana dengan kirim balik ke Arduino ? Kita akan bahas selanjutnya digabungkan dengan UI web dari Node-Red yang sangat menarik seperti gambar dibawah ini :




Silahkan lanjut ke part 2 disini : https://www.aisi555.com/2021/04/node-red-hello-world-dari-pecinta-ic_20.html


Share:

Minggu, 18 April 2021

Cara Mencari Quran TV dan Sunna TV - Ada di TV Satelit Mana Saja ?

 



Bulan Ramadhan bukan tentang Puasa Ramadan saja, tapi di dalamnya umat Islam dianjurkan untuk memperbanyak amalan-amalan sunnah lainnya. Dalam sebuah hadist, Rasullullah pernah bersabda, Bulan Ramadhan adalah bulan yang penuh berkah, karena Allah membukakan pintu-pintu di langit dan allah menutup pintu neraka.

Hal itu seperti dijelaskan dalam buku Panduan Lengkap Ibadah Muslimah karya Syukron Maksum, di halaman 140.


"Sesungguhnya telah datang kepadamu bulan yang penuh berkah. Allah mewajibkan kamu berpuasa, karena dibuka pintu- pintu surga, ditutup pintu-pintu neraka, dan dibelenggu syaitan- syaitan, serta akan dijumpai suatu malam yang nilainya lebih berharga dari seribu bulan. Barangsiapa yang tidak berhasil mem¬peroleh kebaikannya, sungguh tiadalah ia akan mendapatkan itu untuk selama-lamanya." (HR Ahmad, An-Nasa’l, dan Baihaqi).


Bulan Ramadhan juga merupakan salah satu waktu terbaik umat muslim untuk menghapus dosa dam menambah pahala.


“Barangsiapa yang berpuasa Ramadhan karena penuh keimanan dan mengharap pahala dari Allah Swt, maka diampuni dosa-dosanya yang telah lalu”. (HR.Bukhari dan Muslim).


Untuk itu alangkah baiknya menghadirkan siaran langsung dari mekah (masjidil haram) dan madinah (masjid nabawi) di rumah anda. Siaran 24 jam dengan latar belakang visual kegiatan ibadah di kabah dan masjidil haram, di iringi alunan merdu murottal yang menambah ke khusyukan beribadah. Bagaimana cara mencari siaran Quran TV dan Sunna TV melalui Parabola ?


Dengan Parabola Jaring 


 

Untuk parabola jaring C band di wilayah Indonesia dapat mengarahkan piringan parabolanya ke satelit berikut :


  • ASIASAT 5 ( 100.5 Bujur Timur)  : Transponder : Frekuensi 4080, Pol : H  , Simbol Rate 30000
  • TELKOM 4 (108 Bujur Timur) : Transponder : Frekuensi 3766, Pol : H  , Simbol Rate 21818

Kesemua siaran disatelit diatas merupakan siaran Free To Air.



Dengan Parabola Mini



Parabola mini menjadi solusi jika lokasi rumah tidak memungkinkan untuk memasang yang besar-besar dan ada beberapa layanan satelit gratis maupun berbayar ( walau paketnya basic / gratis juga) :


  • SES 9 ( 108 BT ) - Nex Parabola - FTA -  Frekuensi 11861 H  , Simbol Rate 45000
  • Asiasat 9 (122 BT) - Ninmedia - FTA -  Frekuensi 12655 V  , Simbol Rate 45000
  • Measat 3A ( 91.4 BT) - Kvision - FTA -  Frekuensi 12436 H  , Simbol Rate 31000
  • Measat 3A ( 91.4 BT) - Transvision - FTV -  Frekuensi 12603 V  , Simbol Rate 31000


Melalui Youtube 

Jika anda tidak memungkinkan melakukan instalasi parabola dirumah anda maka youtube menjadi pilihan, cukup dengan mencari kata kunci : Live Mekah dan Sunna tv maka anda akan diarahkan ke saluran yang sama dengan yang didapatkan melalui satelit. Namun syaratnya anda butuh kuota dan jaringan internet yang memadai.






Demikian penjelasan saya mengenai siaran TV mekah - madinah semoga dapat membantu anda menjalani ibadah sehari-hari dirumah anda menjadi lebih bermanfaat.

Untuk pemasangan parabola di daerah Surabaya - Sidoarjo dan sekitarnya bisa menghubungi Zaki 0812 4663 7645


Share:

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 (8) arduino (26) 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 (25) euro2020 (13) gcc (1) iklan (1) infrared (2) Input Output (3) iot (58) 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 (7) 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 (7) radio (26) raspberry pi (4) 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) 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)

Arsip Blog

Diskusi


kaskus
Forum Hobby Elektronika