• Обратная связь
  • Карта сайта
  • Отзыв
  • Комментарии
  • Форум
discord
Технические заметки
  • Главная
  • Лекции
  • Практикум
  • Обзоры
  • Сравнение
  • Нормы
  • События
  • Вход
ГлавнаяArduinoУмный домМониторингMaxSite CMS
Настраиваемое облако меток для MaxSite CMS.
Зачем моноблочная насосная станция?

Сравнение показаний двух датчиков DHT11 в динамике.

16 февраля 2019 г.Просмотров: 3719Комментарии: 0
ArduinoУмный домМониторингMaxSite CMSArduinoMaxSiteАвтоматикаИнтернет ВещейМониторингПлагин

У нас есть скетч, отправляющий показания датчиков на сайт. Есть сайт на MaxSite CMS с плагином, умеющим собирать состояния датчиков и отображать на графике.

Мы можем визуально сравнить: как отличаются показания влажности и температуры двух разных датчиков DHT11, размещенных в одном месте.

В конструкцию из плат, которую детально рассматривали в статье Мониторинг по интернет загазованности помещения с Arduino UNO R3 и ESP8266 ESP-12E, добавим еще один датчик DHT11.

Благодаря реализации в плагине My_ESP8266 для MaxSiteCMS возможности выводить на одной странице графики всех значений датчиков одного устройства, мы можем наблюдать такую картину.

График, генерируемый при помощи библиотеки chartjs.org позволяет фильтровать отображаемую информацию, отключая не нужные отображения.

Сравним значения температуры.

Все это время температура в помещении не превышала 22 градуса. Датчик, который значительно завышает значения, находится на плате и, возможно, получает тепло от нагретых плат.

Так и оказалось. Когда пирог из плат поставил на ребро, показания выровнялись и стали превышать реальные ровно на 2 градуса.

Сравним теперь показания датчиков влажности.

Мы видим примерно одинаковую дельту, что означает возможность юстировки. Вероятно, что реальные значения влажности в помещении находятся между этими графиками.

В конце графика видно, что когда мы перевернули платы на ребро, показания тоже стали ближе друг к другу.

Бытовые устройства измерения влажности, которые у меня имеются, тоже не вызывают доверия, хотя показывают одно и тоже.

Пики на графике означают время работы увлажнителя воздуха Ballu UHB-205.

Показания загазованности для нас неинтересны.

В случае с датчиками загазованности следует рассматривать пороговое значение: газ есть / газа нет и отсылать письмо при наличии газа. Но этого функционала плагин не имеет. Пока.

Диапазон измерений датчика MQ-5:
Пропан: 200–10000 ppm;
Изобутан: 200–10000 ppm;
Природный газ: 200–10000 ppm.

Из чего следует что значение загазованности ниже измеряемого диапазона.

Скетч отправки показаний двух датчиков DHT11 на сервер.

#include "WiFiEsp.h"    // Библиотека для работы с платой
#include <dht11.h>      // Добавляем библиотеку DHT11
dht11 DHT;              // Объявление переменной класса dht11
#define DHT11_PIN 4     // Датчик DHT11 подключен к цифровому пину номер 4
#define DHT112_PIN 7     // Датчик DHT11 подключен к цифровому пину номер 7
const int analogSignal = A3; //подключение аналогового сигналоьного пина
const int digitalSignal = 8; //подключение цифрового сигнального пина
boolean noGas; //переменная для хранения значения о присутствии газа
int gas = 0; //переменная для хранения количества газа
float hum = 0; //переменная для хранения влажности
float temp = 0; //переменная для хранения температуры
float hum1 = 0; //переменная для хранения влажности
float temp1 = 0; //переменная для хранения температуры
char mac[18] = { 0 };
int chk; //переменная для хранения ошибки DHT
const char ssid[] = "Keenetic-0138";   // your network SSID (name)
const char pass[] = "********";        // your network password
int status = WL_IDLE_STATUS;     // the Wifi radio's status
String jsonString; // данные
String PostHeader; // данные
const char server[] = "esp8266.my-site.ru";
unsigned long lastConnectionTime = 0;   
unsigned long lastInfoTime = 0;
const unsigned long postingInterval = 1200000; // 20 минут 
const unsigned long infoInterval = 60000;      // 1 минута
// Инициализация объекта wi-fi клиент
WiFiEspClient client;
void setup()
{
  pinMode(10, OUTPUT);  
  pinMode(11, OUTPUT); 
  Serial.begin(9600);
  WiFi.init(&Serial);
     
  if (WiFi.status() == WL_NO_SHIELD) {
    while (true);
  }
  while ( status != WL_CONNECTED) {
    status = WiFi.begin(ssid, pass);
  }
  uint8_t macH[6];
  WiFi.macAddress(macH);
  sprintf(mac, "XXXXXX", macH[0], macH[1], macH[2], macH[3], macH[4], macH[5]);
  //httpRequest();
}
void loop()
{
 if (lastConnectionTime == 0 ) { httpRequest(); } 
 if (millis() - lastConnectionTime > postingInterval) { httpRequest(); }
 if (millis() - lastInfoTime > infoInterval) 
 {
    digitalWrite(10, HIGH);   // включает светодиод
    delay(3000);                  // ждет 3 секунды
    digitalWrite(10, LOW);    // выключает светодиод
    lastInfoTime = millis();
 }
}
void httpRequest()
{
    noGas = digitalRead(digitalSignal); //считываем значение о присутствии газа
    gas = analogRead(analogSignal);     // и о его количестве
    chk = DHT.read(DHT11_PIN); 
    hum = DHT.humidity;
    temp = DHT.temperature;
    
    chk = DHT.read(DHT112_PIN);    
    hum1 = DHT.humidity;
    temp1 = DHT.temperature;    
    
if (client.connect(server, 80)) {
  digitalWrite(11, HIGH);
  jsonString = "secret=0000&name=ESP_8266WiFi&temp=" + String(temp) + "&hum=" + String(hum) + "&temp1=" + String(temp1) + "&hum1=" + String(hum1) + "&gas=" + String(gas) + "&mac=" + String(mac)+ "&ram=" + String(freeRam()) + "&rssi=" + String(WiFi.RSSI());
  PostHeader = "POST /ajax/cGx1Z2lucy9te****************heC5waHA= HTTP/1.1\r\n"; 
  PostHeader += "Host: esp8266.my-site.ru:80\r\n";
  PostHeader += "User-Agent: ESP8266WiFi\r\n"; 
  PostHeader += "Accept: application/xml\r\n";
  PostHeader += "Content-Type: application/x-www-form-urlencoded\r\n"; 
  PostHeader += "X-Requested-With: XMLHttpRequest\r\n";  
  PostHeader += "Referer: http://esp8266.my-site.ru\r\n";
  PostHeader += "Connection: close\r\n";
  PostHeader += "Content-Length: " + String(jsonString.length()) + "\r\n";
  
  jsonString += "\r\n\r\n\r\n";
  client.println(PostHeader);
  client.println(jsonString);
 }
  while (client.available()) {
    char c = client.read();
  }
   if (!client.connected()) {
    client.stop();
    digitalWrite(11, LOW);
   }  
   lastConnectionTime = millis();
}
int freeRam () {
 extern int __heap_start, *__brkval;  int v;  return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval); }

P.S.

Практика показала что этот скетч рано или поздно приводит к прекращению подачи сигналов платой.

Это очевидно - подключение к wi-fi мы проводим только при setup.

Естественно, подключение к роутеру не может существовать вечно.

Поэтому добавим проверку подключения в каждый вызов функции передачи данных на сайт.

Ну и светодиодами будем моргать в зависимости от состояния платы.

+ Показать скетч

#include "WiFiEsp.h"    // Библиотека для работы с платой
#include <dht11.h>      // Добавляем библиотеку DHT11
dht11 DHT;              // Объявление переменной класса dht11
#define DHT11_PIN 4     // Датчик DHT11 подключен к цифровому пину номер 4
#define DHT112_PIN 7     // Датчик DHT11 подключен к цифровому пину номер 7
const int analogSignal = A3; //подключение аналогового сигналоьного пина
const int digitalSignal = 8; //подключение цифрового сигнального пина
boolean noGas; //переменная для хранения значения о присутствии газа
int gas = 0; //переменная для хранения количества газа
float hum = 0; //переменная для хранения влажности
float temp = 0; //переменная для хранения температуры
float hum1 = 0; //переменная для хранения влажности
float temp1 = 0; //переменная для хранения температуры
char mac[18] = { 0 };
int chk; //переменная для хранения ошибки DHT
const char ssid[] = "Keenetic-0138";   // your network SSID (name)
const char pass[] = "*******";        // your network password
int status = WL_IDLE_STATUS;     // the Wifi radio's status
String jsonString; // данные
String PostHeader; // данные
const char server[] = "esp8266.my-site.ru";
unsigned long lastConnectionTime = 0;   
unsigned long lastInfoTime = 0;
const unsigned long postingInterval = 1200000; // 20 минут 
const unsigned long infoInterval = 60000;      // 1 минута
// Инициализация объекта wi-fi клиент
WiFiEspClient client;
void setup()
{
  pinMode(9, OUTPUT);  
  pinMode(10, OUTPUT);  
  pinMode(11, OUTPUT); 
  pinMode(12, OUTPUT); // ERROR  
  Serial.begin(9600);
  WiFi.init(&Serial);
     
  if (WiFi.status() == WL_NO_SHIELD) {
    while (true);
  }
  
  while ( status != WL_CONNECTED) {
    digitalWrite(9, HIGH);    
    status = WiFi.begin(ssid, pass);
  }
  digitalWrite(9, LOW); 
  
  uint8_t macH[6];
  WiFi.macAddress(macH);
  sprintf(mac, "XXXXXX", macH[0], macH[1], macH[2], macH[3], macH[4], macH[5]);
  //httpRequest();
}
void loop()
{
 if (lastConnectionTime == 0 ) { httpRequest(); } 
 if (millis() - lastConnectionTime > postingInterval) { httpRequest(); }
 if (millis() - lastInfoTime > infoInterval) 
 {
    digitalWrite(10, HIGH);   // включает светодиод
    delay(3000);                  // ждет 3 секунды
    digitalWrite(10, LOW);    // выключает светодиод
    lastInfoTime = millis();
 }
}
void httpRequest()
{
  client.stop();
  
  while ( status != WL_CONNECTED) {
    digitalWrite(9, HIGH);    
    status = WiFi.begin(ssid, pass);
  }
  digitalWrite(9, LOW);
  
    noGas = digitalRead(digitalSignal); //считываем значение о присутствии газа
    gas = analogRead(analogSignal);     // и о его количестве
    chk = DHT.read(DHT11_PIN); 
    hum = DHT.humidity;
    temp = DHT.temperature;
    
    chk = DHT.read(DHT112_PIN);    
    hum1 = DHT.humidity;
    temp1 = DHT.temperature;    
    
if (client.connect(server, 80)) {
  digitalWrite(12, LOW);
  digitalWrite(11, HIGH);
  jsonString = "secret=0000&name=ESP_8266WiFi&temp=" + String(temp) + "&hum=" + String(hum) + "&temp1=" + String(temp1) + "&hum1=" + String(hum1) + "&gas=" + String(gas) + "&mac=" + String(mac)+ "&ram=" + String(freeRam()) + "&rssi=" + String(WiFi.RSSI());
  PostHeader = "POST /ajax/cGx1Z2lucy9te******************eC5waHA= HTTP/1.1\r\n"; 
  PostHeader += "Host: esp8266.my-site.ru:80\r\n";
  PostHeader += "User-Agent: ESP8266WiFi\r\n"; 
  PostHeader += "Accept: application/xml\r\n";
  PostHeader += "Content-Type: application/x-www-form-urlencoded\r\n"; 
  PostHeader += "X-Requested-With: XMLHttpRequest\r\n";  
  PostHeader += "Referer: http://esp8266.my-site.ru\r\n";
  PostHeader += "Connection: close\r\n";
  PostHeader += "Content-Length: " + String(jsonString.length()) + "\r\n";
  
  jsonString += "\r\n\r\n\r\n";
  client.println(PostHeader);
  client.println(jsonString);
 }
 else digitalWrite(12, HIGH); 
 while (client.available()) {
    char c = client.read();
  }
   if (!client.connected()) {
    client.stop();
    digitalWrite(11, LOW);
   }  
   lastConnectionTime = millis();
}
int freeRam () {
 extern int __heap_start, *__brkval;  int v;  return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval); }

Еще записи по теме

Сервер  теплого пола на MaxSite CMS - задумка.
Сервер теплого пола на MaxSite CMS - задумка.
Плагин My_ESP8266 для MaxSiteCMS.
Плагин My_ESP8266 для MaxSiteCMS.
Версия 02 плагина My_ESP8266 для MaxSiteCMS.
Версия 02 плагина My_ESP8266 для MaxSiteCMS.
Отправка данных из ESP8266WiFi на сервер с CMS MaxSite
Отправка данных из ESP8266WiFi на сервер с CMS MaxSite
Отправляем состояния теплых полов из Arduino UNO ESP8266 WiFi на сервер ThingSpeak
Отправляем состояния теплых полов из Arduino UNO ESP8266 WiFi на сервер ThingSpeak
Мониторинг по интернет загазованности помещения с Arduino UNO и ESP8266 ESP-12E
Мониторинг по интернет загазованности помещения с Arduino UNO и ESP8266 ESP-12E
Оставьте комментарий.

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question


Выберите для анонимного комментирования (комментарий будет опубликован после проверки).

     

  

Выберите если нужно войти или зарегистрироваться и оставить комментарий от своего аккаунта.

Войти, используя

(обязательно)

Подписка на новости
discord

Email:

Регистрация

Вход через
Разделы
  • Пожарная сигнализация124
    • Инструкции13
    • Проекты2
  • Автоматика58
  • Отопление33
  • Мониторинг30
  • Электрика17
  • Пожаротушение32
  • Умный дом32
  • Arduino12
  • Гаджеты32
  • MaxSite CMS26
Актуальное
  • СП 484
  • Автоматизация теплого пола
  • Болид vs Рубеж
  • С2000-АСПТ
  • ПЦН в кармане
  • Системы противопожарной зашиты
  • Cloud IoT
  • Проектирование
  • Программирование
  • Ссылки
Последние комментарии
Можно ли использовать независимый расцепитель в противопожарных системах
  • Виталий » "Примечание. В статье применяется аббревиатура СПА (системы противопожарной автоматики), которая может резать глаза. Но к ней стоит привыкать, ибо аббревиатуру...
  • Андрей » Неправда Ваша. "Мысль изречённая есть ложь." Но это и не система сигнализации, а система оповещения.
  • Андрей » Замечательная статья, все по делу, все по полочкам, основательный инженерный подход, спасибо! И я тоже проходил подобные искания и копания,...
  • Андрей » Спасибо. Если данный участок расположен внутри щита (шкафа) управления вентиляцией, то контролировать его целостность не требуется, т.к. этот участок не подпадает...
  • Андрей » Думаю для данного случая подходит вариант из п.3.20: "между системой пожарной автоматики и другими инженерными системами" Корпус щита, шкафа вентиляции не является...
Последние загрузки
Все загрузки
Дискуссии на форуме
  • КПБ
  • Выбор ОПС для коттеджа
  • Отключение питания раздвижных дверей при пожарном сценарии.
Реклама

W3230 LED Digital Thermostat Temperature Control DC 12V AC 110V 220V 20A Mini LED Display Thermostat Waterproof Probe

Wire Connector 50 / 100PCS Orange Mini Quick Connector Universal Compact Wire Connector Plug-in Wire Terminal Home Connector

Gigabit Media Converter SFP Transceiver Module 5KM 1000Mbps Fast Ethernet RJ45 to Fiber Optic switch 2 port SC Single Mode

Пожарка 126 Проектирование 99 Болид 64 Лекции 58 Социальное 53 Рубеж 49 Обзор 47 Автоматика 47 Инженерные системы 40 Курьез 36 Практикум 36 Адресные системы 35 Пожаротушение 34 Отопление 33 Интернет Вещей 29 MaxSite 28 ГОСТ 26 Терморегуляторы 24 Облачный Сервис 24 Мониторинг 22 Вентиляция 21 Теплый пол 21 Плагин 21 Сравнение 20 AliExpress 20 Законы Ома 20 ППУ 20 Техобслуживание 19 Эксплуатация 19 СП 484 19 Астра 17 ППК 17 Клапана 15 Электрика 14 С2000-АСПТ 14 Рубикон 13 Arduino 13 Оповещение 13 WiFi 12 С2000М 12 Ritm 11 Гранд Магистр 11 Датчики 11 Насосная Станция 11 ESP8266 10 Юнитест 10 ПЦН 9 ВЭРС 9 Сценарии 8 Авария 8 Жилой дом 8 Taggallery 7 Отзыв 7 Освещение 7 Программирование 7 Сообщества 7 Диспетчеризация 7 Плазма-Т 6 Гаджеты 5 ПО 5 С2000-СП4 5 Спрут-2 5 Радиоканал 4 МПН 4 GeoRITM 4 МПТ 4 Версет 3 Firesec3 3 Гранит 3 РИП 3 Баня 3 Учет ресурсов 3 ИПДЛ 3 Navigard 3 Visio 3 Рубеж-2ОП 3 My_ESP8266 3 Гидравлика 2 Задвижка 2 Zigbee 2 Security Hub 2 ТО 2
  • Обратная связь
  • Карта сайта
  • Отзыв
  • События
  • Комментарии
  • Форум
© Технические заметки 2026. Работает на MaxSite CMS. ( Вход )
Автор не несет ответственность за последствия применения материалов сайта на практике.