Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang menggunakan sensor ultrasonik sebagai deteksi kecepatan laju benda bergerak, jadi alat ini dilengkapi juga dengan sensor PIR yang berfungsi untuk mendeteksi apakah yang bergerak manusia atau bukan, jika manusia maka akan dimulai counter untuk deteksi kecepatannya namun jika tidak maka tidak akan dilakukan counter, ada dua sensor jarak difungsikan untuk awal counter dan akhir counter, setelah nilai counter didapat maka dikirimkan ke receiver menggunakan modul wireless NRF24L01. untuk lebih jelasnya berikut adalah skema dan programnya.
a. Arduino Uno
b. Sensor Jarak HC-SRF04
c. LCD 16x2 I2C
d. Sensor PIR
e. Modul NRF24L01
f. Program Arduino Uno
1. Master
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#define trigPin1 2
#define echoPin1 3
#define trigPin2 4
#define echoPin2 5
long duration1, distance1;
long duration2, distance2;
int dataadc, counter, mark;
RF24 radio(9, 10); // CE, CSN
const byte address[6] = "00001";
void setup() {
Serial.begin (9600);
pinMode(trigPin1, OUTPUT);
pinMode(echoPin1, INPUT);
pinMode(trigPin2, OUTPUT);
pinMode(echoPin2, INPUT);
digitalWrite(13,LOW);
radio.begin();
radio.openWritingPipe(address);
radio.setPALevel(RF24_PA_MIN);
radio.stopListening();
}
void loop() {
dataadc = analogRead(A0);
digitalWrite(trigPin1, LOW); // Added this line
delayMicroseconds(2); // Added this line
digitalWrite(trigPin1, HIGH);
// delayMicroseconds(1000); - Removed this line
delayMicroseconds(10); // Added this line
digitalWrite(trigPin1, LOW);
duration1 = pulseIn(echoPin1, HIGH);
distance1 = (duration1/2) / 29.1;
Serial.print(distance1);
Serial.print (" cm ");
digitalWrite(trigPin2, LOW); // Added this line
delayMicroseconds(2); // Added this line
digitalWrite(trigPin2, HIGH);
// delayMicroseconds(1000); - Removed this line
delayMicroseconds(10); // Added this line
digitalWrite(trigPin2, LOW);
duration2 = pulseIn(echoPin2, HIGH);
distance2 = (duration2/2) / 29.1;
Serial.print(distance2);
Serial.print(" cm ");
Serial.println(dataadc);
delay(200);
if((distance1 < 10)&&(dataadc > 1000)){
mark = 1;
}
if((distance2 < 10)&&(dataadc > 1000)){
mark = 0;
Serial.print(" speed= ");
Serial.println(counter);
/*
if(counter <= 10){
const char text[] = "kec > 13 m/s";
radio.write(&text, sizeof(text));
delay(1000);
}
*/
if((counter > 10)&&(counter <= 30)){
const char text[] = "Ada Penyu";
radio.write(&text, sizeof(text));
delay(1000);
}
/*
if(counter > 30){
const char text[] = "kec < 6 m/s";
radio.write(&text, sizeof(text));
delay(1000);
}
*/
counter = 0;
}
if(mark == 1){
counter++;
}
}
2. Slave
#include <Wire.h> // i2C Conection Library
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <LiquidCrystal_I2C.h> //i2C LCD Library
LiquidCrystal_I2C lcd(0x3F, 16, 2); //library i2c lcd
RF24 radio(9, 10); // CE, CSN
const byte address[6] = "00001";
int buzp = 4;
int buzm = 7;
void setup(){
lcd.begin(); //set lcd i2c
lcd.noCursor(); //biar gak ada cursor di lcd
lcd.clear(); //clear lcd
Serial.begin(9600);
radio.begin();
radio.openReadingPipe(0, address);
radio.setPALevel(RF24_PA_MIN);
radio.startListening();
pinMode(buzp,OUTPUT);
pinMode(buzm,OUTPUT);
digitalWrite(buzp,LOW);
digitalWrite(buzm,LOW);
}
void loop(){
lcd.setCursor(0,0);
lcd.print("TEST ARDUINO");
if (radio.available()) {
char text[32] = "";
radio.read(&text, sizeof(text));
//Serial.println(text);
lcd.setCursor(0,1);
lcd.print(text);
digitalWrite(buzp,HIGH);
digitalWrite(buzm,LOW);
}
}
g. VIDEO HASILNYA
No comments:
Post a Comment