@FlashDok

Правильны ли показания с датчиков ENS160+AHT21?

Проблема такая подключаю датчик (купил на али) к orange pi.
Вижу что на l2c появились адреса 0x38 и 0x53.
Считываю с них данные, но они очень странные.
Адрес 0x38: [24, 251, 13, 6, 21, 129, 199, 199]
Адрес 0x53: [96, 1, 0, 0, 0, 0]
import smbus
import time

# Адреса датчиков на I2C шине
ENS160_ADDRESS = 0x38
AHT21_ADDRESS = 0x53

# Инициализация I2C шины
bus = smbus.SMBus(0) 

# Функция чтения данных с датчика ENS160
def read_ens160():
    # Отправка команды чтения данных с датчика ENS160
    bus.write_i2c_block_data(ENS160_ADDRESS, 0x03, [0x00, 0x04])
    time.sleep(0.5)

    # Чтение данных с датчика ENS160
    data = bus.read_i2c_block_data(ENS160_ADDRESS, 0x00, 8)
    
    co2 = (data[0] << 8) | data[1]  # Уровень CO2
    eco2 = (data[2] << 8) | data[3]  # Уровень eCO2
    tvoc = (data[4] << 8) | data[5]  # Уровень TVOC
    
    # Вывод результатов
    print("Адрес 0x38:", data)
    # print("Уровень CO2: {} ppm".format(co2))
    # print("Уровень eCO2: {} ppm".format(eco2))
    # print("Уровень TVOC: {} ppb".format(tvoc))

# Функция чтения данных с датчика AHT21
def read_aht21():
    # Отправка команды чтения данных с датчика AHT21
    bus.write_i2c_block_data(AHT21_ADDRESS, 0x00, [])
    time.sleep(0.1)

    # Чтение данных с датчика AHT21
    data = bus.read_i2c_block_data(AHT21_ADDRESS, 0x00, 6)
    
    humidity = (data[1] << 8 | data[2]) * 100 / 65535  # Влажность
    temperature = (data[3] << 8 | data[4]) * 175.72 / 65535 - 46.85  # Температура
    
    # Вывод результатов
    print("Адрес 0x53:", data)
    # print("Влажность: {:.2f}%".format(humidity))
    # print("Температура: {:.2f}°C".format(temperature))

while True:
    read_ens160()
    read_aht21()
    time.sleep(1)
  • Вопрос задан
  • 1265 просмотров
Решения вопроса 1
@FlashDok Автор вопроса
Изучение datasheet дало плоды.

Нужно переключить режим датчика с IDLE на режим работы сенсора
bus.write_i2c_block_data(ENS160_ADDRESS, 0x10, [0x02])
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы