Anda di sini

Pemrograman

Interfacing Saklar Digital/Relay di Raspberry Pi Menggunakan Python 3

Aditya Suranata - 30 Mei 2016 15:39:11 5

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:

>>> import RPi.GPIO as GPIO
>>> 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

>>> statusRelay17 = GPIO.input(17)
>>> 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.

8.488
Daftar Artikel Terkait
Image

Aditya Suranata

Aditya suka menulis, bukan hanya sekedar hobi, menulis menjadi medianya untuk mencurahkan pikiran dan perasaan. Di TutorKeren.com kebanyakan menyumbang tulisan sesuai dengan minat dan keahliannya yaitu pada kategori pemrograman dan elektronika. Selain itu juga gemar menulis mengenai hal-hal umum, seperti ilmu alam, sosial dan beberapa pengalamannya yang mungkin bisa berguna untuk orang lain.

Artikel Menarik Lainnya

Komentar

tolong dong bang di bantu. saya mau coba yang kayak apa post. bahan sudah lengkap. raspberry pi 3 model B dengan modul relay 8 channel. saya mau coba kontrol lampu dan AC melalui web. bingung mau ngelakuin apa pertama. mohon di bantu bang. thanks

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

Halo selamat malam, Saya sudah mencoba perintah tersebut, tapi ketika menjalankan perintah... >>> import RPi.GPIO as GPIO >>> GPIO.setmode(GPIO.BCM) >>> GPIO.setup(17, GPIO.OUT) = relay tiba2 menyala >>> GPIO.output(17,GPIO.HIGH) = relay tetap menyala >>> GPIO.output(17,GPIO.LOW) = relay tidak mau mati kira-kira apa yang salah ya kak? ketika saya ketikkan GPIO.setup(17, GPIO.IN) malah mati, tapi kalo dilanjutkan ke GPIO.output tidak mau. Terimakasih

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

apakah komentar saya sebelumnya masuk ya? Terimakasih
Mari Gabung

Halo Emo 51 , Ada yang ingin disampaikan? Jangan sungkan untuk gabung diskusi ini. Silahkan Login dulu atau Daftar baru.