Найти в Дзене
Из Mosquitto в MySql, или старый NAS еще на что-то да сгодится
Есть у меня старый NAS Synology DS110j. Как ясно из названия модели, ему не меньше 12 лет и его сердце в виде ARMv5 800MHz одноядерного CPU уже с большим трудом справляется с новыми вызовами. Но на Трансмишн и Москитто его вполне хватает. Правда поддержка старых моделей полностью прекращена, так что в менеджере дополнительных пакетов пусто, хотя с помощью небольших уловок можно поставить поддерживаемые версии пакетов. Итак, раз есть Москитто, значит можно и сделать шлюз к БД для регулярного сохранения публикуемых данных. В качестве БД я выбрал MySQL (MariaDB), в частности для столь древнего устройства версии старше 5...
235 читали · 2 года назад
Не успел я огорчиться, что давно анонсированный и все никак не выходящий в свет МК от Espressif ESP32-C6 не смотря на поддержку WiFi6 будет работать только на частоте WiFi 2.4 ГГц (и зачем он тогда такой нужен?), как Эспрессивы исправились и анонсировали ESP32-C5 с поддержкой WiFi6 на обоих диапазонах частот 2.4 ГГц и 5 ГГц. Ну что же, теперь будем ждать его. :) Ссылка на новость
565 читали · 3 года назад
А теперь сравним потребление разных ULP ядер в МК ESP32-S2 (пока вы копите лайки под предыдущей статьей для статьи о раннем пробуждении :)). Возьмем условно одинаковую программу для ULP ядра, которая при нажатии на кнопку, замыкающую GPIO0 на землю не менее 50 мс., увеличивает счетчик нажатий и будит микроконтроллер. Тот весело мигает светодиодом (в коде GPIO светодиода задан константой LED_PIN), пишет количество нажатий кнопки и уходит в глубокий сон. ULP ядро запускается таймером, измерения потребления проводились для значений таймера в 1, 3, 5, 10 и 20 мс. Код для FSM ULP ядра на данный момент можно откомпиллировать только в девелоперской версии ESP-IDF, код же для RISC-V ULP ядра напротив не работает в девелоперской версии ESP-IDF, зато работает в релизе 4.4.1. Вариантов использовать для сборки Arduino нет, только ESP-IDF, увы. Итак, перейдем к результатам: ULP-FSM 1 ms 80 uA 3 ms 60 uA 5 ms 50 uA 10 ms 35 uA 20 ms 30 uA ULP-RISCV 1 ms - 3 ms 70 uA 5 ms 60 uA 10 ms 40 uA 20 ms 30 uA При значении таймера в 1 мс. для RISC-V ULP ядра, основной МК просыпался от срабатывания ловушки на ULP ядре, т.е. можно считать этот вариант неработоспособным. Как видим, старое FSM ULP ядро чуть энергоэффективнее нового RISC-V, хотя писать для него в разы сложнее. С другой стороны, достаточно сложный код для RISC-V иногда выпадает в ловушку, так что FSM может быть надежнее. Но решать только разработчику по результатам собственного тестирования. Т.е. вам.
455 читали · 3 года назад
Так сколько же все-таки потребляет ESP32 (тот самый обычный ESP32 с двумя ядрами и FSM ULP ядром) на примере готового модуля ESP32-S при питании от 3.3 В в различных режимах сна? Скетч полагается на то, что кнопка коммутирует на землю изначально подтянутый к питанию GPIO0, а светодиод катодом подключен к GPIO2. Первые 5 сек. работы скетча CPU активен, далее 5 сек. CPU в режиме легкого сна, далее легкий сон с пробуждением от нажатия на кнопку, далее 5 сек. глубокого сна, далее глубокий сон с мониторингом кнопки EXT0, далее глубокий сон с мониторингом кнопки EXT1 и наконец глубокий сон с мониторингом кнопки с помощью ULP каждые 5 мс. CPU Active 38 mA CPU Light Sleep (timer) 1560 uA CPU Light Sleep (GPIO) 1560 uA CPU Deep Sleep (timer) 3 uA CPU Deep Sleep (EXT0) 4 uA CPU Deep Sleep (EXT1) 4 uA CPU Deep Sleep (ULP each 5 ms) 20 uA Само собой, это потребление с выключенными WiFi и BT. Если для ULP уменьшить время таймера с 5 мс, то потребление энергии возрастет, зато станет возможным отслеживать кратковременные изменения состояния RTC GPIO. Потребление же ULP в режиме постоянного мониторинга в глубоком сне основных ядер составляет 435 uA (для этого в скетче необходимо раскомментировать дефайн ULP_INFINITE). Скетч сделан для Arduino IDE, хотя от фреймворка Arduino используется только вывод в UART через объект Serial, для остального используется ESP-IDF. Если это будет интересно хотя бы 1/10 подписчиков, то напишу статью о том, как использовать раннее просыпание...
616 читали · 3 года назад
Сейчас ковыряюсь с ESP32-S2 в виде готового модуля ESP-12H (видео о нем есть на канале), а конкретно с ULP (Ultra Low Power) ядрами (там их два, правда использовать можно только одно на выбор: "старое" чуть обновленное FSM (конечный автомат) и новое RISC-V). Если вы не знали, ULP ядро создано не только для работы в глубоком сне основного ядра МК, оно может работать постоянно параллельно с основным и обмениваться с ним данными, расположенными в RTC памяти. Конечно же использовать новое RISC-V ULP ядро в разы проще! Писать код для него можно на C (а не только на ассемблере), есть 32 32-х битных регистра, поддерживается целочисленное умножение/деление, доступ к переменным существенно проще на уровне исходного кода. Только пока нет поддержки для Arduino, но это не особо большая проблема, если использовать ESP-IDF и Arduino as component, например. FSM ULP ядро лишь чуть обновилось со времен ESP32. Все те же 4 16-ти битных регистра, ограниченный ассемблер или макросы для C. Правда с помощью макросов это ядро можно использовать для Arduino, но на данный момент поддержка Arduino собрана без резервирования памяти под ULP программу, да и FSM ULP ESP32-S2 поддерживается только в девелоперской версии ESP-IDF, релиз 4.4.1 этим не озаботился. А насколько же ULP эти ядра? Можно ли их использовать постоянно, пока основное ядро МК будет в глубоком сне? Не по ULP таймеру, а именно в вечном цикле? Около 300 мкА для RISC-V и 180 мкА для FSM. Т.е. не очень-то и ULP...
552 читали · 3 года назад
Если нравится — подпишитесь
Так вы не пропустите новые публикации этого канала