#include <WiFi.h>
#include <WiFiClient.h>
// --- WiFi Configuration ---
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASSWORD ""
#define WIFI_CHANNEL 6
WiFiClient espClient;
const int ldrPin = 34;
const int tempPin = 35;
const int pirPin = 21;
const int trigPin = 5;
const int echoPin = 18;
const int numSamples = 10;
int ldrSamples[numSamples];
int tempSamples[numSamples];
int ldrIndex = 0;
int tempIndex = 0;
void ConnectWiFi() {
WiFi.begin(WIFI_SSID, WIFI_PASSWORD, WIFI_CHANNEL);
Serial.print("Connecting to WiFi ");
Serial.print(WIFI_SSID);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("WiFi Connected!");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
}
void setup() {
Serial.begin(115200);
pinMode(pirPin, INPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
ConnectWiFi(); // Connect to WiFi on startup
}
int movingAverage(int* buffer, int newVal, int& index) {
buffer[index] = newVal;
index = (index + 1) % numSamples;
long sum = 0;
for (int i = 0; i < numSamples; i++) {
sum += buffer[i];
}
return sum / numSamples;
}
long readDistanceCM() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
return duration / 58;
}
void loop() {
int rawLDR = analogRead(ldrPin);
int rawTemp = analogRead(tempPin);
float tempC = rawTemp * (3.3 / 4095.0) * 100;
int filteredLDR = movingAverage(ldrSamples, rawLDR, ldrIndex);
int filteredTemp = movingAverage(tempSamples, rawTemp, tempIndex);
int motion = digitalRead(pirPin);
long distance = readDistanceCM();
Serial.print("LDR_RAW:"); Serial.print(rawLDR);
Serial.print(",LDR_FILTERED:"); Serial.print(filteredLDR);
Serial.print(",TEMP_RAW:"); Serial.print(tempC, 1);
Serial.print(",TEMP_FILTERED:"); Serial.print((filteredTemp * 3.3 / 4095.0) * 100, 1);
Serial.print(",MOTION:"); Serial.print(motion);
Serial.print(",DISTANCE_CM:"); Serial.println(distance);
delay(500);
}