enjoyneering / AHTxx

This is an Arduino library for Aosong ASAIR AHT1x, AHT2x Digital Humidity & Temperature Sensor
99 stars 25 forks source link

ESP32+AHT10+BMP280+DS3231 #7

Closed DVB-Arduino closed 2 years ago

DVB-Arduino commented 2 years ago

Добрый день. В системе установлено ESP32, AHT10, BMP280 и DS3231. Контакты питания развязаны конденсатором 100nF и 1000mF. Дорожки на плате минимальные, не более 2 см. Питание 3,3V через стабилизатор напряжения.
Все датчики и часы поочередно опрашиваются каждые 3 секунды. Система может работать день, но потом не отвечает AHT10. BMP280 и DS3231 возвращают данные, но не каждый период. Через раз RTC отвечают 00:00:00, но все же есть периоды, когда отвечает верным временем. BMP280 возвращает верные данные. AHT10 вообще не возвращает значения. aht10.softReset() не помогает. Также ESP.restart(); также не помогает. Но если нажать кнопку RST на отладочной плате ESP32, система начинает работать. Или отключить / включить питание. I²C bus speed устанавливалось 10 KHz, 20 KHz, 100KHz, 400KHz. Это не помогает. Зависание также наблюдается если часто нажимать кнопку RST на отладочной плате ESP32 много раз. В какой-то период AHT10 перестает работать. Есть предположение, что AHT10 не успевает отдать все данные и ждет от Master SCL сигнала для продолжения передачи. Поэтому датчик не отвечает. Но это не точно. Что можно сделать в такой ситуации? Возможно перезагрузить линии I²C? Или как-то дочитать данные с AHT10?

enjoyneering commented 2 years ago

вот эти все "eсть предположение, что AHT10....", highly likely и гадание на кофейной гуще - не наш метод. в примерах есть замечательная функция - printStatus(). воспользуйтесь ей и результаты после "не возвращает значения" сюда. а пока ситема работает "день, два" изучите что такое - i2c clock stretching (я спрошу). заранее спасибо.

ps. у меня AHT10 работает сутками (правда один на шине) в проекте tthRelay.