This Is My First Project And I'm Having A Hard Time, Someone Help Me
Có thể bạn quan tâm
/* Định nghĩa các thông số điều khiển tự động */ #define DRY_SOIL 66 #define WET_SOIL 85 #define COLD_TEMP 12 #define HOT_TEMP 22 #define TIME_PUMP_ON 15 #define TIME_LAMP_ON 15
/* Hẹn giờ */ #define READ_BUTTONS_TM 1L // definitions in seconds #define READ_SOIL_TEMP_TM 2L #define READ_SOIL_HUM_TM 10L #define READ_AIR_DATA_TM 2L #define SEND_UP_DATA_TM 10L #define AUTO_CTRL_TM 60L
/* Định nghĩa cảm biế nhiệt độ dô ẩm DHT22*/ #define DHTPIN D3 #define DHTTYPE DHT22 float airHum = 0; float airTemp = 0;
/* Định nghĩa và gán chân cảm biến độ ẩm đất Soil Moister */ #define soilMoisterPin A0 // chân data output của cảm biến #define soilMoisterVcc D8 // điều khiển vcc cấp nguồn cho cảm biến int soilMoister = 0;
/* Định nghĩa và gán chân cảm biến nhiệt độ đất DS18B20 Temperature Sensor */ #define ONE_WIRE_BUS 14 // DS18B20 trên chân NodeMCU D5 tương ứng với GPIO 014 trên Arduino float soilTemp;
/* Định nghĩa và gán chân Relays */ #define PUMP_PIN D6 //bơm (Red LED) #define LAMP_PIN D7 //LAMP (Green LED) boolean pumpStatus = 0; boolean lampStatus = 0;
/* ESP & Blynk */ #define BLYNK_PRINT Serial // Comment this out to disable prints and save space #include <ESP8266WiFi.h> #include <BlynkSimpleEsp8266.h> WidgetLED PUMPs(V0); // tín hiệu đến Tab cảm biến tại Ứng dụng Blynk WidgetLED PUMPa(V5); // tín hiệu đến Tab Bộ truyền động tại Ứng dụng Blynk WidgetLED LAMPs(V1); // tín hiệu đến Tab cảm biến tại Ứng dụng Blynk WidgetLED LAMPa(V6); // tín hiệu đến Tab Bộ truyền động tại Ứng dụng Blynk
char auth[] = “I2lkEwBazFAJOhTS9dMxvEiFqb6FjJI0”; // Blynk project: “IoT Auto Plant Care” char ssid[] = “120/43/10 THD”; char pass[] = “hoil@mgi”;
/* TIMER */ #include <SimpleTimer.h> SimpleTimer timer;
/Khai báo thư viện DHT22/ #include “DHT.h” DHT dht(DHTPIN, DHTTYPE);
/* Khai báo thư viện DS18B20 Temperature Sensor */ #include <OneWire.h> #include <DallasTemperature.h>
OneWire oneWire(ONE_WIRE_BUS); DallasTemperature DS18B20(&oneWire);
void setup() { Serial.begin(115200); delay(10); pinMode(PUMP_PIN, OUTPUT); pinMode(LAMP_PIN, OUTPUT); pinMode(soilMoisterVcc, OUTPUT);
Blynk.begin(auth, ssid, pass, [URL of un-approved server deleted by moderator], 8080); dht. DS18B20.begin();begin();
PUMPs.off(); LAMPs.off(); PUMPa.off(); LAMPa.off(); digitalWrite(PUMP_PIN, HIGH); // Được sử dụng với mô-đun Relay (thường là CAO) digitalWrite(LAMP_PIN, HIGH); // Được sử dụng với mô-đun Relay (thường là CAO) digitalWrite (soilMoisterVcc, LOW);
startTimers(); }
void loop() { timer.run(); //Khởi tạo SimpleTimer Blynk.run(); }
/****************************************************************
- Đọc lệnh từ xa ****************************************************************/ BLYNK_WRITE(3) // điều khiển máy bơm { int i=param.asInt(); if (i==1) { pumpStatus = !pumpStatus; aplyCmd(); } }
BLYNK_WRITE(4) // diều khiền đèn { int i=param.asInt(); if (i==1) { lampStatus = !lampStatus; aplyCmd(); } }
- Receive Commands and act on RELAYs - Logic LOW ****************************************************/ void aplyCmd() { if (pumpStatus == 1) { Blynk.notify(“IoT Auto Plant Care: Warning ==>> Pump ON”); digitalWrite(PUMP_PIN, LOW); // To be used with Relay module (inverted logic: activate with LOW) if (!turnOffOLED) displayData(); PUMPs.on(); PUMPa.on(); } else { digitalWrite(PUMP_PIN, HIGH); // To be used with Relay module (inverted logic: normally HIGH) if (!turnOffOLED) displayData(); PUMPs.off(); PUMPa.off(); } if (lampStatus == 1) { Blynk.notify(“IoT Auto Plant Care: Warning ==>> Lamp ON”); digitalWrite(LAMP_PIN, LOW); // To be used with Relay module (inverted logic: activate with LOW) if (!turnOffOLED) displayData(); LAMPs.on(); LAMPa.on(); } else { digitalWrite(LAMP_PIN, HIGH); // To be used with Relay module (inverted logic: normally HIGH) if (!turnOffOLED) displayData(); LAMPs.off(); LAMPa.off(); } }
/***************************************************
-
Tự động điều khiển đồn điền dựa trên cảm biến đọc ****************************************************/ void autoControlPlantation(void) { if (soilMoister < DRY_SOIL) { turnPumpOn(); }
if (airTemp < COLD_TEMP) { turnLampOn(); } }
/*************************************************** *Bật Bơm trong một khoảng thời gian nhất định ***************************************************/ void turnPumpOn() { pumpStatus = 1; aplyCmd(); delay (TIME_PUMP_ON1000); pumpStatus = 0; aplyCmd(); }
/***************************************************
- Bật đèn trong một khoảng thời gian nhất định ***************************************************/ void turnLampOn() { lampStatus = 1; aplyCmd(); delay (TIME_LAMP_ON1000); lampStatus = 0; aplyCmd(); }
/***************************************************
- Gửi data đến Blynk **************************************************/ void sendUptime() { Blynk.virtualWrite(10, airTemp); //virtual pin V10 Blynk.virtualWrite(11, airHum); // virtual pin V11 Blynk.virtualWrite(12, soilMoister); // virtual pin V12 Blynk.virtualWrite(13, soilTemp); //virtual pin V13 }
/***************************************************
- Bộ hẹn giờ khởi động *********************************************/ void startTimers(void) { timer.setInterval(READ_BUTTONS_TM1000, readLocalCmd); timer.setInterval(READ_SOIL_TEMP_TM1000, getSoilTempData); timer.setInterval(READ_AIR_DATA_TM1000, getDhtData); timer.setInterval(READ_SOIL_HUM_TM1000, getSoilMoisterData); timer.setInterval(SEND_UP_DATA_TM1000, sendUptime); timer.setInterval(AUTO_CTRL_TM1000, autoControlPlantation); //timer.setInterval(DISPLAY_DATA_TM1000, displayData); }
/***************************************************
- Get DHT data **************************************************/ void getDhtData(void) { float tempIni = airTemp; float humIni = airHum; airTemp = dht.readTemperature(); airHum = dht.readHumidity(); if (isnan(airHum) || isnan(airTemp)) // Check if any reads failed and exit early (to try again). { Serial.println(“Failed to read from DHT sensor!”); airTemp = tempIni; airHum = humIni; return; } }
/***************************************************
- Get Soil Moister Sensor data **************************************************/ void getSoilMoisterData(void) { soilMoister = 0; digitalWrite (soilMoisterVcc, HIGH); delay (500); int N = 3; for(int i = 0; i < N; i++) // read sensor “N” times and get the average { soilMoister += analogRead(soilMoisterPin); delay(150); } digitalWrite (soilMoisterVcc, LOW); soilMoister = soilMoister/N; soilMoister = map(soilMoister, 600, 0, 0, 100); //LM393 on 5V (+Vin) }
/***************************************************
- Get SoilTemp sensor data **************************************************/ void getSoilTempData() { DS18B20.requestTemperatures(); soilTemp = DS18B20.getTempCByIndex(0);
int newData = ((soilTemp + 0.05) * 10); //fix soilTemp value to 1 decimal place. soilTemp = (newData / 10.0); }
Untitled1920×1080 141 KB
Untitled21920×1080 190 KB
Từ khóa » Thư Viện Blynksimpleesp8266.h
-
Blynk-library/BlynkSimpleEsp8266.h At Master - GitHub
-
Học IoT Với Blynk → Cài đặt Arduino Và Kết Nối Blynk - Ohtech
-
Hướng Dẫn Cài đặt ESP8266 Và Kết Nối Với Blynk | ARDUINO KIT
-
Include "BlynkSimpleEsp8266.h" - Installation & Troubleshooting
-
Bài 2: Cài đặt Blynk, Arduino Và Board ESP8266 Cho Các Dự án IOT
-
Hướng Dẫn Cài đặt Thư Viện ESP8266 Với Blynk (Cập Nhật 2019)
-
Video Hướng Dẫn Cài đặt Thư Viện ESP8266 Với Blynk (Cập Nhật ...
-
Arduino - Khắc Phục BlynkSimpleEsp8266.h No Such File Or Directory
-
Blynk - Arduino Library List
-
Nhà Thông Minh Sử Dụng NodeMCU ESP8266 Và App Blynk
-
Cài đặt Thư Viện - Lập Trình ESP8266 Arduino
-
ESP8266 - Kết Nối Wifi Và điều Khiển Từ Xa Với Blynk Local Server
-
Điều Khiển Thiết Bị điện Bằng Nodemcu( Esp8266 12E) Và App Blynk