Published on
Updated on 

Построение тепловой камеры

Authors
  • Эта публикация - перевод статьи. Ее автор - Damien Walsh. Оригинал доступен по ссылке ниже:

    Building a Thermal Camera

Термальные камеры всегда очаровывали меня. Я думаю, что способность рассматривать часть электромагнитного спектра, которая обычно скрыта от нас, всегда будет странной и захватывающей.

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

Я хотел начать работу с термографией без огромной цены, поэтому я подумал, что все пойду и построю свой собственный! Очевидно, это был очень сложный процесс, поэтому я расскажу о каждом аспекте здесь. Не стесняйтесь задавать вопросы в комментариях, и я сделаю все возможное, чтобы ответить! [1]


Датчик

Я начал искать микроболометр.

Это бизнес-конец тепловой камеры. Это также дорогой, сложный источник бит. Они коммерчески доступны в качестве компонентов от дистрибьюторов электроники, таких как Digi-Key, но я обнаружил, что это дорогостоящий и сложный способ их получения (доступность в то время, когда я пыталась купить один, была довольно бедной).

После просмотра кучи видеороликов Mike's Electric Stuff, связанных с камерой, на YouTube, я обнаружил, что хорошим источником этого могут быть небольшие смартфоны, совместимые с тепловизионными камерами, такие как FLIR 's One и Seek Thermal.

Через несколько кликов я нашел разбитый FLIR One Gen. 2 на eBay за 75 фунтов стерлингов. Заявленный симптом состоял в том, что он просто не включался вообще, о чем я догадывался, возможно, до отказа питания / батареи и надеялся, что это не повлияет на сам модуль датчика. Эти устройства содержат микроболометр FLIR Lepton 3 160x120 пикселей.

Сам датчик

Для 75 фунтов стерлингов, я думаю, вам будет очень сложно использовать эквивалентный датчик - Gen 2 теперь недоступен, но текущий FLIR One Pro с таким же разрешением составляет 399,99 доллара.

Как только сломанный FLIR One прибыл, я разорвал его и достал яркую драгоценность, которая является датчиком FLIR Lepton 3. Я получил рекламный щит для FLIR Lepton от Digi-Key за около 25 фунтов стерлингов, включая доставку. Сама панель прорыва - отличный маленький проект от Pure Engineering. Как только у меня было все, что мне было нужно, я подключил все это к малине Pi и использовал ветку Lepton 3 проекта pylepton на GitHub, чтобы убедиться, что он работает. И это было! Азартная игра окупилась - это могло быть потрачено впустую 75 фунтов стерлингов!

Первое изображение с спасенным FLIR Lepton 3

Аппаратные средства

Я хотел создать автономное и портативное термокамеру с интегральным дисплеем и процессором, все из которых были снабжены батареей. В то время как я написал рабочий драйвер для камеры в C для Linux, просто используя spidev( который даже поддерживает потоковое видео в реальном времени на веб-клиент на основе JavaScript через ØMQ), это не устраивает настройку с батарейным питанием.

Дисплей был довольно прост в выборе. Китайская компания ILI Technology выпускает ряд недорогих TFT-дисплеев. Они кажутся очень популярными и хорошо поддерживаемыми на рынке электронной техники для любителей, поэтому я выбрал 2,8-дюймовый TFT-дисплей, основанный на чипе драйвера TFT LCD от ILI9341. На рынке электроники для любителей есть эти дисплеи, как правило, монтируются на прорывных печатных платах с добавлением ряда других вещей (резистивный сенсорный контроллер, слот для SD-карт и т. Д.). eBay - лучшее место, где можно подобрать их дешево.

Чтобы управлять всей системой, я в конечном итоге выбрал платформу ESP32 Espressif . У этой фантастической экосистемы есть встроенный Wi-Fi и Bluetooth. Он также имеет два портативных аппаратных SPI-порта, которые мне необходимы для управления дисплеем и модулем тепловой камеры.

Конкретным советом разработчиков, который я выбрал, была доска WEMOS LOLIN32. У этого есть литиевая батарея, заряжающая чип на борту, и вырывает все контакты ESP32, которые мне нужны для проекта.

Плата разработки WEMOS LOLIN32

Я также хотел, чтобы можно было включать и выключать все устройство с помощью кнопки / переключателя питания, при этом все еще можно заряжать его через USB во время выключения. Я использовал простую схему с двумя PNP-транзисторами, чтобы позволить ESP32 управлять мощностью тепловой камеры и дисплея. Я только что построил эту схему как можно меньше на клочке veroboard.

Прошивка

Я основал прошивку [2] вокруг моего существующего драйвера Linux для FLIR Lepton 3. Кодексу было относительно легко переносить на ESP32 - на высоком уровне он просто включал замену spidevAPI для SPI Master API ESP32.

Я использовал FreeRTOS для структурирования прошивки в целевую систему, в которой одна задача считывает данные с использованием интерфейса VoSPI (Video over SPI) с тепловой камеры, а другая задача отображает текущий (действительный) кадр на дисплей через второй SPI порт.

Системная блок-схема высокого уровня для прошивки

Текущий действительный кадр (current_frame) сохраняется в структуре, разделяемой между двумя задачами и защищенной семафором. Дисплей ровно вдвое превышает разрешение тепловой камеры в обоих измерениях, так что все получилось очень хорошо с точки зрения масштабирования рамки тепловой камеры на дисплее.

camera_task захватывает кадры из тепловой камеры, используя протокол VoSPI от FLIR. Эта задача обрабатывает любую (повторную) синхронизацию, которая должна выполняться с потоком видео, и обновляется только current_frameпри захвате нового действительного кадра.

display_task отображает current_frameна экране как четыре сегмента (они представлены таким образом с помощью интерфейса VoSPI камеры, и мне было удобно сохранить эту компоновку, а не иметь еще один полный буфер кадра отображения, связывающий память).

Каждый сегмент представлен в guiподсистеме перед окрашиванием на дисплей. gui Подсистема может рисовать основные формы и аннотации поверх изображения до того , как показано. Эти аннотации хранятся в связанном списке, а API guiподсистемы предоставляет операции для добавления, удаления и изменения записей. Например, в качестве демонстрации я добавил еще одну задачу user_task - для обработки пользовательского интерфейса. В настоящее время он просто отображает один зеленый квадрат в верхнем левом углу и переключает его видимость один раз в секунду.

К сожалению, этот процесс рисования на основе сегментов делает код GUI немного более сложным, чем можно было бы ожидать, поскольку функции рисования должны быть осведомлены о сегменте, который в настоящее время работает. Прямоугольник, например, может охватывать несколько сегментов. Этот вопрос немного задерживает мою реализацию текстового рендеринга, но я надеюсь, что он скоро будет работать!

Дизайн корпуса

В последнее время я попадал в более ощутимую сторону создания. Несколько месяцев назад я, наконец, сел на трехмерную печать с покупкой моего оригинального Prusa i3 MK2S, и с тех пор у меня было много удовольствия!

Я хотел создать корпус, который был небольшого размера, но вмещал бы дисплей, аккумулятор и модуль тепловой камеры. Я начал с получения измерений для тех частей, которые я хотел использовать. Там, где они не были доступны (в случае платы LOLIN32), я проводил обширные измерения с помощью суппортов Vernier при производстве моего дизайна.

Я разработал корпус в Fusion 360 от Autodesk.

Дизайн корпуса

Одна из проблем, с которыми я столкнулся, заключалась в том, как защитить апертуру перед тепловой камерой от пыли и повреждений. Стекло не сократит его - это слишком непрозрачно для части LWIR электромагнитного спектра, который нам интересен для термографии. Я обнаружил, что в этих типах применений обычно используются два материала - германий и селенид цинка. Я нашел достаточно дешевый источник оптики цинкового селенида и получил несколько образцов, но результаты были неудовлетворительными. Несмотря на покрытие AR на окнах, они, казалось, отражали много LWIR, излучаемых самим модулем камеры.

Некоторые из материалов, пропускающих LWIR, я опробовал

Я остановился на использовании небольшого куска Германия, который защищал апертуру камеры в оригинальной сломанной FLIR Одна камера, которую я разобрал. Он немного маленький (8 мм x 8 мм), но он явно превосходил окна ZnSE с точки зрения пропускаемости и низкой отражательной способности.

Дизайн корпуса занял несколько прототипов, чтобы получить право. 3, если быть точным. Измерения и допуски трудно получить в первый раз при 3D-печати, поэтому имейте это в виду для любых проектных работ. После того, как я произвел полезный случай, я смонтировал все внутри (что немного сжимало!). Я думаю, что для V2 я дам себе немного больше места в этом деле. Даже после использования функций расчета интерференции Fusion 360 у меня все еще было меньше места, чем я думал.

Внутри корпуса

Внутри я использовал винты M2 для крепления платы ESP32 и прорыва тепловой камеры к корпусу. Я не хотел повредить поверхность германского окна прочными клеями, поэтому я аккуратно вырезал 4 полосы ленты Kapton и использовал их, чтобы закрепить окно.

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

Мой дизайн также обеспечивает доступ к разъему Micro-USB на плате разработки ESP32, позволяя заряжать и прошивку, не отключая все.

Готовый продукт

Готовый продукт работает очень хорошо. Я все еще добавляю к прошивке, поэтому она все еще медленно улучшается. Благодаря установленной ячейке Li-Po емкостью 1300 мАч она имеет отличное время автономной работы. При выключенном питании система питается от токоизмерительного тока с напряжением ~ 250 мкА (с ESP32 в состоянии глубокого сна) из ячейки Li-Po. При включении дисплея и камеры и работающего видеопровода вся система имеет ток в 230 мА от ячейки Li-Po.

Используемый конечный продукт

Следующий шаг - подключить интерфейс I2C тепловой камеры, чтобы я мог управлять функциональностью Flat Field Correction 3 (FFC) и отображать некоторые данные телеметрии от самого модуля камеры (например, температура модуля камеры).

Я все еще хочу использовать резистивную сенсорную панель на дисплее, но, к сожалению, это тоже SPI, поэтому ей нужно будет поделиться одним из портов SPI ESP32 с дисплеем или камерой. Я должен буду оценить, какой из них будет иметь наименьшее влияние на производительность видеомонтажа. Я не хочу, чтобы взаимодействие с сенсорным экраном заметно ухудшало видео.

Я думаю, что дальнейшая итерация дизайна корпуса требуется также для решения таких проблем, как отсутствие клипов, вызывающих выступы передней части в середине. Кроме того, диафрагма для тепловой камеры немного мала или тепловая камера находится слишком далеко от апертуры. Когда температура корпуса отличается от температуры сцены, можно увидеть края диафрагмы в кадре [4].

  1. Бумага, используемая на фоне макроизображений в этом столбце, имеет размер 5 мм. 

  2. Моя прошивка доступна на GitHub. Не стесняйтесь взломать! 

  3. Когда камера изначально запускается (и в другое время тоже), она выполняет коррекцию для улучшения однородности изображения. Это включает закрытие затвора, чтобы получить «плоское поле» и взятие образца. Это помогает исправить любой температурный градиент, присутствующий в FPA (Focal Plane Array). 

  4. Тепловая камера имеет довольно широкий FoV - номинально 56º. См. Стр. 48 из http://www.flir.com/uploadedFiles/OEM/Products/LWIR-Cameras/Lepton/Lepton-3-Engineering-Datasheet.pdf 

Дэмиен Уолш - 26-летний аспирант компьютерных наук, занимающийся разработкой программного обеспечения и электроники. Мне нравится электроника, программирование, разнообразная необычная музыка, и у меня тоже есть вещи для мотоциклов.