Текстовая версия видосов, для тех кому противен мой гундосый бубнёж (не осуждаю).
Всем привет!
Только вот сегодня закончил, несколько часов назад, создание своего модуля мечты - модуля макросов на устройстве.
Все вы помните ( кто не помнит
вот пост) как я три года назад сделал 12 (двенадцать) штук часов на #ин4. Когда я их делал, а самое главное отлаживал, для себя подмечал (и записывал ) некоторые моменты которые бы хотел или улучшить или сделать просто удобнее.
Сейчас спустя три года я не помню точный ход своих мыслей, могу написать только про основные моменты.
В первую очередь было очень муторно, при выявленной ошибке на прогонном тестировании, перепрошивать сразу 12 устройств.
разобрать -> подключить -> прошить -> отключить -> собрать обратно -> включить.
Один раз норм. Три раза не весело. На двенадцатом разе уже вымораживает, ибо плоть слаба, да. Так я делал раза три точно.
И вот для меня родилось первое требование к ТЗ (техническому заданию) на прошивку будущих устройств: самопрошивание. Точнее предоставление более комфортного способа обновления прошивки хотя бы без проводов.
Для меня тогда были доступны только #esp8266 и поэтому решил на их основе делать программаторы для #AVR чипов. То есть тогда я заложил основу для программаторов #isp и #swd.
Второе требование родилось чисто из-за того что esp8266 чип это чип с возможностью подключения к #NTP - серверам точного времени. А значит можно сделать синхронизацию часов и их самонастройку.
Третье и четвёртые требования получились по ходу долгих и глубоких размышлений ( о них я буду писать в статье на хабр, да) и по итогу родились идеи:
Модульности прошивки для ESP32/8266 чипов (кратко: общая кодовая база для множества устройств одновременно)
Централизованного САМОобновления - сервис хостинга прошивок и файловых систем для ESP чипов.
Централизованного обновления через программаторы - тоже самое что для esp чипов, но для подключенных avr или stm микроконтроллеров.
Макросов - скриптовой системы гибкой логики с использованием подключенных модулей.
Первое видео: модули ядра. То что есть всегда и везде, независимо от устройства. Настройки wifi, веб авторизации, NTP клиент, общая информация, управление состоянием модулей, веб страница для обновления ESP чипом по воздуху( то есть не подключая провода обновить прошивку и файловую систему). Под "капотом" - веб-сервер, работа с конфигами, консольный терминал с
преферансом и профурсетками командами и аргументами для тонких ценителей ну и файловая система.
Сейчас об этом рассказывать особо не буду, приберегу подробные объяснения для релиза и поста на хабр.
Второе видео: про устройство часов на адресных RGB светодиодах.
Реплика часов "
Электроника 7". Одно знакоместо это 7 на 4 точки, всего 4 знакоместа.
В видосе рассказал про спецэффекты, как они выглядят, как показывается время и каким образом выглядит спецэффект смены времени (смена минут).
Устройство железа примитивное, а на программные возможности богатые. Поэтому этот модуль стал испытательным полигоном для модуля макросов. Модуль был показан в автономном режиме (то есть без управления макросами)
Третье видео Если о программаторах и модулях я вам
рассказывал и
показывал, то сейчас вкратце рассказу о макросах.
В основе идеи и философии модуля макроса лежит простой вопрос:
"Что если потребуются логика устройства выходящая за рамки изначальной?"Как самый простой пример: вычурное расписание. Как пример: чтобы каждый вторник в 17 часов 41 минуту и 31 секунду устройство три раза моргало светодиодом, включало wifi, проверяло обновление на сервере и если обновление было - обновляло себя/другой чип и в конце выключалось.
Или чтобы только в будние дни с 9 часов до 18 устройство выводило надпись на дисплей взятое из сервера, настройки которого присланы из другого сервера.
Если с расписанием понятно - это всемогуoий #CRON а точнее
CRON-выражение — это специальная строка из пяти полей, разделенных пробелами, которая определяет точное расписание для автоматического запуска задач в операционной системе (с) википедия.
То уже с исполнением функций потребовался скриптовый интерпретатор сначала языка TCL, а потом уже LUA.
И вот в третьем видосе я показываю тестовые варианты скриптов, которые по расписанию меняют на ходу то как показывается время. Точнее какой спецэффект включить.
Работают сразу несколько примитивных скриптов - 12 штук каждые 5 секунд меняют то как показывается время. А ещё два скрипта меняют спецэффект при смене времени на часах.
Что показать забыл, но напишу: каждый модуль предоставляет (при компиляции регистрирует) набор переменных доступных для чтения и набор функций исполнителей.
На странице модуле есть список файлов - скриптов, в нём описана информация о них, органы управления, а ниже есть два поля: справа поле редактора скрипта с подсветкой синтаксиса, а справа поле доступных ресурсов модулей.
То есть пользователь при написании скрипта видит список доступных ему возможностей предоставляемых модулями в прошивке может написать свою логику. Что самое главное - на ходу и не перепрошивая ничего.
Да, есть шероховатости (что-то заглючило во время записи), но модуль я сделал хоть как-то рабочим, на момент написания этих строк, три часа назад.
То есть модуль часов "электроника 7" предоставляет переменные и функции, которые модуль макросов может считывать и изменять соответственно.
И в чём мякотка именно моей модульности - если в прошивку я не включил модуль макросов, то остальные модули продолжают работать автономно по своей логике. Если включен модуль макросов, то модуль (в режиме управления макросами) может через макрос (lua скрипт) по расписанию или по условию "общаться" с другими модулями и позволить устройству выполнять действия выходящие за рамки изначальной логики модулей и устройства. Самое главное - без перепрошивки устройства.
Модульный проект позволяет вести единую кодовую базу. Сервис самообновления - централизованно обновлять прошивки. Как массово, так и точечно.
Что дальше? Дальше
1) доведу модуль макросов до ума;
2) переведу все модули на поддержку макросов;
3) сделаю наконец UART bridge и UART программатор. Очень нужные фишки.
А потом бета тестирование. Может попутно какую железку спаяю, кто знает.
Скажу сразу -
код написан с помощью ИИ агента. Но без него всё это я бы писал это вот всё ещё года два. А то и три. С ии агентом модуль макросов написал за три месяца и 15$ токенами. Из них 10$ я сжёг впустую по неопытности. Самая плодотворная работа сделана за последние три дня. До этого только размышлял над архитектурой.
ИИ агент это инструмент которым надо
уметь пользоваться очень аккуратно.
Написал я конечно скомкано и путано, но надеюсь в будущем статья на хабре расставит все точки над i.#LUA #модули #ядро #esp32 #rgb #часы #черновик #статья
👍
In nomine Dei Machinae,👌
Omnissiae 👌
et Spiritus Machinalis.