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.
#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 } }
npm i node-red-node-serialport
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
0 komentar:
Posting Komentar