Interfacing Sensor Ultrasonic Pinger HC-SR04 di Raspberry Pi & Python 3


Aditya Suranata 31 Mei 2016 Pemrograman

Mulai Baca

Raspberry Pi Smart Home Controller Dengan Antarmuka Web Moderen

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 :D :D :D

Aditya Suranata

Tentang Penulis, Aditya Suranata

Aditya suka menulis, bukan hanya sekedar hobi, menulis menjadi medianya untuk mencurahkan pikiran dan perasaan. Di Miarana DIY kebanyakan menyumbang tulisan sesuai dengan minat dan keahliannya yaitu pada kategori pemrograman dan elektronika. Selain itu juga gemar menulis mengenai hal-hal umum, seperti ilmu alam, sosial dan beberapa pengalamannya yang mungkin bisa berguna untuk orang lain.

lihat artikel lain oleh Aditya Suranata

Artikel Lainnya

Kategori Tulisan

E-Book Terbaru

Teknik Antarmuka MATLAB dan Arduino

Teknik Antarmuka MATLAB dan Arduino - Cover.jpg
Pelajari konsep yang sangat luar biasa antara visualisasi, analisis dan komputasi yang ditawarkan MATLAB dengan Platform Arduino sebagai perangkat...
Jumlah Halaman:
411 Halaman

Video Terbaru

Belum Puas ? Mari Kita Saling Bicara


Join Forum Diskusi MiaranaDIY untuk berdiskusi dengan respon cepat mengenai berbagai macam tutorial hingga ulasan yang terdapat di blog ini. Untuk berlangganan artikel terbaru silahkan Like & Follow Facebook Page MiaranaDIY dan Follow Twitter @MiaranaDIY