Многоканальный ИК-болометр на MLX90640
Запись от Eddy_Em размещена 25.09.2025 в 16:35
Показов 3384
Комментарии 2
Метки electronics, microcontroller, stm32, железо
|
Постепенно дошел до "пре-альфы", ссылка на код на гитхабе. В release-сборке вполне себе скромненько потребляет:
Суммарно получилось где-то на 2.5кБ меньше, чем 33680Б. Вот и интересно, где собака порылась. Понятно, стек там неплохой, мелочь всякая локальная в куче, но таки не пара же килобайт? Может, где что завел временно, да забыл? Протокол символьный. Если ввести '?', 'h' или 'H', получим в терминале:
/dev/mlx_sensor0. Все вспоминаю COKPOWEHEU добрым словом за идею "маркировать" разные устройства (а также интерфейсы в составном устройстве — как, скажем, в контроллере энкодеров астросибовской монтировки) при помощи простого правила udev — через поле iInterface.Когда у меня уже почти все заработало, нарвался натурально на stack overflow. Поначалу как-то миновало (но странно, почему: я в функцию запихнул стековую переменную размером 10100Б), а потом аукнулось. И эту структуру с пересчитанными коэффициентами я выделил отдельно на куче, а передавал в функции лишь ее адрес (или NULL в случае ошибки). Однако, таки поначалу я надеялся, что и 8 датчиков можно будет повесить на один STM32, а тут — вона как! 3332 байта на одно изображение, да куча всякой всячины. Сейчас остается 7280Б свободного места. Т.е. хватит еще два датчика добавить, а восьмой — уже некуда. Разве что придумать что-то. Кстати, можно сократить на 768Б структуру параметров, т.к. я не использую массив маркировок "битых" пикселей. Но это не спасет место, чтобы восьмой датчик впихнуть. Да и ладно: все равно для конкретного устройства нужно пять. Алгоритм работы простой: вначале производится сбор "сырых" данных калибровочных параметров каждого датчика. Далее собираются отэкспонированные изображения ("подстраница 0" пропускается, собираются лишь "подстраницы 1" - где и есть вся нужная информация) по мере накопления. Если пользователь запрашивает изображение, рассчитываются калибровочные коэффициенты (увы, вся структура 10100 байт занимает, поэтому для всех пяти уже вычисленные хранить негде; во флеш их засовывать не хочется, но, в принципе, это возможно), а затем обрабатываются данные с болометра и выдается в запрашиваемом формате (условная "картинка" в ASCII, температуры в строковом виде или массив в float little-endian). Из-за расчетов параметров время обработки одного изображения выросло с 8.5мс до 14мс, что совершенно не критично, т.к. изображения обычно на all-sky камерах меняются раз в 30-60 секунд. Пересылать на компьютер "сырые" данные и обрабатывать там не хочу, т.к. получится уже не самостоятельное устройство (пусть и не склеивает панорамы, но позволяет получать готовые кадры), а "аппаратно-программный комплекс", что не очень хорошо. Из TODO на дописать/доработать: - управление питанием (отключать питание датчиков, если кто-то из них заблокирует SCL — а такое бывает иногда); - отсылку по RS-485 (железка будет на столбе висеть, до компьютера кабель метров 10-15); - эмуляцию проблем на шине (проверить: будет ли правильно отрабатывать включение/выключение питания и переход между состояниями КА); - добавить BME280 для определения параметров внешней среды; - добавить один-два NTC и управление мощным транзистором для подогрева корпуса (осушить в случае осадков или мороси); - нарисовать печатную плату и корпус; - изготовить и откалибровать по координатам - чтобы точно можно было "склеить" панораму из пяти снимков в один all-sky (калибровка, боюсь, будет самым длительным процессом). | |||||||||||||||
Метки electronics, microcontroller, stm32, железо
Размещено в Железо
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 2
Комментарии
-
Оно конечно очень интересно читать про чужие потуги и получать опыт.
Но не имея никакого представления о том что это за объекты, как и где они эксплуатируются, какие расстояния между ними, требования к интеграции с существующими системами, какой бюджет разработки, какова цена ошибок и пр.
Очень трудно додумывать всё это и наслаждаться красотой внедрённых решений.Запись от Aledveu размещена 27.09.2025 в 14:01
-
Все вопросы - ко мне в ЖЖшку. Здесь нет никакого механизма оповещения о том, что даже комментарий к записи появился...Запись от Eddy_Em размещена 28.09.2025 в 20:12


