CircuitPython

Для работы с дальномером используем библиотеку adafruit_mlx90614 (ссылка в конце урока). Всё, что нам нужно сделать для её установки — это скопировать файл adafruit_mlx90614.mpy в папку lib на накопителе CIRCUITPY.

Более подробно о работе с библиотеками CircuitPython мы писали в одном из ранних наших уроков: Библиотеки для CircuitPython

УСТАНОВКА ЗАВИСИМОСТЕЙ

Чтобы библиотека adafruit_mlx90614 заработала, необходимо будет добавить еще две «зависимости»:

  • adafruit_bus_device
  • adafruit_register

Все эти библиотеки есть в сборнике от Adafruit. Точно также, копируем их на накопитель CIRCUITPY.

Программа

Для составления программы используем среду разработки Mu.

Пусть, тестовая программа будет непрерывно выводить в последовательный порт дистанцию до препятствия. Начнём с подключения всех необходимых библиотек. Помним, что в python это делается с помощью команды import.

Кроме adafruit_mlx90614 нам будут нужны еще три библиотеки:

  • time — предоставляет функцию sleep для организации паузы;
  • board — хранит названия всех контактов платы контроллера и их синонимы.
import time
import board
import adafruit_mlx90614

Затем создаём объект I2C, который организует работу с шиной. Следом — объект класса MLX90614, в котором описаны нужные для работы с датчиком функции.

i2c = board.I2C()
mlx = adafruit_mlx90614.MLX90614(i2c)

Чтобы получить измеренную датчиком температуру достаточно обратиться к свойству object_temperature у объекта mlx. Таким же образом можно получить и температуру самого датчика: mlx.ambient_temperature.

Выведем оба этих значения с помощью print в последовательный порт. Вся программа целиком:

import time
import board
import adafruit_mlx90614

i2c = board.I2C()
mlx = adafruit_mlx90614.MLX90614(i2c)

while True:
    print('{:.2f} - {:.2f}'.format(mlx.ambient_temperature, mlx.object_temperature))
    time.sleep(0.2) # пауза 200 мс

Сохраняем программу и открываем монитор последовательного порта (кнопка «Последовательный»). Наводим датчик на разные объекты. Результат работы программы будет выглядеть так:

29.17 - 13.65
29.17 - 13.75
29.15 - 13.75
29.19 - 13.49
29.19 - 13.31

Первое значение — это температура датчика, а второе — температура объекта.


Изменено: