Skip to content

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

 
 

Latest commit

 

History

78 Commits

Folders and files

Repository files navigation

microReader (ESP32-C3) — электронная шпаргалка с Wi-Fi

Карманный ридер на ESP32-C3 Super Mini и OLED 128x64 (SSD1306, I2C). Три кнопки, аккумулятор, файлы хранятся во флеше (LittleFS), загружаются и правятся через веб-страницу по Wi-Fi.

Основан на проекте microReader (AlexGyver), портирован на ESP32-C3.

Возможности

  • Чтение файлов .txt (большие тексты, потоково, UTF-8, кириллица).
  • Единый формат шпаргалки .md: текст, формулы (TeX), таблицы, графики функций и таблиц в одном файле, по одной странице на объект.
  • Файлы .tex (только формулы) — оставлены для совместимости.
  • Рендер TeX-формул со своим шрифтом: дроби, корни, степени и индексы, суммы, интегралы, пределы, греческие буквы, ~90 символов. Переносы по математическим правилам, мелкий шрифт и прокрутка, если формула не влезает.
  • Таблицы Markdown с выравниванием и скроллом, графики по формуле y = f(x) и по таблице значений.
  • Веб-интерфейс на Settings (GyverLibs): настройки, файловый менеджер со встроенным текстовым редактором, загрузка и скачивание файлов, обновление прошивки по воздуху (OTA).
  • Игры: динозавр, тетрис, змейка (доступны без PIN).
  • PIN-код при запуске (необязательно).
  • Режим левши, регулировка яркости, индикатор заряда, глубокий сон.
  • Картинки .itxt / .h — опционально, отключены по умолчанию (см. «Опции сборки»).

Железо и распиновка

Назначение GPIO (по умолчанию)
Кнопка ВВЕРХ 3
Кнопка ОК 2
Кнопка ВНИЗ 0
SDA дисплея 8
SCL дисплея 9
Измерение батареи (ADC) 1

Кнопки подключаются к земле (внутренняя подтяжка). Напряжение аккумулятора измеряется через делитель 100к/100к (VBAT_DIVIDER). Все пины и пороги заряда — в блоке #define в начале скетча.

Сборка

Версия ядра ESP32 для Arduino: 2.0.17. Можно использовать и 3.x.x, но программа займет больше места на устройстве

Настройки Arduino IDE:

Параметр Значение
Board ESP32C3 Dev Module
USB CDC On Boot Enabled
Flash Size 4MB
Partition Scheme с OTA и приложением 1.9 МБ, либо свой partitions.csv (см. ниже)
Core Debug Level None (экономит флеш)
Erase All Flash Before Sketch Upload Enabled при первой прошивке и при смене разделов

Библиотеки: Settings (зависимости: GTL, GyverDB, StringUtils, GyverHTTP, BSON, Stamp, Table, StreamIO ставятся автоматически), Saver, GTimer, GyverOLED (_fix), EncButton. Settings распространяется под лицензией GPL-3.0 — учитывайте это при распространении прошивки.

Если прошивка не влезает в раздел приложения, положите рядом со скетчем файл partitions.csv:

# Name,   Type, SubType, Offset,   Size
nvs,      data, nvs,     0x9000,   0x5000,
otadata,  data, ota,     0xe000,   0x2000,
app0,     app,  ota_0,   0x10000,  0x1A0000,
app1,     app,  ota_1,   0x1B0000, 0x1A0000,
spiffs,   data, spiffs,  0x350000, 0xB0000,

Это даёт два слота OTA по 1,7 МБ и 704 КБ под файлы. Таблицу разделов меняют только прошивкой по USB, после этого файлы нужно загрузить заново.

Управление

Где ВВЕРХ / ВНИЗ ОК
Главное меню выбор файла клик — открыть, удержание — меню Wi-Fi
Главное меню удержание ВВЕРХ — игры
.txt листать назад / вперёд удержание — выход
.md, .tex листать страницы или прокручивать клик — режим: страницы → верт. скролл → гор. скролл; удержание — выход
Экран PIN менять цифру клик — следующая цифра; удержание ВВЕРХ — игры

Если страница не помещается на экране, у края появляются стрелки ▶ ▼ (есть ещё содержимое справа/снизу) и ◀ ▲ (после прокрутки). В углу экрана номер страницы; V / H перед ним показывает режим прокрутки.

Формат .md — шпаргалка

Файл делится на секции заголовками ## Название (до 20 букв, кириллица поддерживается). Внутри секции страницы идут в таком порядке:

  1. Текст — обычные строки, переносятся по словам (21 символ в строке), пустая строка — абзац.
  2. Формулы — строки tex: ... (до 5 строк на страницу), синтаксис TeX.
  3. Таблица — строки | a | b |. Вторая строка |:--|--:| задаёт заголовок и выравнивание: :-- влево, :-: по центру, --: вправо.
  4. Графики — строки plot: ..., каждая даёт отдельную страницу.

Строки, начинающиеся с % или //, — комментарии. Курсив, жирный, ссылки и прочая разметка Markdown не поддерживаются сознательно.

Графики

plot: y = sin(x); y = cos(x); x = -2*pi..2*pi; y = -1.5..1.5
plot: y = x^2/4 - 2; x = -5..5
plot: table x=1 y=2,3
  • До трёх функций на график; линии различаются стилем (сплошная, пунктир, точки).
  • x = a..b и y = c..d — диапазоны (понимают pi). Без x берётся -10..10, без y — автомасштаб.
  • plot: table строит график по таблице секции: x=N — номер столбца для оси X, y=N[,N,N] — до трёх столбцов для Y (по умолчанию x=1 y=2). Нечисловые строки (заголовок) пропускаются.
  • В выражениях: + - * / ^, скобки, |x|, функции sin cos tan asin acos atan sinh cosh tanh exp ln log sqrt abs floor ceil sign, константы pi и e, неявное умножение (2x, 3(x+1)).

Готовые примеры лежат в папке с примерами: demo.md (все типы страниц) и fizika.md (практическая шпаргалка).

Формулы (TeX)

Поддерживаются: степени и индексы (x_1^2), \frac, \binom, \sqrt[n]{}, \int \iint \iiint \oint, \sum \prod \bigcup \bigcap с пределами, \lim, \underbrace/\overbrace, акценты \vec \hat \bar \dot \ddot \tilde, \text{}, греческие буквы, операторы, отношения, стрелки и логические символы, функции (\sin, \log, …). Неизвестные команды печатаются как текст.

Формула переносится только на верхнем уровне: после отношений (=, <, \leq, \to, …), а при их отсутствии после бинарных операторов (+, -, \cdot, \times), и никогда внутри скобок, дробей, корней и индексов. Если и так не влезло, используется мелкий шрифт, а потом прокрутка.

Веб-интерфейс

Удерживайте ОК в главном меню, чтобы открыть меню Wi-Fi, и подключитесь к точке доступа устройства (по умолчанию Reader AP, пароль 00000000; страница открывается автоматически благодаря captive portal, иначе обычно 192.168.4.1) либо включите подключение к вашему роутеру. Адрес страницы показывается на экране устройства. Пока браузер открыт, меню Wi-Fi не закрывается по таймауту.

Настройки применяются сразу при изменении поля, кнопка «Сохранить» не нужна:

  • Точка доступа / Подключение к сети — имена и пароли, автоподключение (применяются при следующем запуске Wi-Fi).
  • Другое — режим левши, размер сегмента игр, яркость, PIN-код.
  • Файлы — кнопка в правом верхнем углу страницы открывает файловый менеджер: загрузка, скачивание, удаление и редактирование текстовых файлов прямо в браузере. Новые файлы .md, .txt, .tex появятся в меню устройства после выхода из меню Wi-Fi.
  • Обновление прошивки (OTA) — в меню страницы.

Кириллица в названиях страниц и текстах — в UTF-8.

PIN-код

Задаётся на веб-странице (4 цифры, пустое поле — выключено), вступает в силу при следующем запуске. Пока PIN не введён, недоступны файлы и меню Wi-Fi; игры доступны без PIN (удержание ВВЕРХ на экране PIN). После неверного ввода растёт пауза (3 с × число ошибок, до 60 с).

PIN — лёгкая защита от случайного просмотра, не шифрование: данные во флеше не зашифрованы, а сервисный режим (запуск с зажатой ВВЕРХ) форматирует файловую систему.

Режим левши

Поворачивает изображение на 180° и меняет кнопки ВВЕРХ/ВНИЗ местами. Применяется сразу при переключении на веб-странице.

Опции сборки

В начале скетча:

//#define ENABLE_BITMAPS      // раскомментируйте для поддержки картинок .itxt / .h

Поддержка картинок вынесена в отдельную вкладку bitmaps.ino и по умолчанию выключена, чтобы экономить флеш. Формат — массив байт {0x.., 0x.., ...} 128x64 (1 КБ). Поддержка .jpg удалена.

Ограничения

  • .md: секция до 6 КБ, до 40 страниц в файле, до 160 строк в таблице или тексте, до 10 столбцов.
  • Формула страницы: до 5 строк и до 320 нод разбора.
  • Мелкий шрифт (3x5) без кириллицы: таблицы с кириллицей всегда рисуются обычным шрифтом (с прокруткой).

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages