Небольшой "прожект" - тепловизор

702

New member
Небольшой "прожект" (альфа версия), в порядке освоения SDK от ESP8266.

Представляет собой очередной велосипед на тему "тепловизор из поделок с Алиэкспресс".

В составе :

ESP-01 - модуль Wifi
GY-MCU90640 - плата ИК сенсора 32*24.
HW-107 - зарядник для литиевого аккумулятора.

Особенность устройства : на ESP8266 организован веб-сервер, управляющий сенсором, - с минимальным функционалом, а полезная работы выполняется
в браузере программой на js. Преимущество такого подхода : все работает "искаропки", без установки какого-либо дополнительного ПО.

То есть, для использования устройства нужен смартфон или компьютер. Свой дисплей у устройства отсутствует.

Совместимость с браузерами частичная. Я сдуру запихал разметку в грид, а грид мобильными браузерами поддерживается как попало. Более-менее работают
Хром и Файрфокс новых версий. На десктопе в основном проблем нет.

Веб-сервер, умеет:
- отдавать браузеру веб-страницы, скрипты, бинарный массив с температурой, бинарный массив с настройками;
- от браузера может принимать бинарный массив с настройками, принять и записать файл в файловую систему. Последнее используется для "обновления ПО".

Частота обновления экрана: 1..2 кадра в секунду. Ограничена в основном программным I2C, а также кривой и тормозной библиотекой от Melexis(производителя

сенсора) . Если оптимизировать, будет кадра три.

Архив с "прожектом" по ссылке: https://yadi.sk/d/opU195Yg9aX0fA

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

Веб-дизайнер и жаба-скриптер из меня никакой, но в исходниках всё примитивно и прозрачно. Опытный человек при необходимости легко подправит.
 

enjoynering

Active member
А в какой среде/редакторе вы писали? Пытаюсь запустить rtos 3.3 и 3.2 под MS Visual Studio Community и никак.
 

702

New member
Среду не использовал. Просто установил SDK:
git clone --recursive https://github.com/espressif/ESP8266_RTOS_SDK.git

Вот мой скрипт для сборки:
---
export PATH=/home/user/prog/esp/ESP8266_RTOS_SDK:$PATH
export IDF_PATH=/home/user/prog/esp/ESP8266_RTOS_SDK
export PYTHON=python3.5
make -j4
----
Понятно, пути придется подправить для конкретной системы.
Скрипт нужно запускать в каталоге, где лежит Makefile .


Разработки подобного рода веду в linux, тексты редактирую в редакторе от Midnight Commander.
 

pvvx

Активный участник сообщества
Частота обновления экрана: 1..2 кадра в секунду. Ограничена в основном программным I2C, а также кривой и тормозной библиотекой от Melexis(производителя сенсора) . Если оптимизировать, будет кадра три.
В даташите значится:
I2C clock frequency 1 MHz
1583022893491.png
Почему бы не получить 64 кадра?
Правда увеличится шум
1583023275243.png
но всё-же?
 

702

New member
Ну дык исходник открыт.
Пробуйте.

Только нужно учесть, что :

- за один "кадр" обновляется только половина пикселей, - чересстрочно или череспиксельно, в "шахматном" порядке;

- обсчет одного "кадра" на esp8266 / 160 Мгц занимает более 100 мс, - на каждом пикселе считается масса многоэтажной
арифметики с плавающей точкой;

- при работе на повышенной частоте I2C, сенсор периодически "закидывается",- в какой то момент перестает выдавать
правильные данные. При этом ACK на I2C при обменах выставляется исправно.
Вывести из такого состояния сенсор можно только отключением питания, ноги сброса у MLX90640 нет.
Возможно это из-за несоблюдений требований по питанию сенсора у меня в макете, или сбой конкретного экземпляра сенсора.

Ну и шумы, действительно, становятся весьма заметны на изображении при частоте более 8 Гц (то есть, "реальных" 4Гц),
даже на температурном диапазоне изображения в пару десятков градусов.
 

pvvx

Активный участник сообщества
Ну дык исходник открыт.
Пробуйте.
У меня пока данного сенсора нет.

- обсчет одного "кадра" на esp8266 / 160 Мгц занимает более 100 мс, - на каждом пикселе считается масса многоэтажной
арифметики с плавающей точкой;
"полезная работы выполняется в браузере программой на js", а с сенсором справится и самый примитивный BLE чип (JDY-10 - throughput BLE/BT4.2 достаточно).
 

702

New member
"Не вижу препятствий!" - (с) пан начальник Твардыевич (к./ф. "Ва-банк - II" ).

Вам и карты в руки. Я этим точно заниматься не буду.
 

pvvx

Активный участник сообщества
"Не вижу препятствий!" - (с) пан начальник Твардыевич (к./ф. "Ва-банк - II" ).

Вам и карты в руки. Я этим точно заниматься не буду.
Я с вами согласен, тем более готовое, от китайцев, с экраном и т.д., стоит одинаково по сравнению с пустым сенсором MCU90640.
И не понял зачем вы это вообще затеяли, если не для побаловаться ради спорта - выжать всё на макс.
На js куда быстрее накатать и отладить прямо в эксплорере, в Web Bluetooth, благо универсальный BLE<->I2C уже есть...
 

pvvx

Активный участник сообщества
js без разницы, что Float64Array, что Uint8Array, что перемножить одно на другое... Сократиться только поток от источника, тем более XMLHttpRequest - это не метод для передачи изображений.
ESP8266 для таких дел аутсайдер - всё время и производительность у него уйдет на I2C, мешая работать WiFi.
 

702

New member
XMLHttpRequest - это не метод для передачи изображений
У меня передается не картинка (ее рисует браузер) а массив с температурами.
Что совершенно ясно из исходников, а также прямо указано в первом сообщении темы. Размер массива чуть больше полутора килобайт.

Целями "прожекта" были освоение SDK от ESP8266 а также утилизация валявшихся без дела железок. Цели достигнуты.

Результатом стало работающее устройство. Не лозунги об устаревшем чипе, не теоретизирование о низкой производительности, а _работающее_устройство_.
Ну, то есть, включил - работает. Приносит пользу.

Интересно Вам осваивать новую аппаратуру - ну так я же Вас не унимаю. Полная свобода творчества и самовыражения.
 

pvvx

Активный участник сообщества
Результатом стало работающее устройство. Не лозунги об устаревшем чипе, не теоретизирование о низкой производительности, а _работающее_устройство_.
Оно точно _работающее_устройство_ или кое как?
Как там с TCP/IP по стандартным тестам на минимальную поддержку сетевых стандартов?
Или что там с Web - оно у вас говорит HTTP1.1, а нифига не поддерживает. Что скажет хотя-бы самый элементарный тест apache-jmeter на вашу бяку?
А что с WiFi - глушит всё или только часть вашей общей сети? Как там поживают beacon-ы у EPS если в режиме AP - они гуляют по периодам от занятости CPU псевдо I2C?
В вашем проекте ESP пропускает beacon-ы от внешней AP и нарушает координацию сети - создает колизии другим...
Как работа WiFi ESP нравится вашим устройствам находящимся в DTIM(x)? АКБ у смарта чаще меняете?
... ...
Это называется _работающее_устройство_?
Тогда вы не в ту тему написали - пишите в тему глушилки WiFi. :)
 

pvvx

Активный участник сообщества
Ну, то есть, включил - работает. Приносит пользу.

Интересно Вам осваивать новую аппаратуру - ну так я же Вас не унимаю. Полная свобода творчества и самовыражения.
Ещё искровой передатчик Попова откопайте и используйте…
Авто со старыми эк. стандартами уже и к ввозу запрещены, а вы эту бяку вытащили и ещё другим предлагаете…
 

702

New member
Вас раздражает, что я реализовал устройство на элементной базе, которую Вы в своем кондуитике записали в аутсайдеры?
Ну так сделайте свой вариант, гарантирующий соответствие всем стандартам. Сделайте, и выложите описание.
Если результат будет лучше, мы порадуемся.

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

pvvx

Активный участник сообщества
Вас раздражает, что я реализовал устройство на элементной базе, которую Вы в своем кондуитике записали в аутсайдеры?
Ну так сделайте свой вариант, гарантирующий соответствие всем стандартам. Сделайте, и выложите описание.
Если результат будет лучше, мы порадуемся.
Устройство не реализовано - пока это только игра в "реализацию" и как говорят в детсаде - в понарошку :)
ESP не может вписаться в стандарты по разного рода техническим и прочим причинам. Большая часть их была определена и указана несколько лет назад и нет никакого смыслу всё это повторять лично для вас, т.к. доступно и описано в форуме.
Или мне нужно остановить другие, гораздо более актуальные работы, и переделывать, в общем-то, проходную вещь,
чтобы у какого-то ника в интернете не свербело?
Так себе мотивация.
Вижу как у вас не свербит и мотивации повалили... :)

PS: Все китайцы наверно заболели и сенсор им не отправить... Все заказы застряли...
 

702

New member
ESP не может вписаться в стандарты по разного рода техническим и прочим причинам. Большая часть их была определена и указана несколько лет назад и нет никакого смыслу всё это повторять лично для вас, т.к. доступно и описано в форуме.
Если они определены и указаны Вами, и в стиле, как в сообщениях выше - их можно смело игнорировать.
 
Сверху Снизу