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

Делюсь опытом Датчик температуры и влажности AHT10/AHT15

enjoynering

Well-known member
Вы ему сброс то даете после сна? (General Call Address, Reset Command)
нет. потому что не все slave его поддерживают. читайте доки на стандарт ;) и в обще ей надо пользоваться аккуратно тк она сбросит ВСЕ устройства поддерживающие эту команду.

Почему указан адрес INA219/226?
А здесь, зачем последний ACK, а не NACK?
потому что в datasheet куча ошибок. в тексте простым китайским языком написано, что адрес устройства 0x38 и тут же у них на картинке 0x70 :) Скорее всего тоже самое и с NACK. они скорее всего как всегда передрали картинки с какого-то другого datasheet.


За две секунды по трубе в цеолит поступит сотни литров воды и его придется выбросить или держать в +800С неделю :)
а вы хороший трололо. использовать в промышленном оборудовании AHT10/AHT15 или даже BME280 - это слабоумие и отвага.
 

pvvx

Активный участник сообщества
нет. потому что не все slave его поддерживают. читайте доки на стандарт ;) и в обще ей надо пользоваться аккуратно тк она сбросит ВСЕ устройства поддерживающие эту команду.
Ну и правильно - дублировать сброс по включению питания.
потому что в datasheet куча ошибок. в тексте простым китайским языком написано, что адрес устройства 0x38 и тут же у них на картинке 0x70 :) Скорее всего тоже самое и с NACK. они скорее всего как всегда передрали картинки с какого-то другого datasheet.
А вы пробовали 0x70 или ?
а вы хороший трололо. использовать в промышленном оборудовании AHT10/AHT15 или даже BME280 - это слабоумие и отвага.
Для датчика заполнения фильтра, т.е. как проверка разгильдяйства это нормально. Он же не для контроля влажности, а как триггер что бездельники не выполняют указаний по эксплуатации.
 

pvvx

Активный участник сообщества
Т.е. вы хотите сказать, что AHT10/AHT15/AHT20 это помойка, которую нельзя использовать нигде?
 

pvvx

Активный участник сообщества
а вы хороший трололо. использовать в промышленном оборудовании AHT10/AHT15 или даже BME280 - это слабоумие и отвага.
Вы путаете средства измерения, которые должны быть сертифицированы и иметь запись в гос реестре с сервисными датчиками даже не влияющими на процесс работы, а служащими для дополнительного контроля.
А так–же путаете обычные гражданские нормативы с военными.
Это уже не в первый раз.
По вашему пром. оборудование изготавливают инопланетяне из чего-то сверх естественного.
Измеритель с тем-же BME280 без каких либо проблем можно вписать в гос. реестр средств измерения сделав всё как надо, не по Ардуино принципам, но с стой-же себестоимостью. Нужно только соблюсти некоторые правила и обеспечить их выполнение в устройстве.

Я понимаю, что вы не смогли в своей либе этого соблюсти и на ESP8266 она неработоспособна, а сделано для игры в программирование.
 

enjoynering

Well-known member
Вы путаете средства измерения, которые должны быть сертифицированы и иметь запись в гос реестре с сервисными датчиками даже не влияющими на процесс работы, а служащими для дополнительного контроля.
ну тогда не надо нам про вот эти ужасы рассказывать про выбросить и держать неделю. :)
литров воды и его придется выбросить или держать в +800С неделю

Т.е. вы хотите сказать, что AHT10/AHT15/AHT20 это помойка, которую нельзя использовать нигде?
Да сенсор не очень - ждать по 300мСек после каждого старта для выхода на режим это как-то не серьезно. Хотя может я что-то не так делаю - очень много вещей не описано в datasheet или описано не правильно.


По вашему пром. оборудование изготавливают инопланетяне из чего-то сверх естественного.
Конечно не инопланетяне. Но к нему предъявляются хоть какие-то и оно проходит хоть какую-то сертификацию, в отличии поделок сделанных на коленке.
 

enjoynering

Well-known member
Измеритель с тем-же BME280 без каких либо проблем можно вписать в гос. реестр средств измерения сделав всё как надо
Если бы да кабы - вы сначала впишите в гос реестр, а потом поговорим. Пока это просто треп диванного эксперта. :)
 

pvvx

Активный участник сообщества
Если бы да кабы - вы сначала впишите в гос реестр, а потом поговорим. Пока это просто треп диванного эксперта. :)
Это вы наверно про себя. У меня несколько моих датчиков в гос.реестре. И проектировались на диване :p И большая часть это бумажная волокита, а не какие-то проверки/поверки.
Аналогично с любой реальной сертификацией. Но на сертификацию надо меньше бабла :)
 

pvvx

Активный участник сообщества
Счас больные новым вирусом как раз и пользуются тем что производим :p Ну и цены на данное оборудование подняли более чем в два раза :p
Желаю болеть почаще - чтобы спрос увеличился :)
 

pvvx

Активный участник сообщества
Да сенсор не очень - ждать по 300мСек после каждого старта для выхода на режим это как-то не серьезно.
Видим у вас опыта нет. Это видно по коду либы.
80% датчиков требуют времени "выхода на режим" или паузы на инициализацию/установки аналоговых напряжений в норму и прочего.
ESP8266 тоже требует дцать ms на устаканивание кварцевого генератора, а потом ещё и PLL, и далее загрузку...
 

pvvx

Активный участник сообщества
Если ещё используется цифровая фильтрация у встроенного SAR - то требуется ещё время после выхода аналога на режим на накопление и обработку начальных коэф. фильтров.
 

pvvx

Активный участник сообщества
Как пример:
BME280 при включении обработки влажности выходит на режим по всем фильтрам через 0.8 секунд:
1585750435529.png
Он-же, не без расчета влажности, как BMP280, стартует сразу c адекватными замерами:
1585750487540.png

Дык что за халтуру вы подсунули детям в своей либе? Где указание на ожидание или сколько замеров надо отбросить?
 

pvvx

Активный участник сообщества
Ваша либа должна возвращать ответ Error или Warning пока датчик не вышел на режим.
 

enjoynering

Well-known member
Я тупо жду 350мсек ничего не возвращая, потом все ОК (если не ждать вместо данных одни нули с busybit - не занят те типо все ОК. Какой же ОК когда ты не готов. Косяк у китайцев).

Поэтому я бы не рекомендовал данный датчик для спящего режима у ESP8266 - никаких батареек не хватит.
 

pvvx

Активный участник сообщества
Я тупо жду 350мсек ничего не возвращая, потом все ОК (если не ждать вместо данных одни нули с busybit - не занят те типо все ОК. Какой же ОК когда ты не готов. Косяк у китайцев).

Поэтому я бы не рекомендовал данный датчик для спящего режима у ESP8266 - никаких батареек не хватит.
Не могу проверить, т.к. эти датчики AHTxx до сих пор болеют пандемией где-то на почтах...
Но выход всегда есть - включить датчик и спать, со второго просыпания и снимать замер. Но в Arduino это криво - там нет отдельной входной ветки со своей инициализацией объектов по просыпанию из deep-sleep, а большую часть проинициализированных не отключить...
 

pvvx

Активный участник сообщества
Да вот человек проверил - тыц. Пришлось добавлять 350мс
Т.е. при старте мы не можем запустить датчик и далее производить соединение по WiFi которое в зависимости от параметров занимает от 300 до 1700 мс?
Обязаны где-то затормозить все процессы в вашей либе на 350 мс?
Я думал что вы сами сообразите почему было такое предложение:
Ваша либа должна возвращать ответ Error или Warning пока датчик не вышел на режим.
 

pvvx

Активный участник сообщества
Поэтому я бы не рекомендовал данный датчик для спящего режима у ESP8266 - никаких батареек не хватит.
Выше дано опровержение этому.
Если вы используете такой датчик с ESP, то его потребление можно не учитывать в сравнении с ESP. Особенно с ESP32 :)
Та в принципе со всеми чипами на которые рассчитано Arduino.
 

enjoynering

Well-known member
Ваша либа должна возвращать ответ Error или Warning пока датчик не вышел на режим.
да все я понял. просто вот эти все вот эти корявые конструкции типа time = time - mills(); мне не нравятся. а тянуть целую либу tick.h ради одного раза тоже не хочется. может вы подскажете как это красиво сделать?
 

pvvx

Активный участник сообщества
да все я понял. просто вот эти все вот эти корявые конструкции типа time = time - mills(); мне не нравятся. а тянуть целую либу tick.h ради одного раза тоже не хочется. может вы подскажете как это красиво сделать?
Сделать предварительную инициализацию. Возможно и при инициализации класса (т.е. опцию).
Т.к. применение с ESP только одно - стартовать датчик при начальной инициализации, а данные с датчика считываются только после установки соединения, а это время более его времени выхода на режим.
В других случаях просто предупредить.
Во вторых существуют неблокируемые запросы. У всех нормальных MCU i2c работает или через FIFO или через DMA, чего у вас нет. Т.е. запрос не выдает данных, а является всего предварительным запросом. Данные будут потом, например по калбэк.
 

pvvx

Активный участник сообщества
А вообще пора бы расстаться с тупой структурой расслоения запросов i2c в Arduino. Оно и реализовано в разных чипах по разному и несовместимо ни с кем.
Давно существует универсальный драйвер I2C/SMBUS, описываемый 4-мя переменными/блоками. Блоками - это т.к. одна из 4-х переменных является массивом байт запроса...
Аналог такой реализации я использовал и в тестовой версии UBIA для BLE.
 
Сверху Снизу