Тепловизор на FLIR Lepton своими руками
Наконец-то мы дожили до тех времен, когда тепловизионная техника, во-первых, стала доступна не только военным и шпионам, а во-вторых, миниатюризировалась до размеров карманного устройства. И более того, появились модули для сборки собственных DIY-тепловизоров. Но об этом позже.
Любые нагретые тела излучают ЭМИ. Закон смещения Вина, который говорит о том, на какую длину волны будет приходиться пик излучения нагретого абсолютного черного тела:
При комнатной температуре пик находится в ИК-диапазоне невидимом нашему глазу. Если мы, например, будем ковать железо, то при нагревании оно станет красным, потом белым… При охлаждении длина волны излучения будет уменьшаться, смещаясь назад в ИК-диапазон. Таким образом, из наблюдаемой длины волны теплового излучения мы можем получить температуру тела.
Но как быть с объектами, имеющими достаточно низкую температуру, например, комнатную? Они-то уж точно не светятся в видимом диапазоне. Здесь на помощь приходят специальные устройства — тепловизоры. Они умеют регистрировать волны среднего и длинного инфракрасного диапазона. Такие приборы применяются, например, для мониторинга техники, когда нужно выяснить, какой элемент или узел нагревается свыше допустимого уровня. Также тепловизоры применяют для проверки утепления домов, определяя места и интенсивность утечки тепла.
Пример термографий (источник: интернет)
Например, когда я сделал свой тепловизор, то обследовал с его помощью пластиковые окна и сразу нашел место, откуда дует, т. к. там плохой уплотнитель.
Не так давно инфракрасная камера FLIR оказалась в центре спортивного скандала: она показала, что рама велосипеда одной из участниц велогонки подозрительно нагрета. Оказалось, что внутри был спрятан мотор, помогавший спортсменке крутить педали. Так что в этом году для выявления подобных случаев на Тур де Франс используются тепловизоры.
В 2014 году компания FLIR, мировой лидер в разработке тепловизионной техники, выпустила миниатюрный датчик, LWIR-сенсор, который умеет регистрировать инфракрасные волны в диапазоне 8–14 мкм. Именно на этот диапазон приходится максимум излучения тел с температурой от –50 до +50 градусов Цельсия. (Но это не означает, что более горячие тела, например, чайник, не будут видны в этом тепловизоре).
Датчик миниатюрный, обеспечивает тепловое разрешение 80×60 пикселей с частотой обновления в 9 Гц. Интерфейс получения данных — Video over SPI, а управления — I2C. Оба интерфейса поддерживаются Raspberry Pi, поэтому у DIY-энтузиастов сразу возникла мысль, что можно сделать из Lepton тепловизор.
В 2014 году FLIR еще не работала с DIY-сообществом, поэтому мы собрались на groupgets.com и заказали оптом партию в 100 штук. Случилось это перед обвалом рубля, так что мне датчик достался довольно дешево. К сожалению, цены на такую технику довольно высоки. Сам датчик стоил 250 долларов, на тот момент это меньше 10 000 руб. Сейчас тепловизор такого же разрешения стоит в магазине ~40 000 руб. Кроме того, Lepton стоит в модуле Flir One для смартфонов (~25 000 рублей).
Тепловой след от руки на столе
Lepton способен уловить излучение и далеких объектов с улицы
Ребята из компании Pure Engineering сделали для FLIR Lepton breakout board, которая подключается в т. ч. и к Raspberry Pi, который работает с ней по I2C и SPI.
Изображение выводится на маленький LCD-монитор для автомобиля через RCA-разъем.
Также я добавил к своему устройству обычную камеру для Raspberry Pi со спиленным инфракрасным фильтром (NoIR), чтобы она видела в темноте.
Тепловизионная техника работает в ИК-диапазоне, поэтому ей нужна особая оптика. Например, для нашего устройства желательно купить защитное стекло, но обычное не подойдет, потому что оно непрозрачно для ИК-лучей. Нужно покупать специальную оптику на основе селенида цинка (ZnSe) или арсенида галлия (GaAs). Кроме того, продаются и фокусирующие линзы.
Всех, кому приходилось делать портативные устройства, мучил вопрос изготовления корпуса. Альфа-версия у меня была в картонной коробке. Очень удобно: можно прорезать дырки, где хочешь. Внутри была очень большая батарея. Если такой аппарат уронить на ногу, будет очень больно.
Финальный вариант задумывался в портативной компоновке типа «пистолет». Так как в продаже подобных корпусов нет, я попросил друга сделать модель удобной ручки, а коллега ее распечатал на 3D-принтере. В ручку я поместил батарею, а для электроники был взят готовый пластиковый прямоугольный корпус.
Модель DarkTemplar, печать sunsai
Аккумулятор должен был обеспечивать продолжительную работу, в т. ч. и зимой на улице. И хотелось, чтобы его было удобно заряжать — по этому критерию лучше всего литий-полимерные аккумуляторы, к ним продается множество готовых модулей зарядки от USB. Но для тех Li-Po, что я видел в продаже, указан рабочий диапазон температур от 0 °C, т. е. они не выдерживают сильный мороз.
Кроме Li-Po существуют Pb, NiMh, NiCd и LiFePO4 аккумуляторы. Пальчиковые аккумуляторы я брать не хотел, т. к. это бы усложнило конструкцию ручки — пришлось бы делать отсек со съемными батареями и крышечкой. Из оставшихся вариантов я выбрал небольшую свинцовую батарею на 6 В. К ней пришлось добавить понижающие конвертеры до 5 В, чтобы питать Raspberry, и повышающие конвертеры до 12 В для питания экрана.
Типовые режимы картинки для тепловизоров:
Кроме того, одновременно с отображением на экран, мы можем сохранять скриншоты и видео.
Чайник закипает на газовой плите
Комьюнити уже написало библиотеки под различные платформы, в том числе STM32, Raspberry Pi, Arduino. Я начал писать код на С, но это довольно тяжелое занятие, поэтому сейчас я перехожу на библиотеку Python, которая использует OpenCV. Там все гораздо проще, и уже есть готовые примеры с тем же overlay. Так что я рекомендую именно Python.
Итак, наш тепловизор умеет снимать и сохранять изображения на диск. Чтобы их скачать, я поставил hostapd, isc-dhcp-server и PureFTPd, превратив этот прибор еще и в точку доступа Wi-Fi, чтобы к нему можно было подключиться и скачать картинки.
На скриншотах с моего тепловизора нет шкалы температур. Почему? Дело в том, что в первой версии Lepton есть сложность с режимом измерения (т. н. radiometry) — нужно калибровать датчик относительно известной температуры, что штатно делается замером температуры специальной шторки перед Lepton. Но в моей (первой) версии модуля нет такой шторки. (Кстати, если вы задумаете покупать Lepton, то сейчас его логично брать сразу со шторкой).
Кроме того, в нашей технической бочке меда есть физическая ложка дегтя. Закон Стефана Больцмана гласит, что для абсолютно черного тела испускательная способность пропорциональна четвертой степени его температуры. Однако обычные предметы не являются абсолютно черными телами, и для них вводится коэффициент ε от 0 до 1.
Q = εσT4, где ε — emissivity, степень черноты
Иными словами разные материалы одинаковой температуры могут излучать с разной интенсивностью. Например, при одинаковой температуре дерево будет излучать мощнее, чем сталь — за счет большего коэффициента emissivity. И на экране нашего тепловизора дерево будет как будто «теплее». Отчасти это можно компенсировать, указав прибору коэффициент emissivity, если он известен. Но для каждого объекта в кадре это сделать проблематично.
Пример из Википедии. Окрашенная сторона (ε≈0.45) алюминиевого куба выглядит теплее полированной (ε≈0.05) на термальном снимке
То же самое касается ИК-термометров (пирометров). Когда вы что-то меряете ими, то для точной оценки температуры нужно выставить поправочный коэффициент.
Кроме того, точному измерению мешает зависимость интенсивности излучения от угла, отражающая способность материала и так далее. Так что такой тепловизор, к сожалению, не показывает точную температуру. Есть модели с отображением температуры, но и они требуют ввода коэффициента emissivity.
Проект с тепловизором еще далек от завершения. Как всегда, есть масса идей:
- вынести на потенциометры подстройки. В Raspberry Pi нет аналоговых входов, поэтому надо ставить дополнительно АЦП. Также с его помощью хочу контролировать разряд батареи;
- добавить лазерный указатель;
- сделать ИК-подсветку для обычной камеры;
- так как я теперь использую OpenCV, можно использовать что-то из него, например, добавить отслеживание контуров объектов на экране.
Топик подготовлен по материалам моего доклада с прошлого DIY-митапа Mail.Ru в Mail.Ru Group. Следующий наш митап пройдет уже через 10 дней — спешите записаться!