Semua Tentang Belajar Teknologi Digital Dalam Kehidupan Sehari - Hari

Kamis, 02 Juli 2020

[IOT Itu Gampang] Komunikasi 2 Arah Dari Arduino Langsung ke Excel



Semakin asyik dan mudah, kini kita dapat menulis grafik menggunakan arduino langsung ke microsoft excel dengan bantuan library python xlwings. Tapi ada kendala kalau menggunakan MQTT maka jalur akan sedikit kepanjangan seperti yang telah dibahas sebelumnya disini. Seorang teman menyebut kalau pada dunia industri masih belum digalakkan penggunaan jalur internet pada  mesin industri  alasannya rawan di jahili para opreker Indonesia yang terkenal jago. Untuk itu kali ini kita akan bahas menggunakan komunikasi langsung serial UART dari arduino ke PC dan selanjutnya menulis ke Excel.




Karena komunikasi serial langsung ke PC maka kita dapat sedikit berkreasi dengan mengirim balik data dari excel ke Arduino. Jadi perintah paling sakti dari library python xlwings yang kita gunakan pada tutorial kali ini adalah :


sheets.range('cellname').value=?? 
 

Jadi dapat dilakukan 2 arah perlakuan yaitu penulisan cell dan pengambilan nilai/isi cell , sehingga selain menulis data dari pembacaan DHT11, kita juga dapat mengambil nilai cell untuk mengatur nyala mati led. Bagaimana scriptnya ? Sangat mudah kok ...


#include "DHT.h" // Library DHT11

#define DHTPIN 5 //PIN DHT
#define DHTTYPE DHT11

#define MERAH 4   //PIN LED
#define HIJAU 14
  
DHT dht(DHTPIN, DHTTYPE); 

unsigned long previousMillis = 0; //Timer
const long interval = 2000; //2 detik


void setup() {
pinMode(MERAH, OUTPUT);
pinMode(HIJAU, OUTPUT);
Serial.begin(9600); //serial ke usb com
dht.begin();

}



void loop() {

  unsigned long currentMillis = millis();
  //cek timer 
  if(currentMillis - previousMillis >= interval) {
  previousMillis = currentMillis;  
  float h = dht.readHumidity();
  float t = dht.readTemperature();
 
  // cek pembacaan dht benar
  if (isnan(h) || isnan(t)) {
    Serial.println(F("Failed to read from DHT sensor!"));
  }
  else{
    
   //lempar langsung ke serial
   Serial.println( String(t) + ","+ String(h) );
    }

  }

}

Kalau hanya mengirim data serial maka akan se-simpel itu, sedangkan pada python cukup ditambahkan library pyserial untuk meng-capture data serial yang dikirim oleh arduino.


import serial
import xlwings as xw

wb = xw.Book('Book1.xlsx')
sht = wb.sheets['data']
row = 1

serialPort = serial.Serial(port = "COM4", baudrate=9600,
                           bytesize=8, timeout=2, 
                           stopbits=serial.STOPBITS_ONE)
                           
serialString = ""       


while(1):
    if(serialPort.in_waiting > 0):
        serialString = serialPort.readline()
        data=serialString.decode('utf-8')     
        print(data)	
        datae=data.split(',')
        if row == 51:
           row=2 
        else: 
          row=row+1
        rowsuhu='A'+str(row)
        rowhumi='B'+str(row)
        sht.range(rowsuhu).value= float(datae[0])
        sht.range(rowhumi).value= float(datae[1])

Jadi kalau anda sudah memahami pembahasan pada tulisan sebelumnya di : http://www.aisi555.com/2020/07/tutorial-menggambar-grafik-data-arduino.html ,maka tidak akan mengalami kesulitan yang berarti.



Bagaimana dengan proses mengirim data balik dari excel ke arduino ? kita reverse aja script tambahannya seperti berikut :


def kirim():
    if(sht.range('J27').value =='ON' and sht.range('N27').value =='ON' ):
       serialPort.write(b'1')
    elif(sht.range('J27').value =='OFF' and sht.range('N27').value =='OFF' ):
      serialPort.write(b'2')    
    elif(sht.range('J27').value =='ON' and sht.range('N27').value =='OFF' ):
      serialPort.write(b'3')       
    elif(sht.range('J27').value =='OFF' and sht.range('N27').value =='ON' ):
      serialPort.write(b'4')   

Function / routine diatas akan dipanggil setiap selesai data DHT11 dibaca dan memiliki 4 buah kondisi yang diwakili oleh string '1' , '2' , '3' dan '4' yang memiliki terjemah sendiri terhadap kondisi LED yang diinginkan berdasarkan isian dari CELL yang dimaksud. Jadi pada script arduinonya akan ditunggu pada loop utama adakah data serial masuk seperti script berikut:


if (Serial.available() >0) { 
  // baca data masuk: 
  byte incomingByte = Serial.read(); 
  //pilihan konsidi led sesuai script python
 if( incomingByte == '1') {
     digitalWrite(MERAH,HIGH);
     digitalWrite(HIJAU,HIGH);
     }
 else if( incomingByte == '2') {
     digitalWrite(MERAH,LOW);
     digitalWrite(HIJAU,LOW);
     }
 
 else if( incomingByte == '3') {
     digitalWrite(MERAH,HIGH);
     digitalWrite(HIJAU,LOW);
     }
  else if( incomingByte == '4') {
     digitalWrite(MERAH,LOW);
     digitalWrite(HIJAU,HIGH);
     }
   } 

Sesingkat itu scriptnya dan selengkapnya dapat dilihat pada video dibawah ini, selamat mencoba ..


 


#daring #daringadalah daring adalah mpls #sekolah #guru #google classroom google classroom sekolah online guru kelas zoom webcam 
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