-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCode
142 lines (117 loc) · 3.57 KB
/
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <DHT.h>
// Define pins for sensors and actuators
#define PIR_PIN D1 // PIR Motion Sensor
#define IR_PIN D2 // IR Sensor
#define DHT_PIN D3 // DHT11 Sensor
#define LDR_PIN A0 // LDR Sensor (Analog pin)
#define LED_PIR D5 // LED controlled by PIR
#define LED_IR D6 // LED controlled by IR
#define LED_LDR D7 // LED controlled by LDR
#define FAN_PIN D8 // Fan controlled by temperature/humidity
// DHT11 settings
#define DHT_TYPE DHT11
DHT dht(DHT_PIN, DHT_TYPE);
// Temperature and humidity threshold
float tempThreshold = 30.0; // Celsius
float humThreshold = 70.0; // Percentage
// Blynk auth token
char auth[] = "YourAuthToken"; // Replace with your Blynk auth token
// WiFi credentials
char ssid[] = "YourNetworkName"; // Replace with your WiFi SSID
char pass[] = "YourPassword"; // Replace with your WiFi password
BlynkTimer timer;
bool manualMode = false;
bool manualPIRLEDState = false;
bool manualIRLEDState = false;
bool manualLDRLEDState = false;
void setup() {
// Initialize serial communication
Serial.begin(115200);
// Initialize the DHT sensor
dht.begin();
// Initialize pins
pinMode(PIR_PIN, INPUT);
pinMode(IR_PIN, INPUT);
pinMode(LDR_PIN, INPUT);
pinMode(LED_PIR, OUTPUT);
pinMode(LED_IR, OUTPUT);
pinMode(LED_LDR, OUTPUT);
pinMode(FAN_PIN, OUTPUT);
// Ensure all LEDs and fan are off at the start
digitalWrite(LED_PIR, LOW);
digitalWrite(LED_IR, LOW);
digitalWrite(LED_LDR, LOW);
digitalWrite(FAN_PIN, LOW);
// Initialize Blynk
Blynk.begin(auth, ssid, pass);
// Setup a timer to run every 2 seconds
timer.setInterval(2000L, sendSensorData);
}
void loop() {
Blynk.run();
timer.run();
if (!manualMode) {
// Automatic mode: Read sensor values and control devices
bool pirState = digitalRead(PIR_PIN);
bool irState = digitalRead(IR_PIN);
int ldrValue = analogRead(LDR_PIN);
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// Control LED with PIR sensor
if (pirState) {
digitalWrite(LED_PIR, HIGH);
} else {
digitalWrite(LED_PIR, LOW);
}
// Control LED with IR sensor
if (irState) {
digitalWrite(LED_IR, HIGH);
} else {
digitalWrite(LED_IR, LOW);
}
// Control LED with LDR sensor
if (ldrValue < 500) { // Adjust the threshold value as needed
digitalWrite(LED_LDR, HIGH);
} else {
digitalWrite(LED_LDR, LOW);
}
// Control fan with temperature and humidity
if (temperature > tempThreshold || humidity > humThreshold) {
digitalWrite(FAN_PIN, HIGH);
} else {
digitalWrite(FAN_PIN, LOW);
}
} else {
// Manual mode: Control LEDs based on Blynk app input
digitalWrite(LED_PIR, manualPIRLEDState ? HIGH : LOW);
digitalWrite(LED_IR, manualIRLEDState ? HIGH : LOW);
digitalWrite(LED_LDR, manualLDRLEDState ? HIGH : LOW);
}
}
void sendSensorData() {
// Read sensor values
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
int ldrValue = analogRead(LDR_PIN);
// Send sensor values to Blynk app
Blynk.virtualWrite(V5, temperature);
Blynk.virtualWrite(V6, humidity);
}
BLYNK_WRITE(V0) {
// Mode control (manual or automatic)
manualMode = param.asInt();
}
BLYNK_WRITE(V1) {
// Manual control of PIR LED
manualPIRLEDState = param.asInt();
}
BLYNK_WRITE(V2) {
// Manual control of IR LED
manualIRLEDState = param.asInt();
}
BLYNK_WRITE(V3) {
// Manual control of LDR LED
manualLDRLEDState = param.asInt();
}