Увидеть невидимое: заглядываем внутрь тепловизора Seek Thermal (и не просто так)

Доброго дня, %username%!
Сегодня я расскажу (и немного покажу), что можно (но не всегда нужно) делать с тепловизором Seek Thermal.

3ff938a32c294ff288889850af6ecc68.png
Синяя изолента, куда ж мейкеру без нее.

В последнее время на гиктаймс было немало статей про эту тепловизионную камеру. Почитать можно, например, тут , тут и вот здесь даже с подключением к STM-32, но мы сегодня не об этом — скучной теории и картинок котиков не будет, только мякотка. Под катом рассказ о том, как сделать из iOS-версии Seek Thermal версию для Android и Raspberry Pi, зачем это нужно и что еще интересного можно узнать в процессе копания во внутренностях тепловизора. Интересующихся прошу.
Все началось с моего увлечения страйкболом. Да-да, я не наигрался в детстве в войнушку, поэтому считаю вполне себе важным делом поехать в выходные пострелять 6-мм пластиковыми шарами в себе подобных. А поскольку вокруг дяди взрослые и все у них тоже серьезно, случается в страйкбольных играх ночная фаза. И наступает время, когда под каждым кустом и деревом начинает мерещиться противник, а в роли королей поля боя воцаряются ПНВ и тепловизоры. Точнее, их владельцы. Таковым захотел себя посчитать и я, но помешала, конечно, жаба.

3938e721c518433bbfbd4d1ad8ba2b42.png
А вот нате. Порог входа для тепловизоров — около 50 кРуб.

Просмотрев предложения, я впал в уныние, смешанное с отчаянием. За полсотни тыщ мы имеем базовую версию устройства с начинкою в виде матрицы 160×120 (спасибо, хоть экран внутри поставили VGA) и частотой обновления экрана <9 Гц. Но гугл в помощь, и вскоре мне явился сайт eevblog.com, неоднократно упоминавшийся уже и на этом ресурсе, с подробным рассказом на 100 страниц об интересном девайсе, сочетавшем в себе матрицу 208х156 точек, полностью доступную к применению, и весьма неплохую хакабельность: на тот момент, счастливым владельцам уже удалось накодить несколько относительно простых приложений на Питоне и С++ для получения картинки с той самой микроболометрической матрицы, выделяющей девайс среди себе подобных неплохим разрешением за вменяемые деньги. И да, версия для Android с рук б/у обошлась мне в два раза дешевле по сравнению с готовой Flir'овской трубой.
Но встал закономерный вопрос:, а что, собственно, с этим делать дальше? Идея бегать с телефоном по полям и лесам ночью не слишком прельщала, поэтому было решено создавать с нуля свой тепловизор, с блэкджеком и… ну вы понимаете. Сие есть отдельная история, и её я расскажу в посвященной статье, а то и нескольких — с кодом и железками —, а пока о том, что прибыв домой и воткнув свежеприобритенный девайс в одноплатник Odroid C1+ с накатанным наспех Андроидом, в скором времени я совершенно огорчился.
Девайс работал плохо. Во первых, на картинке были пятна, которые я вначале связал с загрязнениями линзы — как выяснилось позже, грязной была сама матрица и количество битых пикселей тоже не радовало. Во вторых, через пять минут матрица начинала сильно шуметь, качество картинки падало и использовать камеру так, как планировалось изначально, было просто невозможно.
Вывод: при приобретении Seek Thermal с рук, дайте камере поработать минут 5–10, чтобы оценить ее функцию после прогрева.

4971aff2f20e469597686f2d4ff352c8.png
Шум, аналогичный моему случаю. От угла изображения идет градиент, вызванный некорректной работой шторки (затвора)

На тот момент, у меня не было полного понимания, как бороться с возникшими проблемами, и я решил бороться как умею. Чтобы проверить, работает девайс или нет, было решено купить еще один. Может показаться расточительным и нелогичным —, но я предположил так: если проблема в софте (а как выяснилось, она частично была в софте — поскольку запускал я все на криво собранном Odroid/Android, не поддерживавшем апдейт официального приложения) — то у меня будут два тепловизора. Ну, а если нет — то, хотя бы, один.
Время шло, предложения б/у тепловизоров появлялись и исчезали, и вот однажды — о чудо! — явилось оно: человек решил продать купленный на один раз поиграться девайс. За половину (!) цены нового. Такое предложение я пропустить не мог, и, конечно же, пустился в погоню. За камерой в версии для iPhone. Ну да ладно, подумал я — переходник и все вопросы решены!

f7cc817a18614acfb1dfa878ba1c9590.png
Четвероногий друг — снято в яблочном приложении

А вот и нет. Сколько не бил я в бубен, заставить работать камеру через переходник lightning-microusb (и ведь найти то его была та еще задача, так, чтобы и USB, и lightning мама, и питание, и данные…) не удалось. Оставался один выход — лезть внутрь.
И я полез.

Видео не мое — использовал в качестве пособия по разборке, ну и для общего развития в области тепловизоров вообще и Seek Thermal в частности:


Хорошо, что есть такие люди как Майк. Во второй части разбор Seek Thermal до печатной платы — чувствительным гикам не смотреть…

Для разборки камеры Seek Thermal необходимо:
— камера Seek Thermal
— что-то плоское и твердое для вскрытия корпуса — шпатель, например — 2–3 шт. разных
— мультиметр — 1 шт.
— осциллограф или логический анализатор — опционально
— прямые руки — 1 пара

c5b15f68bb5040e3b91ac29a8f6fca71.png
Имея под рукой видео разборки, можно попробовать аккуратно раскрыть половинки корпуса из магниевого сплава, не сильно его попортив. Угадайте, какого цвета плата у девайса для iOS? :)

Вскрытие я начинал с края, дальнего от линзы. Защелок внутри нет, только несколько капель клея. Далее, передо мной стояла задача правильно интерпретировать разводку разъемов внутри iOS и Android версии камеры, и подключиться к соответствующим выводам на плате.
Я опасался, что придется перехватывать сигнал камеры на глубоком уровне — т.к. производители вполне могли впихнуть в интерфейс, ответственный за подключение к яблочным продуктам, еще и функцию обработки данных. Но в видео разборки упоминается, что единственное отличие между яблочной и неяблочной версией камеры — чип идентификации. Это означало, что контакты/точки подпайки на плате и разводка шлейфов, скорее всего, будут совпадать физически и функционально. Точку в вопросе поставила одинаковая версия платы (rev 2 от 30.09.2014) на обеих девайсах.

f30d6c7c1e094a46b874552dfb4fd8e5.png
Тот самый чип (квадратный справа). Тот самый чай шлейф

Недолго думая, я поменял местами шлейфы iOS и Android версий и с замиранием сердца запустил программу обработки данных с камеры (к тому моменту уже переписанную на Питоне для Raspberry Pi на основе кода товарища Cynfab отсюда).

04080ae68de44e6fa54d25f9e0f429f2.gif
Ура! Заработало!

Свежий тепловизор завелся сразу, показав более лучшее качество картинки. Что ж, отложим его для готового проекта, и займемся «старым» девайсом.

32fba41fbd1c4074aa2221160c1aefea.jpeg
Девайс без чипа идентификации ожидаемо не запустился при подключении к айфону — хотя и определился.

Кстати, работа тепловизора изнутри выглядит так:
b7373c53bb40411c9848ae351e920032.gif
В нормальном режиме затвор срабатывает каждые 1–8 сек для калибровки матрицы

Матрица Android-версии камеры оказалась сильно запылена. Её я продул сжатым воздухом — субъективно качество изображения немного (но не категорически) улучшилось.

ba298e8c135c48fdaa64a9da4d93cdbf.png
Тем не менее, при чтении картинки с матрицы присутствует некоторое количество «битых пискелей»

На «сырых» кадрах с камеры хорошо видна известная среди любящих ковырнуть поглубже пользователей Seek Thermal «патентная решетка» — гексагональный паттерн неработающих точек. Со слов некоторых пользователей с eevblog, это намеренно отключенные (отсутствующие?) пиксели матрицы — каждый 15-й, сделано для того, чтобы избежать возможных патентных споров с FLIR, обладающих патентом на микроболометрическую матрицу.

29c6e5120ab346cd96c3ba539c121249.png
Решетка «патентных» пикселей (картинка с eevblog)

Поскольку я не планирую подключать девайс к iOS-устройствам, шлейф с разъемом lightning мне не понадобится. Подключение можно осуществить, подпаявшись к весьма удобно расположенным выводам на самой плате камеры. В видео разбора есть очень хороший ракурс этого подключения (впрочем, я на всякий случай еще и прозвонил контакты мультиметром).

91c8cf6eafff477c9a0afe18a92e47f1.jpeg
Подключение (сверху вниз): USB V+, data +, data -, земля.

Подпаявшись к контактам, я вывел наружу уже полноценный «хвост» USB type A, который можно удобно воткнуть в компьютер, в том числе, в Raspberry Pi.

Что имеем в остатке:

  • два живых тепловизора с возможностью подключения к USB
  • понимание того, что родное приложение намного лучше справляется с обработкой картинки, нежели неофициальные
  • +1 к скиллу разборки-сборки девайсов без дымка
  • Если Вы решили провести подобную операцию со своим тепловизором, проводите ее на свой страх и риск:)

Смотрите в следующих сериях: как подружить Seek Thermal с Raspberry Pi, а Raspberry Pi с экраном от Нокии; ковыряние в коде неофициального приложения, сырые картинки и недокументированные возможности, а также сборка вот этого всего в единый функционирующий прототип.

Ну и традиционно для статей о тепловизорах, селфи в микроволновом диапазоне:

Всем добра.

© Geektimes