Форум обсуждения оборудования  

Вернуться   Форум обсуждения оборудования "Умный дом" > Форум умного дома > Сделай сам > ESP8266

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.01.2018, 23:40   #1
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,298
Вес репутации: 9497
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Датчик CO2 MH-Z19 MH-Z14A

В наше время людям живущим в мегаполисах, такой датчик просто необходим. Так как концентрация CO2, очень сильно влияет на самочувствие и е здоровье человека. Считаю что "Умный дом" без таких датчиков неполноценный. Датчик CO2 MH-Z14A , как датчик температуры и влажности должен быть в каждом доме.
Незначительное увеличение СО2 во вдыхаемом воздухе у здоровых людей приводит к учащению дыхания и к снижению давления в лёгких. Этот факт свидетельствует о том, что СО2 включает разрушительные процессы в нервных тканях, в работе иммунной системы и во всём организме в целом.

380-400 Атмосферный воздух — Идеальный для здоровья и хорошего самочувствия.
400-600 — Нормальное количество воздуха. Рекомендовано для детских комнат, спален, офисных помещений, школ и детских садов.
600-1000 — Появляются жалобы на качество воздуха. У людей, страдающих астмой, могут учащаться приступы.
Выше 1000 — Общий дискомфорт, слабость, головная боль, концентрация внимания падает на треть, растёт число ошибок в работе. Может привести к негативным изменениям в крови, также могут появиться проблемы с дыхательной и кровеносной системой.
Выше 2000 — Количество ошибок в работе сильно возрастает, 70% сотрудников не могут сосредоточиться на работе. Основные измерения уровня СО2 происходят, конечно же, в центральной нервной системе, и носят они при гиперкапнии фазный характер: сначала повышение, а затем снижение возбудимости нервных образований.

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

И так хватит демагогию разводить, приступим к делу:
Что хочу в итоге сделать?
Засунуть в коробочку из под ночника
Название: light.png
Просмотров: 579

Размер: 124.2 Кб

1- Блок питания с 220В на 5В
2- Wi-Fi Wemos D1 mini
3- Датчик CO2 MH-Z14A или MH-Z19
4- RGB светодиод.
5- Коробочка из под ночника с вилкой на 220В

На Wemos D1 или ESP8266 будет простой веб сервер. На странице которого можно будет посмотреть более точные CO2 показания датчика
Визуальное отражение показаний будет реализовано на RGB светодиоде
синий - 400ppm
бирюзовый - 500ppm
зеленый - 600ppm
желтый - 700ppm
фиолетовый - 800ppm
красный - 900ppm
плавно и медленно моргающий красный - 1000ppm
быстро моргающий красный - больше 1000ppm

Почему светодиод? Потому что с дисплеем много гемороя с монтажом и корпусом. Так же дисплей в розетке будет не информативен, из-за малого угла обзора и мелкого шрифта, к нему придется близко подходить и т.д.
А со светодиодом все просто и понятно, видно из далека, присматриваться не нужно
Еще я думаю что потребуется датчик освещенности. Что бы ночью подсветка не раздражала

Сегодня провел тестирование датчика CO2
Датчик MH-Z14A подключил к Wi-Fi модулю Wemos на чипе ESP8266 четырьмя проводами
ESP<--->MH-Z14
+5В <--> V+
GND <--> V-
D1 <----> T
D2 <----> R

Схема подключения MH-Z19 к Wemos ESP8266

Нажмите на изображение для увеличения
Название: mh-z19_esp8266.png
Просмотров: 157
Размер:	320.5 Кб
ID:	4781

Проверочный скетч, будет работать на любой Arduino и на ESP8266
PHP код:
//#include <ESP8266WiFi.h>
#include <SoftwareSerial.h>

#define CO2_TX D1 // пин ESP8266
#define CO2_RX D2 // пин ESP8266
SoftwareSerial SerialCO2(CO2_TXCO2_RX);
byte cmd[9] = {0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79};
unsigned char response[9];

void setup() 
{
SerialCO2.begin (9600);
Serial.begin (115200);
}

void loop()
{

  
getCO2(); // получаем и выводим показания;
  
delay(10000);
}


void getCO2() //чтение показаний датчика MH-Z14A
{
  
SerialCO2.write(cmd9); //отправляем команду датчику
  
memset(response09);
  
SerialCO2.readBytes(response9); //получаем ответ
  
  
uint8_t crc 0;
  for (
int i 18i++) crc+=response[i]; //считаем контрольную сумму
  
crc = ~crc;
  
crc++;

  if ( !(
response[0] == 0xFF && response[1] == 0x86 && response[8] == crc) ) // сравниваем ответ с  контрольной суммой
  
{
    
Serial.println("CRC error: " String(crc) + " / "String(response[8])); //выводим ошибку
  

  else 
  {
    
uint8_t responseHigh = (uint8_tresponse[2];
    
uint8_t responseLow = (uint8_tresponse[3];
    
Serial.println("CO2 "+String((256*responseHigh) + responseLow)+"ppm"); //выводим показания датчика
  
}


Видео тестов датчика MH-Z14A


Датчик на фабрике откалиброван. Проверить его можно, достаточно вынести измеритель на улицу на 10 минут и и провести замеры. Делать это лучше рано утром с 5:00 до 6:00, пока автомобили не успели выехать на дороги. А если есть возможность, то провести замеры за городом в лесу или в парке.
Admin вне форума   Ответить с цитированием
Старый 23.01.2018, 00:09   #2
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,298
Вес репутации: 9497
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

И так. Первый день тестов
Проверка датчика CO2 перед сном - 950ppm
На ночь приоткрыл маленькую щель на окне.
С утра показания датчик MH-Z14A -520ppm
Я так понимаю что вечером еще есть влияние загазованности атмосферы автомобилями,
а к утру газы рассеиваются ветром.
Admin вне форума   Ответить с цитированием
Старый 12.02.2018, 16:34   #3
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,298
Вес репутации: 9497
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

Подробности по обмену с датчиком MH-Z19
Запрос данных у датчика:
[0]-0xFF — начало
[1]-0×01 — первый сенсор
[2]-0×86 — команда
[3]..[7] 0×00, 0×00, 0×00, 0×00, 0×00 — место для данных
[8]- 0×79 — контрольная сумма.

В ответ придет примерно такое:
[0]- 0xFF — начало
[1]- 0×86 — команда
[2]..[3]- 0×01, 0xC1 — старший и младший байт CO2
[4]- 0×3C — температура
[5]..[7] 0×04, 0×3C, 0xC1 — неизвестно
[8]- 0×7B — контрольная сумма

Расчет контрольной суммы:
Берутся 9 байт ответа, кроме первого и последнего. Складываются, инвертируются, результат увеличивается на единицу: 0×86 + 0×01… + 0xC1 = 0×85, 0×85 xor 0xFF = 0×7A, 0×7A + 1 = 0×7B.
Подсчет crc в коде:
PHP код:
    uint8_t crc 0;                  //обнулить переменную
    
for (int i 18i++) crc += response[i];  //сначала складываем все 7 байт
    
crc = ~crc//инвертируем результат
    
crc++;      // прибавляем к результату 1 единицу 
Admin вне форума   Ответить с цитированием
Старый 12.02.2018, 18:23   #4
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,298
Вес репутации: 9497
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

сделал шкалу для цветового монитора:
светло зеленый – 400 ppm и менее.- Высокое качество воздуха
зеленый – 400-600 ppm – хорошее качество воздуха
желтый – 600-800 ppm – среднее качество воздуха
оранжевый – 800-1000 ppm – допустимое качество воздуха
красный – 1000-1500 ppm- плохое качество воздуха
красный моргающий - 1500 и выше - опасное для здоровья качество воздуха

Не знаю почему, но мне синий как то не нравится в шкале
Может я и ошибаюсь?
Admin вне форума   Ответить с цитированием
Старый 13.02.2018, 17:21   #5
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,298
Вес репутации: 9497
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

Что то ее пойму , баг это или Китайская фитча
Вод скриншот официального Datasheet
Нажмите на изображение для увеличения
Название: Без имени.png
Просмотров: 146
Размер:	124.2 Кб
ID:	4854

Проблема в том что китайцы предлагают складывать 7 переменных типа: byte, а результат размещать в переменной типа: Char
Переполнение же будет?
Я бы не заострил внимания на этой проблеме, но если подуть на датчик и его показания взлетают до небес, начинает вылетать ошибка CRC Error . И контрольные суммы не равны.

Кто что скажет по этому поводу?
Admin вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 19:42. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика