Menggunakan Ultrasonic Range Sensor HC-SR04 dan SDM-IO

HC-SR04&SDM-IOSiapDigunakan300

Pada posting kali ini, kita akan membahas cara menggunakan Ultrasonic Range Sensor Module. Ultrasonic modul yang akan dibahas adalah Ultrasonic Range Sensor Module HC-SR04 dan Ultrasonic Module SDM-IO Range Sensor. Keduanya merupakan produk dari ITead Studio.

Sebelum kita membahas cara menggunakan ultrasonic module, ada baiknya sedikit dijelaskan garis besar cara kerjanya.

Ultrasonic modul umunya berbentuk papan elektronik ukuran kecil dengan beberapa rangkaian elektronik dan 2 buah transducer. Dari 2 buah transducer ini, salah satu berfungsi sebagai transmitter dan satu lagi sebagai receiver. Ada juga modul yang hanya mempunyai 1 buah transducer, berfungsi sebagai transmitter dan receiver sekaligus. Tersedia pin VCC, TRIG, ECHO dan GND. Ada juga modul yang pin TRIG dan ECHO-nya digabung menjadi satu dan pemakaiannya berganti-ganti.

Ultrasonic modul ini bekerja dengan cara menghasilkan gelombang suara pada frekuensi tinggi, yang kemudian dipancarkan oleh bagian transmitter. Pantulan gelombang suara yang mengenai benda di depannya akan ditangkap oleh bagian receiver. Dengan mengetahui lamanya waktu antara dipancarkannya gelombang suara sampai ditangkap kembali, kita dapat menghitung jarak benda yang ada di depan modul tersebut. Kita mengetahui kecepatan suara adalah 340m/detik. Lamanya waktu tempuh gelombang suara dikalikan kecepatan suara, kemudian dibagi 2 akan menghasilkan jarak antara ultrasonic modul dengan benda didepannya.

HC-SR04 dan SDM-IO siap digunakan

HC-SR04

HC-SR04 termasuk modul ultrasonic yang mudah digunakan. Sudah tersedia Arduino library sehingga anda sudah bisa langsung menggunakannya. Arduino library dan contoh program untuk HC-SR04 dapat didownload dari link ini. Copy-kan library ini pada folder libraries yang ada pada software Arduino di komputer anda.

HC-SR04 memiliki 4 pin, VCC, TRIG, ECHO dan GND. VCC dihubungkan dengan 5V dari Arduino dan GND dengan GND pada Arduino. TRIG terhubung pada pin digital 12 dan ECHO dihubungkan dengan pin digital 13. Untuk lebih jelasnya dapat dilihat pada gambar berikut ini.

HC-SR04 terhubung dengan Arduino

HC-SR04 dan Arduino Uno

Hubungkan board Arduino anda dengan komputer menggunakan kabel USB dan upload program di bawah ini.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/*
 * HCSR04Ultrasonic/examples/UltrasonicDemo/UltrasonicDemo.pde
 *
 * SVN Keywords
 * ----------------------------------
 * $Author: cnobile $
 * $Date: 2011-09-17 02:43:12 -0400 (Sat, 17 Sep 2011) $
 * $Revision: 29 $
 * ----------------------------------
 */


#include <Ultrasonic.h>

#define TRIGGER_PIN  12
#define ECHO_PIN     13

Ultrasonic ultrasonic(TRIGGER_PIN, ECHO_PIN);

void setup()
  {
  Serial.begin(9600);
  }

void loop()
  {
  float cmMsec, inMsec;
  long microsec = ultrasonic.timing();

  cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);
  inMsec = ultrasonic.convert(microsec, Ultrasonic::IN);
  Serial.print("MS: ");
  Serial.print(microsec);
  Serial.print(", CM: ");
  Serial.print(cmMsec);
  Serial.print(", IN: ");
  Serial.println(inMsec);
  delay(1000);
  }

Kalau tidak ada pesan error maka modul ultrasonic akan langsung bekerja mengukur jarak benda di depannya. Gunakan Serial Monitor (Ctrl+Shift+M) pada software Arduino untuk melihat hasil pengukuran.

SDM-IO

SDM-IO adalah modul ultrasonic yang sama seperti HC-SR04. Berbeda di jarak jangkauan pengukuran jarak, di mana SDM-IO memiliki jarak jangkauan yang lebih pendek. Cara pemakaiannya kurang lebih sama dengan HC-SR04, tapi dengan level sinyal yang terbalik. Kalau HC-SR04 menggunakan sinyal HIGH dengan durasi 10 microseconds, maka SDM-IO menggunakan sinyal LOW dengan durasi 10 micrseconds.

SDM-IO memiliki 4 pin, sama seperi HC-SR04, VCC, TRIG, ECHO dan GND. Hubungkan pin-pin ini sama seperti pada HC-SR04. VCC dihubungkan dengan 5V dari Arduino dan GND dengan GND pada Arduino. TRIG terhubung pada pin digital 12 dan ECHO dihubungkan dengan pin digital 13.

SDM-IO dan Arduino Uno

Hubungkan kembali board Arduino anda dengan komputer menggunakan kabel USB dan upload program di bawah ini.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#define SDM_IO_TIMEOUT 1000

int TrigPin = 12;
int EchoPin = 13;
unsigned long ultrasoundDuration;
int timeout;
unsigned long tStartPing = 0;
int sensorValue = 0;

void setup() {
  Serial.begin(9600);
  pinMode(TrigPin, OUTPUT); //pin is output
  pinMode(EchoPin, INPUT); // pin is now input
}

void loop() {
  sensorValue = read_sdm_io_range();
  Serial.print(sensorValue);
  Serial.println(" cm");
  delay(100);

}

//SDM-IO Ultrasonic Range Sensor distance function
float read_sdm_io_range()
{
  unsigned char pin = 0;
  unsigned int time_flag = 0;

  digitalWrite(TrigPin, HIGH);
  delayMicroseconds(2);
  digitalWrite(TrigPin, LOW);
  delayMicroseconds(10);
  digitalWrite(TrigPin, HIGH);

  tStartPing = micros();
  timeout = 0;
  pin = digitalRead(EchoPin);
  while(pin)
  {
    pin = digitalRead(EchoPin);
    time_flag++;
    if(time_flag > SDM_IO_TIMEOUT)
      {
        timeout = 1;
        break;
      }
  }
  ultrasoundDuration = micros() - tStartPing;
  Serial.print(ultrasoundDuration);
  Serial.print(" us, ");
  Serial.print(ultrasoundDuration*0.017, DEC); // result in cm
  Serial.print(" cm");
  Serial.println();
  if (timeout)
    return 999;
  else
    return ultrasoundDuration * 0.017; // result in cm
}

Sama halnya pada penggunaan HC-SR04, kalau tidak ada pesan error maka modul ultrasonic akan langsung bekerja mengukur jarak benda di depannya. Gunakan Serial Monitor (Ctrl+Shift+M) pada software Arduino untuk melihat hasil pengukuran.

Bagaimana, cukup mudah bukan? Silahkan bereksperimen dengan Ultrasonis Range Sensor Module pada proyek-proyek Arduino anda.

Print Friendly

55 Responses to Menggunakan Ultrasonic Range Sensor HC-SR04 dan SDM-IO

  1. rahmat says:

    untuk mengetahui berapa lama benda didepan/yg terdeteksi codingnya gimana juragan

    • Zerfani Yulias says:

      Mas Rahmat, maksudnya bagaimana ya?

      • MARSONI says:

        saya mw nanya pak, saya lagi ngerjain skripsi buat alat tongkat tunanetra dg output suara tapi dgn 3 buah sensor utk mnntukan jrak depan,smping kanan dan kiri,,,
        apakh sensor ini bisa pak?
        mohon di bls pak…
        terrima kasih seblumnya…

  2. benny says:

    Mas,untuk sdm io kok pengukurannya cuman sampai 70cm???
    Untuk program menggunakan seperti yang ada di blog ini.
    Knapa ya mas?

    Thanks

    • Zerfani Yulias says:

      Halo Mas Benny, kalau kurang sesuai, bisa ditukar dengan yang HC-SR04. Kirim balik ke saya yg SDM-IO-nya, nanti saya kirim HC-SR04-nya.

  3. Emin Durak says:

    Could you please tell, if you know, how it would be possible to connect many HC-SR04 sensors to one arduino and being able to sense the data from each of them seperately to be processed? By individually changing their identities?

    Thank you!
    Emin

    • Zerfani Yulias says:

      Hi Emin, for multiple HC-SR04 sensors you must put them in sequence. One sensor must complete its process before the other sensor can start measuring distance, so there won’t be any interference between sensors ultrasonic sound wave.
      For identification, you must define each sensor with difference variables on TRIGGER and ECHO pin.

      • Emin says:

        Dear Zerfani,

        Thank you for your reply! I just saw it indeed; didn’t check it afterwards. I’m just now wondering how I would change the address of these sensors? Must be done individually, that I know, so what sort of code do I have to write? Couldn’t find any sample on web for this specific device… It will be appreciated, if you know. Thank you.
        Emin

        • Admin says:

          Dear Emin,
          sorry for the late reply. Here’s sample for using 2 HC-SR04 sensor in sequence.
          First, read the output from HC-SR04 no.1 and then read from the HC-SR04 no.2.
          BTW, I don’t have the HC-SR04 in hand, so I have not test the code, but I think it will work.

          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          14
          15
          16
          17
          18
          19
          20
          21
          22
          23
          24
          25
          26
          27
          28
          29
          30
          31
          32
          33
          34
          35
          36
          37
          38
          39
          40
          41
          42
          43
          44
          45
          46
          47
          48
          49
          50
          51
          52
          53
          54
          55
          56
          57
          58
          /*
           * HCSR04Ultrasonic/examples/UltrasonicDemo/UltrasonicDemo.pde
           *
           * SVN Keywords
           * ----------------------------------
           * $Author: cnobile $
           * $Date: 2011-09-17 02:43:12 -0400 (Sat, 17 Sep 2011) $
           * $Revision: 29 $
           * ----------------------------------
           */

          #include <Ultrasonic.h>

          //Pin for Ultrasonic No.1
          #define TRIGGER_PIN1  12
          #define ECHO_PIN1     13

          //Pin for Ultrasonic No.2
          #define TRIGGER_PIN2  10
          #define ECHO_PIN2     11

          Ultrasonic ultrasonic1(TRIGGER_PIN1, ECHO_PIN1);
          Ultrasonic ultrasonic2(TRIGGER_PIN2, ECHO_PIN2);

          void setup()
            {
            Serial.begin(9600);
            }

          void loop()
            {
            float cmMsec, inMsec;

            Serial.println("Ultrasonic No.1");
            long microsec1 = ultrasonic1.timing();
            cmMsec = ultrasonic1.convert(microsec1, Ultrasonic::CM);
            inMsec = ultrasonic1.convert(microsec1, Ultrasonic::IN);
            Serial.print("MS: ");
            Serial.print(microsec1);
            Serial.print(", CM: ");
            Serial.print(cmMsec);
            Serial.print(", IN: ");
            Serial.println(inMsec);
            delay(1000);

            Serial.println("Ultrasonic No.2");
            long microsec2 = ultrasonic2.timing();
            cmMsec = ultrasonic2.convert(microsec2, Ultrasonic::CM);
            inMsec = ultrasonic2.convert(microsec2, Ultrasonic::IN);
            Serial.print("MS: ");
            Serial.print(microsec2);
            Serial.print(", CM: ");
            Serial.print(cmMsec);
            Serial.print(", IN: ");
            Serial.println(inMsec);
            delay(1000);

            }
  4. ahmad says:

    how the coding work if the sdm-io has only 3 pin..can u show me..

  5. ahmad says:

    can u help me with the modul that have only 3 pins.. before this i have used the example ping in ide.. but the serial port doesn’t show any value..
    Help me please..

    • Zerfani Yulias says:

      Hi Ahmad, the SDM-IO that I was referring has 4 pin: VCC, TRIG, ECHO and GND. So the sketch was provided to use 4 pins.
      If you only have 3 pin, I assume that it’s the same as the Ping Parallax Ultrasonic sensor. So for 3 pin Ultrasonic sensor, you could use the sketch that was explained in the Arduino Tutorial in this link.

  6. dody septian says:

    bli nya di mana tuh

  7. Helmi Guntoro says:

    Mas, kalau ingin membuat Robot Avoider yang bisa menghindari halangan itu menggunakan Arduino Uno bisa kah? kira2 sensor apa sajakah yang diperlukan? boleh saya minta referensi dan daftar bahan2 yg diperlukan untuk membuatnya?
    terima kasih

  8. reinka16 says:

    slamat siang… saya maw tanya, alat ini bisa diaplikasikan untuk mencari ikan tidak yah ?? seperti fish finder…
    trimakasih…

    • misdawati salampe says:

      aslm. maaf mas mw tanya lagi kerja project apa? saya di pertanyaanx ttg fishfinder sy juga skrng lagi nyari2 info tentang skematik buat fishfinder spa tw bisa bantu..mksh

  9. afdhal says:

    pak mau tanya :) kalau hc-sr04nya dipakai di codevisionavr dan atmega8535 bagaimana ya utk aplikasi yang sama? trims

    • Zerfani Yulias says:

      Mas Afdhal, terus terang saya hanya menguasai pemrograman dengan Arduino IDE. Jadi kalau ditanya mengenai CodeVisionAVR dan ATmega8535, mohon maaf saya tidak bisa membantu.
      HC-SR04 itu cara kerjanya sama seperti sensor PING dari Parallax. Bedanya hanya di pin Echo dan Trigger yang terpisah (kalau di PING, satu pin untuk Echo dan Trigger). Jadi mungkin bisa coba cari referensi program untuk sensor PING dengan CodeVision dan kemudian sedikit dimodifikasi (memisahkan pin Echo dan Trigger) untuk digunakan dengan HC-SR04.
      Mudah-mudahan bisa membantu.

      • afdhal says:

        Ok pak ga apa-apa :) Iya nih saya cuman lagi buntu aja :) Proyek skripsi dah hampir rampung dan rencananya mau ditambah sensor ini untuk menghindari tabrakan pada robot light-seeking yang saya buat :) Cuma saya masih kurang paham pemakaiannya :)

        Ok pak terima kasih banyak pak atas informasinya :) Sukses selalu :)

  10. dian says:

    mas, mau tanya
    saya menggunakan sensor ultrasonic paralax dan hanya terdapat 3 pin saja yaitu SIG, VCC dan GND. yang saya tanyakan bagaimana menentukan echo dan initpin pada coding nya?
    dengan baris program yg saya dpt seperti ini
    int echoPin = 2;
    int initPin = 3;

    1 lg mas, project saya menggunakan sensor jarak paralax, arduino dan menggunakan USB host shield juga device arduino sebagai monitoring jarak. ada referensi yang berkaitan dengan projek saya tidak?
    trima kasih

    • Zerfani Yulias says:

      Kalau pakai sensor Ping Parallax, tinggal dibikin seperti ini:
      int echoPin = 2; //pin echo dan trigger disamakan karena hanya pakai 1 pin
      int trigPin = 2;

      USB Host Shield-nya mau dipakai utk apa ya?

  11. Damar says:

    Mas kalau menggunakan BASCOM AVR, programnya seperti apa yah ?
    Boleh minta mas ?
    Dan HC-SR04 nya di hubungkan ke kaki mana saja jika menggunakan atmega 8535 mas ?

    Terima kasih mas. :)

    • Zerfani Yulias says:

      Bagaimana, ada teman-teman lain yg bisa bantu?
      Terus terang saya tidak menguasai BASCOM AVR, jadi tidak bisa bantu.

  12. rudi says:

    selamar siang master..mau tanya ada yang pernah membuat fish finder dengan arduino atau dari program apa gitu,..mohon info ya,,terimkash

  13. Oky Resi Prambudi says:

    maaf mas, kalo ditambah dengan character lcd 16×2, desain rangkaiannya dan programnya jd gmn? thanks

    • Zerfani Yulias says:

      Coba cek tutorial LCD Character di link ini.
      Nanti kalau sudah paham, tinggal menggabungkan penggunaannya dengan Sensor Jarak yang dimaksud.
      Sesuaikan pin digital yang digunakan agar tidak ada konflik.

  14. fajar says:

    mas saya punya kendala pada pengukuran menggunakan sensor ultrasonik hc-sr04 . pengukuran 2cm-110cm normal sesuai perhitungan , tetapi pada saat pengukuran sehabis 110cm yg seharusnya 111cm kenapa jadi 97cm,98cm,99cm dan kemudian menjadi 114cm,115cm,116cm lalu kembali error menjadi 100cm – 119cm . ada yg tau penyebab nya ?? apa ada salah di program atau sensor tersebut rusak ?? makasi mas

    • Zerfani Yulias says:

      Rasanya tidak rusak kalau keadaannya seperti itu. Yang perlu jadi perhatian itu, makin jauh jarak yang mau diukur, sudut pengukuran sensor ini makin lebar. Jadi bisa jadi jarak benda di depannya masih lebih jauh, tapi sensor sudah mendeteksi benda lain yang ada di salah satu sisinya. Coba lakukan pengukuran di area yang terbuka untuk pengukuran jaraknya.

  15. chandra says:

    gan ane mau bikin sensor jarak parkir mundur tapi pakai 3 sensor ultrasonic dan output nya tampil di lcd,codingnya gmna ya gan?
    mksh sblmnya

    • Zerfani Yulias says:

      Apakah sudah bisa menggunakan LCD? Sudah bisa menampilkan test di LCD? Kalau belum, coba pelajari dulu cara menggunakan LCD tersebut sampai berhasil menampilkan text ke layar LCD tersebut.

      Sedangkan algoritma untuk kebutuhannya kurang lebih seperti berikut ini:
      1. Baca sensor ultrasonic 1
      2. Tampilkan hasilnya ke LCD
      3. Baca sensor ultrasonic 2
      4. Tampilkan hasilnya ke LCD
      5. Baca sensor ultrasonic 3
      6. Tampilkan hasilnya ke LCD
      7. Kembali ke step no 1

  16. benedictus benny says:

    saya mau tanya,saya eksperimen memakai HC-SR04..tapi kenapa kok pengukurannya 0 terus? apakah sensor ini bisa rusak? kalo iya,apa yang menyebabkan kerusakannya?
    terima kasih..

    • Zerfani Yulias says:

      Yang namanya peralatan elektronik bisa saja mengalami kerusakan. Bisa karena kesalahan pemakaian, misalnya salah memberikan tegangan, kesalahan dalam program atau memang dari awal sudah tidak berfungsi.

  17. Puntodewo says:

    beberapa pertanyaan diatas belum terjawab mas, yang tentang fishfinder.
    pada prinsipnya fishfinder itu pakai ultrasonic / sounder yang ditembakkan ke bawah air dari permukaan. cmiiw
    apa bisa pakai sensor ini ? saya mau bikin alat untuk ukur kedalaman air.

    oya, sensor ini bisa mengukur jarak sampai berapa jauh ?

    terimakasih

    • Zerfani Yulias says:

      Saya kurang tahu apakah sensor ini bisa digunakan sebagai fishfinder. Silahkan dicoba dan sampaikan hasilnya di sini.
      Spesifikasi masing-masing item sudah tertera jelas di halaman produk, silahkan dibaca lagi.

  18. Wanda says:

    Salam sukses mas, sya masih newbie. rencananya mau buat alat pendeteksi besar/tidaknya gelombang air laut dg sensor ultrasonic. Mohon info literatur/tutorial yg mgkn dpt membantu.
    Trims

    • Zerfani Yulias says:

      Wah, saya kurang tahu juga apakah sensor ultrasonic ini bisa dipakai untuk kebutuhan seperti itu. Sepertinya yang lebih cocok itu menggunakan sensor accelerometer. Coba pelajari tentang sensor accelerometer.

      • Shendy says:

        pak ada tutorial skalian program robot remote control dengan bluetooth + sensor HC-04, rencana robotnya mau saya rebot dengan bluetooth tapi juga anti tabrak dengan HC-04 tsb terimakasih, bingung naruh modulnya di bagian mana saja nt, juga skemanya??

  19. DEDEK KURNIAWAN says:

    salam pak…
    saya ingin bertanya ne,apakah HC-SRO4 dan SDM-IO dapat digunakan untuk memerintah suatu sistem otomatis buka dan tutup suatu alat( pengganti saklar manual ), contohnya membuat pintu lemari terbuka dan tertutup dengan perintah kita.sewaktu kita ucap “Open” maka pintu tersebut terbuka dan apabila kita ucap “Close” maka pintu tersebut tertutup. tetapi ketika kata2 yang lain diucap maka lemari tersebut tidak akan terbuka….
    kira kira menurut bapak bagaimana?

  20. senduarmi says:

    mlm,pak..
    apakah bisa meminta source code untuk menghitung volume air pada balok menggunakan arduino uno dan sensor ultrasonik hcsr4?

  21. dani says:

    pak saya baru pemula mohon bimbingannya,
    kotak putih itu namanya apa ya pak ?

  22. Guntur Kurniawan says:

    hallo mas, saya mau nanya kalo untuk pembacaan jarak tertentu saja, apakah bisa menggunnakan sensor ini. misalnya saya hanya ingin ketika pada jarak 50 cm, sensor baru memberikan input pada plan misalnya.
    mohon bimbngannya mas.
    terima kasih

  23. Mr.AmAj says:

    Maaf bertanya, bagaimana membuat koding “C language” untuk HC-04 dengan PIC18F4550? Saya guna 2 sensor HC-04 dan disambungkan pada PIC18F4550..satu sensor mengawal motor dan satu lagi sensor mengawal buzzer..sensor pertama mahu di setkan range sebanyak 50cm & sensor kedua mahu set sebanyak 100cm.. mohon bantuan ya..

  24. tanti says:

    permisi gan mau tanya, ane butuh info. maaf kalau pertanyaan ane agak menyimpang. mau tanya, sensor laser range finder apakah dapat digunakan di bawah laut ya gan? untuk diaplikasikan pada robot bawah laut sebagai pendeteksi jarak kapal dengan objek penghalang. makasih

  25. bennz says:

    mas, saya mau tnya , seperti apa contoh progam mengendalikan motor dc dengan 3 buah sensor hcsr04 di arduino mas? mohon bantuannya mas.. trims..

  26. adryan says:

    mas, saya mau tanya

  27. Regy Pasya Dhika says:

    mas maaf mau tanya, ultrasonik hcsr-04 bisa di jadiin buat sensor level tangki kan ?? ada yg pny program nya ?? saya pake atmega 8535
    mohon bantuannya mas

  28. noufal says:

    mau tanya mas,cara menampilkan kecepatan gelombangnya bagaimana?

  29. nurulloh says:

    mau tanya mas, kalaau koding untuk 4 sensorHCSR-04 langsung dalam 1 arduino dan mengeluarkan 4 output, bgmna ya? terima kasih

  30. andikotungganai says:

    mas saya mau tanya, saya ada baca di salah satu blog, bahwa sensor ultrasonik memiliki beberapa model perambatan gelombang ultrasonik salah satunya model logitudinal atau pancaran gelombang ultrasonik menyerupai parabola, saya sekarang menggunakan sensor ultrasonik hcr-sr04 yang mana pancaran gelombangnya secara horizontal atau memancarkan secara lurus kedepan. yang mau saya tanyakan untuk pancaran gelombang ultrasonik tersebut berdasarkan tipe sensor atau berdasarkan pemrograman yang kita lakukan mas?
    terimakasi

  31. edo says:

    Mas mau tanya , bagaimana cara menyimpan data hasil pengukuran oleh sensor ultrasonic kemudian data hasil pengukuranya di simpan k dalam suatu variabel misalnya ‘jarak”, lalu data yg tersimpan pad varible jarak dijadikan jarak maksimal yang dapat diukur oleh sensor ultrasonic ? Terima kasih mas

  32. noufal says:

    pak apa HC-SR04 tidak bisa merambat di air? karena saya coba mengukur kedalaman gelas yang berisi air, sensornya malah memantul saat terkena permukaan air.

Leave a Reply

Your email address will not be published. Required fields are marked *