#include <WiFi.h>
#include <ESP32CAM.h>
#include <ESPAsyncWebServer.h>
#define PIR_PIN 13 // GPIO pin connected to PIR sensor
#define LED_PIN 4 // GPIO pin for ESP32-CAM onboard LED
const char* ssid = "YourSSID"; // Replace with your Wi-Fi SSID
const char* password = "YourPassword"; // Replace with your Wi-Fi password
bool motionDetected = false;
void setup() {
pinMode(PIR_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
Serial.begin(115200);
// Connect to Wi-Fi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi!");
// Initialize camera
if (!esp32cam.begin()) {
Serial.println("Failed to initialize camera!");
return;
}
Serial.println("Camera initialized.");
}
void loop() {
if (digitalRead(PIR_PIN) == HIGH) {
if (!motionDetected) {
motionDetected = true;
Serial.println("Motion detected!");
// Turn on LED as an indicator
digitalWrite(LED_PIN, HIGH);
// Capture photo
esp32cam::Photo photo = esp32cam.capture();
if (photo.isValid()) {
Serial.println("Photo captured!");
// Send photo via Wi-Fi (e.g., to a dashboard or email)
sendPhoto(photo);
// Save photo to SD card (optional)
// savePhotoToSD(photo);
} else {
Serial.println("Failed to capture photo.");
}
// Turn off LED
digitalWrite(LED_PIN, LOW);
motionDetected = false;
}
}
delay(500); // Debounce delay
}
void sendPhoto(esp32cam::Photo& photo) {
// Simulate sending photo (add your dashboard API code here)
Serial.println("Sending photo to dashboard...");
}