#define BLYNK_PRINT Serial
#define BLYNK_TEMPLATE_ID "TMPL6jBZ-qpnI"
#define BLYNK_TEMPLATE_NAME "BlynkCA 01"
#define BLYNK_AUTH_TOKEN "cBljKlW9nuQhsMSBcFb-g5clwC4NEE-C"
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <Adafruit_NeoPixel.h>
#include <DHT.h>
char auth[] = "cBljKlW9nuQhsMSBcFb-g5clwC4NEE-C";
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
// Pin definitions
#define TRIG_PIN 12
#define ECHO_PIN 14
#define DHT_PIN 4
#define RED_LED_PIN 27
#define NEOPIXEL_PIN 5
// Sensor and LED configurations
#define DHTTYPE DHT22
DHT dht(DHT_PIN, DHTTYPE);
Adafruit_NeoPixel pixels(16, NEOPIXEL_PIN, NEO_GRB + NEO_KHZ800);
BlynkTimer timer;
void setup()
{
Serial.begin(115200);
// Blynk setup
Blynk.begin(auth, ssid, pass);
// Sensor setup
dht.begin();
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(RED_LED_PIN, OUTPUT);
pixels.begin();
pixels.show();
// Start wifi - 2 parameters (ssid & password)
WiFi.begin(ssid, pass);
Serial.println("Connecting to WiFi");
// Connection status
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
// Connection Info
Serial.println("");
Serial.println("WiFi connected!");
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
// Timers
timer.setInterval(2000L, sendSensorData);
}
void loop()
{
Blynk.run();
timer.run();
}
void sendSensorData()
{
// Ultrasonic sensor
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long duration = pulseIn(ECHO_PIN, HIGH);
float distance = (duration / 2) * 0.0343;
// DHT22 sensor
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
// Send data to Blynk
Blynk.virtualWrite(V2, distance); // Assuming V1 is for distance
Blynk.virtualWrite(V3, temperature); // Assuming V2 is for temperature
Blynk.virtualWrite(V4, humidity); // Assuming V3 is for humidity
}
BLYNK_WRITE(V0) // Assuming V4 is for Red LED control
{
int pinValue = param.asInt();
digitalWrite(RED_LED_PIN, pinValue);
}
BLYNK_WRITE(V1) // Assuming V5 is for Neopixel control
{
for(int i=0; i<=17; i++){
pixels.setPixelColor(i, pixels.Color(0, 70, 0));
pixels.show();
delay(2000);
pixels.clear();
delay(1000);
}
}