Semua Tentang Belajar Teknologi Digital Dalam Kehidupan Sehari - Hari

Senin, 27 Juli 2020

[Mudah Belajar RasPi] Bermain dengan GPIO dan interaksi dengan TV Out




Raspberry pi merupakan komputer mini yang menjadi perhatian orang banyak sejak pertama kali muncul di pasaran tahun 2012. Penulis saat itu yang masih merasa antipati terhadap arduino yg lumayan "membodohi" para pelajar yg memulai mengenal elektronika digital, merasa semakin gerah dengan kehadiran raspi karena teman-teman yg dulunya tidak suka solder menyolder kini rajin unggah foto kegiatan hariannya bersama raspi. Kenapa begitu ? Karena 20 tahun yg lalu penulis sudah terlebih dahulu mengenal "interfacing" solderan ke PC dan itu bukan hal gampang. Jadi ketika dunia opensource merajai semua platform maka  tak ada lagi kata susah dan mungkin perasaan "spesial" saya sebagai tukang solder mulai terancam.


Perasaan itu pun pudar 8 tahun setelahnya ketika menyadari saya tetap "spesial" kok karena dengan berbekal kemampuan dasar elektronika yang kuat, maka tidak akan menjadi masalah jika saya diminta untuk memecahkan  kesulitan orang lain yang berhubungan dengan raspberry pi.  Apalagi ketika disumbangkan oleh teman sebuah raspberry pi zero w yang menurut dia kesusahan karena error melulu. Dan dengan bergembira saya menemukan bahwa yang bikin error adalah kelas storage SD CARD yang terlalu rendah untuk mendapatkan hasil yg stabil tiap saat, tersolusikan dengan saya membeli SD CARD yang kelas tinggi untuk videography 4K seharga 200rb.

 

Penggunaan raspberry pi lebih menitik beratkan ke fungsinya sebagai komputer berbasis linux dan penulis juga merasakan kemudahan karena dapat membantu ketika mengerjakan proyek berbasis MQTT dengan memanfaatkan raspi sebagai brokernya. Kemampuan python sebagai motor utama dari programming nya yang juga open source menjadikan dunia raspi sangat berkembang terutama di bidang IOT. Untuk itu seri pembuka dari tutorial menyolder raspberry pi kita akan berhubungan dengan fungsi Input dan Output dan praktek pertama adalah menggunakan Switch push button.




Raspberry pi memiliki I/O yang berlevel 3.3 volt sehingga harus menyesuaikan kalau anda terbiasa dengan arduino yang levelnya 5v. Dari gambar diatas tiap pin I/O sudah memiliki fasilitas Pull up down internal sehingga untuk rangkaian tombol cukup mengikuti gambar diatas aja. Untuk script pythonnya bisa di cari di seantero internet dan umumnya seperti berikut ini :


import RPi.GPIO as GPIO #library Rpi sebagai input output lewat python
import time


GPIO.setmode(GPIO.BCM)
#pilih GPIO pin yang dekat-dekat ground aja
#semua GPIO di Pull UP
GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP)#TombolGPIO17
GPIO.setup(27, GPIO.IN, pull_up_down=GPIO.PUD_UP)#TombolGPIO27
GPIO.setup(22, GPIO.IN, pull_up_down=GPIO.PUD_UP)#TombolGPIO22


try:
    while True:
         button_state1 = GPIO.input(17)
         button_state2 = GPIO.input(27)
         button_state3 = GPIO.input(22)
         if button_state1 == False: #logic 0 ketika ditekan
             print('Tombol 1 ditekan...')
         elif button_state2 == False:
             print('Tombol 2 ditekan...')       
         elif button_state3 == False:
             print('Tombol 3 ditekan...')
             
         time.sleep(0.2)
         
except:
    GPIO.cleanup()
    


Dan hasilnya bisa dipastikan lancar keluar text pada console/terminal saat tombol ditekan



Terlalu gampang bagi saya dan kini ingin mengeluarkan suara dan menampilkan gambar saat menekan tombol. Kita gunakan library pygame sebagai pemutar mp3 dan aplikasi linux feh untuk menampilkan gambar. Hubungkan raspberry pi dengan kabel HDMI menuju TV Monitor dan Scriptnya seperti berikut ini :


import RPi.GPIO as GPIO
import time
import pygame
import os

os.system ('xset s activate') #membunuh screen saver, tapi ini dulu export DISPLAY=:0.0

GPIO.setmode(GPIO.BCM)

GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP)#Button to GPIO
GPIO.setup(27, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(22, GPIO.IN, pull_up_down=GPIO.PUD_UP)

pygame.mixer.init() #mixer suara

try:
    while True:
         button_state1 = GPIO.input(17)
         button_state2 = GPIO.input(27)
         button_state3 = GPIO.input(22)
         if button_state1 == False:
             print('Ini tombol 1 broo...')
             os.system ('feh --hide-pointer -x -q -B black  -F -Z "satu.png" &')
             pygame.mixer.music.load("nomer1.mp3")
             pygame.mixer.music.play(1)
         elif button_state2 == False:
             print('Iki tombol 2 jeeehh...')
             os.system ('feh --hide-pointer -x -q -B black  -F -Z "dua.png" &')
             pygame.mixer.music.load("nomer2.mp3")
             pygame.mixer.music.play(1)
         elif button_state3 == False:
             print('Kepencet tombol telu boz...')
             os.system ('feh --hide-pointer -x -q -B black  -F -Z "tiga.png" &')
             pygame.mixer.music.load("nomer3.mp3")
             pygame.mixer.music.play(1)
         time.sleep(0.2)
         while pygame.mixer.music.get_busy() == True:
	         pass
except:
    GPIO.cleanup()


Sesuaikan gambar yang anda punya dan juga suara yang ingin didengarkan sebaiknya dalam satu folder aja. Jangan lupa jika anda menggunakan terminal ssh untuk terhubung dengan raspberry pi maka jalankan dulu "export DISPLAY=:0.0" agar output seperti video berikut tampil pada layar TV :



Masih kurang puas kita tampilkan video + mp 3 yuk saat tombol ditekan...gunakan VLC sebagai pemutar videonya.


import RPi.GPIO as GPIO
import time
import pygame
import os
import subprocess
os.environ['DISPLAY'] = ":0"


GPIO.setmode(GPIO.BCM)

GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP)#Button to GPIO23
GPIO.setup(27, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(22, GPIO.IN, pull_up_down=GPIO.PUD_UP)

pygame.mixer.init()

# =================================
# >>>> code here to turn screen ON
# =================================
# forse display on, disable dpms and set screensaver off
subprocess.call('XAUTHORITY=~pi/.Xauthority DISPLAY=:0 xset dpms force on && xset -dpms && xset s off', shell=True)

#vlc
vid = subprocess.Popen(['vlc','bali.mp4','-L','-f','-q','&'], shell=False)

def putar(musik):
          pygame.mixer.music.load(musik)
          pygame.mixer.music.set_volume(1.0)
          pygame.mixer.music.play(1)
          time.sleep(5)
try:
    while True:
         button_state1 = GPIO.input(17)
         button_state2 = GPIO.input(27)
         button_state3 = GPIO.input(22)
         if button_state1 == False:
             print('Button 1 is Pressed...')
             putar("survey1.mp3")
         elif button_state2 == False:
             print('Button 2 is Pressed...')
             putar("survey2.mp3")
         elif button_state3 == False:
             print('Button 3 is Pressed...')
             putar("survey3.mp3")
         time.sleep(0.2)
         while pygame.mixer.music.get_busy() == True:
	         pass
except:
    vid.terminate()
    GPIO.cleanup()

Pingin tau hasilnya ?



Tutorial lengkap melalui yotube dapat anda simak di video berikut ini :


Share:

0 komentar:

Posting Komentar

Kontak Penulis



12179018.png (60×60)
+628155737755

Mail : ahocool@gmail.com

Site View

Categories

555 (8) 7 segmen (3) adc (4) amplifier (2) analog (19) android (12) antares (11) arduino (27) artikel (11) attiny (3) attiny2313 (19) audio (5) baterai (5) blog (1) bluetooth (1) chatgpt (2) cmos (2) crypto (2) dasar (46) digital (11) dimmer (5) display (3) esp8266 (26) euro2020 (13) gcc (1) gsm (1) iklan (1) infrared (2) Input Output (3) iot (73) jam (7) jualan (12) kereta api (1) keyboard (1) keypad (3) kios pulsa (2) kit (6) komponen (17) komputer (3) komunikasi (1) kontrol (8) lain-lain (8) lcd (2) led (14) led matrix (6) line tracer (1) lm35 (1) lora (11) lorawan (2) MATV (1) memory (1) metal detector (4) microcontroller (70) micropython (6) mikrokontroler (1) mikrokontroller (14) mikrotik (5) modbus (9) mqtt (3) ninmedia (5) ntp (1) paket belajar (19) palang pintu otomatis (1) parabola (88) pcb (2) power (1) praktek (2) project (33) proyek (1) python (8) radio (28) raspberry pi (9) remote (1) revisi (1) rfid (1) robot (1) rpm (2) rs232 (1) script break down (3) sdcard (3) sensor (2) sharing (3) signage (1) sinyal (1) sms (6) software (18) solar (1) solusi (1) tachometer (2) technology (1) teknologi (2) telegram (2) telepon (9) televisi (167) television (28) telkomiot (4) transistor (2) troubleshoot (3) tulisan (93) tutorial (108) tv digital (6) tvri (2) vu meter (2) vumeter (2) wav player (3) wayang (1) wifi (3) yolo (7)

Arsip Blog

Diskusi


kaskus
Forum Hobby Elektronika