Interfacing Sensor Ultrasonic Pinger HC-SR04 di Raspberry Pi & Python 3
Pada umumnya, orang-orang menggunakan sensor suhu, sensor kelembapan, lampu-lampu LED, buzzer dan saklar/relay pada proyek pertama mereka dengan Raspberry Pi. Namun selain komponen-komponen tersebut, tentu terdapat banyak komponen dan sensor lain yang bisa kita gunakan pada proyek kita.
Salah satunya adalah sensor ultrasonic pinger.
Dari namanya saja, ultrasonic pinger berarti lempar tangkap suara berfrekuensi tinggi atau ultrasound. Ultrasound sendiri adalah frekuensi suara yang melewati batas atas pendengaran manusia. Contohnya, suara yang dihasilkan kelelawar ketika mereka bernavigasi di malam hari.
Cara Kerja Sensor Ultrasonic Pinger ?
Sama seperti kelelawar yang menggunakan suara berfrekuensi tinggi untuk mengetahui adanya halangan di depan mereka.
Umumnya jenis sensor ini punya 4 pin (Ground, Trigger/Input, Echo/Output, dan VCC). Ketika kita mengirimkan sinyal pemicu (trigger) ke inputnya, sensor ini akan melemparkan gelombang suara (ping), gelombang yang telah terlempar akan menabrak halangan di depannya dan terpantulkan kembali ke arah sensor. Kemudian, dengan sangat cepat, sensor berganti dari mode kirim ke mode terima (echo), ketika gelombang suara yang tadi dikirim terpantulkan dan pantulannya mengenai sensor, maka sensor akan mengirimkan sinyal bahwa gelombang telah di terima melalui outputnya.
Sinyal kirim dan sinyal terima inilah yang kita jadikan patokan untuk mendapatkan jarak dari sensor ke halangan. Rumusnya bisa ditebak, pertama kita bisa mengurangi waktu terima dan waktu kirim, jadi kita bisa menemukan selisih waktu dari sinyal dikirim dan sinyal diterima.
Selanjutnya, selisih yang masih dalam format waktu ini kita gunakan untuk menghitung jarak dalam satuan meter. Caranya, tentu kita harus mengetahu berapa kecepatan suara. Berapakah kecepatan suara?
Inilah saatnya kita mempergunakan ilmu fisika dan hapalan-hapalan yang kita dapat dengan susah payah di sekolah dulu. Kecepatan suara adalah.... 340 meter/detik... detilnya sebenarnya 343.2 m/d diukur dengan kondisi udara kering bersuhu 20C.
Ketika kita telah mengetahui berapa kecepatan suara, dan berapa lama gelombangnya tiba, kita bisa mengukur jaraknya dengan cara:
Waktu tempuh = waktu tempuh bolak-balik / 2
Jarak = waktu tempuh * 343.2
Menghubungkan Sensor Ultrasonic Pinger HC-SR04 ke Raspberry Pi
Untuk powernya, pemasangan modul HC-SR04 ke Raspberry Pi sangat mudah. Cukup gunakan pin header no 2 (5V) dan no 6/20 (GND).
Pin input dari sensor ini bernama "trigger" seperti fungsinya untuk memicu pengiriman gelombang ultrasonic. Idealnya, pin ini memerlukan sinyal 5V, tapi setelah saya coba, ternyata mendukung juga sinyal dari Raspberry Pi yang besarnya hanya 3.3V. Jadi bisa dipastikan pin trigger ini aman dan bisa dicolok langsung ke pin no 16 (pin GPIO 23) di Raspberry Pi .
Output dari modul ini bernama "echo" dan pin ini harus dipasang dengan hati-hati dan memerlukan tindakan tambahan. Pin ini akan bernilai low (0V) hingga modulnya menerima pantulan sinyal yang sebelumnya dikirim. Kemudian pin ini akan berubah nilainya menjadi high (5V), dan inilah yang harus diperhatikan karena dapat membahayakan Raspberry Pi yang logikanya bekerja pada tegangan 3.3V. Saya katakan kemungkinan terburuk. Salah sedikit Raspi bisa terbakar. Xixixi... just antisipasi dengan teliti!
Masalah dari perbedaan tegangan logika ini bisa kita pecahkan dengan menggunakan voltage divider / pembagi tengangan.
Apa itu voltage divider?
Simpelnya, voltage divider adalah pembagi tegangan. Ya pembagi tegangan, kita ambil tegangan yang kita perlukan, sisanya kita lepas ke ground. Kita sedot se-ember air disungai, sisanya kita biarkan mengalir ke laut.. hehe...
Membaginya bisa menggunakan banyak cara, yang paling sederhana dan murah adalah menggunakan resistor/hambatan.
Perhitungannya kembali lagi ke rumus per-fisika-an.
Jika R1 dan R2 nilai hambatannya sama maka tegangannya yang masuk ke Pin 18 akan dibagi setengah 5/2 = 2.5Volt, sementara Raspi perlu 3.3V berarti kurang. Jadi idealnya kita perlu nilai R2 = antara R1 hingga R1 x 2. Dalam tulisan ini, saya anjurkan menggunakan 330ohm untuk R1 dan 470Ohm untuk R2. Alternatif bisa 1K dan 1K5, atau jika kesulitan mencari komponen yang pas, coba parallel kan. Ketika dua buah resistor diparallelkan, maka nilai hambatannya bisa turun.
Kode Program Interfacing Sensor Ultrasonic Pinger HC-SR04 di Python3
Setelah pengkabelan selesai, selanjutnya kita bisa langsung mencoba kode programnya dan melakukan pembacaan jarak. Copy script berikut, dan simpan dengan nama pinger.py.
import time import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) # set penomeran board ke mode broadcom GPIO.setwarnings(False) # Set mode pin sebagai input untuk trigger, dan output untuk echo GPIO_TRIGGER = 23 #sesuaikan pin trigger GPIO_ECHO = 24 #sesuaikan pin echo GPIO.setup(GPIO_TRIGGER,GPIO.OUT) GPIO.setup(GPIO_ECHO,GPIO.IN) # Set trigger ke False (Low) untuk awal GPIO.output(GPIO_TRIGGER, GPIO.LOW) #Fungsi untuk menapatkan jarak def get_range(): # Kirim 10us sinyal high ke trigger GPIO.output(GPIO_TRIGGER, True) time.sleep(0.00001) #Stop trigger GPIO.output(GPIO_TRIGGER, False) timeout_counter = int(time.time()) start = time.time() #dapatkan waktu start while GPIO.input(GPIO_ECHO)==0 and (int(time.time()) - timeout_counter) < 3: start = time.time() timeout_counter = int(time.time()) stop = time.time() #dapatkan waktu stop while GPIO.input(GPIO_ECHO)==1 and (int(time.time()) - timeout_counter) < 3: stop = time.time() #Hitung waktu tempuh bolak-balik elapsed = stop-start #Hitung jarak, waktu tempuh dikalikan dengan kecepata suara (dalam centi meter) distance = elapsed * 34320 #Jaraknya masih dalam hitungan bolak-balik, bagi dua untuk tahu jarak ke halangan distance = distance / 2 #selesai return distance #Panggil fungsi untuk menghitung jarak dan cetak hasilnya jarak = get_range() print("Jarak halangan di depan adalah %.2f Cm" % jarak ) #outputnya seperti: #Jarak halangan di depan adalah 331.57 Cm
Setelah tersimpan. Masuk ke folder ditempat scrip tersimpan dan eksekusi dengan perintah:
$ sudo python3 ./pinger.py
Selesai... dan akhirnya, berkat sensor yang cukup murah ini, saya jadi mengingat-ngingat lagi rumus-rumus yang dulu saya kira tidak ada gunanya
Komentar
mau tambah relay
bang coding nya udah jalan .terus bisa gk kalo misal, output nya stand by terus jadi tiap setengah jam sekali dia tampil lagi ,? terus kalo misal mau di hubungin sama relay gimana caranya ? saya gunakan untuk mengukur ketinggian air ,kalo misal air nya berkurang maka relay menyala ... biasa kan bang ?
terimakasih .... mohon maaf apabila ada perkataan yg kurang berkenan..
Ilham
Tambah Relai Raspberry Pi Smart Home Controller
Halo, tengkiu udah mampir
bang coding nya udah jalan .terus bisa gk kalo misal, output nya stand by terus jadi tiap setengah jam sekali dia tampil lagi ,?
Output yang diweb kah maksudnya? Output yang diweb datanya diupdate otomatis secara realtime, jadi tidak perlu nunggu dia tampil lagi
terus kalo misal mau di hubungin sama relay gimana caranya ?
Kalau mau tambah relay tinggal colok kabel kontrol/trigger relaynya ke GPIO, silahkan buka file https://github.com/MiaranaDIY/Salamigal/blob/master/salamigalnet.py disana ada contoh untuk pin relay
saya gunakan untuk mengukur ketinggian air ,kalo misal air nya berkurang maka relay menyala ... biasa kan bang ?
Sangat bisa, kebetulan ane sudah tambahin sensor jarak ultrasonic HC-SR04 untuk bisa ukur tinggi air, silahkan mampir ke file pada link diatas, kalau tidak salah ada di baris ke 38
Salam
HTSL://HIGH THINKING SIMPLE LIVING . ME
oh begitu bang terus kalo
oh begitu bang terus kalo saya ikutin koding itu saya harus bikin file yg device saya pake ya ...? kaya hcsr04.py dan ds18b20 ya ..?
Ilham
Tambah device di salamigal
Yoi, templatenya bisa dicopy aja dari yang sudah ada... kodingnya tinggal diganti-ganti aja kok mudah dibaca itu
HTSL://HIGH THINKING SIMPLE LIVING . ME
terus tadinya saya mau bikin
terus tadinya saya mau bikin koding phyton ,di panggil nya sama php bang ,trus outputnya muncul langsung di php , mau yg simple hhe ..ngikutin yg abang belum paham bang ,menjalankan yg smarthome juga saya belum bisa hhhe
Ilham
Python vs PHP
Sebelumnya saya juga pakai PHP plus AJAX dari Web tetapi hasilnya jauh dari kata layak dan penuh frustasi.. makanya saya ganti arsitekturnya jadi websocket dan Python.. cara menjalankan gampang banget sebernernya, kamu cuma perlu install library tornado di Python 3 dan sudah ada di tutorialnya disini. Kalau masih ada error bisa dipost error nya apa biar bisa dibantu programnya jalan.
HTSL://HIGH THINKING SIMPLE LIVING . ME