#include <WiFi.h>
#include <ThingSpeak.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);
#define trigerPin 12
#define echoPin 13
#define ledPin 14
#define pitch 262
#define CM_TO_INCH 0.393701
#define buzzerPin 27
long duration;
float distance;
float distanceInch;
const char* ssid = "Wokwi-GUEST";
const char* pass = "";
WiFiClient alfa;
unsigned long ChannelID = 1987430;
const char * WriteAPI = "QKBE0N3OL0W8CCGM";
void setup() {
//SENSOR
Serial.begin(115200);
pinMode(trigerPin, OUTPUT);
pinMode(echoPin, INPUT);
//LCD
lcd.begin(20,4);
lcd.init();
//BUZZER
pinMode(buzzerPin, OUTPUT);
//LED
pinMode(ledPin, OUTPUT);
//WiFi
Serial.println("Scan WiFi...");
int networks = WiFi.scanNetworks();
if(networks == 0){
Serial.println("No WiFi Networks!");
}
else{
Serial.print(networks);
Serial.println(" Networks Found!");
for(int i = 0; i < networks; i++)
Serial.println(WiFi.SSID());
delay(10);
}
//menyambungkan ke wifi
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED){
delay(100);
Serial.println(".");
}
Serial.println("WiFi Connected!");
Serial.println(WiFi.localIP());
//memulai program thingspeak
ThingSpeak.begin(alfa);
}
void loop() {
//looping sensor (membuat sensor wave)
digitalWrite(trigerPin, LOW);
delayMicroseconds(2);
digitalWrite(trigerPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigerPin, LOW);
//membuat durasi
duration = pulseIn(echoPin, HIGH);
//mengkalkulasi jarak
distance = (duration/2) * 0.0343;
// Convert to inches
distanceInch = distance * CM_TO_INCH;
//concider max width of the door = 200 cm
if(distance<100){
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
delay(100);
lcd.backlight();
delay(200);
lcd.setCursor(5,1);
lcd.print("WARNING!");
lcd.setCursor(2,2);
lcd.print("MOTION DETECTED!");
digitalWrite(buzzerPin, HIGH);
tone(buzzerPin,600);
delay(300);
noTone(100);
delay(500);
}
else{
digitalWrite(ledPin, LOW);
lcd.backlight();
lcd.setCursor(5,1);
lcd.print("STAND BY");
lcd.setCursor(1,2);
lcd.print("NO MOTION DETECTED");
}
int y = ThingSpeak.writeField (ChannelID, 1, distance, WriteAPI);
//mengambil data dari thingspeak
if(distance<100){
Serial.println("WARNING!");
Serial.println("distance(cm): " + String(distance));
}
delay(2000);
}