Bermain dengan GPIO Raspberry Pi


Nah, setelah kemarin kita menjadikan Raspberry Pi sebagai peladen/server, sekarang kita bermain dengan GPIO.

Apa itu GPIO? GPIO merupakan singkatan dari General Purpose Input Output dengan kata lain adalah pin yang dapat digunakan baik sebagai masukan/input maupun sebagai keluaran/output. Untuk mengakses low-level hardware pada Raspberry Pi, dapat digunakan bahasa Python yang sudah terpasang pada distro Raspbian yang saya gunakan. Situs yang saya sarankan untuk belajar Python dari dasar adalah Codecademy (B. Inggris) dan CodeSaya (B. Indonesia).

Pada tutorial kali ini, (semoga saja) saya buat agar mudah dimengerti baik bagi yang sebelumnya pernah menggunakan mikrokontroler (khususnya Arduino), maupun bagi yang belum pernah memegang mikrokontroler sebelumnya.

Sekarang kita beralih ke cara membuat program untuk mengakses GPIO di Raspberry Pi. Hal yang pertama dilakukan adalah membuat nama berkas dengan format nama_berkas.py. Kalau belum terbiasa dengan CLI, mending gak pake spasi. Tapi bebas juga sih😀. Caranya dengan menuliskan perintah dibawah.

nano nama_berkas.py

Setelah itu menuliskan sintaks dibawah untuk memberitahu bahwa kita akan bermain dengan GPIO Raspberry Pi.

import RPi.GPIO as GPIO

Selanjutnya menentukan penomoran pin. Ada dua cara penomoran, yang satu penomoran berdasarkan header (seperti Arduino), dan satu lagi penomoran ala Broadcom. Adapun penomoran pin dapat dilihat di pinout.xyz. Cara untuk menentukan cara penomoran adalah dengan menuliskan salah satu sintaks dibawah sesuai kebutuhan.

GPIO.setmode(GPIO.BOARD) #Penomoran header
GPIO.setmode(GPIO.BCM)   #Penomoran Broadcom

Langkah selanjutnya, pendeklarasian fungsi pin. Apakah akan dijadikan sebagai input atau output? Jika input, apakah menggunakan pull-up/down resistor internal/tidak? Pengguna Arduino tidak akan asing dengan fungsi pinMode([pin], [arah]). Pada Raspberry Pi digunakan sintaks

GPIO.setup([pin], GPIO.OUT)                 #Sebagai output
GPIO.setup([pin], GPIO.IN)                  #Sebagai input
GPIO.setup([pin], GPIO.IN, GPIO_PD.UP)      #Sebagai input dengan pull-up resistor
GPIO.setup([pin], GPIO.IN, GPIO_PD.DOWN)    #Sebagai input dengan pull-down resistor

Apa itu pull-up dan pull-down resistor?
Simpelnya, mereka adalah resistor yang dipasang agar sebuah pin memiliki nilai logika 1 (pull-up) atau 0 (pull-down). Tanpa pull-up/down resistor, pin tidak akan memiliki nilai logika yang pasti.
Wah, jadi harus ada dong?
Gak juga. Kalau pakai push button atau toggle switch, mungkin perlu. Kalau pakai sensor, tidak perlu.
Lho? Kenapa?
Push button dan toggle switch memiliki dua kondisi, terbuka (open-circuit) dan tertutup (closed-circuit). Ketika berada dalam kondisi terbuka dan tidak ada pull-up/down resistor, maka nilai logika menjadi tidak pasti. Oleh karena itu, pull-up dan pull-down resistor internal yang dimiliki Raspberry Pi dapat dimanfaatkan.

Untuk memberikan nilai logika, dapat digunakan sintaks dibawah.

GPIO.OUTPUT([pin], GPIO.LOW)    #Logic 0
GPIO.OUTPUT([pin], GPIO.HIGH)   #Logic 1

GPIO.LOW dapat diganti dengan 0 atau False, sedangkan GPIO.HIGH dapat diganti dengan 1 atau High. Pada Arduino, sintaks diatas dikenal dengan fungsi digitalWrite([pin], [HIGH|LOW]).

Jika pada Arduino dikenal fungsi digitalRead([pin]) untuk membaca nilai logika, di Raspberry Pi dikenal sintaks

GPIO.READ([pin])

Beberapa pin pada Raspberry Pi dapat difungsikan untuk PWM (Pulse Width Modulation/Modulasi Lebar Pulsa). Hal yang perlu diperhatikan untuk menggunakan fitur PWM adalah nomor pin karena tidak semua pin mendukung PWM. Pin yang dapat berfungsi sebagai PWM memiliki keterangan PWMx di situs pinout.xyz. Untuk memfungsikan PWM di Raspberry Pi memang tidak semudah Arduino yang hanya menggunakan analogWrite([pin], [nilai]), tapi tidak sulit. Sintaks dibawah dapat digunakan untuk menggunakan PWM. Jangan lupa, atur pin PWM sebagai output.

pwm = GPIO.PWM([pin], [frekuensi])
pwm.start([duty cycle])           #Untuk mulai menggunakan PWM
pwm.ChangeDutyCycle([duty cycle]) #Untuk mengubah duty cycle (0-100)
pwm.stop()                        #Untuk selesai menggunakan PWM

Untuk membuat delay, dapat menuliskan sintaks dibawah pada bagian awal program

import time

Untuk menggunakannya, dapat menggunakan sintaks

time.sleep([detik])

Jika sudah selesai, sebaiknya pin Raspberry Pi dikembalikan ke kondisi awal dengan sintaks

GPIO.cleanup()

Jika sudah selesai dan ingin keluar dari editor nano, dapat menekan kombinasi tombol Ctrl+X. Dan untuk menjalankan programnya, dapat menggunakan perintah dibawah.

sudo python nama_berkas.py

Oh iya, saat menekan enter, akan keluar prompt permintaan password seperti dibawah.

[sudo] password for pi:

Masukkan saja password-nya. Memang tidak terlihat karakternya. Ini salah satu fitur keamanan Linux.🙂

Jika sudah selesai, dapat menekan tombol kombinasi Ctrl+C. Jika ingin memutuskan koneksi namun ingin program tetap berjalan, dapat menggunakan tmux yang dapat diinstall dengan memasukkan perintah

sudo apt install tmux

Yap, begitulah cara menggunakan pin pada Raspberry Pi. Semoga berhasil.🙂

Referensi: https://learn.sparkfun.com/tutorials/raspberry-gpio/

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s