Python Membaca Nilai Sensor Arduino

     Pada kesempatan kali ini saya akan mencoba berbagai cara bagaimana membaca nilai suatu sensor yang berada di Arduino untuk kita tampilkan juga di bahasa pemrograman Python kita. Seperti yang diketahui bahwa saat ini Python sangat sering digunakan utamanya terkait data science. Data science pun sangat erat kaitannya dengan teknologi IoT (Internet of Things). Pada IoT sendiri kebanyakan untuk saat ini data yang saling bertukar berupa data sensor. Jadi mari kita coba materi ini.

Batasan

Komputer : 

  • OS Windows 10 64 bit
  • Python 3.7.x 64 bit
    • library serial, silahkan lakukan penginstallan dengan cara pip install pyserial

Arduino

  • Arduino Mega Clone

Text-Editor / IDE

  • Sublime Text 3
  • Arduino IDE


Ide Dasar

Pada Python terdapat library pyserial, library ini menghubungkan python terhadap perangkat additional melalui protokol masing-masing tiap OS. Semisal pada Windows akan menghasilkan istilah COM  x pada Linux akan menghasilkan tty/ttl x. Dengan x merupakan seri penomoran perangkat. Serial ini bekerja melalui protokol kumikasi Serial. Kebetulan Arduino menyediakan komunikasi serial ini. Mungkin bagi yang terbiasa dengan Serial.println(value_sensor) secara tidak sadar melakukan bentuk protokol serial. 

Sehingga, code sederhana untuk melakukan komunikasi dengan Arduino adalah sebagai berikut:

Python


kode html yang sudah di parse di sini

koneksi sederhana

import serial

arduino = serial.Serial('com4', 9600)
arduino.close()
sekilas code ini semaca melakukan streaming kepada suatu file plaint text atau sejenisnya. Dengan maksud arduino adalah sebuah objek yang akan menjadi jalur komunikasi serial dari sebuah port yang berseri "COM4", dangan bitrate / baudarate 9600. Kemudian jangan lupa lakukan close pada koneksi jika selesai digunakan.

membaca dan menunggu inputan dari Arduino
import serial

arduino = serial.Serial('com4', 9600)

def  wait_data():
     if (arduino.inWaiting() > 0):
          data = arduino.readline()
          data = int(data)
          print(data)

try:
     while True:
          wait_data()
except KeyboardInterrupt:
     print("anda keluar")
     arduino.close()
 *kode di atas sangat debatable pas atau tidaknya. Pada kode tersebut kita membuat sebuah fungsi untuk melakukan handling data terhadap hasil komunikasi serial dengan arduino. if conditional dengan parameter arduino.inWaiting() > 0) melambangkan apabila ada data masuk dari serial Arduino maka lakukan baris tab di bawah. Pada program utama kita mendeklarasikan try-except. Dengan kondisi except yang ditampung adalah KeyboardIntterupt, exception ini akan muncul salah satunya apabila kita mamaksakan berhenti program python (Ctrl+z).

Arduino
mengirim data sensor cahaya.
/*
 *  Code for photoresistor
 *  by: lol97
 *  seri keyes module
 */

// PIN_DATA was the pin that used for comunicate value from sensor
#define PIN_DATA A0

void setup() {
  Serial.begin(9600);
}

void loop() {
  //  read data from PIN_DATA
  int pr_val = analogRead(PIN_DATA);
  Serial.print("Nilai Cahaya : ");
  Serial.print("\t");
  Serial.print(pr_val);
  Serial.println(" unit");
}

dengan skema sebagai berikut:

Komentar