#include <WiFi.h>
#include <HTTPClient.h>
#include <LiquidCrystal_I2C.h>
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* LINE_TOKEN = "SnLUULkG1PxvNpR6rSLJoqUY3aIFlT9x2TRfeNLU29Z";
#define BUZZER_PIN 17
#define BUZZER_CHANNEL 0
#define pirpin 5
int val =0;
bool motionState = false;
int trigPin = 18;
int echoPin = 19;
int LedPinR = 8;
int LedPinG = 5;
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup()
{
pinMode(LedPinR, OUTPUT);
pinMode(LedPinG, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(17, OUTPUT);
pinMode(12, OUTPUT);
pinMode(27, OUTPUT);
pinMode(5, OUTPUT);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.println("Connecting to WiFi...");
}
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
ledcSetup(BUZZER_CHANNEL, 500, 8);
ledcAttachPin(BUZZER_PIN, BUZZER_CHANNEL);
lcd.init();
lcd.backlight();
Serial.begin(9600);
Serial.print("Distance from the object :\n");
}
void loop()
{
int distance;
int duration;
val = digitalRead(5);
if (val == HIGH && motionState == LOW)
{
Serial.println("Motion Sensor Detected!");
digitalWrite(27, HIGH);
digitalWrite(12, LOW);
sendNotification("Room number... need help");
motionState = HIGH;
ledcWriteTone(BUZZER_CHANNEL,900);
delay(100);
ledcWriteTone(BUZZER_CHANNEL,300);
delay(100);
}
else if (val == LOW && motionState == HIGH)
{
Serial.println("Motion Ended!");
digitalWrite(27, LOW);
digitalWrite(12, HIGH);
ledcWriteTone(BUZZER_CHANNEL,0);
motionState = LOW;
}
delay(100);
digitalWrite(trigPin, LOW);
delayMicroseconds(10);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration=pulseIn(echoPin,HIGH);
distance = duration * 0.0344/2;
Serial.print("DISTANCE : ");
Serial.println(distance);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("ROOM NUMBER...");
lcd.setCursor(0,1);
lcd.print(distance);
}
void sendNotification(String message)
{
if (WiFi.status() == WL_CONNECTED)
{
HTTPClient https;
String url = "https://notify-api.line.me/api/notify";
https.begin(url);
https.addHeader("Authorization", "Bearer " + String(LINE_TOKEN));
https.addHeader("Content-Type", "application/x-www-form-urlencoded");
int httpCode = https.POST("message=" + message);
if (httpCode == HTTP_CODE_OK)
{
Serial.println("Notification sent!");
} else
{
Serial.println("Error sending notification: " + String(httpCode));
}
https.end();
}
}