Raspberry Pi 2 GPIO 16×2 LCD

Setelah LED dan Servo, sekarang saya coba koneksi Raspberry Pi 2 dengan 16×2 LCD.

Peralatan yang saya butuhkan.

  • 16×2 LCD warna teks putih seharga Rp76.500.
16x2 LCD

16×2 LCD

    Layout pin pada LCD.
16x2 LCD Pin Layout

16×2 LCD Pin Layout

Pada pin paling pojok terdapat angka 1 dan 16, menunjukkan urutan pin. Kegunaan pin:

  1. Ground (GND)
  2. VCC (5volt)
  3. Contrast Adjustment (VO)
  4. Register Select (RS) berguna untuk mengirim perintah pada LCD (posisi LOW) dan menjadi data mode yang berguna untuk transer data saat posisi HIGH
  5. Read/Write (R/W)
  6. Clock (Enable)
  7. Bit 0
  8. Bit 1
  9. Bit 2
  10. Bit 3
  11. Bit 4
  12. Bit 5
  13. Bit 6
  14. Bit 7
  15. Backlight LED Anode (+)
  16. Backlight LED Cathode (-)

Karena akan menggunakan 4 bit operation maka Bit 0 sampai Bit 3 (pin 7 – 10) tidak digunakan. Selengkapnya koneksi antara pin LCD dan raspi:

Pin LCD GPIO Pin Raspi
1 GND
2 5V PWR
3 GND
4 GPIO 25
5 GND
6 GPIO 24
7 Tidak digunakan
8 Tidak digunakan
9 Tidak digunakan
10 Tidak digunakan
11 GPIO 23
12 GPIO 17
13 GPIO 21
14 GPIO 22
15 5V PWR (melalui Resistor)
16 GND

 

  • Tak lupa header male senilai Rp1.800 untuk menyambungkan LCD dengan perangkat lain (dalam kasus saya, breadboard). Header male inilah, yang pada bagian sebelumnya, disebut sebagai pin. Karena tidak memiliki solder, saya mampir di tukang reparasi elektronik (kalau dipikir-pikir ternyata kita menggunakan kata tukang untuk penyebutan hampir semua pekerjaan) untuk minta tolong menyolder header dan LCD.
Header 1 Pin

Header 1 Pin

Peralatan lain seperti breadboard, jumper wire dan resistor (menggunakan 1K Ω).

Untuk kemudahan ngoding, saya menggunakan library dari Adafruit.

Setelah berada di foler Adafruit_CharLCD, tambahkan kode cheap_lcd.py:

Seperti biasa, gunakan perintah sudo untuk mengakses GPIO.

Hasilnya:

16x2 LCD

16×2 LCD

Dengan sedikit modifikasi a la algoritma mahasiswa semester awal maka didapatkanlah running text.

Sederhana, penerapannya bisa untuk news ticker yang kontennya dari twitter atau RSS Feed. Pada layanan umum yang jamak kita temukan di bank, atau bahkan layanan publik yang diselenggarakan oleh pemerintah.

Salam.

Lebih lanjut:

http://raspberrypi.powersbrewery.com/project-9-16×2-lcd-screen-test/

https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code

http://www.forum-raspberrypi.de/Thread-python-lcd-mit-adafruit

http://crumpspot.blogspot.co.id/2013/05/using-20×4-lcd-displays-with-mcp23017.html

http://raspberrypi.stackexchange.com/questions/9298/what-is-the-maximum-current-the-gpio-pins-can-output

http://aderubiar.blogspot.co.id/2012/05/cara-menghitung-resistor-buat-lampu-led.html

https://www.raspberrypi.org/forums/viewtopic.php?f=91&t=104034

https://learn.adafruit.com/drive-a-16×2-lcd-directly-with-a-raspberry-pi?view=all

http://www.modmypi.com/blog/how-to-drive-a-character-lcd-display-using-the-raspberry-pi

Raspberry Pi 2 GPIO Servo

Pindah dari LED ke Servo kali ini saya ingin menjajal bagaimana mengontrol servo dengan Raspberry Pi 2. Nantinya bisa diaplikasikan untuk membuat RC Car, kaki robot atau yang lain.

Perlengkapan yang diperlukan, selain raspi:

  • Servo, pakai GWS S03N STD seharga Rp154ribu.
Servo

Servo

Servo memiliki 3 kabel, dalam kasus GWS S03N STD berwarna cokelat, merah dan merah lebih terang, menurut keterangan di sini, begini aturannya:

  1. Kabel gelap (cokelat, hitam) negatif.
  2. Kabel terang (merah), yang di tengah, selalu positif.
  3. Kabel lebih terang (merah terang atau putih) untuk sinyal.

Servo yang digunakan adalah servo yang umum ditemukan, bergerak 180°. Cara mengendalikannya adalah dengan mengirim Pulse-width Modulation (PWM) melalui kabel sinyal. Sudut putaran (0°, 90°, 180°) motor ditentukan oleh  lebar pulsa yang diterima.

  1. Lebar 1ms (miliseconds) atau < 1,5ms akan memutar servo ke sudut (ke kiri).
  2. Lebar 1,5ms menghasilkan sudut 90°.
  3. Lebar 2ms atau > 1,5ms menjadikan posisi servo ke 180° (ke kanan).
Servo PWM

Servo PWM

Untuk mempertahankan posisinya, servo membutuhkan sinyal diulang tiap 20ms. Jika terdapat sinyal HIGH selama 1ms maka posisi servo akan berada di sudut , demikian seterusnya untuk 1,5ms dan 2ms. Python script kita akan menggunakan frekuensi 50Hz, alternatif lain yang biasa digunakan adalah 100Hz.

Dengan frekuensi (f) 50Hz maka periode (T) yang dihasilkan adalah:

Period

Period

Sehingga periode (T) = 1/50 = 0,02seconds atau 20ms, tepat sesuai dengan kebutuhan servo. Pada raspi kita tidak menggunakan pulse width tapi Duty-Cycle dengan rumusan.

Duty-Cycle = Pulse width/Period

Period = 1/frequency

Duty-Cycle = Pulse width * frequency

Jika pulse width sebesar 1ms dengan frekuensi 50 Hz  maka Duty-Cycle yang dibutuhkan adalah:

Duty-Cycle = o,001 * 50 = 0,05 = 5%

Ilustrasi perhitungan selengkapnya untuk sudut , 90° dan 180° sebagai berikut.

Sudut Pulse Width frequency Duty-Cycle
0,001 50 5%
90° 0,0015 50 7,5%
180° 0,002 50 10%
  • Resistor, 1KΩ untuk mengamankan raspi.
Resistor

Resistor

  • Baterai AA, 4 buah biar kuat gerakin servo yang membutuhkan tenaga 5V 1A.
Baterai AA

Baterai AA

Jika ingin lebih rapi, 4 baterai AA dapat dikemas dalam boks, seharga Rp12ribuan.

Boks Baterai

Boks Baterai

Jumper wire

Jumper wire

  • Dan tentu saja tak ketinggalan, breadboard. Agar tak payah menyolder.
Breadboard

Breadboard

Diagram Rangkaian:

Diagram Rangkaian

Diagram Rangkaian

Arus positif dari baterai AA dialirkan ke servo (kabel tengah), dari servo kabel cokelat (negatif) dialirkan ke pin GND dan baterai AA. Sedang kabel terang (sinyal) servo dihubungkan ke resistor kemudian ke pin no 7 pada raspi.

Python script:

Hasilnya.

Seperti biasa, tak terlalu sukar karena memang hanya fungsi dasar yang saya kerjakan. Hahahaha.

Salam.

Lebih lanjut:

http://www.rcpowers.com/community/threads/help-needed-with-servo-wire-polarity.12494/

http://digiwarestore.com/en/servo/gws-servo-s03n-std-f-713084.html

http://www.toptechboy.com/raspberry-pi/raspberry-pi-lesson-28-controlling-a-servo-on-raspberry-pi-with-python/

https://www.rhydolabz.com/wiki/?p=8271

http://razzpisampler.oreilly.com/ch05.html

http://trikueni-desain-sistem.blogspot.co.id/2014/03/Pengertian-Motor-Servo.html

http://www.geyosoft.com/2014/pwm-pulse-width-modulation

Raspberry Pi 2 GPIO LED (Bagian 2)

Setelah berhasil membuat Raspberry Pi 2 menyalakan LED. Meski kalau dipikir-pikir terlalu sederhana karena hanya menyambungkan arus listrik positif dan negatif, sama seperti (atau bahkan lebih rendah tantangannya ketimbang) tugas yang dikerjakan semasa SD dulu.

Menyambung kisah sebelumnya, semua perangkat sama, bedanya hanya Anoda yang sebelumnya disambungkan dengan pin 3,3 volt dipindah ke salah satu pin GPIO (dalam kasus ini GPIO 4). Sebagai pengingat, berikut Diagram GPIO Raspi.

Raspberry Pi 2 GPIO

Raspberry Pi 2 GPIO

Sehingga Diagram rangkaian yang baru adalah sebagai berikut.

Diagram Rangkaian

Diagram Rangkaian

Script Python yang digunakan amatlah sederhana.

Selanjutnya script tinggal dipanggil dengan perintah sudo (harus sebagai root untuk dapat mengakses GPIO).

 

 

 

 

 


sedikit modifikasi script dapat membuat LED berkedip.

 

 

 

 


Ternyata mudah, tidak butuh waktu berjam-jam atau bahkan berhari-hari. Saya teringat tugas semesteran membuat LED berkedip menggunakan AT89S51 berakhir antiklimaks karena saya jiper duluan menghadapi rangkaian elektronika seperti resistor, kapasitor, IC regulator, xtall. Mungkin memang hikmahnya adalah fokus menghadapi masalah, berusaha tenang, karena ketenangan (juga antusiasme) dapat membuat masalah yang membuat kepala sakit selama satu semester ternyata bisa selesai dalam waktu kurang dari satu jam.

Salam.