РадиоКот >Схемы >Цифровые устройства >Измерительная техника >

Теги статьи: ТепловизорArduinoESP32

Тепловизор на Ардуино - это просто!

Автор: DYarm
Опубликовано 16.01.2023
Создано при помощи КотоРед.

    Хотелось бы рассказать о своём недавнем исследовании датчика иепловизора MLX90640. Несмотря на свои скромные показатели в разрешении матрицы, всего 32х24 пиксела, при должной обработке полученных с него данных, можно увидеть довольно интересную картинку.

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

    Ну а теперь к делу. Что же нужно, это конечно по моему скромному мнению, что бы увидеть результат? Ну во первых конечно сам датчик:

Пока есть порыв, быстренько заказываем его, у китайцев понятно дело. Порыв может пройти, жаба дело такое. Ну а когда этот шаг преодален, дальше хочешь ни хочешь, а придется заказать и все остальное. Заказываем дальше, дисплейный модуль. Думаю в загашнике есть у каждого, ну а у кого нет вот:

Отличный модуль, на контроллере ILI9341 с дисплеем разрешением 320х240 точек и диагональю 2.8". К тому же на модуле уже установлен слот для SD карты, которая в будущем нам ой как пригодиться.

    А теперь главное, контроллер. Тут можно долго ломать копья, но я уже пару лет как сделал для себя выбор. Это серия контроллеров ESP32. Почему они? Поясню в двух словах. Во первых мощь, во вторых доступность и уже не малая линейка оных под самые разные задачи. В третьих - цена. Да, было время и на первом месте для меня стояли контроллеры STM. Но цена и доступность, последнее время, мягко говоря не радует. Ну и самое главное, это великолепная поддержка ESP32 в среде разработки Ардуино. Нет, конечно, если вам хочется колупаться пол года с подобным проектом и денег куры не клюют, пожалуйста, STM, IAR и вперед и с песнями. Если же вам хочется сделать все быстро и красиво - Ардуино. С выходом стабильной версии 2.0 это стало не только просто, но еще и приятно. Опять лирика, да чтож такое!

    Итак, выбор пал на контроллер ESP32C3, это один из младших контроллеров семейства, похоже идущий на замену легендарному ESP8266. Почему? У нас довольно мало перефирии, нужен всего один порт SPI, для дисплея (и SD карточки в будущем), пару свободных ножек отданных под CS этих устройств, пару под управление дисплеем. Порт I2C, под датчик MLX90640, в общем то и все. Всего остального в этом процессоре с избытком. Ну и цена, в момент написания статьи это всего около 130 рублей на известном китайском ресурсе. Собственно вот он:

    Теперь схема. На Яндекс диск я вложил архив с демонстрационным проектом на Ардуино, а так же схема выполненная в DipTrace, вот ссылка на него. Выглядит это примерно так:

Как видите ничего сложного. В принципе не долго собрать ее "на коленке", просто распаяв проводками все необходимое. Схема нарисована в DipTrace, если открыть ее там, и зайти в свойство компонента, в поле datasheet будет ссылка на ресурс где тот или иной модуль приобретался.

    В архиве так же лежит и проект на Ардуино. Проект многофайловый, так что не пугайтесь, кто не в курсе что это такое. Просто запускаете любой ino файл в папке проекта и все остальное подхватится само. Проект выполнен на Ардуино версии 2.0.3, как устанавливать платы ESP (если у вас нет такого опыта) расписывать не буду, информации полно в интернете. Опишу лишь некоторые моменты связанные с загрузкой прошивки именно в эту плату. В разделе TOOLS, в пункте flash mode, установить режим работы DIO, иначе плата работать откажется. Так же необходимо в пункте Partition Scheme выбрать пункт minimal SPIFS (1.9MB APP with OTA).

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

Дисплей работает, датчик тепловизора определился, ура! Через три секунды увидим собственно визуализацию показаний температуры, а датчик выдает именно массив 32х24 температур, но уже в цвете:

 

 

   

 

 

 

 

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

    


Файлы:
Картинка в Demo режиме, Обработки нет.
Собранный тепловизор


Все вопросы в Форум.




Эти статьи вам тоже могут пригодиться:

Тепл0визор

Про Arduino IDE, загрузчики (bootloader), программаторы (avrdude.exe), фьюзы, HEX-файлы. В одном флаконе. Не претендуя на оригинальность.

Чиндогу на Aruino Leonardo (ATmega32U4) или зачем просто когда можно сложно!

Ардуино и OLED дисплей в автомобиле

Как просто прошивать Arduino из Atmel Studio 7

Измеритель загрязнения воздуха с использованием IoT с цифровой панелью управления на смартфоне

Модуль отображения информации МИРТ-830 из ардуины

Arduino Uno в качестве программатора AVR

И снова говорящие - поющие часы. Суперсрочно!

Барометр на Arduino Nano

Универсальный AVR-программатор на Arduino.

Монитор погоды на ESP32

Первичные Часы на ESP32