Термокамера FLIR Lepton и Raspberry Pi

Первая ассоциация, которая возникает у старшего поколения при слове тепловизор — фильм Хищник. Именно в этом голливудском фильме 80-х годов инопланетный охотник использовал тепловизор для наблюдения за своими жертвами в темноте ночных джунглей. С тех самых пор я мечтал заиметь такое устройство для личных целей.

predator

Спустя много лет, в 2013-м году у меня наконец-то получилось раздобыть недорогой датчик MLX90620 с матрицей 16×4 точек. Каждая точка в этом устройстве представляет собой  микроболометр — термочувствительный элемент, меняющий свое сопротивление вследствие нагревания, под воздействием падающего на него электромагнитного излучения. Оптика для тепловизоров обычно изготавливается из германия, который хорошо пропускает и преломляет волны в диапазоне тепловидения.

В свое время, на сайте poprobot.ru я написал небольшую статью про использование MLX90620. Сегодня в продаже есть и более совершенные матрицы, в ценовом диапазоне MLX (а есть даже и дешевле). Основная проблема при покупке таких приборов — их двойное назначение. Бывало, что мне отказывали в покупке подобных матриц в США.

И вот, спустя еще 3 года, у меня в руках оказался куда более интересный прибор — термокамера FLIR Lepton. В этом датчике тоже используется микроболометрическая матрица, но уже с разрешением 80×60 точек! Это гораздо веселее, чем 16×4, согласитесь? Вот так она выглядит:

13233-011

Немного важных параметров:

  • детектируемый спектр: 8-14мкм;
  • размер пиксела: 17мкм;
  • оптимальная частота кадров: 8,6Гц;
  • чувствительность: менее 50мК;
  • температурная коррекция: автоматическая;
  • угол обзора: 51 по горизонтали и  63,5 по диагонали;
  • формат данных: 14бит, 16бит (c АРУ) или 24бит RGB (с АРУ).

Надо сказать, FLIR Lepton — очень популярная термокамера, так что инструкций по её использованию в интернете предостаточно. Я использовал одну из таких инструкций, размещенных на сайте sparkfun.

Подключение

На плате виден интерфейс I2C и SPI. По первому происходит обмен управляющими командами, а второй служит для приема видеопотока с датчика. Оставшиеся два пина VIN и GND — питание.

Для эксперимента с датчиком нам потребуется более или менее мощная вычислительная система, например, Raspberry Pi. Подключим FLIR Lepton к микрокомпьютеру по следующей схеме:

RPi-FLIR-Diag-FIXED

Как видим, ничего сложного. Требуется всего восемь проводков мама-мама. Следующий шаг — установка на PRi соответствующих программ.

Установка ПО для просмотра видеопотока

Первое, что нам потребуется сделать — это активировать SPI и I2C интерфейсы в RPi. Делается это так.

1. Открываем меню настроек RPi с помощью команды:

sudo raspi-config

Команду нужно вводить в терминале, разумеется. По-умолчанию в Raspbian стоит терминал LXTerminal. Его и используем.

2. Затем, в появившемся меню выбираем пункт Advanced options.

2015-03-22-202105_1184x624_scrot

3.  В Advanced options выбираем пункт Enable/Disable automatic loading of SPI kernel module.

2015-03-22-202124_1184x624_scrot

4. Соглашаемся со всем, что скажут и выполняем аналогичные действия для пункта I2C.

Теперь мы можем подключиться к камере. Попробуем получить с нее изображение с помощью стандартного пакета LeptonModule. В пакете есть примеры работы с FLIR Lepton на разных платформах.

5. LeptonModule использует фремворк Qt4, сначала поставим его. Qt в нем используется для экранных форм, необходимых для отображения видеопотока с камеры.

sudo apt-get install qt4-dev-tools

В результате появится что-то типа этого:

2015-03-22-201434_1184x624_scrot

Отвечаем yes и ждем завершения установки.

6. Теперь ставим сам LeptonModule. Скачиваем исходные коды с github командой:

cd /home/pi
git clone https://github.com/PureEngineering/LeptonModule

7. Собираем библиотеки. Для этого внутри домашней папки выполняем:

cd LeptonModule/software/raspberrypi_libs/leptonSDKEmb32PUB
make

8. Далее собираем бинарник в папке raspberrypi_video:

cd ../../raspberrypi_video
qmake && make
2015-03-22-202522_1184x624_scrot

Папки на картинках могут не совпадать, ибо там используется старый пакет.

9. Всё. Запускаем бинарник.

sudo ./raspberrypi_video
2015-03-22-202835_1184x624_scrot

Если запустится черное окошко с красным квадратом, как на скриншоте, значит модуль инициализировался с ошибкой. Сначала надо проверить все соединения. Если все верно, пробуем сделать грязный хак: на sparkfun советуют нежно вытащить сам датчик из паза, и затем так же нежно воткнуть обратно. Способ дикий, но рабочий и достаточно безопасный. Таковы особенности стандартных библиотек, увы.

Рабочий поток с камеры должен выглядеть следующим образом:

2016-01-19-223752_1024x768_scrot

Надо сказать, что стандартная библиотека не единственный способ получения видеопотока с датчика. На форуме FLIR можно найти разные решения так называемой «проблемы красного квадрата». Не всем нравится вытаскивать датчик из слота при каждом запуске.  Вот к примеру небольшое приложение которое мне понравилось: https://groups.google.com/forum/#!msg/flir-lepton/GWHD1KMVYaE/S4pq5vXmpOkJ

Ну и разумеется, вы всегда можете сами написать приложение для получения данных с датчика на любом языке. Благо, протокол обмена весьма простой и хорошо документированный. Для начала рекомендую разобрать код еще одного полезного примера — raspberrypi_capture, о котором сейчас и пойдет речь.

Просто снимок

Для того чтобы захватить один кадр, можно не ставить Qt и использовать стандартную SDK библиотеку. Достаточно собрать пример из папки raspberrypi_capture:

cd LeptonModule/software/raspberrypi_libs/leptonSDKEmb32PUB/raspberrypi_capture
make

После этого запускаем бинарник, и получаем кадр в инопланетном формате PGM:

../raspberrypi_capture

PGM — редко встретишь на просторах интернета. Это очень примитивный формат, представляющий изображение в градациях серого. Файл PGM — это набор целых чисел, часто 16-битных.

Но градации серого — это не то что мы все ждем от снимков тепловизора. Даешь радужную палитру! Чтобы превратить pgm файлы во что-то удобное и цветное, я написал python-скрипт, конвертирующий pgm в png с заданной палитрой. Скрипт можно скачать на гитхабе:

https://github.com/makeitlab/software_tools/tree/master/Converters/Pgm2Png

Для работы скрипту потребуется библиотека pypng.

Скрипт имеет два аргумента. Первый аргумент — целевой файл. Это может быть файл, а могут быть все файлы в текущей директории (*). Второй аргумент задает масштаб, ибо не очень то интересно смотреть снимки разрешением 80×60. Собственно, пример использования:

python.exe pgmtocolor.py * 3

Смотрим на теплое

Для того, чтобы поснимать разные теплые уголки нашего хакспейса и внешнего мира, мы собрали на базе FLIR Lepton мобильный термофотоаппарат:

IMAG5138

Хотелось скорее запустить аппарат, так что корпус получился весьма утилитарный:) Внутри размещается Raspberry Pi B rev.2, два аккумулятора 18650, стабилизатор напряжения типа UBEC и сам FLIR Lepton. Сзади корпуса имеется кнопка затвора, а на верхней боковине тумблер питания.

Наконец, небольшая подборка снимков хорошо известных предметов. Мой горячий ноутбук и трубы отопления.

Девушка с кружкой чая и суп на плите.

Блок питания ноутбука, торчащий из розетки — слева. Справа — чайник.

Другое место и время — офис компании Naumen. В полу коридора виден мощный след трубы отопления. Пол реально теплый в этом месте. Справа радиатор на стене под холодным окном.

Системник с открытым бортом и щиток с автоматами.

В окрестностях хакспейса MakeItLab. На левом снимке дверь изнутри здания. Видны мостики холода. Справа теплое окно второго этажа, снятое с улицы.

Капот припаркованной машины — слева. То, что под капотом — справа.

Теплый тормозной диск — слева. Человек, зашедший в хакспейс с улицы — справа. Щеки и подбородок еще не нагрелись:)

Конечно, тепловизором сегодня никого не удивишь. Готовый прибор можно купить за 100-150 тыс.руб., так что о дефиците технологии уже говорить не приходится. Но для целей DIY такие готовые приборы дороговаты  — в 7 раз дороже, чем FLIR Lepton. В этих условиях датчик с неплохим разрешением за 250$ — это крайне выгодное предложение.

Применений для FLIR Lepton можно найти массу: от приборов контроля утечек тепла и охранных систем, до гибридных систем машинного зрения робота. Собственно, как раз для последнего варианта он нам и понадобился.

О новых идеях с тепловизором, читайте на нашем учебном портале Robotclass.ru!


Изменено:

Термокамера FLIR Lepton и Raspberry Pi: 9 комментариев

  1. Хорошая статья, все по полочкам! Насколько сложно реализовать передачу видео с тепловизера по wifi? Не пробовали?

    • OpenCV позволяет передавать видео по RTP протоколу, или по голому сокету. Но я не пробовал.

  2. Подключил к распберри Лептон, но не пойму, можно ли увидеть картинку с Arduino uno?

    • Принципиальных проблем не вижу, но придется написать свою библиотеку для получения картинки. Хотя, возможно, кто-нибудь уже реализовал это. Погуглить надо бы.

  3. Здравствуйте! Спасибо за статью!
    Не подскажете, где бы найти данный модуль? Прошерстил интернет, максимум FLIR One нахожу для смартфонов. Или Seek Thermal тоже с разъемом usb для смартфонов. Но именно модуля для прямого подключения к малинке не нахожу.

    Интересна тема совмещения видеопотока с камеры RasPiCam и Lepton.

  4. Кстати, как оказалось, у вас CS подключён к SPI1, а в программе с github используется SPI0! А я гадал, почему же лептон не отвечает по SPI. То ли у вас ошибка, то ли на github поменялось ПО. В любом случае, с lepton 3 не работает. Сейчас я снял дамп обмена с лепотном. Попробую расшифровать.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.