Библиотека на MicroPython для работы с датчиком температуры и влажности AHT21 через шину I2C. Поддерживает работу через адаптер шины и учитывает аппаратные особенности китайских клонов и noname-модулей.
- Полная совместимость: Разработано специально для экосистемы MicroPython.
- Адаптер шины: Использует bus_service.I2CAdapter для абстракции интерфейса.
- Обход проблемы с CRC: Возможность отключения проверки контрольной суммы (check_crc=False) для noname-модулей, у которых байт CRC жестко зашит как 0xFF.
Для работы драйвера требуются следующие модули на плате:
- machine.I2C и machine.Pin
- Пакет sensor_pack_2 (а именно sensor_pack_2.bus_service)
- Файл самого драйвера aht21mod.py
Минимальный пример для проверки работы датчика (на примере пинов 6 и 7):
from time import sleep_ms
from machine import I2C, Pin
from sensor_pack_2.bus_service import I2CAdapter
from aht21mod import aht21
i2c_bus = I2C(id=1, scl=Pin(7), sda=Pin(6), freq=400_000)
sensor = aht21(adapter=I2CAdapter(i2c_bus), address=0x38, check_crc=False)
cycle = sensor.get_conversion_cycle_time()
while True:
sensor.start_measurement()
sleep_ms(cycle)
if sensor.wait_busy_clear(50):
temp, rh = sensor.get_measurement_value(aht21.INDEX_BOTH)
print(f"T: {temp:.2f} C | RH: {rh:.2f} %")
sleep_ms(1000)Многие доступные на рынке модули AHT21 отдают статичное значение CRC (0xFF). Это известная программно-аппаратная особенность чипов из неофициальных поставок, а не признак брака. Данные температуры и влажности в таких чипах полностью корректны. При работе с такими платами всегда инициализируйте класс с параметром check_crc=False.
Проект распространяется под лицензией MIT. Вы можете свободно использовать и модифицировать его.
Посмотреть пример сохраненных данных можно в файле data.txt.