Все работы

Tetrat

Программа для плоттера Хорус, которая работает прямо в браузере. Ничего не нужно устанавливать: плоттер подключается по USB к Chrome, Edge или Яндекс Браузеру.

Тип
Свой продукт
Платформа
Веб, Web Serial
Что делали
Продукт, дизайн, разработка
Год
2026
Tetrat

Задача

Хорус — недорогой плоттер, который пишет обычной ручкой. Программа, которая идёт с ним, неудобная, и после видео с плоттером люди стали спрашивать, где взять нормальную. Нужен был продукт целиком: сайт, вход, пробный период, оплата и студия, в которой можно разобраться без инструкции.

Студия

Слева текст с простой разметкой: заголовок, дата, пункт, формула в $…$, график функции. Справа лист в клетку, на котором сразу видно, как ляжет почерк и сколько займёт печать. Движок почерка на Python запускается в браузере через Pyodide в отдельном потоке, поэтому интерфейс не замирает.

Плоттер из браузера

Плоттер подключается через Web Serial. Драйвер GRBL отправляет G-код и следит, чтобы в 128-байтном буфере контроллера всегда было место, а состояние опрашивает каждые 110 мс. Студия сама находит угол листа упором, проверяет касание ручки, обводит рамку, ставит печать на паузу, останавливает её и продолжает с нужного слова.

Сервис

Сервер на Node.js без сторонних зависимостей: регистрация, сессии, три дня пробного доступа, тарифы на месяц и на год, оплата через ЮKassa. Каждый платёж сервер перепроверяет сам, а повторные пробные периоды и одноразовые почты отсекает.

Как браузер управляет плоттером

Лента G-кода идёт в бункер на 128 байт: новая строка уходит, только когда контроллер освободил место. Храповик раз в 110 мс спрашивает состояние, а ручка пишет слово штрих за штрихом.

TETRAT
Кончик пера и свежий штрих — за ними и следитеКолонна — 128-байтовый буфер: строка встаёт сверху, толкатель убирает снизу по подтверждениюХраповик щёлкает раз в 110 мс: опрос статуса, флажок Idle / RunTetrat — студия в браузере и подписка для плоттера Horus, который пишет текст почерком. Ставить ничего не нужно: плоттером управляют прямо из браузера через Web Serial (Chrome, Edge, Яндекс Браузер), плата на GRBL подключена по USB (CH340). Движок почерка на Python работает тут же, в браузере: Pyodide 0.27.2 в Web Worker. Драйвер GRBL отправляет G-код, считая байты: следующая строка уходит, только когда подтверждённые байты освободили место в 128-байтовом приёмном буфере контроллера, а статус он опрашивает каждые 110 мс (запрос «?», ответ Idle или Run). Студия находит угол листа по концевикам, опускает и поднимает перо, рисует рамку, печатает с паузой, остановкой и аварийной остановкой и умеет продолжить с нужного слова. На столе — модель: строки встают в колонну по мере отправки, толкатель убирает их по подтверждению контроллера, а уровень на шкале — число байтов в буфере. Слово на листе и скорость пера здесь иллюстрация, не запись с живого плоттера.

Технически

  • Web Serial: плоттер работает из Chrome, Edge и Яндекс Браузера, драйверы и программы не нужны.
  • Pyodide 0.27 в Web Worker: движок почерка на Python работает в браузере, а не на сервере.
  • Поток G-кода с подсчётом байт под буфер GRBL и опрос состояния каждые 110 мс.
  • Проверка прошивки по $I и $$, потолки скорости берутся из настроек самой платы.
  • Node.js без зависимостей: http, node:sqlite и scrypt; оплата ЮKassa с проверкой на сервере.

React · TypeScript · Vite · Web Serial · Pyodide · Node.js · SQLite

Обсудим ваш проект?

Обсудить проект