Commit as of 2026-01-26 16:38:16 by Dis_Bro (Данил)
This commit is contained in:
parent
22ed7f5d50
commit
5ae1848a9b
@ -40,7 +40,9 @@
|
||||
- Добавил файл [[🔒Защита от Кости (Лицензирование)]]
|
||||
- Чутка отредачил текст от \_sega
|
||||
|
||||
|
||||
## Январь 2026
|
||||
- 26.01.2026 Dis_Bro
|
||||
- Добавил информацию о системе команд для новой платы, структурировал, расписал подробнее
|
||||
|
||||
|
||||
|
||||
|
||||
@ -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!
|
||||
Loading…
x
Reference in New Issue
Block a user