# M5Atom_airqa
  


https://savjee.be/2019/12/esp32-tips-to-increase-battery-life/




<br/>
1. Подключить питание в USB<br/>
2. Зажать кнопку сверху на 40 секунд (не боковую. Боковая кнопка - это рестарт)<br/>
3. Начнет мигать зеленый светодиод<br/>
4. Зайти в телефона в точку доступа "AirQaPortal" c паролем "12345678"<br/>
5. Выбрать нужную Wifi точку и ввести пароль. Нажать сохранить<br/>
6. После перезагрузки устройство подключится к точке доступа и начнется отправка информации в топики<br/>
7. Если данные в топики не побежали то это значит что у провайдера нет кольцевого проброса запросов из локальной сети по внешнему ip внутрь этой сети - починим другим способом.<br/>
8. Отправка данных в топики 1 раз в минуту<br/>
9. Запрос обновления прошивки раз в 7 минут<br/>
10. Можно взять данные из COM порта через ttylog -b 115200 -d /dev/ttyACM*<br/>
11. Датчик необходимо установить на не холодной (не внешней) стене, на высоте от 1.5 до 1.8 <br/>метра, от дверей и проходов не менее 30 см. Не устанавливать напротив солнечных окон, не <br/>устанавливать над обогревающими или под охлаждающими приборами.<br/>


<br/><br/>

17:31:54.570 -> HDC1080 Configuration Register<br/>
17:31:54.615 -> ------------------------------<br/>
17:31:54.615 -> Software reset bit: 0 (0=Normal Operation, 1=Software Reset)<br/>
17:31:54.705 -> Heater: 0 (0=Disabled, 1=Enabled)<br/>
17:31:54.750 -> Mode of Acquisition: 0 (0=T or RH is acquired, 1=T and RH are acquired in sequence, T first)<br/>
17:31:54.841 -> Battery Status: 0 (0=Battery voltage > 2.8V, 1=Battery voltage < 2.8V)<br/>
17:31:54.930 -> T Measurement Resolution: 0 (0=14 bit, 1=11 bit)<br/>
17:31:54.975 -> RH Measurement Resolution: 0 (00=14 bit, 01=11 bit, 10=8 bit)<br/>


<br/><br/>
Если устройство находится в рекомендуемом рабочем диапазоне (относительная влажность от 10% до 70% и температура от -20 до 70 ° C), то не нужно часто калибровать (длительный дрейф составляет ± 0,25% относительной влажности / год). Датчик CCS811 не может измерять концентрацию СО2 непосредственно и выдает рассчитанные "эквивалентные" значения СО2, которые при высокой концентрации ЛОВ оказываются сильно завышенными.
Датчики настроены на точность 14 бит.
<br/><br/>

TVOC
0ppb to 1187ppb

eCO2
400ppm to 8192ppm. 

<br/><br/>


Информация для датчика 1080 https://www.terraelectronica.ru/news/5287


https://pubsubclient.knolleary.net/api.html

https://ipc2u.ru/articles/prostye-resheniya/chto-takoe-mqtt/#kachestvo

https://www.hivemq.com/blog/mqtt-essentials-part-9-last-will-and-testament/





САМАЯ ПРАВИЛЬНАЯ СТАТЬЯ ПРО СПЯЩИЙ РЕЖИМ
https://savjee.be/2019/12/esp32-tips-to-increase-battery-life       


https://savjee.be/2019/12/esp32-tips-to-increase-battery-life/


Ссылка про уджержание пина: 
https://electronics.stackexchange.com/questions/350158/esp32-how-to-keep-a-pin-high-during-deep-sleep-rtc-gpio-pull-ups-are-too-weak



Прежде всего, вы заметите, что два датчика дают разные показания. Вы должны знать (цитируя лист данных) «датчики оксидов металлов не дают абсолютных показаний». Да, они делают вид, что используют регистры CO2 и TVOC, но это не так. Они измеряют сопротивление своего слоя оксида металла, а затем проверяют, насколько оно отклоняется от нормального сопротивления, и это отклонение отображается на показаниях CO2 / TVOC. Проблема заключается в этом нормальном сопротивлении, снова цитируя лист данных: «Сопротивление RS изменяется от датчика к датчику (производственные вариации), от варианта использования к варианту использования и с течением времени». В итоге все датчики дают разные показания CO2 / TVOC, но когда они повышаются, по крайней мере, мы знаем, что воздух стал хуже.

Вторая проблема, которую вы поднимаете, - это падение показаний после включения и выключения питания. Это имеет аналогичную предысторию. Снова процитируем таблицу данных о том, что сопротивление чистого (нормального) воздуха изменяется: «Чтобы смягчить эту проблему, выходной сигнал датчика нормализован: RS делится на RA. Значение RA известно как базовое значение. RA не может быть определено с помощью однократной калибровки, она поддерживается на лету в программном обеспечении ». Посредством включения и выключения питания вы эффективно удаляете информацию о чистом воздухе, накопленную датчиком: если вы включаете датчик в плохом воздухе, он имеет это только как эталон и считает его чистым.

См. Раздел «Ручная коррекция базовой линии» в таблице данных.


Тест должен быть:

датчик включен более 20 мин (обкатка) на чистом воздухе, получить базовый уровень
возьмите пустую бутылку и налейте в нее каплю спирта
выключите датчик, положите в бутылку и снова включите.
Внутренняя базовая линия сбрасывается, но не нужно ждать приработки, потому что датчик был всего несколько секунд
прочитал tvoc, будет сообщено как нет / чистый воздух (потому что датчик проснулся в грязной бутылке)
Установите базовый уровень и прочтите снова tvoc, теперь он должен быть очень высоким.


https://learn.adafruit.com/adafruit-ccs811-air-quality-sensor?view=all


INT  - это вывод прерывания-вывода. Это логика 3 В, и вы можете использовать ее, чтобы определить, когда готово новое показание или когда показание становится слишком высоким или слишком низким.
WAKE - это штифт для пробуждения датчика. Для связи с датчиком его необходимо заземлить. Этот вывод смещен по уровню, поэтому вы можете использовать логику 3-5 В постоянного тока.
RST - это вывод сброса. Когда его тянут на землю, датчик сбрасывается. Этот вывод смещен по уровню, поэтому вы можете использовать логику 3-5 В постоянного тока.





Лучший способ откалибровать HDC1080 - держать его в контролируемой среде (например, в климатической камере) вместе с эталонным датчиком высокой точности (например, с зеркалом точки росы RH Systems 473), оценивать смещение между HDC1080 и эталонный датчик и удалите это смещение в микропрограмме микроконтроллера.



Сразу уточню, основное назначение датчика — контроль TVOC. Измерение эквивалентного значения СО2 — вспомогательный функционал. Как и у других недорогих датчиков с селективностью не все хорошо.

А теперь то, о чем вы должны знать перед использованием:

Что нужно знать перед использованием: Все пайки производим при закрытом изолентой датчиком. Не допускаем попадания паров флюса в датчик. При первом включении необходимо выдержать датчик под напряжением 24-48 часов для стабилизации характеристик сенсора. Настоятельно рекомендую проверить версию прошивку. С Китая приходят с версией 1.1.0. На сайте производителя уже давно лежит прошивка 2.0.1.

Сайт с прошивкой ( производитель): https://ams.com/ccs811#tab/features

Чувствительность и скорость реакции: Датчик очень чувствительный. И с практически мгновенной реакций. В ситуации, когда другие датчики только начинаю реагировать, CSS811 уже бьется в истерике с значениями «мы все умрем»! Если вам не нужна такая острая реакция — фильтруйте и сглаживайте показания. Иногда бывают странные «шпильки» по показаниям.
Есть «отравление датчика»! При высоких показаниях TVOC показания СО2 должны быть проигнорированы! Датчик, щедро глотнув органики, начинает выдавать нереально высокие показания по CO2.

Значения СО2 не измеряются, а получаются расчетным методом. Относительно правдоподобные значения СО2 можно получить только при близких к 0 TVOC! Если TVOC дает сигнал о органике, то значения СО2 нужно игнорировать. По причине абсолютно фантастических значений. .

Чувствительность по органике ( собрано по зарубежным источникам):
Эфиры ( Бутилгликоль — используется в авиа и космической промышленности для очистки поверхности) — очень высокая чувствительность.
Перманентный маркер — очень высокая чувствительность.
Спирты — очень высокая чувствительность.
Толуол — очень высокая чувствительность.
Ацетон — очень высокая чувствительность.
Бутанол — чувствует
Бутилацетат — чувствует
Бутан — обнаруживает, но слабо
Хлороформ — практически не чувствует
Дихлорметан — не чувствует
Ацетальдегид — слабо чувствует

Калибровка и настройка! Знать обязательно!
Изначально сенсоры датчика имеют достаточно большой технологический разброс. А потому в чипе есть регистр «Baseline», значение которого и собственно задают начальное «нулевое» значение. К нему и идет привязка показаний.
Есть 2 режима работы — ручной и автоматический.
В автоматическом режиме процессор чипа автоматически подстраивает показания регистра для показаний 400 для СО2 на чистом воздухе.Процедура очень не спешная, в среднем занимает не менее суток.
В ручном режиме выдерживаем датчик 2 суток в хорошем воздухе в режиме автоматической калибровки. Далее значение «Baseline» запоминаем, отключаем автоматическую настройку и подсовываем сохраненное значение при каждом старте.

Внимание! Значение «Baseline» при выключении питания не сохраняется! При отключении питания значение сбрасывается. И соответственно опять автонастройка на сутки…
Поэтому значение «Baseline» нужно сохранять. И соответственно восстанавливать при каждом включении последнее сохраненное значение. Это позволить получать корректные значения уже через 20 минут после включения.
Период сохранения «Baseline» (обусловлено дрейфом характеристик датчика):
Первая неделя — сохраняем каждые 24 часа.
Последующая неделя — каждые 1-28 дней.

«Baseline» — значения разные для разных периодов опроса. Если планируем менять — храним значения отдельно.

Датчик сильно не любит резких изменений температуры/влажности. Я рекомендую делать коррекцию по температуре/влажности от внешних источников ( записью в соответствующий регистр) — это увеличит точность. И тем не менее при резкой смене внешних условий датчик «чудит». Просто не надо постоянно бегать с ним из дома на улицу. Пусть отлежится и автокалибруестя.





ПОДКЛЮЧЕНИЕ ДЛЯ SSL
http://www.iotsharing.com/2017/08/how-to-use-esp32-mqtts-with-mqtts-mosquitto-broker-tls-ssl.html




САМАЯ ПРАВИЛЬНАЯ НАСТРОЙКА                  


Manual Baseline Correction
There is a mechanism within CCS811 to manually save and
restore a previously saved baseline value using the BASELINE
register.
The correct time to save the baseline will depend on the
customer use-case and application.
• For devices which are powered for >24 hours at a time:
• During the first 500 hours – save the baseline every
24-48 hours.
• After the first 500 hours – save the baseline every 5-7
days.
• For devices which are powered <24 hours at a time:
• If the device is run in, save the baseline before power
down
• If multiple operating modes are used, a separate
baseline should be stored for each
• The baseline should only be restored when the
resistance is stable (typically 20-30 minutes)
• If changing from a low to high power mode (without
spending at least 10 minutes in idle), the sensor
resistance should be allowed to settle again before
restoring the baseline
ams Datasheet Page 11
[v1-00] 2016-Dec-23 Document Feedback
CCS811 − Detailed Description
Note(s):
1. If a value is written to the BASELINE register while the
sensor is stabilising, the output of the TVOC and eCO2
calculations may be higher than expected.
2. The baseline must be written after the conditioning
period
For additional information on using the CCS811 please refer to
application note ams AN000369: CCS811 Programming and
Interfacing Guide.