Teknik Elektro LinksThermostat, Panel Bel, Board Mikro, Driver Relay.

Instalasi pySerial – Modul Python Untuk Mengakses Port Serial RS232 Pada Debian 7 (Wheezy)

Jika tulisan sebelumnya berisi catatan tentang bagaimana melakukan instalasi pyParallel, yakni modul Python untuk mengakses port parallel, maka tulisan kali ini akan membahas tentang bagaimana melakukan instalasi pySerial, yakni modul Python untuk mengakses port serial RS232.

Instalasi pySerial hampir sama dengan pyParallel (baca di sini), yang berbeda hanya nama paketnya saja. Untuk lebih jelasnya simak langkah-langkah instalasi pySerial berikut ini.

Langkah-langkah Instalasi

  1. Pastikan PC atau Laptop Anda terhubung ke internet.
  2. Lakukan update daftar paket jika diperlukan dengan perintah:
    $sudo apt-get update
  3. Instalasi paket python-serial dengan perintah:
    $sudo apt-get install python-serial
  4. Tunggu proses instalasi selesai dengan senantiasa berpikir positif.

Instalasi pySerial

Alhamdulillaahirobbil ‘alamiin… instalasi telah selesai. Sekarang saatnya menguji pySerial. Sebelum mencoba berkomunikasi dengan piranti lain, kita bisa cek instalasi pySerial dengan perintah:

$python -m serial.tools.list_parts

Perintah tersebut berfungsi untuk menghasilkan daftar port serial yang tersedia pada komputer. Hasil pengujian pada komputer saya adalah sebagai berikut:

pySerial testing

Pada screenshot di atas, saya juga melakukan pengujian melalui interpreter Python yang dipanggil dengan akses root.

Nah, sekarang pengujian bisa dilanjutkan ke tahap berikutnya. Pengujian saya lakukan dengan mencoba berkomunikasi dengan mikrokontroler ATmega8. Board yang saya gunakan adalah NEO STARDUINO dengan pemrograman menggunakan IDE Arduino.

starduino-flashing-led-pin-13_picture4

Skenarionya begini. Pada saat standby, mikrokontroler akan menunggu data dari komputer melalui port serial. Jika data yang diterima berupa karakter ‘1‘, maka mikrokontroler akan menyalakan LED yang terhubung pada pin-13. Dan jika data yang diterima berupa karakter ‘0‘, maka mikrokontroler akan mematikan LED tersebut. Setelah mikrokontroler melakukan aksi sesuai perintah dari komputer, mikrokontroler akan mengirimkan data balasan ke komputer. Mikrokontroler akan mengirimkan data string “ON” setelah menyalakan LED dan data string “OFF” setelah mematikan LED. Nah, berikut ini adalah kode program untuk mikrokontroler (NEO STARDUINO) dan skrip Python.

pyserial_starduino.ino

//Sketch Arduino untuk pengujian pySerial vs NEO STARDUINO

void setup()
{
   pinMode(13, OUTPUT);
   Serial.begin(9600);
}

void loop()
{
   if (Serial.available())
   {    
      char ch = Serial.read();
      if (ch=='1') 
      {         
         digitalWrite(13, HIGH);
         Serial.println("ON");
      }         
      else if (ch=='0') 
      {         
         digitalWrite(13, LOW);
         Serial.println("OFF");
      }         
   }    
}

 

Penjelasan Singkat

Sebelum masuk ke perulangan utama (loop), program melakukan inisialisasi (setup) dengan mengeset mode pin-13 sebagai OUTPUT dan mengeset komunikasi serial pada baudrate 9600.

Selama proses looping, mikrokontroler akan menunggu adanya data masuk yang dikirim oleh komputer. Jika ada data yang masuk, data akan dibaca dan disimpan pada variabel ch yang bertipe char. Data karakter ini kemudian diseleksi. Jika karakter bernilai ‘1’, maka nyalakan LED dan kirim “ON”. Jika karakter bernilai ‘0’, maka matikan LED dan kirim “OFF”.

Proses program ini sesuai dengan skenario yang direncanakan sebelumnya.

pyserial_starduino.py

# Skrip Python untuk pengujian pySerial vs NEO STARDUINO

import serial, time, sys

try:
        ser = serial.Serial('/dev/ttyS0', 9600, timeout=1)
except:
        print "Gagal membuka port serial."
        sys.exit(1)

print "Tunggu sebentar..."
time.sleep(10)
ser.flush()

for i in range(5):
        ser.write("1")
        s = ser.readline()
        print "Kirim '1' - Balasan =", s
        time.sleep(0.5)
        ser.write("0")
        s = ser.readline()
        print "Kirim '0' - Balasan =", s
        time.sleep(0.5)
ser.close()
print "Selesai."

 

Penjelasan Singkat

Pertama-tama, Python akan mencoba membuka port serial /dev/ttyS0 pada baudrate 9600. Jika gagal, maka program akan menampilkan pesan kesalahan dan keluar (exit).

Setelah port serial berhasil dibuka, Python akan menunggu selama 10 detik (time.sleep(10)). Hal ini perlu dilakukan karena board NEO STARDUINO menggunakan bootloader versi lama. Bootloader ini memiliki waktu-tunggu selama 7-10 detik semenjak direset, sebelum akhirnya mengeksekusi program. Hapus bagian program ini jika menggunakan Arduino UNO atau jika menggunakan mikro tanpa bootloader.

Selanjutnya Python akan mengirimkan karakter ‘1’ (perintah menyalakan), membaca balasan dari mikrokontroler, menampilkan data balasan ke console dan menunda proses selama 0,5 detik. Kemudian Python mengirimkan karakter ‘0’ (perintah mematikan), membaca balasan dari mikrokontroler, menampilkannya dan menunda proses selama 0,5 detik. Proses ini diulang sebanyak 5 kali menggunakan perulangan for.

Hasil eksekusi perintah $sudo python pyserial_starduino.py yang saya lakukan adalah sebagai berikut:

pySerial vs NEO STARDUINO

Kesimpulan

Dari hasil eksekusi saya dapati LED pin-13 menyala dan mati sesuai dengan perintah yang dikirim oleh komputer dan data balasan dari mikrokontroler ditampilkan dengan benar oleh komputer. Oleh karenanya, kita dapat menyimpulkan bahwa pySerial berfungsi dengan baik.

Pengujian yang saya lakukan hanya mencakup sebagian kecil dari fitur yang dimiliki oleh pySerial. Silakan Anda mengeksplorasi dan berkarya dengan pySerial.

Cukup sekian catatan eksperimen kali ini, semoga bisa bermanfaat bagi kita semua.

Selamat belajar dan selamat berkarya!

 

 

6 Comments

Add a Comment

Your email address will not be published. Required fields are marked *