From 5ae1848a9be970a92a40dc17f1db12e7475cc82c Mon Sep 17 00:00:00 2001 From: Dis_Bro Date: Mon, 26 Jan 2026 16:38:16 +0300 Subject: [PATCH] =?UTF-8?q?Commit=20as=20of=202026-01-26=2016:38:16=20by?= =?UTF-8?q?=20Dis=5FBro=20(=D0=94=D0=B0=D0=BD=D0=B8=D0=BB)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- GreatGamedevVault/CHANGELOG.md | 4 +- .../2. Периферия/Система команд новой платы.md | 0 .../2. Периферия/Система команд платы v2.x.md | 61 +++++++++++++++++++ 3 files changed, 64 insertions(+), 1 deletion(-) delete mode 100644 GreatGamedevVault/Библиотека скриптов/2. Периферия/Система команд новой платы.md create mode 100644 GreatGamedevVault/Библиотека скриптов/2. Периферия/Система команд платы v2.x.md diff --git a/GreatGamedevVault/CHANGELOG.md b/GreatGamedevVault/CHANGELOG.md index 8989e8f..c28aed0 100644 --- a/GreatGamedevVault/CHANGELOG.md +++ b/GreatGamedevVault/CHANGELOG.md @@ -40,7 +40,9 @@ - Добавил файл [[🔒Защита от Кости (Лицензирование)]] - Чутка отредачил текст от \_sega - +## Январь 2026 +- 26.01.2026 Dis_Bro + - Добавил информацию о системе команд для новой платы, структурировал, расписал подробнее diff --git a/GreatGamedevVault/Библиотека скриптов/2. Периферия/Система команд новой платы.md b/GreatGamedevVault/Библиотека скриптов/2. Периферия/Система команд новой платы.md deleted file mode 100644 index e69de29..0000000 diff --git a/GreatGamedevVault/Библиотека скриптов/2. Периферия/Система команд платы v2.x.md b/GreatGamedevVault/Библиотека скриптов/2. Периферия/Система команд платы v2.x.md new file mode 100644 index 0000000..3b00a64 --- /dev/null +++ b/GreatGamedevVault/Библиотека скриптов/2. Периферия/Система команд платы v2.x.md @@ -0,0 +1,61 @@ +>[!info]- Общие сведения +> - Подключается к компьютеру по переходу USB - COM порт. +> - В системе определяется как компорт. +> - Параметры: 115200-8-N-1-нет + +# Система команд + +- Общение - строка, заканчивающаяся кодами (0xD)+(0xA), достаточно любого из них  для окончания строки +- Минимально – ДВА (2, two) символа. 00+\ – команда, а 0+\ – уже нет +- Таймаут - 100 милисекунд, если строка за это время не окончилась - идет игнорирование команды + +Команды получаемые от компьютера помещаются в очередь и выполняются последовательно, кроме команд "сброс" и "очистка очереди". + +Шифрование обмена: проработать, в процессе, будет двойное рукопожатие при помощи AES256 c фиксированным ключом. + +#### Кнопка SERVICE на плате: +- Если ее зажать и удержать при включении – выполнится сброс EEPROM +- При работе – посылает команду «SERVICE – предлагая компьютеру перейти в режим настройки игровой программы + +# Команды + +| Команда | Назначение | +| ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| 00 | Перезагрузить контроллер (RESET) | +| 02 | Подготовиться к приему файла. освободить место, отформатировать встроенную файловую, проверить хватит ли места.
_**Например**_, `02356987` - заявка на файл обновления размером 356987 байт.
Выполняется около 15 секунд, после чего весь прием  данных в порту заносится в файл "update.bin".
Ответ при приеме файла - каждый блок (4096) - размер принятого.
По окончании - переход снова в режим команд (подробнее – [[#Обновление]]). | +| 03 | Показать содержимое SPIFFS | +| 04 | Запустить ОТА обновление с ранее записанным файлом SPIFFS: `/update.bin` | +| 05 | Показать версию прошивки (указана в дефолтах) | +| 06 | Показать MAC-адрес (без двоеточий, как в оригинале), уникальный, можно считать серийным номером | +| 07 | Безопасность (авторизация, в процессе, двойное рукопожатие) | +| 08 | Безопасность (авторизация, в процессе) | +| 09 | Сброс EEPROM (параметром - MAC без двоеточий, иначе не сбросится) | +| 10 | Подтверждение принятия сигнала COIN, иначе этот сигнал будет посылаться снова с периодичностью `200 мс` (сколько приняли койнов, столько и подтверждений быть должно) | +| 20X | Установить состояние выходов - всего выходов 8, давать их двоичное состояние.
_**Например**_, `203` - вывести 1 и 2 выходы по единичке, остальные - нолики. Соответственно, выход на разъеме будет "прижат" к земле. | +| 21XY | Установить состояние выхода номер Х в -> Y \[0,1,2(инверсия)\].
_**Примеры:**_
`2131` - Включить 3 по индексу выход
`2170` - Выключить 7 по индексу выход | +| 30X | Хоппер 1.
`301` - Включить мотор хоппера
`300` - Выключить мотор хоппера
`309` - Выдать приз (в авторежиме[^1]) | +| 40X | Хоппер 2.
Аналогично | +| 80X | Выбор программы адресных диодов.
Программа зависит от автомата и не может быть унифицирована. Именно для этого требуется обновление прошивки контроллера.
Кроме, пожалуй (считать тестовыми, остальное добавлять по вкусу):
- 0: Ничего не выводить в канал
- 1: Погасить (выводить нолики на всю длину)
- 2: Выводить ЛГБТ переливы
- 3: Выводить статичный белый | +| 81XY | Задать скважность PWM канала номер Х в -> Y (`0..99`; по умолчанию включен  на `PWM1` ) | +| 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` (число коинов, нестираемо) | +| 99 | Запрос статуса | + +[^1]: Авторежим: если датчик в закрытом состоянии - на полсекунды включить мотор, ждать сработки датчика либо таймаута. Если таймаут - выдать сообщение "HOPPER1 ERROR" и наглухо повесить процесс хоппера до перезагрузки. Иначе - сообщение "HOPPER1 OK" + +# Обновление + +Для обновления платы на новую версию прошивки надо: +1. Волшебным образом заполучить флешку с новой прошивкой +2. Проверить, что прошивка на плате точно старше при помощи команды `05` +3. Выбрать файл новой прошивки с флешки +4. Вполнить появившуюся команду +5. После успешного выполнения команды, проверить состояние SPIFFS +6. При наличии выделенного места, обновить прошивку при помощи команды `04`, дождаться завершения обновления +7. Проверить, что прошивка на плату встала при помощи команды `05` +8. ... +9. PROFIT! \ No newline at end of file