diff --git a/GreatGamedevVault/Библиотека скриптов/2. Периферия/Система команд платы v2.x.md b/GreatGamedevVault/Библиотека скриптов/2. Периферия/Система команд платы v2.x.md
index db76655..d070679 100644
--- a/GreatGamedevVault/Библиотека скриптов/2. Периферия/Система команд платы v2.x.md
+++ b/GreatGamedevVault/Библиотека скриптов/2. Периферия/Система команд платы v2.x.md
@@ -52,8 +52,6 @@ by: Паша Николаевич
После загрузки контроллер не принимает никаких команд, кроме запросов на авторизацию.
-В текущей сборке `ver_2.3.6_no_auth_prizes` флаг авторизации по умолчанию выставлен в `true`, поэтому контроллер фактически стартует уже разрешенным. Если `auth_ok=false`, логика остается прежней: интерпретатор принимает только команды `07` и `08` до успешной авторизации.
-
Запрос – требование зашифровать строку шестнадцатеричных символов с помощью AES256 алгоритма, используя известный ключ.
Компьютер генерирует случайную последовательность из 16 байт и отправляет ее контроллеру на шифрование. Тот ее шифрует и отвечает. Компьютер расшифровывает и проверяет на совпадение.
@@ -79,6 +77,48 @@ by: Паша Николаевич
# Команды
+## Список команд
+| Команда | Назначение, примеры, ответы |
+| ---------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [[#Служебные команды\|00]] | Перезагрузить контроллер (RESET) |
+| [[#Служебные команды\|01]] | Отладочная. включает-выключает подробные логи. В релизе будет отключена |
+| [[#Служебные команды\|02]] | Подготовиться к приему файла. освободить место, отформатировать встроенную файловую, проверить хватит ли места.
_**Например**_, `02356987` - заявка на файл обновления размером 356987 байт.
Выполняется около 15 секунд, после чего весь прием данных в порту заносится в файл "update.bin".
Ответ при приеме файла - каждый блок (4096) - размер принятого.
По окончании - переход снова в режим команд (подробнее – [Обновление](#Обновление)). |
+| [[#Служебные команды\|03]] | Показать содержимое SPIFFS |
+| [[#Служебные команды\|04]] | Запустить ОТА обновление с ранее записанным файлом SPIFFS: `/update.bin` |
+| [[#Служебные команды\|05]] | Показать версию прошивки (указана в дефолтах) |
+| [[#Служебные команды\|06]] | Показать MAC-адрес (без двоеточий, как в оригинале), уникальный, можно считать серийным номером |
+| [[#Авторизация\|07]] | Безопасность (запрос авторизации от компа. На этот запрос создается рандомный запрос навстречу. См. [[#Алгоритм авторизации]]) |
+| [[#Авторизация\|08]] | Безопасность (прием ответа от компьютера на запрос `07`. См. [[#Алгоритм авторизации]]) |
+| [[#Служебные команды\|09]] | Сброс EEPROM (параметром - MAC без двоеточий, иначе не сбросится) |
+| 10 | Подтверждение принятия сигнала COIN, иначе этот сигнал будет посылаться снова с периодичностью `200 мс` (сколько приняли койнов, столько и подтверждений быть должно) |
+| 20X | Установить состояние выходов - всего выходов 8, давать их двоичное состояние.
_**Например**_, `203` - вывести 1 и 2 выходы по единичке, остальные - нолики. Соответственно, выход на разъеме будет "прижат" к земле. |
+| 21XY | Установить состояние выхода номер Х в -> Y \[0,1,2(инверсия)\].
_**Примеры:**_
`2131` - Включить 3 по индексу выход
`2170` - Выключить 7 по индексу выход |
+| [[#Отдельный раздел для призовой стойки\|25CCB]] | Витрина призов (см. [[#Отдельный раздел для призовой стойки]]):
`25` - запрос состояния;
`2501B` - выдать приз из ячейки `B`;
`2511B` - открыть ячейку `B`;
`25991`/`25990` - включить/выключить авторежим витрины. |
+| 30X | Хоппер 1.
`301` - Включить мотор хоппера
`300` - Выключить мотор хоппера
`309` - Выдать приз (в авторежиме[^1]) |
+| 40X | Хоппер 2.
Аналогично |
+| [[#Дополнительные цифровые GPIO\|50CCP]] | Дополнительные цифровые GPIO25/GPIO26 (см. [[#Дополнительные цифровые GPIO]]):
`50` - запрос состояния;
`5001P` - конфигурация входа;
`5005P` - запрос уровня входа;
`5010P` - установка выходов. |
+| [[#Программы адресных диодов\|8XYY[PARAMS]]] | Выбор программы адресных диодов `YY` по каналу `X`.
Для программы `08` дополнительно передается цвет `RRRGGGBBB`, для `8012..`/`8013..` - direct-группы из проекта 1 на 4-й ленте, где принимаются только `00` и `01..03` (см. [[#Программы адресных диодов]]). |
+| [[#Отдельный раздел для морского боя VR\|85XX[SSS]]] | Эффекты активной VM-матрицы (выбирается командой `96`).
**Для матрицы `s_b`:**
управляющие `00`/`01`;
тесты `25`;
direct-шкалы `30..34`;
базовые `10..22`;
спец. `40..49`;
заливки `80..82`.
**Для `dan_ro`/`rz`:**
эффекты `51..56`;
группа `8550XX` принудительно задаёт `dan_ro`.
`SSS` — длительность в секундах (см. [[#Отдельный раздел для морского боя VR]]). |
+| [[#Программы адресных диодов\|85]] | Без параметра отключает процесс рендеринга эффектов (чтобы освободить оперативную память) |
+| [[#Отдельный раздел для Данро\|8550XX[SSS]]] | Данро (принудительная матрица `dan_ro`):
`855000` — очистить экран;
`855001` — автокарусель вкл;
эффекты `855010..855016`;
`SSS` — длительность в секундах (см. [[#Отдельный раздел для Данро]]). |
+| [[#Отдельный раздел для RZ\|8560XX[SSS]]] | Резервная панель RZ (принудительная матрица `rz`):
`856000` — очистить экран;
`856001` — автокарусель вкл;
эффекты `856010..856016`;
`SSS` — длительность в секундах (см. [[#Отдельный раздел для резервной панели RZ]]). |
+| [[#Отдельный раздел для RZ\|96rz + 85XX[SSS]]] | Резервная панель RZ:
сначала `96rz` — выбрать матрицу, затем `85` — стоп;
`8500`/`8501` — авто выкл/вкл;
эффекты `8551..8556`; тесты `8525TVVV` (см. [[#Отдельный раздел для резервной панели RZ]]). |
+| [[#Настройки адресной подсветки\|89CKP]] | Настройки WS2812:
`C=0` - все 4 ленты,
`C=1/2/3` - 2-й/3-й/4-й физический канал;
`K=0` - порядок цветов (`0` RGB, `1` RBG, `2` BRG, `3` BGR, `4` GRB, `5` GBR),
`K=1` - яркость `0..255`,
`K=2` - гамма `0/1`.
***Примеры:***
`8901255` - яркость всех каналов 255;
`89021` - включить гамму;
`89304` - порядок GRB для 4-го физического канала. |
+| 90 | Очистить очередь команд |
+| 91 | Запрос состояния цифровых входов, их всего 24(+2 входа хоппера), ответ в двоичном коде.
Для уменьшения объема передаваемой информации, преобразуется в десятичное число
_**Примеры:**_
`INPUT67108863` (`11111111111111111111111111`) - все кнопки не нажаты
`INPUT67108861` (`11111111111111111111111101`) - нажата вторая кнопка |
+| 91X | _Дополнительно_: задать время антидребезга платы (`10..100` для штатного использования; по умолчанию 50 мс).
_**Например**_, `9110` - установить антидребезг на 10 мс |
+| 92 | Запрос значения аналоговых входов **(отключает автовывод)** - ответ в формате `ADC0,0,0,0`.
Всего 4 аналоговых входа |
+| 92X | Периодический автовывод значений аналоговых входов.
_**Например**_, `92100` - каждые 100 милисекунд выдавать значения ADC (`50..5000`) |
+| 93 | Запрос `global_summa` (число коинов, нестираемо) |
+| [[#Карты матриц\|96]] | Без параметра — запрос текущей активной VM-матрицы (ответ: `MATRIX: ROWS: COLS:`).
С параметром — выбор и сохранение матрицы в NVS.
Список доступных карт см. [[#Карты матриц]].
***Примеры:***
`96s_b` — морской бой;
`96dan_ro` — Данро;
`96rz` — резервная панель. |
+| 97 | Показать сохранённое в NVS имя активной матрицы.
***Формат вывода:*** `ROLE : <имя>` (до 20 символов). |
+| 98 | Запрос загруженности ядер, оперативки, свободного места в памяти |
+| 99 | Запрос статуса |
+
+
+[^1]: Авторежим: если датчик в закрытом состоянии - на полсекунды включить мотор, ждать сработки датчика либо таймаута. Если таймаут - выдать сообщение "HOPPER1 ERROR" и наглухо повесить процесс хоппера до перезагрузки. Иначе - сообщение "HOPPER1 OK"
+
+
## Примечания
### Служебные команды
@@ -86,50 +126,50 @@ by: Паша Николаевич
`02…09` – команды относятся к служебным (обновление прошивки и двойное рукопожатие)
>[!warning] Внимание!
->Обновляется только основная программа контроллера.
->Файл обновления передается как подготовленный `bin`.
->Ключи шифрования и авторизации должны соответствовать версии прошивки.
+>Перешивается только основная программа, не трогается таблица разделов и буты.
+>Поэтому контроллер должен шиться изначально в файловую систему «OTA0-1M+OTA1-1M+SpiFFS-1.7M».
+>При прошивке зашивается ключ шифрования и AES ключ авторизации.
+>Прошивка для обновления идет бин-файлом, уже криптованным.
### Программы адресных диодов
-`80NNYY[PARAMS]` - выбор программы адресных диодов, где NN - номер канала в формате ДВУХ (2, two) цифр, а YY - номер параметра базового эффекта.
+`8XYY[PARAMS]` - выбор программы адресных диодов, где X - номер канала в формате одной цифры, а YY - номер параметра базового эффекта.
Программа зависит от автомата и не может быть унифицирована. Именно для этого требуется обновление прошивки контроллера.
***Список базовых эффектов:***
-- 00 – ничего не выводить в канал
-- 01 – повторный периодический вывод последнего состояния
-- 02 – погасить (выводить нолики на всю длину)
-- 03 – красный
-- 04 – зеленый
-- 05 - синий с яркостью `B=100`
-- 06 - белый (100, 100, 100)
-- 07 - белый (255, 255, 255)
-- 08 - пользовательский цвет `RRRGGGBBB`, где каждая компонента `000..255`
-- 09 - радужный сдвиг на весь канал
-- 10 - морская волна для шапки морского боя
-- 11 - автоперебор медленных эффектов шапки морского боя
-- 20 - idle-анимация призовой стойки
-- 21 - подсветить полку призовой стойки, параметры `BCF`: ячейка `1..5`, цвет, мигание `0/1`
-- 22 - красная мигающая тревога
-- 23 - радужный сдвиг на весь канал
-- 90 - выводить состояние, которое заполняет виртуальная панель
+- `00` – ничего не выводить в канал
+- `01` – повторный периодический вывод буфера
+- `02` – погасить (выводить нолики на всю длину)
+- `03` – красный
+- `04` – зеленый
+- `05` - синий
+- `06` - серый (100, 100, 100)
+- `07` - белый
+- `08RRRGGGBBB` - пользовательский цвет, каждая компонента 3 десятичные цифры (`000..255`)
+- `09` - выводить ЛГБТ переливы
+- `10` - морская волна для шапки морского боя
+- `11` - автоперебор медленных эффектов шапки морского боя
-***Примеры:***
-- `800003` - все каналы красные
-- `800103` - канал 1 красный
-- `800002` - все каналы черные
-- `800208255000128` - канал 2, цвет RGB `255,000,128`
-- `800121311` - канал 1, полка 3, красный, мигает
+Для бродяг морей 4 канал - монетник и выдача приза:
+`8012хх`
+`8013хх`
-##### Настройки адресной подсветки
+- `1200` - очистить обе direct-группы на 4-й ленте; `1201..1203` - direct-группа 1, эффекты 1..3
+- `1300` - очистить обе direct-группы на 4-й ленте; `1301..1303` - direct-группа 2, эффекты 1..3
-`89CKP`:
-- `C` - канал: `0` для всех каналов подсветки, `1..4` для конкретного канала;
+#### Настройки адресной подсветки
+
+`89CKP` меняет настройки вывода WS2812. Это не выбор эффекта, а настройка того, как уже рассчитанный цвет будет записан в буфер конкретной ленты:
+- `C` - канал: `0` для всех каналов подсветки, `0..3` для конкретного канала;
- `K` - настройка: `0` порядок цветов, `1` яркость, `2` гамма-коррекция;
- `P` - значение настройки. Может состоять из нескольких цифр, например `255` для яркости. Если отправить только `89CK` без `P`, параметр будет принят как `0`, поэтому лучше передавать `P` явно.
-`K=0` сохраняет порядок цветов, `K=1` меняет яркость до перезагрузки, `K=2` включает/выключает гамма-коррекцию до перезагрузки.
+| `K` | `P` | Что меняет | Сохранение |
+| :-: | :------- | :------------------------------------------- | :--------------------- |
+| `0` | `0..5` | Порядок цветов в буфере WS2812 | Сохраняется в NVS |
+| `1` | `0..255` | Яркость ленты | Только до перезагрузки |
+| `2` | `0/1` | Гамма-коррекция: `1` включить, `0` выключить | Только до перезагрузки |
Порядки цвета для `K=0`:
@@ -142,17 +182,83 @@ by: Паша Николаевич
| `4` | GRB |
| `5` | GBR |
-***Примеры:***
-- `89004` - установить порядок `GRB` для всех каналов
-- `89104` - установить порядок `GRB` для 1-го канала
-- `89404` - установить порядок `GRB` для 4-го канала
-- `8901255` - установить яркость `255` для всех каналов
-- `8901128` - установить яркость `128` для всех каналов
-- `89020` - выключить гамма-коррекцию на всех каналах
-- `89421` - включить гамма-коррекцию для 4-го канала
+Для проверки удобно включать тестовые цвета:
+
+- `8003` - все ленты красным;
+- `8004` - все ленты зеленым;
+- `8005` - все ленты синим.
+
+Если какая-то лента показывает цвета неверно, поменяйте ее порядок через `89C0P`.
+
+###### Примеры порядка цветов
+
+| Команда | Что делает |
+| :--- | :--- |
+| `89004` | Установить `GRB` для всех лент |
+| `89104` | Установить `GRB` для 2-го физического канала |
+| `89204` | Установить `GRB` для 3-го физического канала |
+| `89304` | Установить `GRB` для 4-го физического канала |
+| `89000` | Установить `RGB` для всех лент |
+| `89300` | Установить `RGB` для 4-го физического канала |
+
+###### Примеры яркости и гаммы
+
+| Команда | Что делает |
+| :-------- | :--------------------------------------------------- |
+| `8901255` | Яркость `255` для всех лент |
+| `8901128` | Яркость `128` для всех лент |
+| `8931128` | Яркость `128` для 4-го физического канала |
+| `89021` | Включить гамма-коррекцию для всех лент |
+| `89020` | Выключить гамма-коррекцию для всех лент |
+| `89321` | Включить гамма-коррекцию для 4-го физического канала |
+| | |
+
+#### Карты матриц
+
+Выбор карты командой `96<имя>`, сохраняется в NVS, восстанавливается при загрузке.
+
+**Морской бой (s_b):**
+- `s_b` — основная карта, 58×42, 4 канала
+- `s_b_v1` — версия 1, 65×69, 3 канала, 4 канал шкалы (3 шкалы)
+- `s_b_v2` — версия 2, 65×69, 3 канала, 4 канал шкалы (4 шкалы)
+
+**Данро (dan_ro):**
+- `dan_ro` — основная карта, 61×19, 2 стрипа (strip 0 зеркалируется в strip 1)
+- `dan_ro_v1` — версия 1, 61×19, 1 стрип (без зеркала)
+
+**Резервная панель RZ (rz):**
+- `rz` — основная карта, 61×19, 2 стрипа (strip 0 зеркалируется в strip 1)
+- `rz_v1` — версия 1, 61×19, 1 стрип (без зеркала)
#### Специфичные программы
+##### Отдельный раздел для призовой стойки
+
+- `20` - режим простоя призовой стойки
+- `21BCF` - подсветить полку призовой стойки: `B` ячейка `1..5`, `C` цвет, `F` мигание `0/1`
+- `22` - красная мигающая тревога
+- `23` - ЛГБТ переливы на всю ленту
+- `90` - выводить внешний буфер, который заполняет рендер виртуальной панели
+
+`25CCB`:
+- `CC` – подкоманда;
+- `B` – номер ячейки `1..5`, если подкоманда работает с ячейкой.
+
+| Формат | Назначение |
+| :----: | :--------- |
+| `25` | Показать состояние всех ячеек |
+| `2501B` | Выдать приз из ячейки `B` |
+| `2511B` | Открыть ячейку `B` без списания приза |
+| `25991` | Включить автозапуск режима призовой стойки и перезагрузиться через 3 сек |
+| `25990` | Выключить автозапуск режима призовой стойки и перезагрузиться через 3 сек |
+
+Ответы:
+- `BOX_OPEN` – ячейка открыта;
+- `BOX_ERROR` – ячейка не открылась или нет приза;
+- `BOX_OK` – ячейка закрыта и содержит приз;
+- `BOX_OK+CARD` – в ячейке есть приз и привязанная RFID-карта;
+- `BOX_EMPTY` – ячейка пуста.
+
##### Отдельный раздел для Бродяги морей
`81XX[NN]` управляет двумя отдельными direct-объектами Бродяги морей. Эта группа похожа на direct-шкалы `8530..8534`, но не является частью команды `85` и используется отдельно от панелей `85`, `86` и `87`.
@@ -414,52 +520,34 @@ by: Паша Николаевич
- `87254105` - адресный элемент `105`
- `87` - остановить анимации
-## Список команд
+##### Дополнительные цифровые GPIO
-| Команда | Назначение, примеры, ответы |
-| ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| 00 | Перезагрузить контроллер (RESET) |
-| 01 | Отладочная. включает-выключает подробные логи. В релизе будет отключена |
-| 02 | Подготовиться к приему файла обновления.
_**Например**_, `02356987` - заявка на файл размером 356987 байт.
После подготовки все данные из порта записываются в файл обновления.
Ответ при приеме файла - размер принятого блока.
По окончании - переход снова в режим команд (подробнее – [Обновление](#Обновление)). |
-| 03 | Показать список файлов обновления и служебных файлов |
-| 04 | Запустить обновление с ранее переданным файлом |
-| 05 | Показать версию прошивки (указана в дефолтах) |
-| 06 | Показать MAC-адрес (без двоеточий, как в оригинале), уникальный, можно считать серийным номером |
-| 07 | Безопасность (запрос авторизации от компа. На этот запрос создается рандомный запрос навстречу. См. [[#Алгоритм авторизации]]) |
-| 08 | Безопасность (прием ответа от компьютера на запрос `07`. См. [[#Алгоритм авторизации]]) |
-| 09 | Сброс настроек контроллера. Параметр - MAC без двоеточий, иначе команда не выполнится. Накопительные счетчики сохраняются |
-| 10 | Подтверждение принятия сигнала COIN, иначе этот сигнал будет посылаться снова с периодичностью `200 мс` (сколько приняли койнов, столько и подтверждений быть должно) |
-| 20X | Установить состояние 8 выходов двоичной маской.
_**Например**_, `203` - включить выходы 1 и 2, остальные выключить. |
-| 21XY | Установить состояние выхода номер Х в -> Y \[0,1,2(инверсия)\].
_**Примеры:**_
`2131` - Включить 3 по индексу выход
`2170` - Выключить 7 по индексу выход |
-| 25CCB | Команды призового шкафа.
`25` - состояние всех ячеек
`2501B` - выдать приз из ячейки `B` (`1..5`)
`2511B` - открыть ячейку без списания
`25991` / `25990` - включить / выключить автозапуск призовой стойки с перезагрузкой |
-| 30X | Хоппер 1.
`301` - Включить мотор хоппера
`300` - Выключить мотор хоппера
`309` - Выдать приз (в авторежиме[^1]) |
-| 40X | Хоппер 2.
Аналогично |
-| 50CCP | Дополнительные выходы.
`50` - показать режимы и уровни
`5001P` - настроить режимы дополнительных выходов
`5005P` - показать краткое состояние `ADD:..`
`5010P` - установить уровни выходов |
-| 80NNYY | Выбор программы адресных диодов `YY` по каналу `NN`: `00` - все каналы, `01..04` - канал 1..4 (См. [[#Программы адресных диодов]]) |
-| 81XXNN | Бродяги морей: direct-объекты (См. [[#Отдельный раздел для Бродяги морей]]).
`8130` - очистить
`8131NN` / `8132NN` - уровни объектов
`81311..81313` и `81321..81323` - эффекты объектов |
-| 82..84 | Свободно / зарезервировано под новую логику |
-| 85XXSSS | Виртуальная панель морского боя `s_b` (См. [[#Отдельный раздел для морского боя VR]]) |
-| 85 | Без параметра отключает анимации `s_b` |
-| 86XXSSS | Виртуальная панель Данро (См. [[#Отдельный раздел для Данро]]) |
-| 86 | Без параметра отключает анимации Данро |
-| 87XXSSS | Резервная виртуальная панель RZ (См. [[#Отдельный раздел для RZ]]) |
-| 87 | Без параметра отключает анимации RZ |
-| 89CKP | Настройки адресной подсветки. Старый короткий вариант `89[X]` переключает цветовое чередование.
***Примеры чередования:***
- `89` или `8900` – RGB
- `8901` – RBG
- `8902` – BRG
- `8903` – BGR
- `8904` - GRB
- `8905` - GBR |
-| 90 | Очистить очередь команд |
-| 91 | Запрос состояния цифровых входов, их всего 24(+2 входа хоппера), ответ в двоичном коде.
Для уменьшения объема передаваемой информации, преобразуется в десятичное число
_**Примеры:**_
`INPUT67108863` (`11111111111111111111111111`) - все кнопки не нажаты
`INPUT67108861` (`11111111111111111111111101`) - нажата вторая кнопка |
-| 91X | _Дополнительно_: задать время антидребезга входов (`10..100`; по умолчанию установлено на 50 мс)
_**Например**_, 9110 - установить антидребезг на 10 мс |
-| 92 | Запрос значения аналоговых входов **(отключает автовывод)** - ответ в формате `ADC0,0,0,0`.
Всего 4 аналоговых входа |
-| 92X | Периодический автовывод значений аналоговых входов.
_**Например**_, `92100` - каждые 100 миллисекунд выдавать значения ADC (`50..5000`) |
-| 93 | Запрос `global_summa` (число коинов, нестираемо). Ответ: `SUMMA:` |
-| 96 | Cохранение в памяти платы пользовательского значения.
***Например,*** «роли» контроллера (левый-правый в морском бое, или шкаф…)
***Пример команды:*** `96right` |
-| 97 | Вывод пользовательского значения
***Формат вывода:*** `ROLE : <значение>` (до 20 символов) |
-| 98 | Запрос технического статуса контроллера: загрузка, память, свободное место |
-| 99 | Запрос статуса: имя контроллера, версия, `READY!` при `auth_ok=true` |
+`50CCP`:
+- `CC` – подкоманда;
+- `P` – числовой параметр.
-[^1]: Авторежим: если датчик в закрытом состоянии - на полсекунды включить мотор, ждать сработки датчика либо таймаута. Если таймаут - выдать сообщение "HOPPER1 ERROR" и наглухо повесить процесс хоппера до перезагрузки. Иначе - сообщение "HOPPER1 OK"
+| Формат | Назначение |
+| :----: | :--------- |
+| `50` | Показать режимы и уровни GPIO25/GPIO26 |
+| `5001P` | Настроить режимы: если `P > 9`, GPIO25 выход; если младший бит `P` равен `1`, GPIO26 выход |
+| `5005P` | Показать краткое состояние: `ADD:..` |
+| `5010P` | Установить уровни выходов: GPIO25 = `P > 9`, GPIO26 = младший бит `P` |
+
+# Обновление прошивки платы
+
+## Православный (новый)
+
+Зайти в програму для платы, и обновить прошивку через него.
+
+Для этого надо:
+1. Заполучить новую прошивку
+2. Подключить плату
+3. Открыть приложение
+4. Подключиться к плате через приложение
+5. Обновить прошивку через специальный пункт "Обновление прошивки"
+
+## Пендосский (старый)
-# Обновление
-
Файл обновления принимается командой `02`. После полного приема контроллер отвечает текущим количеством записанных байт и итоговым `file size= OK`, затем обновление запускается командой `04`.
Для обновления платы на новую версию прошивки надо: