Anda di sini

Pemrograman

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

Aditya Suranata - 31 Mei 2016 15:18:51 6

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 BiggrinBiggrinBiggrin

Produk Terkait
Sensor Ultrasonic Pengukur Jarak HC-SR04

Sensor Ultrasonic Pengukur Jarak HC-SR04

CMP290117-27

Sensor jarak ultrasonic yang murah meriah, dapat mengukur dari 2Cm sampai 400Cm dengan akurasi hingga 3mm. Cocok untuk mengukur jarak non-kontak.

25,000 IDR Beli

4.705
Daftar Artikel Terkait
Image

Aditya Suranata

Aditya suka menulis, bukan hanya sekedar hobi, menulis menjadi medianya untuk mencurahkan pikiran dan perasaan. Di TutorKeren.com 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.

Artikel Menarik Lainnya

Komentar

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

Halo, tengkiu udah mampir Good

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 Emo 43

HTSL://HIGH THINKING SIMPLE LIVING . ME

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

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

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

Mari Gabung

Halo Emo 51 , Ada yang ingin disampaikan? Jangan sungkan untuk gabung diskusi ini. Silahkan Login dulu atau Daftar baru.