• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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. И ли хотябы как узнать что входит в сборки кастом.
 
Сверху Снизу