Commit as of 2026-01-26 16:38:16 by Dis_Bro (Данил)

This commit is contained in:
Данил Ярош 2026-01-26 16:38:16 +03:00
parent 22ed7f5d50
commit 5ae1848a9b
3 changed files with 64 additions and 1 deletions

View File

@ -40,7 +40,9 @@
- Добавил файл [[🔒Защита от Кости (Лицензирование)]]
- Чутка отредачил текст от \_sega
## Январь 2026
- 26.01.2026 Dis_Bro
- Добавил информацию о системе команд для новой платы, структурировал, расписал подробнее

View File

@ -0,0 +1,61 @@
>[!info]- Общие сведения
> - Подключается к компьютеру по переходу USB - COM порт.
> - В системе определяется как компорт.
> - Параметры: 115200-8-N-1-нет
# Система команд
- Общение - строка, заканчивающаяся кодами (0xD)+(0xA), достаточно любого из них  для окончания строки
- Минимально – ДВА (2, two) символа. 00+\<Enter\> – команда, а 0+\<Enter\> – уже нет
- Таймаут - 100 милисекунд, если строка за это время не окончилась - идет игнорирование команды
Команды получаемые от компьютера помещаются в очередь и выполняются последовательно, кроме команд "сброс" и "очистка очереди".
Шифрование обмена: проработать, в процессе, будет двойное рукопожатие при помощи AES256 c фиксированным ключом.
#### Кнопка SERVICE на плате:
- Если ее зажать и удержать при включении – выполнится сброс EEPROM
- При работе – посылает команду «SERVICE – предлагая компьютеру перейти в режим настройки игровой программы
# Команды
| Команда | Назначение |
| ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 00 | Перезагрузить контроллер (RESET) |
| 02 | Подготовиться к приему файла. освободить место, отформатировать встроенную файловую, проверить хватит ли места. <br>_**Например**_, `02356987` - заявка на файл обновления размером 356987 байт.<br>Выполняется около 15 секунд, после чего весь прием  данных в порту заносится в файл "update.bin".<br>Ответ при приеме файла - каждый блок (4096) - размер принятого.<br>По окончании - переход снова в режим команд (подробнее – [[#Обновление]]). |
| 03 | Показать содержимое SPIFFS |
| 04 | Запустить ОТА обновление с ранее записанным файлом SPIFFS: `/update.bin` |
| 05 | Показать версию прошивки (указана в дефолтах) |
| 06 | Показать MAC-адрес (без двоеточий, как в оригинале), уникальный, можно считать серийным номером |
| 07 | Безопасность (авторизация, в процессе, двойное рукопожатие) |
| 08 | Безопасность (авторизация, в процессе) |
| 09 | Сброс EEPROM (параметром - MAC без двоеточий, иначе не сбросится) |
| 10 | Подтверждение принятия сигнала COIN, иначе этот сигнал будет посылаться снова с периодичностью `200 мс` (сколько приняли койнов, столько и подтверждений быть должно) |
| 20X | Установить состояние выходов - всего выходов 8, давать их двоичное состояние.<br>_**Например**_, `203` - вывести 1 и 2 выходы по единичке, остальные - нолики. Соответственно, выход на разъеме будет "прижат" к земле. |
| 21XY | Установить состояние выхода номер Х в -> Y \[0,1,2(инверсия)\].<br>_**Примеры:**_<br>`2131` - Включить 3 по индексу выход<br>`2170` - Выключить 7 по индексу выход |
| 30X | Хоппер 1.<br>`301` - Включить мотор хоппера<br>`300` - Выключить мотор хоппера<br>`309` - Выдать приз (в авторежиме[^1]) |
| 40X | Хоппер 2.<br>Аналогично |
| 80X | Выбор программы адресных диодов.<br>Программа зависит от автомата и не может быть унифицирована. Именно для этого требуется обновление прошивки контроллера.<br>Кроме, пожалуй (считать тестовыми, остальное добавлять по вкусу):<br>- 0: Ничего не выводить в канал<br>- 1: Погасить (выводить нолики на всю длину)<br>- 2: Выводить ЛГБТ переливы<br>- 3: Выводить статичный белый |
| 81XY | Задать скважность PWM канала номер Х в -> Y (`0..99`; по умолчанию включен  на `PWM1` ) |
| 90 | Очистить очередь команд |
| 91 | Запрос состояния цифровых входов, их всего 24(+2 входа хоппера), ответ в двоичном коде.<br>Для уменьшения объема передаваемой информации, преобразуется в десятичное число<br>_**Примеры:**_<br>`INPUT67108863` (`11111111111111111111111111`) - все кнопки не нажаты<br>`INPUT67108861` (`11111111111111111111111101`) - нажата вторая кнопка |
| 91X | _Дополнительно_: задать время антидребезга платы (`10..100`; по умолчанию установлено на 50 мс)<br>_**Например**_, 9110 - Установить антидребезг на 10 мс |
| 92 | Запрос значения аналоговых входов **(отключает автовывод)** - ответ в формате `ADC0,0,0,0`.<br>Всего 4 аналоговых входа |
| 92X | Периодический автовывод значений аналоговых входов.<br>_**Например**_, `92100` - каждые 100 милисекунд выдавать значения ADC (`50..5000`) |
| 93 | Запрос `global_summa` (число коинов, нестираемо) |
| 99 | Запрос статуса |
[^1]: Авторежим: если датчик в закрытом состоянии - на полсекунды включить мотор, ждать сработки датчика либо таймаута. Если таймаут - выдать сообщение "HOPPER1 ERROR" и наглухо повесить процесс хоппера до перезагрузки. Иначе - сообщение "HOPPER1 OK"
# Обновление
Для обновления платы на новую версию прошивки надо:
1. Волшебным образом заполучить флешку с новой прошивкой
2. Проверить, что прошивка на плате точно старше при помощи команды `05`
3. Выбрать файл новой прошивки с флешки
4. Вполнить появившуюся команду
5. После успешного выполнения команды, проверить состояние SPIFFS
6. При наличии выделенного места, обновить прошивку при помощи команды `04`, дождаться завершения обновления
7. Проверить, что прошивка на плату встала при помощи команды `05`
8. ...
9. PROFIT!