Interfacing Saklar Digital/Relay di Raspberry Pi Menggunakan Python 3
Apa Itu Relay?
Relay adalah saklar yang dioperasikan secara elektronik/digital. Bedanya dengan saklar biasa adalah, jika saklar biasa dioperasikan dengan cara ditekan dengan tangan, relay dioperasikan dengan memberikan sebuah tegangan pemicu.
Relay digunakan ketika kita ingin mengontrol sebuah sirkuit/rangkaian elektronik yang memiliki arus lebih besar, seperti misalnya arus PLN di rumah kita. Contohnya, pada mikrokontroler yang beroperasi pada tegangan searah yang sangat kecil sekitar 3Volt hingga 5Volt, ketika kita ingin menghidupkan dan mematikan lampu yang menggunakan tegangan PLN 220Volt AC maka kita gunakan relay.
Bagaimana cara kerja Relay?
Ada banyak jenis relay, namun yang kita bicarakan disini adalah salah satu relay yang sering digunakan pada proyek elektronika arus rendah seperti mikrokontroler, single-board computer dan sebagainya.
Relay pada jenis ini bekerja dengan cara memanfaatkan sinyal input dari rangkaian pengontrol. Misalnya Arduino, ketika Arduino ingin menyalakan lampu, maka Arduino akan mengirim sinyal HIGH (5Volt) ke Pin kontrol relay, dan ketika relay menerima sinyal HIGH maka dia akan menutup sirkuit dari rangkaian terkontrol (dalam hal ini adalah berfungsi sebagai saklar lampu) dan hasilnya lampu pun akan menyala. Ketika Arduino ingin lampunya mati, maka pinnya akan diset ke sinyal LOW (0Volt), dan sebaliknya relay pun akan membuka rangkaian terkontrol yang artinya lampu akan mati.
Gambar diatas adalah salah satu contoh module relay yang banyak digunakan pada proyek berbasis mikrokontroler dan single-board computer. Modul tersebut memiliki dua relay (kotak warna biru).
Interfacing Relay di Raspberry Pi Menggunakan Python 3
Karena relay hanya mengerti dua jenis sinyal, yaitu sinyal HIGH dan sinyal LOW, maka untuk mengontrolnya sangatlah mudah. Pada tulisan ini kita akan menggunakan Raspberry Pi dengan Python 3 untuk mengontrollnya.
Pengkabelan Relay di Raspberry Pi
Pada contoh ini, saya menggunakan dua relay dalam satu modul, yang artinya saya memerlukan total empat pin pada Raspberry:
1. Pin kontrol Relay 1 di GPIO 17
2. Pin kontrol Relay 2 di GPIO 18
3. VCC (5Volt)
4. GND (Ground)
Letak masing-masing pin bisa dilihat di bagan GPIO Raspberry Pi dibawah ini:
Berikut adalah gampar Raspberry Pi saya yang telah terpasang modul relay tersebut, dan sebuah sensor suhu digital type DS18B20.
Kode Program Modul Relay di Raspberry dengan Python 3
Pertama pastikan kita telah memiliki library GPIO terbaru di Python 3. Install/Update dengan perintah berikut:
$ sudo apt-get install python3-rpi.gpio -y
Kemudian buka Python 3 untuk memastikan relay telah terhubung dengan baik:
$ sudo python 3
Kemudian ketik perintah berikut:
>>> GPIO.setmode(GPIO.BCM)
>>> GPIO.setup(17, GPIO.OUT)
>>> GPIO.setup(18, GPIO.OUT)
>>> GPIO.output(17,GPIO.HIGH) #Relay 17 akan menyala
>>> GPIO.output(18,GPIO.HIGH) #Relay 18 akan menyala
>>> GPIO.output(17,GPIO.LOW) #Relay 17 akan padam
>>> GPIO.output(18,GPIO.LOW) #Relay 18 akan padam
Bagaimana jika kita ingin membaca relay, atau membaca kondisi relay apakah relay dalam kondisi hidup atau dalam kondisi mati?
Caranya adalah sebaliknya, ketika kita menulis perintah ke relay kita menggunakan method output, maka untuk membaca kita menggunakan method input, sehingga perintahnya menjadi
>>> print("Status dari relay 17 adalah ".format(statusRelay17)) #0 = mati 1 = hidup
Status dari relay 17 adalah 0
Demikian, hanya menggunakan empat baris kode dasar kita sudah bisa mengontrol relay. Untuk menyimpan kode tersebut ke dalam script Python cukup salin baris demi baris dan simpan ke file dengan nama relay.py:
#Muat modul RPi.GPIO import RPi.GPIO as GPIO #Setting metode penomeran menjadi standar Broadcom GPIO.setmode(GPIO.BCM) #Setting mode kerja pin 17 & 18 ke output GPIO.setup(17) GPIO.setup(18) #Nyalakan relay 17 & 18 GPIO.output(17, GPIO.HIGH) GPIO.output(18, GPIO.HIGH) #Matikan relay 17 & 18 GPIO.output(17, GPIO.LOW) GPIO.output(18, GPIO.LOW) statusRelay17 = GPIO.input(17) print("Status dari relay 17 adalah ".format(statusRelay17)) #0 = mati 1 = hidup
Selanjutnya, jalankan script dengan perintah:
$ sudo python3 relay.py
Kode dasar ini bisa dikembangkan tanpa batas, seperti misalnya dalam proyek utama dari tulisan ini untuk mengontrol perangkat rumah melalui antarmuka web di perangkat apa saja termasuk Android, iOS, Windows dan sebagainya yang memiliki web browser moderen.
Semoga bermanfaat, silahkan kirim komentar atau gabung ke Forum Miarana untuk berdiskusi lebih lanjut mengenai tulisan ini.
Komentar
pengen mengerti
Pengkabelan
Halo Mas,
Langkahnya ada tiga,
1. Pengkabelan, tinggal ikutin Pengkabelan Relay di Raspberry Pi di tutorial ini
2. Cloning Program via GitHub, ada disini https://tutorkeren.com/artikel/setup-salamigal-smart-home-controller-mod...
3. Edit script salamigalnet.py sesuai dengan pin relay
Selesai deh, kalau masih bingung reply aja dan jelaskan bingungnya dimana
HTSL://HIGH THINKING SIMPLE LIVING . ME
Relay Tidak Mau Mati
Check Tipe Relay
Halo,
Maaf late reply, saya juga pernah mengalami hal aneh seperti itu... bahkan sampai hampir frustasi gara-gara tiga relay yang sama juga tidak mau, saya kira relay atau raspberry nya yang rusak, hampir saya kasih orang itu relay dan raspi karena saking kesel dan bingungnya...
Tapi setelah mendinginkan kepala dan check recheck lagi, akhirnya ketemu masalahnya... ternyata simple sekali, tipe relay yang saya beli adalah tipe aktif low, jadi itu relay kalo dikasi tegangan 0 dia malah aktif, intinya kebalik sama relay pada umumnya.. relay jenis ini cara menggunakannya terbalik, dia malah akan hidup kalau tegangan triggernya dikasi 0 volt / di-ground.
Untuk penggunaan di Raspberry ini bisa jadi sedikit triki karena raspberry tegangan logicnya adalah 3.3v, sedangkan relay ini menggunakan 5volt, kalau digroundkan langsung dari GPIO takutnya si raspi kelebihan tegangan dan arus sehingga bisa merusak si raspi, jadi harus tambah beberapa komponen seperti resistor dan transistor NPN untuk mengalihkan triggernya ke ground si raspi agar relay dapat menyala.
Contoh skematik pengkabelan ada disini: https://docs.google.com/file/d/0B5-HND9HJkXWSTQtYlFTZ3VyODA/edit
Dengan menggunakan transistor NPN dan resistor untuk menyambungkan pin trigger relay ke ground raspi ketika diberikan tegangan logic high 3.3v pada pin trigger transistor NPN maka relay akan dapat dikontrol dengan program diatas.. sama persis...
Bedanya, kalau relay biasa pin trigger langsung ke relay, kalau relay aktif low, pin trigger masuk ke transistor tambahan, dan transistor tambahan ini akan menghubungkan pin trigger relay dengan ground raspi.
HTSL://HIGH THINKING SIMPLE LIVING . ME
logic control bidirectional
mas, kalau komponen yang disebutkan itu dganti dengan logic control bidirectional (level shifter) bisa gak yaa buat trigger relay?
level shifter trigger untuk kontrol relay
halo,
untuk level shifter bisa mengontrol relay sebenarnya bisa-bisa saja, asalkan tegangan shifternya itu sesuai dengan tegangan triger dari relainya
Test
komentar yg mana mas?
komentar yg mana mas?