Semua Tentang Belajar Teknologi Digital Dalam Kehidupan Sehari - Hari

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:

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 (8) arduino (25) 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 (5) 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 (15) 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 (92) 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