В этом материале мы покажем вам, как подключить инфракрасный датчик температуры MLX90614 к Raspberry Pi Pico W с помощью MicroPython. Датчик MLX90614 позволяет проводить бесконтактные измерения температуры, что делает его идеальным для различных применений. Мы предоставим пошаговое руководство, включая подключение, код и тестирование.
Подключите MLX90614 к Raspberry Pi Pico W следующим образом: MLX90614 VIN к Pico W 3,3 V, MLX90614 GND к Pico W GND, MLX90614 SCL к Pico W GP1 (SCL), MLX90614 SDA к Pico W GP0 (SDA). Схема подключения Raspberry Pi Pico к MLX90614:

Сохраните следующий код библиотеки в файле с именем mlx90614.py и загрузите его на Raspberry Pi Pico W:
import ustructclass SensorBase:def read16(self, register):
data = self.i2c.readfrom_mem(self.address, register, 2)
return ustruct.unpack('<H', data)[0]def read_temp(self, register):
temp = self.read16(register);
# apply measurement resolution (0.02 degrees per LSB)
temp *= .02;
# Kelvin to Celsius
temp -= 273.15;
return temp;def read_ambient_temp(self):
return self.read_temp(self._REGISTER_TA)def read_object_temp(self):
return self.read_temp(self._REGISTER_TOBJ1)def read_object2_temp(self):
if self.dual_zone:
return self.read_temp(self._REGISTER_TOBJ2)
else:
raise RuntimeError("Device only has one thermopile")@property
def ambient_temp(self):
return self.read_ambient_temp()@property
def object_temp(self):
return self.read_object_temp()@property
def object2_temp(self):
return self.read_object2_temp()class MLX90614(SensorBase):_REGISTER_TA = 0x06
_REGISTER_TOBJ1 = 0x07
_REGISTER_TOBJ2 = 0x08def __init__(self, i2c, address=0x5a):
self.i2c = i2c
self.address = address
_config1 = i2c.readfrom_mem(address, 0x25, 2)
_dz = ustruct.unpack('<H', _config1)[0] & (1<<6)
self.dual_zone = True if _dz else Falseclass MLX90615(SensorBase):_REGISTER_TA = 0x26
_REGISTER_TOBJ1 = 0x27def __init__(self, i2c, address=0x5b):
self.i2c = i2c
self.address = address
self.dual_zone = False
Сохраните следующий основной код в файле с именем main.py и загрузите его на Raspberry Pi Pico W:
import time
import machine
from mlx90614 import MLX90614# Initialize I2C bus
i2c = machine.I2C(0, scl=machine.Pin(1), sda=machine.Pin(0), freq=100000)# Scan for I2C devices
devices = i2c.scan()if devices:
print("I2C devices found:", [hex(device) for device in devices])
else:
print("No I2C devices found")# Initialize the MLX90614 sensor
sensor = MLX90614(i2c)while True:
ambient_temp = sensor.ambient_temp
object_temp = sensor.object_tempprint(f"Ambient Temperature: {ambient_temp:.2f}°C")
print(f"Object Temperature: {object_temp:.2f}°C")
time.sleep(1)
Загрузите файлы mlx90614.py и main.py на Raspberry Pi Pico W. Запустите скрипт main.py, используя Thonny IDE или другую подходящую среду MicroPython. После запуска скрипта вы должны видеть температуру окружающей среды и объекта, отображаемую в консоли каждую секунду. Убедитесь, что температуры находятся в реалистичных пределах, чтобы убедиться, что датчик работает правильно. Вы можете направить его на кожу, чтобы увидеть, изменятся ли показания температуры.
Следуя этому руководству, вы можете легко подключить инфракрасный датчик температуры MLX90614 к Raspberry Pi Pico W и считывать данные о температуре с помощью MicroPython. Эта установка позволяет проводить бесконтактные измерения температуры, что может быть полезно в различных проектах.
Raspberry Pi Pico
Микроконтроллерная плата Raspberry Pi Pico на основе микроконтроллера RP2040