Всем привет!
Пришла зима, а с ней и задача проверить теплоизолирующие свойства
MLX90640. Что это?
А это, собственно, тепловизионная матрица с микроконтроллером на борту. Производства ранее неизвестной мне фирмы Melexis. Тепловизионная матрица имеет размерность 32 на 24 пикселя. Это немного, но при интерполяции изображения вроде как достаточно, чтобы хоть что-нибудь разглядеть.
Сенсор выпускается в двух модификациях, корпуса которых отличаются углом обзора матрицы. Более приземистая конструкция A обозревает окружающий мир под углом 110 (по горизонтали) на 75 (по вертикали) градусов. B — под 55 на 37,5 градусов соответственно. Корпус устройства имеет только четыре вывода — два для питания, два для общения с управляющим устройством по I2C интерфейсу. Даташит для заинтересовавшихся можно скачать здесь.
А что тогда такое GY-MCU90640?
Китайские товарищи ставят MLX90640 на плату с еще одним микроконтроллером на борту (STM32F103). По всей видимости, для более простого управления матрицей. Называется всё это хозяйство GY-MCU90640. И стОит на момент приобретения (конец декабря 2018 года) в районе 5 тыс. руб. Выглядит следующим образом:
Как можно заметить, есть две разновидности плат, с узко- или широкоугольной версией сенсора на борту.
Какая из версий подойдет лучше всего? Хороший вопрос, к сожалению, возник он у меня только после того, как модуль был уже заказан и получен. Почему-то в момент заказа я не обратил внимания на эти нюансы. А зря.
Более широкоугольная версия будет хороша на самоходных роботах или в системах безопасности (поле зрения будет больше). Согласно даташиту, она обладает также меньшим шумом и большей точностью измерения.
Но для задач визуализации я бы больше рекомендовал более «дальнобойную» версию B. По одной очень значимой причине. В перспективе при съемке её можно разворачивать (вручную или на платформе с приводом) и делать составные «фото», увеличивая тем самым более чем скромное разрешение в 32 на 24 пикселя. Собирать тепловизионные снимки 64 на 96 пикселей, например… Ну да ладно, в дальнейшем по тексту фото будут с моей широкоугольной версии A.
Подключение к Raspberry PI
Управлять тепловизионным модулем можно двумя способами:
- Закоротить перемычку «SET» на плате и по I2C обращаться напрямую к внутреннему микроконтроллеру MLX90640.
- Оставить перемычку в покое и общаться с модулем через установленный на плате STM32F103 через RS-232 подобный интерфейс.
Если вы пишете на C++, наверное, будет удобнее проигнорировать лишний микроконтроллер, закоротить перемычку и воспользоваться API от производителя, которое лежит вот здесь.
Скромным питонистам тоже можно пойти первым путём. Вроде как есть пара библиотек на Python (здесь и здесь). Но у меня, к сожалению, с ходу ни одна не заработала.
Продвинутым питонистам можно в принципе написать драйвер управления модулем на Питоне. Процедура получения кадра подробно расписана в даташите. Но тогда придется прописывать все калибровочные процедуры, что кажется слегка обременительным. Поэтому пришлось пойти вторым путем. Он оказался умеренно тернистым, но вполне проходимым.
Благодаря прозорливости китайских инженеров или просто счастливому стечению обстоятельств у платки оказалось очень удачное расположение выводов:
Осталось только поставить колодку и вставить платку в разъем малины. На плате установлен преобразователь 5 в 3 Вольта, поэтому нежным Rx и Tx выводам Raspberry вроде как ничего не угрожает.
Надо добавить, что подключение по первому варианту тоже возможно, но требует бОльших трудозатрат и паяльной сноровки. Плату нужно ставить с другой стороны разъема Raspberry (изображено на заглавной фотографии этого поста).
Софт
На известном китайском сайте для доступа к GY-MCU90640 предлагается вот такое чудо:
По всей видимости, должно быть и какое-то описание протокола взаимодействия с установленным на плате микроконтроллером, по которому сей программный продукт работает! После недолгого общения с продавцом платки (респект этим уважаемым господам) таковой протокол мне и был выслан. Он оказался в pdf и на чистом китайском языке.
Благодаря переводчику Гугла и активному копипастингу примерно через час-полтора протокол был расшифрован. Надо будет не забыть выложить на Github, кстати. Оказалось, что платка понимает шесть базовых команд, среди которых есть запрос кадра по COM порту.
Каждый пиксель матрицы — это, по сути, значение температуры объекта, на который этот пиксель смотрит. Значение температуры в градусах Цельсия, умноженных на 100 (двухбайтное число). Собственно, есть даже специальный режим, в котором платка будет слать кадры с матрицы на Raspberry 4 раза в секунду.
import serial, time
import datetime as dt
import numpy as np
import cv2
# function to get Emissivity from MCU
def get_emissivity():
ser.write(serial.to_bytes([0xA5,0x55,0x01,0xFB]))
read = ser.read(4)
return read[2]/100
# function to get temperatures from MCU (Celsius degrees x 100)
def get_temp_array(d):
# getting ambient temperature
T_a = (int(d[1540]) + int(d[1541])*256)/100
# getting raw array of pixels temperature
raw_data = d[4:1540]
T_array = np.frombuffer(raw_data, dtype=np.uint16)
return T_a, T_array
# function to convert temperatures to pixels on image
def td_to_image(f):
norm = np.uint8((f/100 - Tmin)*255/(Tmax-Tmin))
norm.shape = (24,32)
return norm
########################### Main cycle #################################
# Color map range
Tmax = 40
Tmin = 20
print ('Configuring Serial port')
ser = serial.Serial ('/dev/serial0')
ser.baudrate = 115200
# set frequency of module to 4 Hz
ser.write(serial.to_bytes([0xA5,0x25,0x01,0xCB]))
time.sleep(0.1)
# Starting automatic data colection
ser.write(serial.to_bytes([0xA5,0x35,0x02,0xDC]))
t0 = time.time()
try:
while True:
# waiting for data frame
data = ser.read(1544)
# The data is ready, let's handle it!
Ta, temp_array = get_temp_array(data)
ta_img = td_to_image(temp_array)
# Image processing
img = cv2.applyColorMap(ta_img, cv2.COLORMAP_JET)
img = cv2.resize(img, (320,240), interpolation = cv2.INTER_CUBIC)
img = cv2.flip(img, 1)
text = 'Tmin = {:+.1f} Tmax = {:+.1f} FPS = {:.2f}'.format(temp_array.min()/100, temp_array.max()/100, 1/(time.time() - t0))
cv2.putText(img, text, (5, 15), cv2.FONT_HERSHEY_SIMPLEX, 0.45, (0, 0, 0), 1)
cv2.imshow('Output', img)
# if 's' is pressed - saving of picture
key = cv2.waitKey(1) & 0xFF
if key == ord("s"):
fname = 'pic_' + dt.datetime.now().strftime('%Y-%m-%d_%H-%M-%S') + '.jpg'
cv2.imwrite(fname, img)
print('Saving image ', fname)
t0 = time.time()
except KeyboardInterrupt:
# to terminate the cycle
ser.write(serial.to_bytes([0xA5,0x35,0x01,0xDB]))
ser.close()
cv2.destroyAllWindows()
print(' Stopped')
# just in case
ser.close()
cv2.destroyAllWindows()
Результаты
Скрипт опрашивает тепловизионную матрицу и выводит кадры на консоль монитора, на который подключен Raspberry PI, 4 раза в секунду. Этого достаточно для того, чтобы не испытывать большого дискомфорта при съемке объектов. Для визуализации кадра используется пакет OpenCV. При нажатии на кнопку «s» в папку со скриптом сохраняются тепловизионные «тепловые карты» в формате jpg.
Для большей информативности я вывел минимальную и максимальную температуры на кадре. То есть глядя на окраску, можно видеть какая примерно температура у наиболее разогретых или охлажденных предметов. Погрешность измерения — примерно градус с бОльшую сторону.
Тепловой диапазон задан от 20 до 40 градусов. Выход из скрипта по нажатию Ctrl + C. Из-за реализованного протокола платы (температура представлена unsigned integer) тепловизор может измерять только положительные температуры. Похоже, для измерения отрицательных нужно будет адресовать сенсор уже напрямую.
Скрипт работает примерно одинаково и на Raspberry Pi Zero W и на Pi 3 B+. Я установил VNC сервер на смартфон. Таким образом, взяв в руки малину, подключенную к powerbank'у и смарфтон с запущенным VNC можно получить переносной тепловизор с возможностью сохранения тепловых снимков. Возможно, это не совсем удобно, но вполне функционально.
После первого запуска возможно некорректное измерение максимальной температуры. В этом случае нужно выйти из скрипта и запустить повторно.
Вот, собственно, и всё на сегодня. Эксперимент с самодельным тепловизором получился удачным. С помощью данного девайса вполне можно провести тепловизионное обследование дома своими силами, например. Если у кого-то возникнут дополнительные мысли насчет областей применения подобных штук, добро пожаловать в комментарии.
Всем удачной трудовой недели и до новых встреч!
Комментарии (142)
tuxi
14.01.2019 09:23А снаружи дома, углы и оконные пооемы пробовали проверять?
Walker2000
14.01.2019 09:25Пока не пробовал, но в планах есть.
agat000
14.01.2019 09:28В принципе такой маленький девайс спокойно встанет на коптер. Для того же обследования зданий и теплотрасс.
«Молодцы, китайцы»(с)Aquahawk
14.01.2019 09:34Ну для этого лучше поюзать девайсы с лучшим разрешением. Интересно что за матрица стоит в Seek Thermal CompactPRO, заявляют 320*240 15Fps.
Walker2000
14.01.2019 09:46Ранее такие матрицы уже считались изделиями спецназначения ) Но, если девайс в открытой продаже, то, наверное и матрицу где-то можно купить. Пока из доступного я натыкался на такую: ru.aliexpress.com/item/FLIR/32872035004.html. Но разрешение там похуже, конечно.
uastalker
14.01.2019 11:00Перед новым годом заказывал себе (в Украину) SeekThermal Сompact с ибэй. Цена чуть выше чем у этого чуда, но разрешение намного веселей. Конкретно в моем случае обошлось 120$ в коробке с кейсом и т.д. С виду почти не юзаный. Пока мониторил, уходили они и по цене <100$. Так что хз зачем заморачиваться. И да, никаких претензий на таможне не было, хотя везде было указано что это тепловизор.
Walker2000
14.01.2019 11:11Ну да, если стоит задача взять не за дорого полнофункциональное устройство, то это оптимальный вариант. Описанная в посте плата хороша тем, что на её можно встраивать в какие-то простые решения по компьютерному зрению. Ну и с тепловизионной съемкой она справилась довольно неплохо.
un1t
14.01.2019 14:01Были истории когда кто-то заказал устройство с али и успешно его получил, а при попытке продать его на авито получил уже срок. Так что если у таможни не было вопросов это еще ничего не значит, не все посылки видимо проверяют.
Любое устройство можно расценить как спецназначения, если для него нет сертификата. Закон написан очень расплывчато.
agat000
15.01.2019 12:09Выше разрешение — дороже девайс. А вешать дорогое на такую ненадежную штуку как коптер — жалко. Ну, до 300 бкс, наверное еще можно.
Seek Thermal CompactPRO
Почитал описание:
Прочный корпус из магния.
Почему то подумалось про систему самоуничтожения — поцарапал камеру и она сгорела вместе со смартфоном.Walker2000 Автор
15.01.2019 12:37Коптер должен быть довольно крупный. Вместе с таким тепловизором нужно возить еще и смартфон.
smart_alex
14.01.2019 09:42Насколько я понял, для съёма собственно изображения с матрицы тяжёлая артиллерия в виде Raspberry PI не нужна — можно обойтись и микроконтроллером, пусть с чуть более низкой частотой обновления кадров. (С визуализацией хоть на дисплее, хоть в веб-интерфейсе тоже проблем нет.) Или мощность Raspberry PI это необходимое условие работы с этими матрицами?
Walker2000
14.01.2019 09:49Если не напрямую с датчиком общаться, а использовать посредника в виде STM32F103, то можно и на ESP8266 запустить по идее. С Raspberry просто удобнее отлаживать. Можно за выходные как раз успеть всё запустить и посмотреть — как работает.
smart_alex
14.01.2019 09:55С Raspberry просто удобнее отлаживать.
Это кому как. :) Кому-то сотворить что-то с микроконтроллером — не проблема и работать очень удобно.
ElectricFromUfa
16.01.2019 05:07Как раз работаю сейчас с MLX90640 с микроконтроллером. Исходники API от Melexis можно использовать практически без изменений, нужно реализовать только 2 функции — чтения и записи по i2c. Единственное, если не трогать реализацию API, нужно довольно много ОЗУ в микроконтроллере (порядка 3-4 Кб, точно не считал)
roboter
14.01.2019 09:54А исходники прошивки stm32 Китай предоставляет?
Walker2000
14.01.2019 10:00Не думаю. Но они и не нужны вроде как. Если делать что-то более серьезное, проще не разбираться с их исходниками, а взять исходники MXL90640.
SH_Alexey
14.01.2019 10:18Понимаю что не так дорого как Flir, но не лучше ли на иностранной барахолке купить Flir Lepton за 15К. При том что у него 80?60 точек и 8 fps против 32x24 и 1 fps у MLX90640?
Walker2000
14.01.2019 10:21Ну смотря для каких задач. MLX удобен тем, что можно писать код и страивать модуль в свои какие-то решения.
SH_Alexey
14.01.2019 10:23Flir Lepton тоже модуль для DIYщиков и так же в интернетах есть примеры использования со всякими малинами и прочими одноплатниками.
Walker2000
14.01.2019 10:35А, нашел. Да, можно и такой датчик запустить в принципе. Разрешение получше будет, но и цена тоже. Не у верен, что для задачи, которая может оказаться разовой, имеет смысл закладываться на более дорогое решение. Стоимость описанного в статье модуля сопоставима со стоимостью услуги по тепловизионному обследованию в Москве. И свою задачу он выполнил в принципе.
da-nie
14.01.2019 10:38Да чего его запускать… :) Вот оно для stm32.
По цене с обвязкой выйдет раза в 2-2.5 дороже чем
И стОит на момент приобретения (конец декабря 2018 года) в районе 5 тыс. руб.
da-nie
14.01.2019 10:36Он, если брать сломанный flir one gen 2, выйдет тысяч в 8 с разрешением 160x120 и 9 Гц и ещё три тысячи за плату-переходник (но можно и свою развести — кроватка для лептона у вас будет из тепловизора).
Walker2000
14.01.2019 10:38Спасибо за совет. Если надумаю сделать более продвинутый тепловизор, не примину им воспользоваться )
alexk24
14.01.2019 10:42А его можно приобрести с гарантированно рабочим сенсором?
Какие поломки для него типичны?da-nie
14.01.2019 10:51Для него типичны отказы платы с контроллером (плохая пайка, дохлый аккумулятор и т.д.). Дохлый сенсор — это должно очень не повезти (сунули в 220 В вместо +5 для зарядки). Я про такое не слышал пока что. На eeevblog есть тема где-то, там автор восстанавливал практически все дохлые flir one gen 2.
alexk24
14.01.2019 10:59Спасибо. Это действительно перспективно.
Правда на данный момент я их не нашел. Ну и как я понимаю брать его нужно не в штатах т.к. оттуда не получится вывести — они запрещены к перевозке у всех посредников.da-nie
14.01.2019 11:07Надо искать дефектный на ebay. Обычно, их из Германии выбрасывают волнами. В прошлом году выбрасывали сразу по несколько штук. Но брать надо только Flir One Gen 2 (!) (ну или Gen 3 Pro). У него датчик 160x120. У обычного только 80x60.
Из США мне два года назад исправный прислали, но шлют ли сейчас не знаю.
DolinEA
14.01.2019 15:41Там все зависит от разрешения матрицы.
Простые должны быть доступны для отправки.da-nie
14.01.2019 15:53Они и доступны. Просто посредники не желают связываться с перевозкой таких тепловизоров. Мне лично отправляли обычной почтой США и всё пришло. А вот всякие «бандерольки» отказываются пересылать.
ToSHiC
14.01.2019 23:17Вообще Melexis крутые ИК сенсоры делает, конкретно у этого Programmable refresh rate 0.5Hz…64Hz. То, что китайцы так мало смогли с помощью stm32 прокачивать — это уже их проблемы, кажется. Шина i2c, питается от 3 вольт — то, что надо, чтобы напрямую к малице цеплять.
Walker2000
14.01.2019 23:27Да, следующим шагом надо будет напрямую подсоединяться. Думаю только, что при 64 Гц из-за шумов мало что удастся различить. Кстати, 64 Гц — это частота получения полукадра. То есть для получения полного кадра будет 32.
SH_Alexey
15.01.2019 09:24Видел в даташите, но странно почему китайцы решили так занизить скорость, при том что stm32 позволяет. В документации нет описания скорости реакции матрицы при разных внешних факторах. Возможно 64 Гц это максимальная скорость опроса матрицы, но не ее скорость работы во всем диапазоне условий эксплуатации.
Walker2000
15.01.2019 09:34На самом деле непонятно, что они зашили в микроконтроллер и какими соображениями руководствовались. В документации на китайскую плату (в которой STM стоИт) сказано, что максимальная скорость обновления изображения 8 Гц при скорости COM порта 460800 bps. Это режим у меня почему-то не пошел. Но на 115200 реально получается 4 Гц вместо 2-ух, которые заявлены в документации. С какой частотой они опрашивают MLX, не могу сказать, осциллографа под рукой нет. Будет время, надо будет попробовать всё таки наваять драйвер, который обращается напрямую к MLX. Так можно будет получить от сенсора максимальный fps.
Но их прошивка сильно упрощает старт работы с устройством и понимание логики его работы, на мой взгляд. В этом отношении они молодцы.ToSHiC
15.01.2019 11:23У Melexis есть драйвер (правда какой-то кривоватый): github.com/melexis/mlx90640-library
ToSHiC
15.01.2019 11:21Не, там всё хорошо, только погрешность растёт, в даташите есть график. Вроде, при 64 герцах получается чуть больше 1 градуса погрешности. Но в том же даташите есть, что если хочется измерять абсолютные величины — то надо после подачи питания подождать 4 минуты, чтобы корпус и матрица равномерно прогрелись и не вносили искажения.
Walker2000 Автор
15.01.2019 11:33Тут всё как с матрицей для обычных камер, если более часто опрашиваете пиксели (уменьшаете выдержку) изображение становится более зашумленным. На графике отложено не абсолютное отклонение погрешности, а среднеквадратичное. То есть на практике соседние пиксели начнут прыгать относительно друг друга на плюс минус 1 градус, насколько я понимаю. Это очень сильно искажает картинку, когда смотришь на предметы, температура которых отличается всего на 10 градусов.
При этом, если смотреть на сильно нагретый предмет (чайник кипящий, например), то тогда шум в этот градус градус уже не будет заметен. Для этих случаев 64 Гц будут давать вполне нормальную картинку.
Да, 4 минуты нужны именно для точности измерения абсолютных величин.
ElectricFromUfa
16.01.2019 05:14Насколько я понял даташит на mlx90640, каждый герц увеличивает шум на 0.1 градус
Walker2000 Автор
16.01.2019 10:17Зависимость не настолько сильная. Она не линейная и разная для версий с разным углом обзора.
CHolfield
14.01.2019 10:21Оно работает по I2C, следовательно, есть теоретическая возможность повесить на шину несколько таких штук. Китайцев можно попросить, чтобы разные адреса зашили в stm32. Не знаю, зачем это делать, просто в голову пришло)
ElectricFromUfa
16.01.2019 05:15сам mlx90640 тоже работает по i2c и у него программно свободно меняется i2c-адрес
alexk24
14.01.2019 10:34А какой угол обзора по вашему будет удобнее? A или B модель брать?
Walker2000
14.01.2019 10:36Я в посте немного затронул проблему выбора ) А что Вы планируете делать с матрицей?
alexk24
14.01.2019 10:46Общее применение: «играться». Возможно ручной тепловизор.
Склоняюсь к узкоугольной камере. Но у вас широкоугольная версия и в принципе изображения меня вроде устраивают.
Walker2000
14.01.2019 10:57Ну с широкоугольной версией тепловизионную съемку всё-таки не очень удобно. Для того, чтобы посмотреть на конкретный стык между брёвнами, например, нужно приближать матрицу к стене сантиметров на 30...40. Я не имел дела с узкоугольной матрицей, но мне кажется, что для этой задачи она подошла бы лучше.
Sing1e
14.01.2019 11:02Для повышения детализации можно использовать систему с двумя камерами. Первая камера, в нашем случае, это тепловизионная матрица, которая даёт информацию о цвете, а вторая — ч/б камера с более высоким разрешением, которая даёт детализацию. Подобная схема, например, используется в некоторых флагманах Huawei.
Walker2000
14.01.2019 11:04Да, я тоже подумываю об этом. Нужно подобрать камеру с углом обзора немного большим, чем у тепловизионной матрицы и поставить их на одно основание. Потом можно будет снимать с них кадры последовательно и обрабатывать изображения совместно в том же OpenCV.
CHolfield
14.01.2019 11:34А на каком расстоянии эта штука вообще работает, ее есть смысл ставить например на коптер? нашел только temperature range, расстояния нет, может проглядел(
Мысль о совмещении изображений с двух камер — записал, надо подумать.Walker2000
14.01.2019 11:44Ну конкретно этой матрицей нужно смотреть начиная с метра от объекта, лучше ближе. То есть на коптер её, пожалуй не поставишь. Более узкополосная, наверное, уже может и подойти. Единственное, коптер находится в постоянном движении, а матрица шумит. Будет сложно поймать качественное изображение. Так что для коптера лучше посмотреть на более дорогие варианты, пожалуй.
Alexeyslav
14.01.2019 16:52Есть же стабилизированные подвесы. Как бы коптер не колбасило, камера держится четко.
Alexeyslav
14.01.2019 17:03Расстояние ограничено только распространением ИК-лучей, т.е. по факту как свет. Но широкий угол камеры… делает все объекты очень маленькими с расстоянием, и можно вспомнив математику посчитать на каком расстоянии милиметровый-сантиметровый-метровый объект станет одним пикселем, с коптера возможно будут различимы отдельные дома, теплотрасса и т.д.
32 пикселя на 110 градусов, и 32 пикселя на 55 градусов. Разрешение так себе, в первом случае почти по 3.4 градуса на пиксель. Вспомним геометрию… h = sin(3.4 deg)*L где L — расстояние до объекта, h — эквивалентная высота на один пиксель.
С расстояния 1 метр, имеем… почти 6 сантиметров на пиксель! 100 метров — 6 метров пиксель. Для второго варианта в 2 раза меньше. Вот и прикидывайте.
Pro-invader
14.01.2019 12:33У кота теплоизоляция нарушена, утечка тепла.
Walker2000
14.01.2019 12:35По сравнению с людьми у него всё в порядке ). Шесть препятствует теплоотводу.
dmitriyrudnev
14.01.2019 13:01У Sparkfun есть более простая реализация подобного устройства. Соответственно, и китайские клоны имеются.
Walker2000
14.01.2019 13:13Да, видел их. В модулях от Sparkfun распаяны только сами сенсоры, соответственно, доступ только напрямую, насколько я понял. Кстати, на ali они существенно дороже: ru.aliexpress.com/item/qwiic-MLX90640-55-FOV-110-FOV/32920041326.html
Есть библиотеки на Ардуино для таких модулей, но проблема в том, что я не пишу на Си, и осваивать ради одной задачи не хотелось. Мне проще было написал свой код на питоне.
ser-mk
14.01.2019 13:48Так вроде все уже сделали задешево до нас
Минималистично, компактно и удобно для обследования дома если)Walker2000
14.01.2019 13:58Посмотрите на разрешение матрицы у этого продукта. 8 на 8 пикселей всего. Сомневаюсь, что с этим можно на практике как-то работать.
ser-mk
14.01.2019 14:07конечно за 3700р, ожидать чего фантастического не стоит за готовое устройство
Но специально подчеркнул, что для обследования дома этого должно хватить.
Alexeyslav
14.01.2019 17:17Достаточно давно на хабре был проект ИК-сканера с одноглазым пирометром на один пиксель — просто механическая развертка на обычных сервоприводах. Ну, сканирует минут пять-шесть(там на пиксель приходилось около 0.1сек)… зато сразу разрешение высокое. Можно наверно даже панорамный скан делать.
Walker2000
14.01.2019 17:18Это вот этот? habr.com/post/172947
Alexeyslav
14.01.2019 17:30Да, похоже она.
Walker2000
14.01.2019 18:03Ну, если верить скриншоту интерфейса, то максимальное разрешение всего 64 на 48 пикселей. Не особо выдающееся разрешение, надо сказать. prntscr.com/m71nsw
Alexeyslav
14.01.2019 18:12Ну, это скорей вопрос применённого датчика, в его быстродействии. быстрее одного измерения на пиксель не получить никак.
Alexeyslav
15.01.2019 02:04Я вот думаю, что если не коболометрический датчик поставить а PIR-сенсор с датчиков движения, они ведь быстрее(где-то видел даташит на них, время реакции соответствует 30...100Гц) и аналоговые. Температуру в 20...30 градусов точно видят, хоть и измерить её не выйдет — только интенсивнось излучения. Проблема только в оптике.
Walker2000
15.01.2019 07:51Пусть будет 100 Гц, даже в этом случае картинка 32 на 24 (это 768 пикселей) будет сканироваться минимум 7,68 секунд.
MKrivosheev
14.01.2019 13:55Экономический эффект есть или просто «потому что могу»? Спрашиваю, потому что сам когда-то посматривал на тепловизоры и сложилось впечатление, что за примерно $100 можно уже купить приличное решение.
Указанные компоненты, как я понимаю, стоят $80+. Или есть дешевле?Walker2000
14.01.2019 14:03+1Я сравнивал со стоимостью тепловизионного обследования дома. По Москве это от 5 тыс. рублей как раз. Но за эти деньги покупаешь только картинки, которые специалист тебе наделает за часовой визит со своего тепловизора. А в моем случае 5 тыс. рублей + несколько часов кодинга позволили сделать свой любительский тепловизор. Как понять здесь экономический эффект? )
Дешевле компонентов с подобными характеристиками я не нашёл. Есть матрицы 8 на 8 пикселей, они стоят в районе 2 тыс. руб. Но сомневаюсь, что они дадут удобоваримую картинку.Javian
14.01.2019 15:12Можно и дешевле по, упомянутому выше, методу сканирования.
habr.com/post/172947
Walker2000
14.01.2019 15:20Достойный проект. Но, боюсь, что для задачи тепловизионного обследования дома он слабо применим. На скриншоте видно, что получение картинки 32 на 24 пикселя занимает 1,5 минуты. Описанная в моем посте матрица позволяет формировать картинку с таким разрешением в реальном времени (у меня получилось 4 fps).
Javian
14.01.2019 15:53Конечно это имеет ограничения и пригодно больше для случая одноразового применения.
ONIKSfly
14.01.2019 17:18А почему бы для этих целей не взять в аренду тепловизор? Не очень разбираюсь в этом вопросе, поэтому вопрос пракитческий, вот, например Fluke Ti 27 в сутки обходится в 3 000?.
ilusder
14.01.2019 15:07Занимаюсь похожим сенсором AMG88 от панасоник. 8 на 8 пикселей но немного дешевле.
Gryphon88
14.01.2019 15:40Какой библиотекой пользуетесь для sinc-интерполяции?
Walker2000
14.01.2019 15:45OpenCV. Вот строчки кода, первая формирует цветную тепловую карту из черно-белой, вторая растягивает из 32х24 в 320х240:
img = cv2.applyColorMap(ta_img, cv2.COLORMAP_JET)
img = cv2.resize(img, (320,240), interpolation = cv2.INTER_CUBIC)Gryphon88
14.01.2019 16:00Кубическая интерполяция не лучший выбор для малого числа пикселов: неравномерное разрешение в зависимости от ориентации матрицы, дрожание и занижение значений на краях, так что о честных количественных значениях можно забыть. Кстати, какой эквивалентый размер пиксела получается? Оптическая схема не описана.
Walker2000
14.01.2019 16:23Возможно. А какой тип интерполяции лучше использовать?
Странно, размер пикселя почему-то в документации не могу найти.Gryphon88
14.01.2019 17:08Его редко пишут, обычно запрашивать надо, ну или мерить. Чтобы узнать размер пикела и построить аккуратный kernel, нужно знать и pixel size (сщбственно сторона пиксела) и pixel pitch (расстояние между центрами пикселов). Для эквивалентного размера пиксела нужно знать ещё параметры оптической системы: фокусное расстояние и апертура (f/D) плюс длина волны светофильтра. Тогда, после калибровки, можно иметь количественные данные.
EDIT А на вопрос так и не ответил :) Sinc-интерполяцию, лучше всего по Unser. Я пока не могу найти реализацию, написанную прямыми руками, да и у меня написать не получается.Walker2000
14.01.2019 17:15Спасибо за подробный ответ. Если честно, я не вижу на сенсоре оптической системы. Есть только отверстие, а под ним плоская матрица. Диаметр отверстия около 2 мм. Т.е. размер пикселя грубо 50...60 мкм получается.
Gryphon88
14.01.2019 17:44Если под пластиковым тубусом плоская линза, то разрешение обсчитывается как камера-обскура с очень большим отверстием. А если пластик снимается, я б таки сунул под микроскоп с измерительным окуляром или сфоткал рядом с объект-микрометром. Хотя и так понятно, что разрешение никакое: угол, откуда дует, найти можно, а вот саму щель уже нет.
NumLock
14.01.2019 16:17Интересная статья. Я всё задаюсь вопросом. Можно ли будет получить картинку инфракрасного сравнивая изображения двух камер, предварительно разделив световой поток на два и пропуская один из них через светофильтр?
Gryphon88
14.01.2019 16:27Если я правильно понял, то Вы предлагаете такую схему:
объектив -> светоделитель ->
-> светофильтр (750nm longpass) -> матрица1
-> матрица2
То скорее всего получится, у почти всех матриц до 1000нм ненулевая чувствительностьность
Walker2000
14.01.2019 16:30+1Спасибо )
Это будет сделать весьма затруднительно. ИК спектр тела при комнатной температуре (ну или близкой к ней) имеет максимум спектральной плоскости в районе 10 мкм. Обычное стекло плохо пропускает такие длины волн. Насколько я помню, на дорогих тепловизорах в оптических системах используется германиевая оптика. Она очень дорогая.
Ну и сами датчики тоже должны иметь максимум чувствительность на таких длинах волн. Видимый свет (400...560 мкм) и ИК излучение (10 мкм) — это просто разные датчики.da-nie
14.01.2019 18:06Селенид и сульфид цинка, кремний, германий, арсенид галлия, полиэтилен и соль прозрачны в ИК. Линзы ZnSe достаточно дешёвые на ebay.
Walker2000
14.01.2019 18:19Да, судя по внешнему виду на дешевых тепловизорах стоят линзы из селенида цинка
da-nie
14.01.2019 20:17У Flir точно нет — кремниевое окно в корпусе и германиевая (или арсенид галлиевая? забыл.) линза лептона. У Seek Thermal вроде как халькогенидное стекло (но не точно). Что у китайцев — не знаю. :)
Walker2000
14.01.2019 20:43Слушайте, у Вас просто профессиональные познания в тепловизорах )
da-nie
14.01.2019 20:57+2Нет. Просто когда я выбирал, на чём бы сделать прибор ночного видения, я много статей читал. Кстати, у китайцев появился очень неплохой HT-18. У него приличное разрешение и цена, как у Flir One Gen 2. Но есть непонятки с типом матрицы. Дело в том, что тепловизор, обычно, делают на базе микроболометров, а они очень дорогие и сложные в изготовлении. Но есть ещё подарок судьбы — сегнетоэлектрический датчик. Такое часто ставят в системы ночного вождения автомобилей. По цене они гораздо дешевле болометров, но более шумные. Есть большое подозрение, что в HT-18 как раз такой датчик. А у Flir точно микроболометры. Лептон вообще прикольная игрушка. Он настроен на гиперфокалку (так как матрица маленькая) и не требует фокусировки, начиная с сантиметров 10-15 от себя. И легко подключается по SPI хоть к Raspberry Pi, хоть к STM. Только для 160x120 частота SPI нужна около 20 МГц — у него данных много передаётся в кадре.
А выглядит на Raspberry Pi так:
Paspasuy
14.01.2019 19:52Крутая статья!
Достаточно коротко и всё по делу.
Хотелось бы нажать вверх, но есть одноGabiani
14.01.2019 19:52Гм, я там же купил готовый тепловизор с таким же разрешением. 7 тыр стоил. Это явно дешевле даже чем датчик за 5 + Pi + экран + корпус. А за 12 были с комбинированной камерой — теплвая + обычная.
Nick_Shl
14.01.2019 20:23Если брать только сам сенсор выйдет дешевле чем у китайцев. Голая картинка не интересно — к распберри нужно ещё подключить обычную камеру и складывать картинки.
Видео как-то на одном эвенте от TI штуку собранную ребятами из DigiKey — сенсор от Flir и DLP проектор от TI — направляешь на объект и он на него же проецирует картинку. Классно использовать для обследования помещений — прямо на стене видишь точное место куда тепло уходит.Walker2000
14.01.2019 20:41Да, интересно решение — тепловизор + DLP. Насчет складывания картинок подумываю как раз. В Распберри можно сразу обрабатывать их в лёт и выводить как душе угодно.
Gabiani
14.01.2019 20:26Я год назад покупал, протухла ссылка. Но и сейчас нашел за 7806,94, ссылку на дам, ибо модерация, а вот название — «HT-175 Imager Цифровой Инфракрасный Тепловизор инфракрасный термометр-20-300 градусов 32X32». Им нормально исследовать утечки тепла или нагрев проводки изнутри дома, но снаружи целиком дом видно плохо — непонятно, что где, тут лучше брать в двумя камерами — типа HT-02D. Вот, кстати, новые появились — приставки к смартфонам — HT-102, типа FLIR ONE, но похуже, конечно. С двумя камерами и 7225р. «HT-102 мобильный телефон внешний Инфракрасный Тепловизор инфракрасный Камера термометр Android телефон OTG функция с адаптером»
Walker2000
14.01.2019 20:40Прикольный аппарат. Да и приставки к телефону неплохи. Но мне изначально захотелось с модульным решением поэкспериментировать. Его можно потом будет еще куда-нибудь прикрутить, например, на дрон поставить. А сам по себе тепловизор можно использовать только как тепловизор.
Oval
14.01.2019 21:40ужас, у первой ракеты воздух-воздух было всего 5 пикселей
ru.wikipedia.org/wiki/AIM-9_SidewinderWalker2000
14.01.2019 21:53Это просто песня )))
«В ходе этого конфликта (Тайвань — Китай, 1958 год) произошёл чрезвычайно удачный для СССР случай: AIM-9B «Сайдуайндер» попал в китайский МиГ-17, но не взорвался, застряв в фюзеляже[20].
»Внутренности" ракеты были залиты специальным клеем и для извлечения начинки были привлечены якутские косторезы, которые смогли вырезать блоки управления не повредив ни одного проводка.
Советские конструкторы, изучив «трофей» и воспроизведя её методом «обратной инженерии», запустили в производство советский аналог — К-13/Р-3С (по классификации НАТО — Atoll)[21].
Ракета К-13 состояла на вооружении советских ВВС более тридцати лет. Проведённый в США анализ показывает, что запчасти от ракет К-13 могут использоваться для комплектования оригинальных AIM-9 «Sidewinder»"
Nick_Shl
14.01.2019 22:22И механическая развертка вращающимся зеркалом. Можно и тепловизор сделать проще — один сенсор mlx90614 и развертка на двух сервоприводах. Вот статья на Хабре.
Walker2000
14.01.2019 22:39Да, это устройство упоминалось здесь в комментариях. Проблема в том, что кадр 32 на 24 пикселя он получает за 90 секунд. Ну и требует подключения к стационарному компьютеру ещё.
Jeditobe
14.01.2019 23:23А при ввозе в РФ проблем не будет?
LumberJack
15.01.2019 06:48Уже нет.
Согласно разъяснению Верховного суда Российский Федерации (далее — ВС РФ), гражданин не может быть привлечён к уголовной ответственности за приобретение технических приспособлений для негласного получения информации или, проще говоря, для слежки, если он намерен использовать их для обеспечения личной безопасности, безопасности своих близких, а также для наблюдения за имуществом и животными. При этом предполагается, что лицо не имеет целью применять «шпионское» оборудование в качестве средства посягательства на конституционные права граждан, передаёт информационное агентство «Интерфакс» со ссылкой на принятое во вторник, 25/12/2018, постановление пленума ВС РФ.
Кроме того, уголовная ответственность не предусмотрена в отношении тех, кто приобрёл спецсредства через Интернет и не был осведомлён об их истинном предназначении. Как следует из текста документа, речь идёт о случаях, когда устройство для слежки было куплено на общедоступном интернет–ресурсе, рекламировавшим данный продукт как прибор бытового назначения.
Также в постановлении отмечается, что смартфоны, видеорегистраторы, диктофоны и прочие гаджеты могут быть признаны специальными техническими средствами лишь при условии их доработки, которая позволила бы негласно получать информацию. В случаях, когда определение принадлежности устройства к числу «шпионских» требует специальных знаний, суд должен располагать заключениями соответствующих экспертов.
Отметим, что статья 138.1 УК РФ (незаконный оборот специальных технических средств, предназначенных для негласного получения информации) предполагает минимальное наказание в виде штрафа в размере до 200 000 рублей, максимальное — лишение свободы на срок до четырёх лет.
Theblackoverlord
14.01.2019 23:40На китайском Таобао есть готовое устройство на базе того же сенсора за 500 юаней
item.taobao.com/item.htm?spm=a230r.1.14.127.7cdc3fa7HMLsAT&id=575683214449&ns=1&abbucket=16#detailWalker2000
14.01.2019 23:41Спасибо за наводку )
Готовое не нужно было как раз. Более интересной показалась задача подключить модуль, который потом можно было бы использовать в различных проектах.
Vsevo10d
15.01.2019 00:48Лайкнул, даже не заглянув под кат. Офигенный модуль.
Вопрос. Чем крутить модуль и шить панораму, может, воткнуть несколько штук рядом как матрицу? Я не помню, сколько там адресов одновременно жрет I2C, но чисто теоретически возможно ли получить одну большую картинку?Walker2000
15.01.2019 07:58Полагаю, что это вряд ли осуществимо, если расстояние до объекта не задано. Я ранее сталкивался с оптическими системами, собранными из нескольких оптических камер. Они собирали изображение с некоторой поверхности, расстояние до которой неизменно (это светящийся от рентгеновского излучения экран в цифровом приемнике рентгеновского изображения). И там под каждую ПЗС матрицу был свой объектив.
Думаю, что для ИК матрицы теоретически можно повысить разрешение только если сделать программно какой-то подобие панорамной съемки. На подобие той, которая реализована в смартфонах. Но и в этом случае понадобится скорее всего дополнительно обычная камера. У нее изображение более контрастное, проще будет по нему собирать панорамный снимок. И уже на него накладывать тепловую карту.
Wesha
15.01.2019 03:01Корпус устройства имеет только четыре вывода — два для питания, два для общения с управляющим устройством по I2C интерфейсу.
"У кошки четыре ноги — вход, выход, земля и питание" ©
Crevice
15.01.2019 06:14Какая чувствительность у этих устройств на расстоянии?
Можно что-то увидеть за 30-40 метров?Walker2000
15.01.2019 07:44Смотря что нужно увидеть. Конкретно описанная в посте матрица на таком расстоянии человека вряд ли разглядит. Он будет как раз телесном угле одного пикселя. А вот горящее здание — по идее должно.
keepcalm
15.01.2019 09:24А какая стабильность? Насколько уйдет значение скажем после получаса работы?
Walker2000
15.01.2019 09:26По ощущениям значения температуры не плавают (т.е. дрейфа нет). Но шум по изображению довольно большой, видно на глаз.
mgrigorov
15.01.2019 10:39Чуть более простой вариант — www.thingiverse.com/thing:2799023
Матрица 8x8 (amg8833), цена вопроса около 2300 на алиэкспрессе. Сделал, мне понравилось, работает достаточно быстро, для домашних задач вполне достаточно. В прошивке выключил SD, т.к. нет необходимости.Walker2000
15.01.2019 10:40Да, есть и такой девайс, рассматривал его тоже. Но выбрал более крупную матрицу, чтобы картинка более информативной была.
v-oz
15.01.2019 11:46Классное направление для поиска задали. Жаль температура датчика лишь 300. Нужно 1500 в максимуме или хотя бы 1200. Наверное, это совсем другие деньги.
Спасибо за на водку.da-nie
15.01.2019 12:38Нужно 1500 в максимуме или хотя бы 1200. Наверное, это совсем другие деньги.
Посмотрите закон смещения Вина. :) С такими температурами тело излучает в видимом спектре.Walker2000 Автор
15.01.2019 12:46Кстати, да ). Насколько помню, температура каления — что-то в районе 550 град. Цельсия.
Aquahawk
Офигительная штука
Walker2000
Спасибо )