Термокамера 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.

1. Подключение

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

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

RPi-FLIR-Diag-FIXED

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

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

Первое, что нам потребуется сделать — это активировать 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, о котором сейчас и пойдет речь.

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

Для того чтобы захватить один кадр, можно не ставить 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

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

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

IMAG5138

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

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

IMG_0006 IMG_0008

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

IMG_0118 IMG_0086

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

IMG_0094 IMG_0019

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

IMG_0024 IMG_0022

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

IMG_0065IMG_0048

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

IMG_0070IMG_0075

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

IMG_0080 IMG_0083

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

IMG_0084IMG_0085

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

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

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


Изменено:

Термокамера FLIR Lepton и Raspberry Pi: 4 комментария

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

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

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

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

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

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

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>