Проблема такая подключаю датчик (купил на али) к 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)