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
[[{"fid":"755","view_mode":"default","fields":{"format":"default","field_file_image_alt_text[und][0][value]":"HC-SR04 Ultrasonic Pinger","field_file_image_title_text[und][0][value]":"HC-SR04 Ultrasonic Pinger"},"type":"media","link_text":null,"field_deltas":{"1":{"format":"default","field_file_image_alt_text[und][0][value]":"HC-SR04 Ultrasonic Pinger","field_file_image_title_text[und][0][value]":"HC-SR04 Ultrasonic Pinger"}},"attributes":{"alt":"HC-SR04 Ultrasonic Pinger","title":"HC-SR04 Ultrasonic Pinger","height":"150","width":"150","class":"media-element file-default","data-delta":"1"}}]]
Untuk powernya, pemasangan modul HC-SR04 ke Raspberry Pi sangat mudah. Cukup gunakan pin header no 2 (5V) dan no 6/20 (GND).
[[{"fid":"736","view_mode":"wysiwyg","fields":{"format":"wysiwyg","field_file_image_alt_text[und][0][value]":"Raspberry Pi GPIO All Version","field_file_image_title_text[und][0][value]":"Raspberry Pi GPIO All Version"},"type":"media","link_text":null,"field_deltas":{"2":{"format":"wysiwyg","field_file_image_alt_text[und][0][value]":"Raspberry Pi GPIO All Version","field_file_image_title_text[und][0][value]":"Raspberry Pi GPIO All Version"}},"attributes":{"alt":"Raspberry Pi GPIO All Version","title":"Raspberry Pi GPIO All Version","height":"275","width":"400","class":"media-element file-wysiwyg","data-delta":"2"}}]]
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.
[[{"fid":"754","view_mode":"wysiwyg","fields":{"format":"wysiwyg","field_file_image_alt_text[und][0][value]":"HC-SR04 Raspberry Pi Wiring & Voltage Divider","field_file_image_title_text[und][0][value]":"HC-SR04 Raspberry Pi Wiring & Voltage Divider"},"type":"media","link_text":null,"field_deltas":{"3":{"format":"wysiwyg","field_file_image_alt_text[und][0][value]":"HC-SR04 Raspberry Pi Wiring & Voltage Divider","field_file_image_title_text[und][0][value]":"HC-SR04 Raspberry Pi Wiring & Voltage Divider"}},"attributes":{"alt":"HC-SR04 Raspberry Pi Wiring & Voltage Divider","title":"HC-SR04 Raspberry Pi Wiring & Voltage Divider","height":"278","width":"400","class":"media-element file-wysiwyg","data-delta":"3"}}]]
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 :D :D :D
Komentar Terbaru