#include <DHTesp.h>
#include <WiFi.h>
#include <ThingSpeak.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define BUZZER_PIN_1 5
#define BUZZER_PIN_2 2
DHTesp dhtSensor;
TempAndHumidity data;
const int dhtpin = 15;
const int pirPin = 34; // PIR sensörünün bağlı olduğu pin (D34 olarak varsayılan)
const int i2c_address = 0x27;
LiquidCrystal_I2C lcd(i2c_address, 16, 2);
const int echo = 4;
const int trig = 2;
float distance;
float duration;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
WiFiClient client;
unsigned long myChannelNumber = 2386159;
const char *myWriteAPIKey = "X6IIH3UKEMSDU82Y";
int statusCode;
void setup() {
Serial.begin(115200);
pinMode(34, INPUT);
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
pinMode(BUZZER_PIN_1, OUTPUT);
pinMode(BUZZER_PIN_2, OUTPUT);
dhtSensor.setup(dhtpin, DHTesp::DHT22);
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client);
delay(1000);
Wire.begin(21, 22);
lcd.begin(16, 2);
lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Ultrasonic Sensor");
lcd.setCursor(0, 1);
lcd.print("Mesafeyi bekleyin...");
getwifi();
}
float getdistance() {
digitalWrite(trig, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
duration = pulseIn(echo, HIGH);
return duration * 0.034 / 2;
}
void getwifi() {
if (WiFi.status() != WL_CONNECTED) {
Serial.print("Bağlanmaya çalışılıyor");
while (WiFi.status() != WL_CONNECTED) {
WiFi.begin(ssid, pass);
Serial.print(".");
delay(5000);
}
Serial.println("\nBağlandı");
}
}
void loop() {
int pirValue = digitalRead(34);
// Hareket algılandığında
if (pirValue == HIGH) {
Serial.println("Hareket Algılandı!");
} else {
Serial.println("Hareket AlgılanMADI!");
}
delay(1000); // Hareketi sürekli olarak kontrol etmemek için kısa bir bekleme ekleyebilirsiniz
distance = getdistance();
Serial.println("Mesafe:" + String(distance));
Serial.println("<-------------------->");
lcd.clear();
lcd.setCursor(0, 0);
if (distance < 50) {
tone(BUZZER_PIN_1, 1000);
delay(2000);
noTone(BUZZER_PIN_1);
lcd.print("Yaklasmayiniz!");
Serial.println("Yaklasmayiniz");
delay(1000);
tone(BUZZER_PIN_2, 1000);
delay(2000);
noTone(BUZZER_PIN_2);
} else {
lcd.print("Mesafe: " + String(distance) + " cm");
Serial.println("Mesafe: " + String(distance) + " cm");
}
ThingSpeak.setField(1, distance);
statusCode = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
if (statusCode == 200) {
Serial.println("Kanal güncelleme başarılı");
} else {
Serial.println("Veri yazma sorunu: HTTP hata kodu:" + String(statusCode));
}
delay(1000);
}