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

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

volaltd

Member
Есть хороший вариант: берем логический анализатор, цепляем на оба провода I2C, смотрим что там происходит, сверяем со спекой и ожиданиями.
Разве не очевидно что интервал задается или такой кусок кода вообще отсутствует в ПРОГРАММЕ опроса датчика?
 
Есть хороший вариант: берем логический анализатор, цепляем на оба провода I2C, смотрим что там происходит, сверяем со спекой и ожиданиями.
Разве не очевидно что интервал задается или такой кусок кода вообще отсутствует в ПРОГРАММЕ опроса датчика?
То ли мы говорим о разном, то ли я вас не понимаю. В программе у меня задается интервал опроса датчика. Если имеется ввиду выполнение вот этих команд:
Код:
unsigned long timer1 = 0
void setup() {
    блаблабла
}

void loop() {
if (millis() - timer1 >= 1000 {
      timer1 = millis();
      AHT1038.GetTemperature();
      AHT1038.GetHumidity();}
}
Ну там соответственно и 1000 и 5000 и 8000 и 10000 пробовал.
Если же это не то, то я и спрашиваю, как его задать?
 

volaltd

Member
Бегло глянувши даташит нашлось что-то про 75мс для измерения, после чего можно читать значения. В остальном могу только сказать что бывают глюки в библиотеках, бывает авторы слизывают ошибки друг у друга, библиотечные функции тоже нужно правильно вызывать, но этот порядок такие авторы как вы и pvvx обычно не документируют и нужно выковыривать из кода. Посему профи пишут полностью свое, но чуть-чуть заглядывая в такие библиотеки. А взять готовое, вызвать две функции и съесть конфетку все хотят )))
 
К сожалению я не профи. Поэтому пользуюсь библиотеками. Правда начинаю подумывать, что партия бракованая попалась. Ну и с интервалом опроса меня прям озадачили. Все что я перечислял говорят не то, а что надо не говорят. Мол сам ищи в даташите. Но если отсылают в даташит, то скорее всего это надо как-то напрямую через wire настраивать. Я там 2 настройки нашел, но это не то. Других хоть убей не нахожу.
 

volaltd

Member
Ну так и пожинайте плоды применения готовых, бесплатных решений плюс да, китайцы могут и некондицию продать и перемаркированные диоды вместо семисторов.

Если я правильно понял, то сначала нужно отдать команду на запуск измерения, затем опрашивать статус о завершении, затем читать значения. Что там в библиотеке наворочано лично мне разбираться нафиг не упало, в моем случае пользую готовую прошивку EasyESP, которую давно пилит команда и работает она вполне сносно без вопросов на форумах работает с кучей сенсоров и устройств.
 
Готовая прошивка подразумевает какую-то стандартную схему. Надо поискать исходники этой прошивки.
 

enjoynering

Well-known member
Пробуйте эту - https://github.com/enjoyneering/AHTxx . В ней учтены все особенности из datasheet.

Чтобы не греть датчик (ловить 0.1С изменения температуры) увеличьте время между опросам датчика с 1 секунды до 8

Код:
if (millis() - timer1 >= 8000) //min 8 seconds!!!
 
Пробовал эту библиотеку и интервал как раз 8 секунд был. Виснет.
Сейчас нашел Adafruit_AHT10. Датчик правда там я так понял свой какой-то. Внешне другой, но чип такой-же. И с этой библиотекой только один порт для подключения. Сейчас тестю. Там у них в библиотеке пример, я прям его залил. Но там раз в пол секунды данные снимаются. Правда не на ESP, а на Arduino UNO. 2 часа пока не виснет. Показатели вроде в пределах сотых плю-минус 3-4 сотых скачут. Но мне точнее десятых не надо. Руки доберутся, повешу на основное устройство, потестю.
 

volaltd

Member
Готовая прошивка подразумевает какую-то стандартную схему. Надо поискать исходники этой прошивки.
Вам сразу как надоест много думать, то вбейте в гугль ESPEasy, плагин AHT10/20/21 пока на тестировании и содержится в билде TESTING A. Нужно всего-лишь влить готовый бинарник в свой модуль, зацепиться по WiFi, произвести настройку пинов и устройств через вебку.
Есть еще конструктор ESPHome тоже с поддержкой AHT10.
 
Да, я читал. Но боюсь не получится так. У меня экран на 16 (2х8) матрицах светодиодных типа 1088BS. Под эти BS(с общим анодом) и библиотек то нет. Пришлось переделывать схему под общий анод и менять кой чаво в библиотеке. Плюс у меня своя Web морда и своя база данных на JSON файлах.
 

volaltd

Member
Ну тогда конечно закупайтесь всякими разными датчиками, гадайте что вам подсунули и пишите еще :)
 

volaltd

Member
еще можно учебники почитать. И тогда все получится.
К сожалению, когда берутся готовые либы без вникания в что в них происходит, то случается что одна портит процессы другой и тут не учебники читать, а снимать диаграммы логическим анализатором и лезти разбираться в чужой код. Времени такое тянет гораздо больше чем изначально написать все свое, но трэнд набрать в интернете готового и парой строчек самому сделать - очень сладкий и манит как мошек на фонарь :) Другое дело когда предлагают не либы, а комплексное решение и вход не тянет месяцев времени на втыкание в простыни кода.
 

enjoynering

Well-known member
Про портит процессы - это здравая мысль.

Моя либа под AHT10 работает в блокирующем режиме основного цикла (с использованием delay()). Если либа под bosch работает через millis(), то глюки очень могут быть.
 

Semen32

New member
Вам сразу как надоест много думать, то вбейте в гугль ESPEasy, плагин AHT10/20/21 пока на тестировании и содержится в билде TESTING A. Нужно всего-лишь влить готовый бинарник в свой модуль, зацепиться по WiFi, произвести настройку пинов и устройств через вебку.
Есть еще конструктор ESPHome тоже с поддержкой AHT10.
Не могли бы вы подсказать как в прошивку ESPEASY добавить модуль из другой сборки ESPeasy. И ли хотябы как узнать что входит в сборки кастом.
 
Сверху Снизу