Синяя изолента, куда ж мейкеру без нее.
В последнее время на гиктаймс было немало статей про эту тепловизионную камеру. Почитать можно, например, тут, тут и вот здесь даже с подключением к STM-32, но мы сегодня не об этом — скучной теории и картинок котиков не будет, только мякотка. Под катом рассказ о том, как сделать из iOS-версии Seek Thermal версию для Android и Raspberry Pi, зачем это нужно и что еще интересного можно узнать в процессе копания во внутренностях тепловизора. Интересующихся прошу.
Все началось с моего увлечения страйкболом. Да-да, я не наигрался в детстве в войнушку, поэтому считаю вполне себе важным делом поехать в выходные пострелять 6-мм пластиковыми шарами в себе подобных. А поскольку вокруг дяди взрослые и все у них тоже серьезно, случается в страйкбольных играх ночная фаза. И наступает время, когда под каждым кустом и деревом начинает мерещиться противник, а в роли королей поля боя воцаряются ПНВ и тепловизоры. Точнее, их владельцы. Таковым захотел себя посчитать и я, но помешала, конечно, жаба.
А вот нате. Порог входа для тепловизоров — около 50 кРуб.
Просмотрев предложения, я впал в уныние, смешанное с отчаянием. За полсотни тыщ мы имеем базовую версию устройства с начинкою в виде матрицы 160х120 (спасибо, хоть экран внутри поставили VGA) и частотой обновления экрана <9 Гц. Но гугл в помощь, и вскоре мне явился сайт eevblog.com, неоднократно упоминавшийся уже и на этом ресурсе, с подробным рассказом на 100 страниц об интересном девайсе, сочетавшем в себе матрицу 208х156 точек, полностью доступную к применению, и весьма неплохую хакабельность: на тот момент, счастливым владельцам уже удалось накодить несколько относительно простых приложений на Питоне и С++ для получения картинки с той самой микроболометрической матрицы, выделяющей девайс среди себе подобных неплохим разрешением за вменяемые деньги. И да, версия для Android с рук б/у обошлась мне в два раза дешевле по сравнению с готовой Flir'овской трубой.
Но встал закономерный вопрос: а что, собственно, с этим делать дальше? Идея бегать с телефоном по полям и лесам ночью не слишком прельщала, поэтому было решено создавать с нуля свой тепловизор, с блэкджеком и… ну вы понимаете. Сие есть отдельная история, и её я расскажу в посвященной статье, а то и нескольких — с кодом и железками — а пока о том, что прибыв домой и воткнув свежеприобритенный девайс в одноплатник Odroid C1+ с накатанным наспех Андроидом, в скором времени я совершенно огорчился.
Девайс работал плохо. Во первых, на картинке были пятна, которые я вначале связал с загрязнениями линзы — как выяснилось позже, грязной была сама матрица и количество битых пикселей тоже не радовало. Во вторых, через пять минут матрица начинала сильно шуметь, качество картинки падало и использовать камеру так, как планировалось изначально, было просто невозможно.
Вывод: при приобретении Seek Thermal с рук, дайте камере поработать минут 5-10, чтобы оценить ее функцию после прогрева.
Шум, аналогичный моему случаю. От угла изображения идет градиент, вызванный некорректной работой шторки (затвора)
На тот момент, у меня не было полного понимания, как бороться с возникшими проблемами, и я решил бороться как умею. Чтобы проверить, работает девайс или нет, было решено купить еще один. Может показаться расточительным и нелогичным — но я предположил так: если проблема в софте (а как выяснилось, она частично была в софте — поскольку запускал я все на криво собранном Odroid/Android, не поддерживавшем апдейт официального приложения) — то у меня будут два тепловизора. Ну а если нет — то, хотя бы, один.
Время шло, предложения б/у тепловизоров появлялись и исчезали, и вот однажды — о чудо! — явилось оно: человек решил продать купленный на один раз поиграться девайс. За половину (!) цены нового. Такое предложение я пропустить не мог, и, конечно же, пустился в погоню. За камерой в версии для iPhone. Ну да ладно, подумал я — переходник и все вопросы решены!
Четвероногий друг — снято в яблочном приложении
А вот и нет. Сколько не бил я в бубен, заставить работать камеру через переходник lightning-microusb (и ведь найти то его была та еще задача, так, чтобы и USB, и lightning мама, и питание, и данные...) не удалось. Оставался один выход — лезть внутрь. И я полез.
Видео не мое — использовал в качестве пособия по разборке, ну и для общего развития в области тепловизоров вообще и Seek Thermal в частности:
Хорошо, что есть такие люди как Майк. Во второй части разбор Seek Thermal до печатной платы — чувствительным гикам не смотреть...
Для разборки камеры Seek Thermal необходимо:
— камера Seek Thermal
— что-то плоское и твердое для вскрытия корпуса — шпатель, например — 2-3 шт. разных
— мультиметр — 1 шт.
— осциллограф или логический анализатор — опционально
— прямые руки — 1 пара
Имея под рукой видео разборки, можно попробовать аккуратно раскрыть половинки корпуса из магниевого сплава, не сильно его попортив. Угадайте, какого цвета плата у девайса для iOS? :)
Вскрытие я начинал с края, дальнего от линзы. Защелок внутри нет, только несколько капель клея. Далее, передо мной стояла задача правильно интерпретировать разводку разъемов внутри iOS и Android версии камеры, и подключиться к соответствующим выводам на плате.
Я опасался, что придется перехватывать сигнал камеры на глубоком уровне — т.к. производители вполне могли впихнуть в интерфейс, ответственный за подключение к яблочным продуктам, еще и функцию обработки данных. Но в видео разборки упоминается, что единственное отличие между яблочной и неяблочной версией камеры — чип идентификации. Это означало, что контакты/точки подпайки на плате и разводка шлейфов, скорее всего, будут совпадать физически и функционально. Точку в вопросе поставила одинаковая версия платы (rev 2 от 30.09.2014) на обеих девайсах.
Тот самый чип (квадратный справа). Тот самый
Недолго думая, я поменял местами шлейфы iOS и Android версий и с замиранием сердца запустил программу обработки данных с камеры (к тому моменту уже переписанную на Питоне для Raspberry Pi на основе кода товарища Cynfab отсюда ).
Ура! Заработало!
Свежий тепловизор завелся сразу, показав более лучшее качество картинки. Что ж, отложим его для готового проекта, и займемся «старым» девайсом.
Девайс без чипа идентификации ожидаемо не запустился при подключении к айфону — хотя и определился.
Кстати, работа тепловизора изнутри выглядит так:
В нормальном режиме затвор срабатывает каждые 1-8 сек для калибровки матрицы
Матрица Android-версии камеры оказалась сильно запылена. Её я продул сжатым воздухом — субъективно качество изображения немного (но не категорически) улучшилось.
Тем не менее, при чтении картинки с матрицы присутствует некоторое количество «битых пискелей»
На «сырых» кадрах с камеры хорошо видна известная среди любящих ковырнуть поглубже пользователей Seek Thermal «патентная решетка» — гексагональный паттерн неработающих точек. Со слов некоторых пользователей с eevblog, это намеренно отключенные (отсутствующие?) пиксели матрицы — каждый 15-й, сделано для того, чтобы избежать возможных патентных споров с FLIR, обладающих патентом на микроболометрическую матрицу.
Решетка «патентных» пикселей (картинка с eevblog)
Поскольку я не планирую подключать девайс к iOS-устройствам, шлейф с разъемом lightning мне не понадобится. Подключение можно осуществить, подпаявшись к весьма удобно расположенным выводам на самой плате камеры. В видео разбора есть очень хороший ракурс этого подключения (впрочем, я на всякий случай еще и прозвонил контакты мультиметром).
Подключение (сверху вниз): USB V+, data -, data +, земля.
UPD
iOS-версия с разъемом microUSB, расположение контактных площадок соответствует указанному на плате разъема
Подпаявшись к контактам, я вывел наружу уже полноценный «хвост» USB type A, который можно удобно воткнуть в компьютер, в том числе, в Raspberry Pi.
Что имеем в остатке:
- два живых тепловизора с возможностью подключения к USB
- понимание того, что родное приложение намного лучше справляется с обработкой картинки, нежели неофициальные
- +1 к скиллу разборки-сборки девайсов без дымка
- Если Вы решили провести подобную операцию со своим тепловизором, проводите ее на свой страх и риск :)
Смотрите в следующих сериях: как подружить Seek Thermal с Raspberry Pi, а Raspberry Pi с экраном от Нокии; ковыряние в коде неофициального приложения, сырые картинки и недокументированные возможности, а также сборка вот этого всего в единый функционирующий прототип.
Ну и традиционно для статей о тепловизорах, селфи в микроволновом диапазоне:
Всем добра.
Комментарии (34)
FernandoAlfonso
10.05.2017 09:32Полезная статья, спасибо. В финале сериала получится тепловизионный прицел или ручной тепловизор?
Kirsch
10.05.2017 09:43Пока получается ручной тепловизор с возможностью крепления на планку. Но будет серия про прототипирование корпуса.
Sonikelf
10.05.2017 14:35+1Спасибо за статью.
Почему-то про ручной тепловизор сразу вспомнилось:
Не планируете? :)
FernandoAlfonso
10.05.2017 11:29Отлично. В ночном зрении я пока на стадии игр со светочувствительной камерой без инфракрасного фильтра с инфракрасной же подсветкой) Жду следующих серий.
Кстати, видит ли тепловизор ближний ИК? В частности 850-940 нм, как в пультах ДУ и подсветках ПНВ.
AlexAV1000
10.05.2017 15:20Как думаете, имеет смысл подумать об охлаждении этой матрицы при помощи Пельтье? Думаю шумов должно стать намного меньше и чувствительность сильно вырастет.
Kirsch
10.05.2017 15:33Ребята с eevblog тоже этим вопросом заморочились
Я просто оставлю это здесьAlexAV1000
10.05.2017 15:51Не, охлаждать нужно только матрицу, маленьким модулем Пельтье, есть такие микромодули, для охлаждения детекторов. Конечно придется камеру разобрать и сделать свой корпус.Тепло отводить кулером на тепловых трубках нельзя, так как тепловые трубки работают только от +50С, а надо от комнаты охлаждать. А вообще эффект будет грандиозный, если охладить как следует.
Kirsch
10.05.2017 17:19Там под платой в проекции матрицы лежит термопрокладка на корпус, вот такая (на самом деле, две, правая снята)
Теоретически, охлаждение внешним модулем должно сработать хорошо. Надо попробовать.
AlexAV1000
10.05.2017 19:36Вот такие, по идее, должны подойти по размеру.
https://www.chipdip.ru/product/tv-66-0.45-1.3
https://www.chipdip.ru/product/tv-7-0.6-0.8
da-nie
10.05.2017 20:04Насколько я помню (был где-то обзор), у Seek Thermal матрица была не отделена от подложки вакуумным промежутком. Отсюда и высокие шумы.
anegin13
10.05.2017 19:20Правильно ли я понимаю, что Seek Thermal для iPhone (c lightning) можно подключить к android устройству, если разобрать корпус и подпаять к плате microUSB?
ПлатаKirsch
10.05.2017 19:47В контексте той же версии платы: да, можно.
Дисклеймер: 1) зеленая на фото-это Андроид версия. На iOS я ставил микро-USB шлейф, контактные площадки при этом прозваниваются в полном соответствии с Андроид-версией 2) не знаю, родное приложение распознаёт или нет, в последних версиях оно вообще спрашивает регистрацию с серийным номером устройства, может быть софтовый лок. Я запускал на неофициальном клиенте на Raspberry, но с т.з. протокола обмена данными разницы нет — неоф клиенты создавались на основе реверс-инжиниринга кода клиента для Андроид.
da-nie
10.05.2017 19:48Что-то зачастили тут описания Seek Thermal. Почему-то никто Flir One Gen 2 не хочет попробовать. А ведь у Flir при его 160x120 шумы матрицы очень низкие и чувствительность высокая. Да и к компьютеру он подключается запросто по USB.
u010602
10.05.2017 20:44Не скажу за всех, лишь за себя. Я выбрал Seek Thermal т.к.
1) не нужно заряжать
2) компактнее и красивее
3) выше разрешение
А режим наложения мне показался игрушкой, ну да для публикации прикольно, но если ты знаешь на что ты смотришь, то лишние линии только мешают. А использую редко, раз в несколько месяцев, потому вариант с зарядкой отпадает.da-nie
10.05.2017 21:06Режим наложения тут не при чём. Снимать картинку лучше не штатной программой от смартфона (она, говорят, разрешение снижает до 120x90), а отдельным ПО с компьютера без всякого наложения — только тепловая камера. У Flir весьма низкие шумы и хорошая чувствительность.
Вот, смотрите:
da-nie
10.05.2017 21:20Вот ещё снимки на улице с Flir One Gen 2 (ещё раз обращаю внимание — это только прямая картинка с тепловизионной камеры — никакого MSX не добавляется):
u010602
11.05.2017 11:14У меня нет ощущения что фотки принципиально отличаются от моих, нужно поискать в архиве и то-же добавить. Но использование от компа для меня это не интересный юскейс. Потому я и не остановился на Flir One. Думаю так и большинство покупало для телефона изначально, а потом уже пошли эксперементы
da-nie
11.05.2017 11:46Вот тут ( https://mysku.ru/blog/usa-stores/44299.html ) есть сравнение фотографий, правда, с телефонов. Тем не менее, Seek Thermal имеет худшую чувствительность и большую шумность (как и писал выше, я где-то читал, что у него матрица плохо изолирована от подложки, отсюда и проблемы).
kolu4iy
Для решения проблемы с «битыми пикселями» могу посоветовать приобрести не совсем китайских набор для очистки матрицы фотоаппарата. В него кроме груши входит еще и специальный карандаш, способный удалить грязь с матрицы, не повреждая её при этом. Думаю, это должно помочь.
lonelymyp
Если пиксел сдох, значит он сдох, независимо от того есть на нём грязь или нету.
Даже протерев дохлый пиксел чистящим карандашом, его не оживить.
lonelymyp
Давно интересует вопрос, насколько сильно греется матрица чтобы потребовалась калибровка? не пробовали сделать «селфи» модуля в зеркале?
Будет ли смысл в термостабилизации модулем пельтье?
u010602
Тут матрица мелкая, возможно ее можно охлаждать просто большим пассивным радиатором. Модуль Пельтье потребляет очень много, и рассеивать потом нужно в разы больше.
lonelymyp
Пельтье потребляет пропорционально передаваемому теплу, то есть если нужно отвести малое количество тепла то и ток нужен небольшой.
Судя по документу, потребление тепловизора 260 миливатт, грубо говоря потребуется подать 2,6 ватт
мощности на элемент пельтье (кпд 10%) чтоб забрать тепло от тепловизора, это примерно 500 мА при USB питании. Совсем не много.
Вопрос скорее в целесообразности, так ли сильно тепловизор греется и так ли сильно начинает врать?
u010602
Я не измерял и долго включенным не держал, греется он примерно так-же как и телефон под нагрузкой. Чем дольше он включен, тем чаще он щелкает. Когда щелкает — идет лаг, этот лаг довольно сильно портит нервы, когда пытаешься сфокусироваться или подобрать правильный ракурс.
vasimv
Радиатором ниже комнатной температуры — не охладить. А тут — чем ниже, тем лучше чувствительность, так что пелтье тут бы не помешал.
ACPrikh
Сильное охлаждение неизбежно дает конденсат. Со всеми вытекающими. Причем буквально вытекающими.
Калибровка нужна для нуль-отсчета уровня и даже пельтье принципиально не поможет.