Найти тему
Практика

Монитор помощник. Часть 4. Кодим... Проблемы....

Оглавление

Проблема 1. Архитектура которую я выстраивал - совершенно не подходит...

Переделка архитектуры на async. Стало приятнее заодно освежил знания по async await. Полезная статья на хабре тут.

Также я совершенно не учёл что интервал опроса датчиков будет разный. И надо как-то синхронизировать обогащение данных по разным датчикам и их использование. Математика + вычисление алертов. Надо поразмышлять... порисовать диаграмки\схемки.

Проблема 2. Не запускается проект на МК

При работе столкнулся с тем что код не запускается на микроконтроллере с ошибкой выделения памяти. Происходит это при запуске пакета main. Эту проблему я уже решал в предыдущей части. Для пакета работы с датчиком max3002. Теперь накатил решение на все файлы кроме main и boot, то есть всё компилирую и заливаю на МК. Но вот теперь открыт вопрос хватит ли ресурсов микроконтроллера чтобы запустился весь проект. Сделал я только часть и половина часть логики ещё не реализована.

Проблема 3. Совершенно не удобно работать...

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

Скрипт компиляции сделал пока по простому

Просто в батничке каждый файл компилирую и складываю в отдельную директорию.

Скрипт заливки - пришлось поковырять исходники ampy, кой что перетащил и получился простенький скрипт деплоя.

-2

Полная версия - будет в репке

Ну и настроим IDE

-3
-4

Получилось вполне вменяемо. 1 скрипт для компиляции, 1 скрипт для заливки (+ удаление файлов пере заливкой) и main.py заливаем вручную shift+ctrl+f10.

Проблема 4. Медленная работа датчика

Оказывается пакет DTH для датчика dth11 температуры и влажности (который 1-wire) работает ну очень медленно. И цикл опроса очень медленный ~ 500 микросекунд из-за него. То есть 2 замера в секунду, а для получения данных для вычисления пульса и оксигенации это неприемлемо. У ребёнка пульс 110-130 ударов в минуту считается нормальным. Ну и надо иметь возможность считать более высокие значения пусть с запасом 160 уд/мин. Это чуть меньше 3х ударов в секунду. А мы замеры можем брать 2 раза в секунду, это не говоря уже о вычислении кислорода в крови. Думаю что надо ориентироваться на 10-20 (до 50) мк секунд на цикл. А ещё на экран печатать, звуковые уведомления и запас вычислений надо-бы иметь.

Сперва попробовал поиграться с частотой процессора - безрезультатно. Камень изначально работал на 160, но изменение на 80 вообще никак не повлияло.

Решение - снизить частоту измерений тормозного датчика (или взять более быстрый dth-22).

Для этого сделал вачдог декоратор для для замеров через указанные интервалы (не ранее чем).

-5
-6

Поэтому замеры температуры помещения буду делать редко раз в 5-10 минут - чаще нет смысла. Замеры температуры (с помощью термистора тоже часто нет смысла делать - 1-5 минут устроит). Хотя он работает быстро.

При работе столкнулся с тем что код не запускается на микроконтроллере с ошибкой выделения памяти. Происходит это при запуске пакета main. Эту проблему я уже решал в предыдущей части. Для пакета работы с датчиком max30102. Теперь накатил решение на все файлы кроме main и boot, то есть всё компилирую и заливаю на МК. Но вот теперь открыт вопрос хватит ли ресурсов микроконтроллера чтобы запустился весь проект. Сделал я только часть и половина часть логики ещё не реализована. 01102 датчик (см Проблема 2) а после реализовать математику.

Показания ожидаю увидеть что-то вроде этого:

-7

Планирую взять за основу этот материал, этот, ну и поковырять вот этот пример на си.

Ссылки

  1. Основная статья

Благодарности

Спасибо за внимание. Подписывайтесь это помогает продвигать канал!