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

Counting Vehicle Using Arduino and Ultrasonic Sensor – Bagian 3


Posting ini adalah bagian ke 3 (terakhir), lanjutan dari posting https://gigihfordanama.wordpress.com/2018/05/24/counting-vehicle-using-arduino-and-ultrasonic-sensor-bagian-2/ yakni bagaimana proses pengiriman data sensor melalui jaringan Wireless/Wi-Fi, yang menjadi point penting dalam implementasi teknologi Internet of Things dimana sensor, aktuator, dan system secara keseluruhan dapat berinteraksi dengan sistem lain secara realtime menggunakan teknologi internet.

Nah karena modul ESP8266 dan Arduino saya dipinjam Mahasiswa, maka saya menggunakan Board Embedded lain yaitu jenis NodeMCU (harga kisaran 80-100 ribuan), saya gunakan board ini karena sudah terintegrasi modul ESP8266 dan modul I/O baik analog maupun digital.

Tampilan dari perangkat yang digunakan adalah sebagai berikut

Pastikan proses wiring sudah benarm hubungkan pin Echo/Trig pada Ultrasonic pada pin I/O digital NodeMCU, dan pastikan juga pada Arduino-IDE  pilih mode boardnya adalah NODE-MCU 1.0 , saya menggunakan library RestClient.h dan jalankan source code berikut

 

#include "RestClient.h"
RestClient client = RestClient("uirg.unila.ac.id");
String response;
#define LED D0 // Led in NodeMCU at pin GPIO16 (D0).

const int trigPin = 5; //D4
const int echoPin = 4; //D3

// defines variables
long duration;
int distance;
int sensorCounter = 0; // counter for the number of button presses
int lastsensorDistance = 0;
//int setCounter = 20;
int incomingByte;

void setup() {
pinMode(LED, OUTPUT); // LED pin as output. 
Serial.begin(115200);
Serial.println("connect to WiFi network");
client.begin("WIFI@Unila", "");
Serial.println("Setup!");
pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPin, INPUT); // Sets the echoPin as an Input

}

void loop() {

// Clears the trigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);

// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

// Reads the echoPin, returns the sound wave travel time in microseconds
duration = pulseIn(echoPin, HIGH);

// Calculating the distance
distance= duration*0.034/2;
// Prints the distance on the Serial Monitor
//Serial.print("Distance: ");
//Serial.println(distance);

if (distance <= 50 ){
sensorCounter++;
Serial.print("Object Yang LEWAT: ");
Serial.println(sensorCounter);
response = "";
int statusCode = client.get("/uhuy/coba/load.php?&mobil=1&motor=1", &response);
digitalWrite(LED, HIGH); 
}

else {
digitalWrite(LED, LOW); 
}

delay(80);
}

Perhatikan bahwa Node-MCU akan memanggil url http://uirg.unila.ac.id/uhuy/coba/load.php load.php ini adalah script yang digunakan pada server untuk menerima request GET-HTTP dari Arduino dan memasukkan data hasil counting ke dalam database; berikut script load.php tersebut

<?php
$servername = "localhost";
$username = "dbUser";
$password = "dbPWD";
$dbname = "db_IOT";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}

$sql = "INSERT INTO sensor (mobil,motor)
VALUES (
'".$_GET['mobil']."',
'".$_GET['motor']."'
)";

if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?>

O iya, hampir lupa, sebelumnya dibuat dulu struktur database dgn nama db_IOT dengan field id (autoincerement), tanggal (date-time), mobil (int), motor(int).

Dengan tampilan real-timenya adalah sebagai berikut;

 

  1. No comments yet.
  1. No trackbacks yet.

Leave a comment