Добрый день. Есть скетч, как в нем поменять датчик DHT11 на DHT22, что добавить, что удалить?
Помогите! Спасибо.
Помогите! Спасибо.
Код:
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SimpleTimer.h>
#include <OneWire.h>
#include <SPI.h>
#include <Ethernet.h>
//#include <BlynkSimpleEthernet.h>
#include <DallasTemperature.h>
#include <WidgetRTC.h>
#include <dht11.h>
dht11 DHT;
// определение входов/выходов на плате ESP8266 (ESP-12F/E)
#define DHT11_PIN 12 // gpio12 датчик темп. DHT-11
#define ONE_WIRE_BUS 13 // gpio13 датчик температуры DS2B18 или куча датчиков
#define Light_PIN 4 // gpio4 рэле на включение света
#define Electro_PIN 15 // gpio15 рэле на выключение розетки
#define PIR_PIN 5 // gpio5 // определение пина на выход датчика движения HC-SR501
#define BLYNK_MAX_SENDBYTES 600 // увеличить размер сообщений (по умолчанию 128)
// цвета виджетов на смартфоне
// здесь все просто – каждые 2 цифры в 16-тиричном коде соответствуют R,G и B
// кодировки цвета, я в CorelDraw окрасил прямоугольник в нужный цвет
// записал значения R,G и B, перевел в 16-тиричный код
#define BLYNK_GREEN "#23C48E"
#define BLYNK_BLUE "#04C0F8"
#define BLYNK_YELLOW "#ED9D00"
#define BLYNK_RED "#D3435C"
#define BLYNK_DARK_BLUE "#5F7CD8"
#define BLYNK_WHITE "#FFFFFF"
#define BLYNK_CYAN "#99F7F1"
#define BLYNK_YELLOW_L "#E7F799"
#define BLYNK_ROSE "#F7B599"
#define BLYNK_FIOLET "#F799F2"
#define BLYNK_GREEN_L "#99F7B4"
OneWire oneWire(ONE_WIRE_BUS); // привязка OneWare-коммуникации к пину на плате
DallasTemperature sensors(&oneWire); // привязка датчиков DS2B18 к шине OneWare
// персональные данные
char auth[] = "------------------------"; //код авторизации в Blynk
char ssid[] = " "; //название вашей сети Wi-Fi
char pass[] = " "; //пароль вашего Wi-Fi
SimpleTimer timer;
WidgetRTC rtc; // инициализируем виджет часов реального времени
// все переменные по свету, сигнализации и датчика движения HC-SR501
bool flagAlarm = false; // произошло проникновение (сигнал с датчика)
bool flagSetAlarm = false; // постановка на сигнализацию (сигнал с выджета "кнопка" на смартфоне)
bool flagAlarmPrevious = false; // состояние по фронтам сигнала от датчика движения
bool flagLightOn = false; // свет в корридоре постоянно включить (сигнал с выджета "кнопка" на смартфоне)
bool isFirstConnect = true;
bool LIG = false;
int lightLev;
BLYNK_CONNECTED()// Если установили связь первый раз, то синхонезируем все виджеты
{
rtc.begin();
if (isFirstConnect) {
Blynk.syncAll(); // синхонезируем все виджеты
if (year() != 1970) {
// Составляем строки с временем и датой и добовляем их к сообщению
String currentTime = String(hour()) + ":" + minute() + ":" + second();
String currentDate = String(day()) + "/" + month() + "/" + year() + " ";
String Notif_first = "Оборудование Запущено " + currentDate + " " + currentTime;
Blynk.notify(Notif_first);
isFirstConnect = false;
}
}
}
void setup()
{
Serial.begin(9600); // See the connection status in Serial Monitor
Blynk.begin(auth, ssid, pass);
sensors.begin();
pinMode(Light_PIN,OUTPUT);
pinMode(Electro_PIN,OUTPUT);
pinMode(PIR_PIN,INPUT);
setSyncInterval(10*60);
timer.setInterval(5000L, sendUptime); // задаем 5 сек.
}
BLYNK_WRITE(V0) // Считываем состояние кнопки "Alarm_On"
{
if (param.asInt() == 1)
{
flagSetAlarm =true;
Blynk.setProperty(V0,"onLabel","Объект на охране");
Blynk.setProperty(V0,"color",BLYNK_RED);
}
else
{
flagSetAlarm =false;
Blynk.setProperty(V0,"offLabel","Снят с охраны");
Blynk.setProperty(V0,"color",BLYNK_GREEN);
Blynk.setProperty(V0,"label","Охрана Объекта");
}
} //BLYNK_WRITE(V0)
BLYNK_WRITE(V1) // Считываем состояние кнопки "включить свет"
{
if (param.asInt() == 1)
{
flagLightOn =true;
Blynk.setProperty(V1,"onLabel","Свет горит");
Blynk.setProperty(V1,"color",BLYNK_YELLOW_L);
}
else
{
flagLightOn =false;
Blynk.setProperty(V1,"offLabel","Свет - auto mode");
Blynk.setProperty(V1,"color",BLYNK_WHITE);
}
} // BLYNK_WRITE(V1)
BLYNK_WRITE(V2) // Считываем состояние кнопки "выключить розетку"
{
if (param.asInt() == 1)
{
digitalWrite(Electro_PIN,HIGH); // выключаем розетку, поскольку контакты рэле Н.З.
Blynk.setProperty(V2,"onLabel","Розетка отключена");
Blynk.setProperty(V2,"color",BLYNK_RED);
}
else
{
digitalWrite(Electro_PIN,LOW);
Blynk.setProperty(V2,"offLabel","Розетка включена");
Blynk.setProperty(V2,"color",BLYNK_BLUE);
}
} // BLYNK_WRITE(V2)
BLYNK_WRITE(V3) // Считываем пороговую уставку уровня освещенности по которой включаем свет (при срабатывании датчика движения)
{
lightLev = param.asInt();
} // BLYNK_WRITE(V3)
void readPIRSensor() // функция для считывания показаний датчика движения
{
if (digitalRead(PIR_PIN) == HIGH)
{
flagAlarm = true;
}
else
{
flagAlarm = false;
}
if ((flagAlarm) && (!flagAlarmPrevious))
{
flagAlarmPrevious = true;
LIG = true;
if (lightLev < analogRead(A0))
{
LIG = false;
}
if(flagSetAlarm)
{
// Составляем строки с временем и датой и добовляем их к сообщению
String currentTime = String(hour()) + ":" + minute() + ":" + second();
String currentDate = String(day()) + "/" + month() + "/" + year() + " ";
String Notif = currentDate + " " + currentTime + " - проникновение";
Blynk.notify(Notif);
//String curMes = "Проникновение - " + currentTime;
Blynk.setProperty(V0,"label",Notif);
}
}
if ((!flagAlarm) && (flagAlarmPrevious))
{
flagAlarmPrevious = false;
LIG = false;
delay(200); //на всякий случай - время для восстановления параметров датчика освещенности после выключения света, на случай датчик движения выкл. и бысто вкл.
}
} // readPIRSensor
// программа обработки иннформации от датчиков температуры
// по заданному интервалу времени, у нас раз в 5 сек., см. строку 82 (поскольку датчик температуры DHT11 - тормознутый)
void sendUptime()
{
//параметры отсылаем в Blynk
Blynk.virtualWrite(10, DHT.temperature - 2); //virtual pin 10 - температура в корридоре
Blynk.virtualWrite(11, DHT.humidity); // virtual pin 11 - влажность в корридоре
Blynk.virtualWrite(12,analogRead(A0)); // virtual pin 12 освещенность в корридоре
sensors.requestTemperatures(); // запрос от сенсоров ds2b18
float tempAir = sensors.getTempCByIndex(0); // получение информ. от сенсора 1
Blynk.virtualWrite(13, tempAir); // virtual pin 13 - температура на улице
//float tempAir1 = sensors.getTempCByIndex(1); //получение информ. от сенсора 2
//Blynk.virtualWrite(14, tempAir1); // virtual pin 14 - температура в комнате
}
void loop()
{
Blynk.run(); // Initiates Blynk
timer.run(); // Initiates SimpleTimer
readPIRSensor();
if (flagLightOn)
{
digitalWrite(Light_PIN,HIGH);//если мы из Blynk нажали клавишу вкл. свет - вкл. свет в безакцептном порядке
}
else
{
if (LIG)
{
digitalWrite(Light_PIN,HIGH); // включаем свет если сработал датчик движения и уровень освещенности меньше установленного в Blynk
}
else
{
digitalWrite(Light_PIN,LOW); // выключаем свет
}
}
int chk = DHT.read(DHT11_PIN); // чтение с сенсора DHT11
}