• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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, то показания с датчика идут. Как только начинаю вносить в уже готовый скетч, ошибка зи ошибкой... :(

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