ИСПОЛНИТЕЛЬ НАЙДЕН - TOTP-генератор на ESP32/Arduino Pro Micro с OLED-дисплеем

dilmipospe

✩✩✩✩✩✩✩
9 Апр 2023
1
0
Нужен скетч для TOTP-генератора (одноразовые пароли каждые 30 сек)
Библиотека для него уже есть (GitHub)
Компоненты: Arduino Pro Micro / ESP32 , DS3231mini, OLED (варианты), 3 кнопки.

аппаратный токен TOTP (до 20 ключей, хранящихся в памяти самой arduino pro micro, либо esp32) с 3 физическими кнопками. будет подключен 0.91" OLED дисплей (возможно, другой. в данный момент имеется 128х32) новые ключи добавляются прямо на устройство без необходимости подключать его к компьютеру. первые 2 кнопки используются только для выбора нужного пункта меню или выбора буквы или цифры при добавлении TOTP-ключа (карусельный выбор букв и цифр .
char = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 <"; (у ключей свой набор символов, их меньше). есть 3 длинны ключей. самый длинный - 32 сивола. третья кнопка для подтверждения выбора.
перед запуском - пароль для входа. в случае неверного ввода - таймер на 20 секунд. перезагрузкой таймер не сбить (флаг).
меню должно содержать 2 пункта: "показать код" и "настройки". в "настройки" должны быть подпункты: добавить ключ, удалить ключ, настройка времени, пароль, выход. при добавлении ключа нужно указать имя ключа (так же карусельным выбором). При показывании кода показывается имя ключа и сам код (6 цифр).
если TOTP-ключей не добавлено или удалены все - выводится сообщение об ошибке "нет ключей". если TOTP-ключей уже 20 и пользователь пытается добавить ещё - "максимум ключей". используется защита от дребезга контактов, обновление дисплея каждую секунду. обязательна полоса времени действия кода. каждую секунду (обновление экрана) полоска увеличивается пропорционально слева направо. хранить все ключи и имена ключей нужно в долговременой памяти. в карусели символов (используется при вводе ключа TOTP или имени ключа) символ < стирает предыдущий введёный символ. пароль для входа задаётся в настройках в разделе "пароль" и состоит из 6 цифр

Желательны небольшие размеры (если будет esp32/esp8266, то только модуль с минимальной обвязкой для уменьшения размеров), а так же электрическая схема и схема печатной платы (для заказа платы).

Баловался с запросами такого скетча к GPT-4, но он 10 сообщений спустя забывает о чём говорили и начинает накидывать в код вообще несуразицу. С каждым изменением путает переменные. Отдельными кусками код есть, но соединить и подправить не могу. Готов заплатить.
 
Изменено: