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) );
}
}
}
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])
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')
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); } }
#daring #daringadalah daring adalah mpls #sekolah #guru #google classroom google classroom sekolah online guru kelas zoom webcam
0 komentar:
Posting Komentar