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

Program Kontrol Modul SER-1REL Menggunakan Python, pySerial dan FLTK

ser-1rel_200SER-1REL adalah modul antarmuka serial RS232 yang dilengkapi dengan satu buah relay sebagai output. Modul sederhana nan handal ini cocok untuk aplikasi software bel sekolah atau kantor, kontrol lampu ruangan atau kontrol fan.

Relay pada modul SER-1REL dapat dikontrol kondisinya melalui port serial dengan cara mengirimkan karakter perintah. Berikut adalah tabel karakter perintah yang dikenali oleh modul SER-1REL.

No. Karakter Perintah/Fungsi
1 ‘A’ RELAY ON
2 ‘Z’ RELAY OFF
3 ‘1’ RELAY ON selama 100ms
4 ‘2’ RELAY ON selama 250ms
5 ‘3’ RELAY ON selama 500ms

Baudrate yang digunakan modul SER-1REL adalah 2400. Baudrate ini dipilih untuk meningkatkan performa modul. Dengan baudrate 2400, maka komunikasi akan lebih terjamin karena lebih tahan noise dibanding baudrate yang tinggi (115200 misalnya). Selain itu, diharapkan juga meningkatkan jarak jangkauan kabel komunikasi serial.

Contoh Program Interface GUI

ser1rel_pyfltkiInterfacing dengan Python sangatlah mudah. Untuk komunikasi serial, kita bisa menggunakan module pySerial. Untuk menggunakannya dalam program perlu dilakukan instalasi module terlebih dahulu. Langkah-langkah instalasinya bisa Anda baca pada tulisan ini:

Link: [ Instalasi pySerial ]

Contoh program interface yang akan kita buat menggunakan module FLTK untuk membuat tampilan program dengan Graphical User Interface (GUI). Untuk itu diperlukan module pyFLTK (python-fltk). Pastikan paket library FLTK telah terinstalasi pada komputer linux Anda. Jika belum, lakukan instalasi FLTK terlebih dahulu. Anda bisa membaca cara instalasi FLTK pada tulisan berikut ini:

Link: [ Nyobain Library GUI FLTK ]

Instalasi python-fltk

Instalasi python-fltk dapat Anda lakukan dengan perintah:

$ sudo apt-get install python-fltk

Skrip Python ser1rel.py

import serial
from fltk import *

ser1rel = serial.Serial("/dev/ttyS0", 2400)

def CB_btn_ON(ptr):
    ser1rel.write("A")

def CB_btn_OFF(ptr):
    ser1rel.write("Z")

def CB_btn_100(ptr):
    ser1rel.write("1")

def CB_btn_250(ptr):
    ser1rel.write("2")

def CB_btn_500(ptr):
    ser1rel.write("3")

window = Fl_Window(100, 100, 620, 285)
window.label("telinks - pySER1REL")
window.color(FL_WHITE)

lbl1 = Fl_Box(15, 10, 270, 20, "SER-1REL pyFLTK Interface")
lbl1.labelfont(FL_BOLD)
lbl2 = Fl_Box(15, 30, 270, 20, "Teknik Elektro Links")
lbl2.labelfont(FL_BOLD)

btn_ON = Fl_Button(45, 70, 210, 30)
btn_ON.label("RELAY ON")
btn_ON.callback(CB_btn_ON)

btn_OFF = Fl_Button(45, 110, 210, 30)
btn_OFF.label("RELAY OFF")
btn_OFF.callback(CB_btn_OFF)

btn_100 = Fl_Button(45, 150, 210, 30)
btn_100.label("RELAY ON for 100 ms")
btn_100.callback(CB_btn_100)

btn_250 = Fl_Button(45, 190, 210, 30)
btn_250.label("RELAY ON for 250 ms")
btn_250.callback(CB_btn_250)

btn_500 = Fl_Button(45, 230, 210, 30)
btn_500.label("RELAY ON for 500 ms")
btn_500.callback(CB_btn_500)

box = Fl_Box(275, 38, 320, 200)
img = Fl_JPEG_Image("ser-1rel.jpg")
box.image(img)

window.end()
window.show()
Fl.run()

Dissection Secara Singkat

Pada contoh program di atas, modul SER-1REL terhubung ke komputer melalui port serial /dev/ttyS0 dengan baudrate 2400. Program diawali dengan mengimpor modul serial dan fltk. Handle port serial /dev/ttyS0 disimpan pada variabel ser1rel.

import serial
from fltk import *

ser1rel = serial.Serial("/dev/ttyS0", 2400)

Selanjutnya, program mendeklarasikan fungsi-fungsi callback untuk button RELAY ON, RELAY OFF, dan seterusnya. Fungsi callback sederhana saja karena hanya mengirimkan karakter perintah yang sesuai dengan fungsi button.

def CB_btn_ON(ptr):
    ser1rel.write("A")

def CB_btn_OFF(ptr):
    ser1rel.write("Z")

def CB_btn_100(ptr):
    ser1rel.write("1")

def CB_btn_250(ptr):
    ser1rel.write("2")

def CB_btn_500(ptr):
    ser1rel.write("3")

Window aplikasi yang dibuat adalah berukuran 300×300, berwarna putih dengan title telinks – pySER1REL. Di dalamnya terdapat 2 label, 5 button, dan sebuah image dengan format JPEG. Berikut adalah potongan programnya.

window = Fl_Window(100, 100, 300, 300)
window.label("telinks - pySER1REL")
window.color(FL_WHITE)

lbl1 = Fl_Box(15, 10, 270, 20, "SER-1REL pyFLTK Interface")
lbl1.labelfont(FL_BOLD)
lbl2 = Fl_Box(15, 30, 270, 20, "Teknik Elektro Links")
lbl2.labelfont(FL_BOLD)

btn_ON = Fl_Button(45, 70, 210, 30)
btn_ON.label("RELAY ON")
btn_ON.callback(CB_btn_ON)

btn_OFF = Fl_Button(45, 110, 210, 30)
btn_OFF.label("RELAY OFF")
btn_OFF.callback(CB_btn_OFF)

btn_100 = Fl_Button(45, 150, 210, 30)
btn_100.label("RELAY ON for 100 ms")
btn_100.callback(CB_btn_100)

btn_250 = Fl_Button(45, 190, 210, 30)
btn_250.label("RELAY ON for 250 ms")
btn_250.callback(CB_btn_250)

btn_500 = Fl_Button(45, 230, 210, 30)
btn_500.label("RELAY ON for 500 ms")
btn_500.callback(CB_btn_500)

box = Fl_Box(275, 38, 320, 200)
img = Fl_JPEG_Image("ser-1rel.jpg")
box.image(img)

window.end()

window.end() menandakan akhir section pembuatan form aplikasi.

Dua baris perintah terakhir berfungsi untuk  menampilkan form/window aplikasi dan menjalankan program.

window.show()
Fl.run()

Setelah Fl.run(), program akan running dan menunggu event yang terjadi dan merespon event sesuai dengan program.

Menjalankan Skrip ser1rel.py

Untuk menjalankan skrip, gunakan perintah:

$ sudo python ser1rel.py

Dan… TADA! Program interface versi GUI pun running dengan meyakinkan. :)

Selamat belajar dan selamat berkarya.

Add a Comment

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