• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Как в скетче поменять DHT11 на DHT22

DEN69X

New member
Добрый день. Есть скетч, как в нем поменять датчик 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
}
 

CodeNameHawk

Moderator
Команда форума
Найти библиотеку, которая поддерживает DHT22 и заменить на нее.
Возможно придется подправить скетч.
 

DEN69X

New member
Вот эту библиотеку используйте. markruys/arduino-DHT она автоматически все сделает.





Ошибка:
Код:
sketch_rozetki:12:1: error: 'dht11' does not name a type

C:\Users\СергейП\Desktop\Мой проект №1\sketch_rozetki\sketch_rozetki.ino: In function 'void sendUptime()':

sketch_rozetki:185:29: error: expected primary-expression before '.' token

sketch_rozetki:186:29: error: expected primary-expression before '.' token

C:\Users\СергейП\Desktop\Мой проект №1\sketch_rozetki\sketch_rozetki.ino: In function 'void loop()':

sketch_rozetki:217:17: error: expected primary-expression before '.' token

exit status 1
'dht11' does not name a type
 

DEN69X

New member
Так вы пример сначала попробуйте, а затем допишите в свой скетч по образцу.
Вы не поможете мне в скетч внести изменения? Ничего не получается, ошибок все больше и больше.

Если загружаю скетч только на dht22, то показания с датчика идут. Как только начинаю вносить в уже готовый скетч, ошибка зи ошибкой... :(

Очень нужно, помогите.
 
Сверху Снизу