Home > Blogosphere > Counting Vehicle Using Arduino and Ultrasonic Sensor – Bagian 1

Counting Vehicle Using Arduino and Ultrasonic Sensor – Bagian 1


Hari ini bertepatan dengan 8 Ramadhan 1439 H, pada kesempatan ini saya ingin berbagi kepada para pembaca mengenai beberapa hasil “oprekan” saya dan Mahasiswa yang mengikuti kelas Internet of Things. Dokumentasi ini  merupakan tugas besar kelas, dengan project akhir adalah menghasilkan aplikasi Realtime Monitoring Penghitung Jumlah Kendaraan yang Melintas pada Jalan Raya menggunakan Teknologi Internet of Things, tulisan akan dibagi menjadi 3 bagian, yaitu bagaimana object/kendaraan bisa dideteksi menggunakan sensor, bagian kedua adalah bagaimana memunculkan informasi pada display, dan yang terakhir adalah bagaimana data sensor dikirimkan ke server dan menampilkannya secara realtime pada aplikasi web,  saya tuliskan dokumentasi ini dengan harapan agar dapat bermanfaat bagi orang lain.

Project akhir ini membutuhkan beberapa perangkat keras dan perangkat lunak yaitu;

  1.  Perangkat keras (1 unit Arduino Uno, 2 Sensor Ultrasonic HC-SR04, BreadBoard, Kabel Jumper, LED,  dan tentu saja Laptop/Desktop 😀  , estimasi total kebutuhan pembelian perangkat keras sekitar 200 ribuan rupiah.)
  2. Perangkat lunak (Arduino IDE)

Setelah perangkat keras sudah tersedia semua maka langsung saja masuk ke tahapan wiring, yaitu menghubungkan perangkat keras menggunakan kabel jumper dan BreadBoard, kurang lebihnya akan seperti gambar berikut

Pin Echo dan Trig 2 pada sensor Ultrasonic dihubungkan ke PIN I/O digital Arduino Uno, bebas gunakan pin digital yang mana saja, LED sebagai lampu indikator juga dihubungkan ke pin Digital, dalam project ini saya menggunakan pin 8, 9, 10, 11, 12, 13, algoritma deteksi object kurang lebihnya adalah sebagai berikut;

  • Apabila object hanya terdeteksi pada sensor Ultrasonic 1, maka dicatat sebagai motor dan LED 1 nyala.
  • Apabila object terdeteksi oleh 2 sensor Ulrasonic secara bersamaan, maka akan dicatat sebagai mobil, dan LED1/LED2 nyala bersamaan.
  • Jarak dalam prototype ini ditentukan adalah dibawah 50 CM.

Source Code untuk prototype ini adalah sebagai berikut;

#define trig1 8 //Trig pin Ultra 1
#define echo1 9 // Echo pin Ultra 1
#define trig2 10 // Trig pin Ultra 2
#define echo2 11// Echo pin Ultra 2
#define led1 12 // led merah 
#define led2 13 // led hijau

//Deklarasi tipe variable
int nilai; //deklarasi delay
int hitung_mobil = 0;
int hitung_motor = 0;
int currentState_mobil = 0;
int previousState_mobil = 0;
int currentState_motor = 0;
int previousState_motor = 0;
long duration, dist1, dist2; //hitung jarak

void setup() {
Serial.begin (9600); //Set serial dalam mode bautrate 9600
pinMode(0, OUTPUT);
digitalWrite(0, LOW);

pinMode(trig1, OUTPUT);
pinMode(echo1, INPUT);
pinMode(trig2, OUTPUT);
pinMode(echo2, INPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);}

void sensor1() {
digitalWrite(trig1, LOW);
delayMicroseconds(2);
digitalWrite(trig1, HIGH);
delayMicroseconds(10);
digitalWrite(trig1, LOW);
duration = pulseIn(echo1, HIGH);
dist1 = (duration / 2) / 29.1; //jarak dalam satuan CM
}

void sensor2() {
digitalWrite(trig2, LOW);
delayMicroseconds(2);
digitalWrite(trig2, HIGH);
delayMicroseconds(10);
digitalWrite(trig2, LOW);
duration = pulseIn(echo2, HIGH);
dist2 = (duration / 2) / 29.1; //jarak dalam satuan CM
}

void loop() {
sensor1();
sensor2(); 
if ((dist1 <= 50) && (dist2 <= 50)){ //Deteksi Mobil
currentState_mobil = 1;
digitalWrite(led1,HIGH);
digitalWrite(led2, HIGH);}

else if(dist1 <= 50){  //Deteksi Mobil
currentState_motor = true;
digitalWrite(led1,HIGH);
digitalWrite(led2,LOW);}

else {
currentState_motor = 0;
currentState_mobil = 0;
digitalWrite(led1,LOW);
digitalWrite(led2, LOW);}

delay(400); // Mengatur delay 
if(currentState_mobil != previousState_mobil){
if(currentState_mobil == 1){
hitung_mobil = hitung_mobil + 1;
Serial.print("Jumlah Mobil: ");
Serial.println(hitung_mobil);


if(currentState_motor != previousState_motor){
if(currentState_motor == 1){
hitung_motor = hitung_motor + 1;
Serial.print("Jumlah Motor: ");
Serial.println(hitung_motor);

}
} 
} 
}
}
  1. May 24, 2018 at 1:11 pm

    Maaf pak, sepertinya hari ini hari ke 8 Ramadhan 1439 H. 😁

    • May 24, 2018 at 3:07 pm

      Nah iya baru sadar tadi itu salah, mau ke 11 aja ya, yg bener ke 8, udah pengen cepet2 lebaran berarti hehehe.

  1. May 24, 2018 at 2:39 am

Leave a comment