Тепловизор своими руками ардуино: Самодельный тепловизор на базе Arduino менее чем за 100$ / Хабр

Самодельный тепловизор на базе Arduino менее чем за 100$ / Хабр


Не секрет что каждый из нас хоть раз но мечтал получить в свои руки настоящий тепловизор. Ведь это уникальный шанс взглянуть на мир вокруг совершенно «другими глазами», увидеть скрытое и возможно даже глубже познать суть некоторых явлений. И единственной преградой к этой мечте служит цена подобных устройств. Несмотря на весь прогресс, она остается непомерно высокой для простого смертного.

Однако подобно лучу света в непроглядном мраке безысходности на свет появилась разработка двух студентов из Германии. Их устройство на базе микроконтроллера Arduino является довольно простым в изготовлении и существует аж с 2010 года.


Создателями данного чуда являются Макс Риттер и Марк Коул из города Миндельхейм, что в Германии. Их проект принес им награду на научно-техническом молодежном форуме в 2010 году, и с тех самых пор в сети имеются исходники с подробным описанием конструкции.


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

Итак, из компонентов для создания устройства, понадобится:

  • Старая веб-камера, разумеется, рабочая;
  • Микроконтроллер Arduino;
  • Сервоприводы, 2 штуки;
  • Датчик температуры MLX90614-BCI;
  • Китайская лазерная указка;
  • Корпуса для сервоприводов;
  • Любой штатив (оптимально).
  • Два резистора на 4.7кОм.

Веб-камера

Камера здесь будет являться источником исходной картинки а также своеобразным видоискателем для области сканирования. Подойдет практически любая дешевая вебка. Я нашел у себя в бардаке старую-добрую Logitech. Если же подходить к вопросу практично, чем меньше веб-камера по размерам, тем лучше. Поэтому огромный корпус моей старушки пришлось снять.

Сервоприводы и крепления

К этому моменту тоже можно подступиться с широким размахом. Нам понадобятся 2 сервопривода — один будет отвечать за движение по вертикали, второй по горизонтали соответственно. Учитывая, что на горизонтальном приводе держится и вертикальный и сама веб-камера, стоит взять более мощный. Хотя многие, уже сделавшие устройство спокойно пользуются одинаковыми маломощными.

Крепления для сервоприводов в оригинале называются «поворотно-наклонным механизмом» а у нас «Серво-кронштейном»

Я покупал все эти компоненты тут.

В сборе данный элемент конструкции выглядит примерно так:

Нижний привод крепится к штативу или другому корпусу/подставке туда же надо вставить и лазерную указку, к вертикальному сервоприводу приделывается веб-камера и датчик MLX90614 путем хитрых манипуляций с клеем или деталями от конструктора или например запчастями от старых электросчетчиков (как у меня).

Датчик температуры MLX90614-BCI

Самая сложная часть данной конструкции. Сложная в плане добычи. Найти его непросто (по крайней мере на отечественных сайтах) и он является самой дорогой частью конструкции. Сам я ждал его около двух месяцев, везли видимо из Китая. Подсказать где взять не смогу, ибо ту лавочку уже прикрыли. Автор проекта ссылается на Futureelectronics.

При выборе необходимо обратить особое внимание на последние буквы «BCI» в названии, что означает наличие у датчика насадки для обеспечения узкого поля зрения.

Выглядит он так:

Arduino и схема подключения

Схема подключения датчика и сервоприводов к микроконтроллеру простейшая:

Скетч для Arduino и программное обеспечение для работы с тепловизором можно скачать здесь.

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

После сборки всей схемы, ее можно поместить в корпус, и закрепить на штативе:


Небольшие пояснения:

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

Процесс съемки

Зачем здесь нужен китайский лазер и как же происходит процесс сканирования легко понять на примере моего шикарного ковра:


Не удивляйтесь, что ПО на русском, просто я уже некоторое время занимаюсь его доработкой под свои нужды, попутно изучая язык Java. К несчастью, пока моих знаний недостаточно для окончательного оформления готового продукта.

Итак, на картинке с веб-камеры есть две желтые точки и точка нашего лазера (снизу по центру). Вся калибровка состоит в том, чтобы выбрать координаты центра и левого нижнего угла будущей термограммы. В этом собственно и поможет лазерная указка:


Сегодняшнее ПО поддерживает всего два типа разрешения будущей картинки, в то время, как прошлая версия была богата на это дело, насчитывая шесть разных разрешений. Особенно было забавно получать сильно «пиксельные» картинки за 15 секунд. Думаю, разработчики осознали ненужность остальных режимов и убрали их, хотя программно они остались и могут быть активированы.

Результаты на десерт

Приведенные термограммы в различном разрешении.

Как греется нетбук:

Мой Кот:

Старый счетчик:

Новый щит:

Окно:

Мой друг в темной комнате перед компьютером

Применение

Из-за большого времени сканирования, данный прибор не подходит для проведения энергетического аудита (по крайней мере, для профессионального применения), этот вопрос рассмотрен в этой Статье (Англ. ).

Тем не менее, как мне кажется он мог бы стать отличным подспорьем для проверки на нагрев электрических соединений и силовых сборок. В моей практике (а я подрабатываю электриком) иногда использую этот тепловизор для оценки надежности соединений. Пирометр в данном случае проигрывает в наглядности.

Неудобства в работе связаны с жесткой привязкой прибора к компьютеру и необходимости всегда таскать нетбук. Какое-то время авторы вели разработку второй версии своего тепловизора, которая позиционировалась как обособленное устройство с другим датчиком температуры (который кстати использован в этом проекте) с собственным дисплеем и возможностью записи на карту памяти. Но к сожалению, как признался Макс Риттер, у него нет времени на завершение проекта.

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

Спасибо за внимание!
Официальная страница проекта (Англ.)

Делаем небюджетный тепловизор своими руками

Кто из посмотревших фильм «Хищник» не мечтал обладать термальным зрением как инопланетный охотник? В наше время это не сложно, но достаточно дорого: не каждый может позволить себе купить тепловизор, хотя в последнее десятилетие, с развитием технологий, они стали гораздо доступнее. Одним из многих проектов на ардуино, которым я был очарован и вовлечен в удивительный мир микроконтроллеров, был как раз тепловизор, если его можно так назвать. Устройство на основе однопиксельного бесконтактного датчика температуры и системы механической развертки хотя меня и сильно впечатлило, но я так и не повторил его, так как, честно сказать, скорость его работы совсем не впечатляла. К слову сказать, датчик MLX90614, использованный в том проекте, достаточно дорогой (по стоимости за пиксель) по сравнению с теми, речь о которых пойдет дальше.

Disclaimer

Топик должен был называться «делаем бюджетный тепловизор», но за то время, пока у меня не доходили до него руки, ситуация изменилась и он стал весьма небюджетным. О текущих ценах на комплектующие в конце статьи.


Тема тепловизоров меня захватила и я всегда с интересом следил за новостями в этой области электроники. Очевидно, чтобы не использовать систему механической развертки нужен датчик большего разрешения, я составил для себя список таких датчиков, но многие из них были недоступны для покупки. Еще недавно на просторах интернета можно было встретить истории, что продавец отказывался отправлять подобные датчики в нашу страну, считая их устройством двойного назначения. Когда же в свободной продаже на aliexpress появился модуль с датчиком AMG8833, а в сети появились проекты с его использованием, я не смог противостоять желанию получить его, хотя стоимость и превышала почти вдвое ежемесячный лимит, отведенный мною на покупки. Датчик был приобретен за 37$ (сейчас его можно купить за 28$). Конечно разрешение у сенсора очень низкое для какого бы то ни было практического использования в качестве тепловизора, но его достаточно, чтобы получить массу восторга, впервые взглянув на мир «глазами хищника».

«селфи» снятое на AMG8833


Вдоволь поэкспериментировав с AMG8833, я отложил его для будущего использования и стал думать о большем. Ведь все на том же aliexpress в продаже появились модули на базе сенсора MLX90640 с разрешением 32*24 и ценой в 60-70$. С таким разрешением возможно использовать его для каких то практических целей, ну и конечно поиграть серьезнее.

Особенности MLX90640:

— Диапазон рабочих температур от -40 до 85 ° C, позволяет использовать в сложных промышленных условиях

— Может измерять температуру объекта от -40 до 300 ° C

— Типичная точность измерения температуры целевого объекта 1 °, точность по всей шкале измерения

— NETD всего 0,1K RMS при частоте обновления 1 Гц

— Не требуется повторная калибровка для конкретных температурных требований, что обеспечивает большее удобство и снижает эксплуатационные расходы

— Два варианта поля зрения (FoV): стандартное (MLX90640BAB) 55 ° x35 ° и широкоугольное (MLX90640BAA) 110 ° x75 ° Матрица с широкоугольным полем зрения обладает меньшим шумом и большей точностью измерения.

— 4-контактный корпус TO39 с необходимой оптикой

— Цифровой интерфейс, совместимый с I²C, упрощающий интеграцию

Отдельно датчик можно было приобрести примерно за 55-60$ в зависимости от версии. Но мне интереснее модули с обвязкой. Есть несколько вариантов таких модулей:

1. Модули, включающие сам сенсор и его обвязку для питания и работы с микроконтроллером по шине I2C.


2. Модули для платформы M5STACK/M5STICK, такие модули содержат необходимую обвязку для питания сенсора и работы с микроконтроллером по шине I2C.


3. Модули с микроконтроллером, реализующим UART интерфейс. Для работы с таким модулем можно обойтись без внешнего микроконтроллера, подключив его к ПК через USB-UART конвертер, я встречал 2 варианта таких модулей. Программное обеспечение для ПК позволяет визуализировать исходное тепловое изображение с сенсора или с программной интерполяцией.


4. Следующим вариантом развития модулей с микроконтроллером являются модули, в которых реализован USB интерфейс и которые можно напрямую подключать к ПК, при этом сохранен UART интерфейс и доступна шина I2C самого сенсора. Для доступа к сенсору по I2C нужно замкнуть конденсатор сброса (который еще нужно найти).


5. Наконец последним вариантом является модуль Red Eye Camera, в котором также реализован USB интерфейс, но, насколько я понял, нет возможности получить сырые данные с сенсора по I2C, при этом доступен UART. Судя по картинкам на странице товара для данного модуля есть ПО для Android.


Мне хотелось иметь возможность для взаимодействия с сенсором по I2C, поэтому я выбрал модуль под номером 4, в котором есть эта возможность, а также реализован USB интерфейс. Со всевозможными скидками на распродаже 11.11.2019 г. этот модуль был приобретен за 54,31$.

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

К сожалению, не удалось найти никакой другой информации о данном модуле кроме представленной на странице товара: ни схемы, ни ПО. На модуле указано его название, версия и дата — «mlx_module v3.1.0 20190608. Но поиск по данному обозначению не дал никаких результатов. У всех продавцов одни и те же фото и описание товара.

Я не терял надежды, что драйвера под Windows найдутся автоматически, но чуда не произошло. При подключении в диспетчере устройств появилось новое неизвестное устройство с com-портом, после поиска драйверов оно было идентифицировано как трекбол, но драйвера не были правильно установлены. При этом в системе еще появляется com-порт. Я попытался использовать ПО от аналогичного модуля без usb, но безрезультатно: видимо протоколы обмена данными через UART у этих модулей отличаются. При последующих подключениях оно вообще не обнаруживалось.

Остался второй вариант использования данного модуля – подключение непосредственно к сенсору по шине I2C. Для этого, согласно информации на странице товара, необходимо замкнуть конденсатор сброса. Осталось найти его на плате среди десятка конденсаторов.

На плате установлены следующие компоненты:

— микроконтроллер STM32F301K6;

— USB-UART конвертер Ch440;

— стабилизатор напряжения;

— кварцевый резонатор;

— резисторы и конденсаторы.

Вид сверху.


Вид снизу.


Чтобы найти нужный конденсатор, пришлось изучить даташит на микроконтроллер STM32F301K6 и прозвонить саму плату. Конденсатор, подключенный к пину reset микроконтроллера STM32, выделен на фотографии красным. Потребовалась довольно тонкая работа, чтобы замкнуть его с помощью кусочка провода МГТФ.


Я проверил несколько примеров работы сенсора с ESP32. Для итоговой реализации я использовал в качестве управляющей платформы TTGO T-Watch, о которой можно узнать из моих обзоров: раз, два. Для подключения сенсора к T-Watch я использовал прото-шилд для Wemos D1 mini и угловые штырьковые гребенки. Получилось довольно компактно, конечно, корпус бы не помешал. Взяв за основу данный проект, я переделал его под TTGO T-Watch, а также добавил интерполяцию и возможность сохранения фотографий на microSD.

Пример сохраненных фото с «тепловизора».


Ещё несколько примеров фотографий

Фотографии сделаны до реализации интерполяции в разрешении 32*24 пикселей. А на видео уже пример работы с интерполяцией, с разрешением 64*48. Частота кадров составляет всего 4 кадра в секунду она зависит от частоты опроса датчика и задается программно, частоту можно увеличить до 32 при этом увеличится погрешность измерений.

Дополнительная информация

Я так же проверил работу сенсора MLX90640 c OpenMV


Несмотря на столь небольшое разрешение сенсора MLX90640 его вполне можно использовать для множества целей:

— поиск утечек тепла в доме, при утеплении лоджии проверено на личном опыте;

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

— контроль присутствия людей, там где нет возможности использовать видеокамеру, человека можно заметить с расстояния порядка 10 м;

— пожарная безопасность;

Функции и улучшения, которые я хотел бы добавить к «тепловизору»:

— переделать проект под большой дисплей с тачскрином;

— добавить поддержку LVGL и сделать красивый дизайн с меню;

— увеличить разрешение сохраняемых изображений;

— добавить возможность потоковой трансляции изображения по Wi-Fi.

Я хочу также реализовать следующие проекты на основе сенсора MLX9040:
— Мобильный тепловизор на основе ESP32.

— Мобильный тепловизор для андроид.

— Радиоуправляемый робот с термальным зрением.

— Камера наблюдения с режимом термальной съемки.

— Тепловизор с детектором лиц на базе kendryte k210.

— Шлем виртуальной реальности или очки с термокамерой.

P.S.

Ссылки
Скетч для Arduino IDE
Реализация интерполяции по Гауссу
Пример генерации файла *bmp на ESP32

P.S.S.

В следствие пандемии коронавируса цены на сенсор MLX90640 взлетели в несколько раз. На Aliexpress можно найти модуль примерно за 200$. В конце 2019 г. компания Sipeed обещала выпустить в скором времени модуль термокамеры с разрешением 32*32 на базе сенсора от Heimann за ~ 50$, но опять же из-за пандемии этим обещаниям не суждено было сбыться. Надеюсь в будущем ситуация улучшится.

Тепловизионная камера Arduino DIY

Опубликовано  11 июля 2016 г.