Сборка тепловизора из смартфона пошаговая инструкция

Тепловизор своими руками из смартфона как сделать

Тепловизор своими руками из смартфона как сделать

Тепловизор на базе смартфона – это недорогая альтернатива промышленным устройствам, позволяющая фиксировать инфракрасное излучение с разрешением до 32×32 пикселей. Для сборки потребуется модуль AMG8833 (стоимость ~1500–2500 рублей), микроконтроллер ESP32 или Arduino Nano (от 500 рублей), линза Френеля с фокусным расстоянием 50–100 мм (200–400 рублей) и смартфон с поддержкой OTG. Модуль AMG8833 работает в диапазоне 5,6–14 мкм, обеспечивая точность ±2,5°C в пределах 0–80°C, что достаточно для бытовых задач: поиска утечек тепла, диагностики электрооборудования или проверки температуры поверхностей.

Ключевой этап – калибровка датчика. Без корректировки показания могут отклоняться на 5–10°C из-за влияния окружающей среды. Используйте эталонные источники тепла (например, емкость с водой при 36°C и 60°C) и программную компенсацию через библиотеку Adafruit_AMG88xx. Для ESP32 подойдет прошивка на базе Arduino IDE с передачей данных по Wi-Fi или Bluetooth, а для Arduino Nano – последовательный интерфейс через OTG. Учтите, что линза Френеля снижает разрешение, но увеличивает дальность обнаружения до 3–5 метров.

Программная часть требует минимальных навыков программирования. Для Android подойдет приложение Thermal Camera (GitHub) или самописный скрипт на Python с использованием OpenCV для визуализации. На iOS ограничений больше: потребуется jailbreak или сторонние SDK (например, Flir One SDK), но можно обойтись веб-интерфейсом через WebSerial API. Оптимальный вариант – ESP32 с веб-сервером, отображающим тепловую карту в браузере смартфона в реальном времени.

Типичные ошибки сборки: неправильное расположение линзы (должна находиться на расстоянии 1,5–2 см от датчика), отсутствие экранирования от электромагнитных помех (используйте фольгу или металлический корпус) и игнорирование температурного дрейфа датчика. Для стабильной работы питайте модуль от отдельного источника 3,3 В с током не менее 50 мА. Готовое устройство весит 100–150 грамм и помещается в корпус от старого фотоаппарата или 3D-печатный кейс.

Сборка тепловизора из смартфона: пошаговая инструкция

Сборка тепловизора из смартфона: пошаговая инструкция

Основные этапы сборки:

  1. Распакуйте FLIR Lepton 3.5 и проверьте целостность линзы – пыль или царапины исказят данные. Подключите модуль к Pico через макетную плату, соблюдая распиновку: SCLK на GP18, MOSI на GP19, MISO на GP16, CS на GP17.
  2. Загрузите прошивку на Pico с помощью Thonny IDE. Используйте скрипт на MicroPython для захвата кадров с модуля и передачи их на смартфон. Пример кода для инициализации SPI:
    import machine
    spi = machine.SPI(0, baudrate=20000000, polarity=0, phase=0, sck=machine.Pin(18), mosi=machine.Pin(19), miso=machine.Pin(16))
    cs = machine.Pin(17, machine.Pin.OUT)
    
  3. Настройте передачу данных: для Wi-Fi используйте библиотеку network на Pico, для USB – pyusb на смартфоне. Калибруйте модуль с помощью черного тела (например, куска картона, нагретого до 50°C) – отклонение не должно превышать ±2°C.

После сборки протестируйте устройство на объектах с известной температурой: лед (0°C), кипящая вода (100°C), человеческая кожа (36.6°C). Если показания нестабильны, проверьте контакты SPI и питание – модуль требует стабильных 3.3В. Для улучшения точности добавьте внешний датчик температуры окружающей среды (например, DS18B20) и корректируйте данные в скрипте. Избегайте прямых солнечных лучей – они перегревают матрицу и вызывают артефакты.

Выбор подходящего смартфона и датчика для тепловизионной насадки

Выбор подходящего смартфона и датчика для тепловизионной насадки

Смартфон должен соответствовать минимальным требованиям для работы с тепловизионными модулями: процессор не ниже Snapdragon 660 или аналог (например, Kirin 710, Exynos 9610), 4 ГБ оперативной памяти и поддержка USB OTG. Важна совместимость с Android 8.0 и выше – более старые версии могут некорректно обрабатывать поток данных с датчика. Избегайте устройств с закрытыми прошивками (например, некоторые модели Huawei после 2020 года), так как они ограничивают доступ к USB-порту. Проверьте наличие разъёма USB-C или micro-USB с поддержкой хост-режима – без этого подключение внешнего датчика невозможно.

Для тепловизионной насадки подходят датчики на основе микроболометров: FLIR Lepton 3.5 (разрешение 160×120, чувствительность 50 мК), Seek Thermal CompactPRO (320×240, 70 мК) или MLX90640 (32×24, 100 мК). Первый вариант – оптимальный баланс цены и качества, второй даёт более детализированную картинку, третий подходит для бюджетных решений. Обратите внимание на интерфейс: Lepton и Seek работают через SPI или USB, MLX90640 – только через I2C. Для смартфона потребуется адаптер с преобразователем сигнала (например, FT232H для USB-SPI).

При выборе смартфона учитывайте размер и разрешение экрана. Модели с диагональю от 6 дюймов и разрешением Full HD+ (1080×2280 и выше) обеспечат комфортный просмотр тепловизионной картинки без потери деталей. Избегайте устройств с AMOLED-дисплеями, если планируете использовать насадку при ярком солнечном свете – такие экраны хуже читаются на улице. Примеры подходящих моделей: Xiaomi Redmi Note 10 Pro, Samsung Galaxy A52, OnePlus Nord N20.

  • Проверьте совместимость датчика с выбранным смартфоном через форумы (например, XDA Developers) или документацию производителя модуля.
  • Для работы с MLX90640 потребуется отдельный микроконтроллер (Arduino Nano, STM32) для оцифровки сигнала перед передачей на смартфон.
  • Избегайте смартфонов с нестандартными драйверами USB – они могут блокировать подключение внешних устройств.
  • При покупке б/у датчика уточните, не подвергался ли он перегреву – это снижает точность измерений.

Необходимые инструменты и материалы для сборки своими руками

Для сборки тепловизора из смартфона потребуется модуль FLIR Lepton 2.5 или 3.5 – компактный микроболометр с разрешением 80×60 или 160×120 пикселей соответственно. Модели отличаются чувствительностью: Lepton 2.5 работает в диапазоне 8–14 мкм, Lepton 3.5 – 7,5–13,5 мкм. Выбор зависит от задач: для бытовых измерений достаточно первой версии, для профессиональных – второй. Обратите внимание на интерфейс: Lepton 2.5 использует SPI, Lepton 3.5 – SPI или I2C. Покупайте модуль у проверенных поставщиков (например, GroupGets, Digi-Key), чтобы избежать подделок с заниженными характеристиками.

Микроконтроллер – ключевой элемент, отвечающий за обработку данных с модуля. Оптимальный вариант – Raspberry Pi Pico или STM32F401 (например, плата Black Pill). Pico подходит для новичков благодаря поддержке MicroPython и низкой стоимости, STM32F401 обеспечивает более высокую производительность и гибкость в настройке тактовой частоты. Для работы с Lepton 3.5 потребуется контроллер с поддержкой I2C на скорости не менее 400 кГц. Не используйте Arduino Uno или Nano – их вычислительных мощностей недостаточно для обработки потока данных в реальном времени.

Для подключения модуля к смартфону понадобится OTG-адаптер с поддержкой USB Host Mode. Выбирайте модели с металлическим корпусом и экранированным кабелем, чтобы минимизировать помехи. Длина кабеля не должна превышать 30 см – это критично для стабильной передачи данных. Если планируете использовать беспроводное соединение, рассмотрите модуль ESP32-S2 с поддержкой Wi-Fi и Bluetooth, но учтите, что это увеличит энергопотребление и усложнит схему.

Оптика – важнейший компонент, влияющий на качество изображения. Для Lepton подойдет линза из германия или халькогенидного стекла с фокусным расстоянием 10–15 мм. Германий обеспечивает лучшее пропускание ИК-излучения (до 95%), но дороже и тяжелее. Халькогенидное стекло дешевле, но имеет меньший коэффициент пропускания (около 70%). Избегайте пластиковых линз – они не пропускают длинноволновое ИК-излучение. Для крепления линзы используйте алюминиевый держатель с резьбой M12 или M14, чтобы обеспечить точную фокусировку.

Питание модуля Lepton требует стабильного напряжения 3,3 В при токе до 150 мА. Используйте линейный стабилизатор LD1117V33 или импульсный TPS62743 для минимизации тепловых потерь. Для Raspberry Pi Pico подойдет батарея Li-Po на 3,7 В емкостью не менее 1000 мА·ч, для STM32 – 5 В через USB. Избегайте питания от смартфона – его выходной ток ограничен, что приведет к нестабильной работе модуля. Для автономной работы добавьте модуль зарядки TP4056 с защитой от переразряда.

Для механической сборки потребуются: 3D-печатный корпус (модели доступны на Thingiverse, например, «FLIR Lepton Case»), винты M2×5 мм из нержавеющей стали, термопаста Arctic MX-4 для отвода тепла от модуля, и двусторонний скотч 3M VHB для крепления компонентов. Корпус должен иметь вентиляционные отверстия диаметром 2–3 мм для предотвращения перегрева. Если нет доступа к 3D-принтеру, используйте алюминиевый профиль 20×20 мм и текстолитовые пластины толщиной 1,5 мм.

Программное обеспечение включает библиотеки для работы с модулем: для Raspberry Pi Pico – pico-lepton (GitHub), для STM32 – Lepton-SDK от FLIR. Для смартфона потребуется приложение с поддержкой USB-камеры, например, «USB Camera» для Android или «ProCam» для iOS. Для обработки данных используйте Python-скрипты с библиотекой OpenCV (версия 4.5 и выше) или специализированные программы вроде «ThermViewer». Убедитесь, что прошивка модуля Lepton обновлена до последней версии через FLIR Tools.

Дополнительные компоненты: резисторы 4,7 кОм (2 шт.) для подтяжки линий I2C, конденсаторы 0,1 мкФ (керамические) и 10 мкФ (танталовые) для фильтрации питания, разъемы JST-SH 1,0 мм для подключения модуля Lepton. Для калибровки тепловизора используйте черное тело с известной температурой (например, емкость с водой и термометром) или эталонный источник ИК-излучения. Избегайте использования бытовых предметов вроде ламп накаливания – их спектр не соответствует рабочему диапазону модуля.

Подключение и калибровка инфракрасного датчика к смартфону

Подключение и калибровка инфракрасного датчика к смартфону

Для подключения инфракрасного датчика MLX90640 или AMG8833 к смартфону потребуется микроконтроллер с поддержкой OTG, например, Arduino Nano или ESP32. Подключите датчик по I2C: SDA к пину A4 (Arduino) или GPIO21 (ESP32), SCL – к A5 или GPIO22 соответственно. Питание подавайте на 3,3 В, избегая 5 В – превышение напряжения выведет датчик из строя. Используйте экранированные провода длиной не более 30 см для минимизации помех.

На смартфоне установите приложение Serial USB Terminal или аналогичное для работы с COM-портом. Подключите микроконтроллер через OTG-адаптер, предварительно убедившись, что смартфон поддерживает режим хоста. В настройках приложения выберите скорость передачи 115200 бод для MLX90640 или 9600 бод для AMG8833. Если данные не отображаются, проверьте правильность подключения пинов и наличие драйверов CH340 для Arduino.

Калибровка начинается с компенсации температурного дрейфа. Поместите датчик в среду с известной температурой (например, 25°C) на 10 минут. Снимите показания и сравните их с эталонным термометром. Для MLX90640 используйте формулу коррекции: T_corrected = T_measured + (T_ref — T_measured) * 0.1, где T_ref – эталонная температура. Для AMG8833 примените смещение через регистр 0x0E, записав значение (T_ref — T_measured) * 10 в младший байт.

Устраните неравномерность чувствительности пикселей. Направьте датчик на однородный объект (лист алюминиевой фольги, нагретый до 40°C) и запишите матрицу показаний. Для каждого пикселя вычислите коэффициент коррекции: K = T_avg / T_pixel, где T_avg – средняя температура по матрице. Сохраните коэффициенты в EEPROM микроконтроллера и применяйте их при каждом измерении. Для AMG8833 используйте встроенную функцию компенсации, активировав бит 0x0F.

Проверьте линейность отклика датчика. Нагрейте объект от 20°C до 60°C с шагом 5°C, фиксируя показания. Постройте график зависимости измеренной температуры от эталонной. Если отклонение превышает 2°C, скорректируйте коэффициенты полиномом второй степени: T_calibrated = a * T_measured² + b * T_measured + c. Коэффициенты a, b, c определите методом наименьших квадратов с помощью Python-скрипта или Excel.

Минимизируйте влияние внешних помех. Закройте датчик экраном из алюминиевой фольги с отверстием для объектива, оставив зазор 2 мм. Исключите источники ИК-излучения (лампочки накаливания, нагреватели) в радиусе 1 метра. Для динамических сцен используйте усреднение по 5 кадрам – это снизит шум на 40%. В коде микроконтроллера добавьте фильтр скользящего среднего: T_filtered = (T_current + T_prev1 + T_prev2) / 3.

Завершите калибровку проверкой на реальных объектах. Направьте датчик на руку, чашку с горячей водой и окно. Сравните показания с контактным термометром. Допустимая погрешность для MLX90640 – ±1,5°C в диапазоне 0–50°C, для AMG8833 – ±2,5°C. Если результаты неудовлетворительны, повторите этапы компенсации дрейфа и коррекции пикселей. Сохраните профиль калибровки в памяти микроконтроллера для последующего использования.

Создание корпуса и крепления для стабильной фиксации камеры

Создание корпуса и крепления для стабильной фиксации камеры

Для корпуса подойдет алюминиевый профиль 20×20 мм или пластиковый кейс от старой электроники – например, от неработающего роутера или зарядного устройства. Разметьте отверстия под объектив тепловизионной насадки (диаметр 12–14 мм) и крепежные элементы с шагом 30 мм. Используйте сверло с алмазным напылением для пластика или ступенчатое сверло для металла, чтобы избежать сколов. Внутри корпуса закрепите термостойкий клей-герметик (например, Dow Corning 732) для фиксации оптики и предотвращения смещения при нагреве. Если корпус металлический, проложите между ним и смартфоном слой изоляции из силиконовой прокладки толщиной 1–1,5 мм, чтобы исключить короткое замыкание.

Крепление должно выдерживать вес смартфона (до 250 г) и вибрации при движении. Оптимальный вариант – регулируемый штатив с быстросъемным зажимом, например, Manfrotto PIXI EVO, или самодельный держатель из нейлоновых стяжек и алюминиевой пластины 3×50×100 мм. Просверлите в пластине отверстия под винты М3 и зафиксируйте ее на корпусе через резиновые демпферы (диаметр 8 мм, толщина 5 мм) для гашения вибраций. Для дополнительной стабильности прикрепите к нижней части корпуса магнитный держатель (неодимовый магнит 10×3 мм) – он позволит быстро зафиксировать устройство на металлических поверхностях без смещения.

Установка и настройка специализированного ПО для обработки данных

Установка и настройка специализированного ПО для обработки данных

Для работы с тепловизионными данными, полученными со смартфона, потребуется ПО с поддержкой форматов RAW или TIFF, содержащих температурные метки. Наиболее подходящие инструменты: FLIR Tools (для камер FLIR), Therm-App SDK (для Android-устройств с ИК-модулями) или открытое решение ThermImage (Python-библиотека). Скачайте дистрибутив с официальных сайтов – версии для Windows (FLIR Tools 6.4+) или Linux (ThermImage через pip). Убедитесь, что ваша система соответствует минимальным требованиям: 4 ГБ ОЗУ, двухъядерный процессор и 500 МБ свободного места на диске.

После установки запустите программу и импортируйте данные через интерфейс «File → Import → Thermal Image». Если используете ThermImage, выполните команду pip install thermimage в терминале, затем загрузите файл с помощью img = ThermImage.load("путь/к/файлу.tiff"). Для FLIR Tools активируйте лицензию через меню «Help → License Manager» – без неё доступна только базовая функциональность. При первом запуске настройте цветовую палитру: выберите «Iron» для высококонтрастного отображения или «Rainbow» для детализации температурных градиентов.

Калибровка ПО критична для точности измерений. В FLIR Tools откройте «Tools → Calibration» и укажите параметры окружающей среды: температуру воздуха (20–25°C по умолчанию), влажность (50%) и расстояние до объекта (0.5–1 м). Для ThermImage используйте метод img.calibrate(emissivity=0.95, distance=1.0), где коэффициент излучения (emissivity) зависит от материала: 0.95 для кожи, 0.85 для металла с покрытием. Сохраните настройки профиля, чтобы не повторять процедуру при каждом запуске.

Экспорт данных выполняйте в форматах CSV (для анализа в Excel) или PNG (для отчётов). В FLIR Tools выделите область интереса инструментом «Spot Meter», затем выберите «File → Export → Data Table». Для ThermImage используйте img.export_data("output.csv"). Убедитесь, что в настройках экспорта включены абсолютные температурные значения, а не относительные – это предотвратит искажение данных при дальнейшей обработке.

Ссылка на основную публикацию