Tuesday 8 September 2015

Input dan output Raspberry Pi

Salah satu perbedaan antara RPi dan komputer linux adalah RPi memiliki GPIO (General Purpose Input and Output), yang bisa kita akses langsung menggunakan RPi. GPIO ini dapat mengkontrol output ke komponen elektronik seperti LED, motor (jangan memasangkan motor langsung ke GPIO RPi, akan menyebabkan RPi terbakar, gunakan relay), dan lain-lain, dan untuk Input seperti tombol, sensor, motion, proximity dan lain-lain. Untuk menbaca sensor analog seperti temperatur tidak dapat digunakan langsung. Kita harus mengkonversikan dahulu ke digital, menggunakan ADC (Analog to Digital Converter), ada beberapa model ADC seperti ADS1015 12-BIT ADC - 4 CHANNEL WITH PROGRAMMABLE GAIN AMPLIFIER.
Dengan adanya GPIO ini kita bisa menbuat program yang bisa membaca input dan mengkontrol output secara general. Berbeda dengan mikrokontroler yang lain (yang juga dimiliki oleh RPi), RPi memiliki input dan output tambahan ke keyboard, mouse, monitor, dan juga tidak ketinggalan ethernet (kita bisa menggunakan ethernet sebagai input dan output). Semuanya tergabung jadi satu. Dan masih ada lagi keuntungan yang lain dalam pembuatan projek elektronik dengan RPi, seperti membaca data pada sistem file Linux, misalnya kita memiliki sensor analog, data dari sensor analog tersebut dapat disimpan dalam file (biasanya log file), dan data-data tersebut dapat kita tampilkan dengan grafik kapanpun yang kita mau. 

Banyak bahasa program juga bisa kita gunakan (Linux) seperti linux shell, python, C, java, perl, dan lain-lain.

Untuk menggunakan GPIO ini kita memerlukan tambahan alat, seperti:
  1. Solderless breadboard 
  2. LED
  3. Kable male to male jumper

  4. Kable male to female jumper 
  5. Pushbutton (tombol)
  6. Resistor 


RPi GPIO 



+ 5v
+ 5v
-
14
15
18
-
23
24
-
25
8
7
+ 3.3v
2
3
4
-
17
v1:21
v2:27
22
+ 3.3v
10
9
11
-

Ada perbedaan no pin pada RPi v1 dan RPi v2 pada pin 21(RPi v1) menjadi pin 27 (RPi v2). Untuk mengetahuinya kita gunakan terminal RPi atau di command line, dan ketik 'cat /proc/cpuinfo', jika disana tertulis revision 0002 atau 0003, berarti RPi v1, jika diatasnya berarti RPi v2.


(atas) RPi rev 2
(bawah) RPi rev 1


Contoh diatas adalah RPi ver 2 (000e (hex)).  Sedangkan untuk RPi 2 model A+ dan B+.





5v
+  5v

141518

2324

2587



12

162021
+ 3.3v234

172722+ 3.3v10911



56131926

Keterangan warna RPi dan RPi 2:
  • warna merah untuk power + 5v
  • warna orange untuk power + 3.3v
  • warna hitam untuk ground
  • warna putih untuk I/O berserta nomornya.
  • warna biru untuk ID EEPROM, (Jangan menggunakan pin-pin ini, jangan mencoba-coba menggunakannya, bila tidak tahu apa yang dilakukan ya)
Pin I2C digunakan berinteraksi antar chip. Dengan pin ini kita terkoneksi dengan beragam I2C chip dan module.

Untuk terminal terminal yang terkoneksi satu sama lain pada breadboard pada gambar dibawah ini, digambarkan dengan warna abu-abu tranparan.

Kita akan menggunakan command line untuk menyala atau mematikan output RPi GPIO pin dengan indikator LED. 

Yang kita butuhkan adalah:

  1. RPi
  2. Breadboard
  3. 1x Led
  4. Resistor 82 ohm atau 100 ohm, 1/8 watt atau 1/4 watt atau 1/2 watt (apa bedanya soal wattage? klik disini)
  5. Jumper




  1. Dengan mengunakan jumper male-to-female kita hubungkan pin 25 pada RPi ke breadboard.
  2. Gunakan jumper yang lain untuk menghubungkan ground ke breadboad sisi negatif (-).
  3. Pasang LED pada lubang yang lain (yang terhubung), pastikan polarisasi LED. LED katoda (-) dihubungkan dengan ground, dan anoda (+) dihubungkan dengan pin 25. Katoda adalah sisi yang panjang bila kita lihat kedalam LED (bukan kaki LED yang kita lihat), dan yang pendek adalah anoda.
    Dengan Resistor:
    Tanpa resistor:
    Led
  4. Lalu nyalakan RPi nya. Bila kita masuk ke dalam X window (yang tampilanya seperti window) kita klik 'Terminal', bila berada di command line, kita baik-baik saja.
  5. Untuk mengakses input dan output pin dari command line, kita harus sebagai user 'root', (super user). Untuk mengganti menjadi 'root' kita ketikan pada command line 'sudo su'. Super user memiliki akses kesemua fungsi dan file pada sistem. Dengan user ini kita dapat merusakan operation system dengan perintah tertentu. Hanya sedikit keamanan agar super user tidak merusakan sesuatu yang penting pada system. Tapi tidak usah khawatir, kita tetap bisa install ulang operating system RPi kita.
  6. Sebelum kita bisa mengaksek untuk menyalakan LED pada pin 25, kita harus membuat yang namanya userspace, agar pin dapat diakses dari luar Linux kernel. Dengan:

    echo 25 > /sys/class/gpio/export

    Perintah 'echo' membuat nomor pin (25) yang akan kita gunakan melalui file export, yang terletak di folder '/sys/class/gpio'. Dengan perintah diatas, kita dibuatkan folder baru yang bernama 'gpio25 di '/sys/class/gpio/gpio25'.
  7. Lalu kita masuk ke directori-nya dengan menggunakan perintah:

    cd /sys/class/gpio/gpio25

    Kita akan menggunakan direktori ini untuk mengkontrol pin 25.
  8. Lalu kita tulis perintah :

    echo out > direction

    Perintah 'direction' untuk menset pin ini menjadi sebuah input atau output, pada saat ini kita gunakan pin 25 untuk LED (output) sehingga perintah 'direction' out (echo out > direction), yang ditulis seperti diatas.
  9. Semuanya preparasi telah dilaksanakan, sekarang saatnya kita menyalakan LED dengan perintah:

    echo 1 > value

    dan untuk mematikannya:

    echo 0 > value
Untuk lebih jelasnya kita lihat video dibawah ini:




Pada saat kita mengkontrol pin RPi dengan output, pada kenyataanya kita membuat atau menuliskan sebuah file (virtual file) yang tidak ada pada RPi SD card, yang merupakan bagian dari virtual file system dari linux, untuk mempermudah akses. Dan bila kita membuat input, maka kita membaca dari sebuah virtual file tersebut.

Untuk membuat input dari sebuah tombol/pushbutton pada dasarnya sama saja seperti output, hanya saja dengan input kita tidak bisa melihat lansung, bila kita masukan input dari sebuah tombol, apakah RPi mendapatkan signal yang kita kirim. 

Yang kita butuhkan adalah:

  1. RPi
  2. Breadboard
  3. Push button
  4. Resistor 10K ohm
  5. jumper 


push button yang memiliki empat kaki, skemanya seperti ini:


Jadi kaki no.1 terhubung dengan kaki no.2, dan kaki no.3 terhubung dengan kaki no.4, dan ketika push button ditekan kaki no.1 dan no.2 akan terhubung dengan kaki no.3 dan no.4

Tidak harus menggunakan push button seperti diatas, bila tidak ada gunakan yang masih compatible, atau yang menggunakan push button dua kaki. Bila kita menggunakan push button dua kaki, kemungkinan akan ada masalah dengan pembacaan pada pin (bila tidak menggunakan resistor), kecuali kita hubungkan dengan membuat cabang dari push button 3,3v dengan resistor ke ground karena secara teori (dalam hal pembacaan digital input) pin harus terhubung dengan 3,3v atau ground. 

Kita pasangkan push button, resistor ke breadboard dan hubungkan dengan jumper ke pin RPi.

Peringatan: Jangan menghubungkan input push button ke pin 5v!. Menggunakan lebih dari 3,3v ke input pin dapat merusakan RPi. Selalu gunakan pin 3,3v untuk membuat input pin. 





Selanjutnya:
  1. tulis
    echo 25 > /sys/class/gpio/export
  2. masuk ke direktori gpio25 dengan
    cd /sys/class/gpio/gpio25
  3. kemudian, set direction pin nya menjadi input
    echo in > direction
  4. Sudah siap semua, kita tinggal tekan push button. Untuk melihat apakah input dari push button diterima oleh RPi pin, kita tulis
    cat value
  5. bila menghasilkan angka '0' (nol) maka pin tersebut terkoneksi ke ground, dan bila menghasilkan angka '1' (satu), pin menerima signal dari push button. Push button harus ditekan dan tahan, lalu tuliskan 'cat value' (push button masih ditahan) lalu enter (masih ditahan).
Bila RPi menolak permintaan kita, coba membuat perintah dengan user 'root', dengan cara, pada command line (atau Terminal di X window), bila belum sebagai root, ketik 'sudo su'. Indikator  kita telah menjadi root pada command line, akan tertulis 'root@raspberrypi:'.









1 comment: