Skip to content

Панель управления 3d-принтером

Notifications You must be signed in to change notification settings

nikelborm/3d-printer

Repository files navigation

Описание проекта

Если кратко, то...

  1. Легко доступен из поиска
  2. Имеет уникальный функционал, не имеющий аналогов
  3. Хорошо выглядит на всех устройствах (почти)
  4. Неубиваемый ( самовосстанавливается при ошибках )
  5. Лёгкий
  6. Защищённый
  7. Непривередливый ( запустится на чём угодно )
  8. Универсальный ( поддерживает подавляющее большинство существующих принтеров )
  9. Легко настраивается
  10. Масштабируем

Экраны приложения

Авторизация

https://github.com/nikelborm/3d-printer/blob/main/readme-images/Screenshot_20210414_152542.png?raw=true

Терминал

https://github.com/nikelborm/3d-printer/blob/main/readme-images/Screenshot_20210414_152903.png?raw=true

https://github.com/nikelborm/3d-printer/blob/main/readme-images/Screenshot_20210414_153134.png?raw=true

Контроль осей

https://github.com/nikelborm/3d-printer/blob/main/readme-images/Screenshot_20210414_154107.png?raw=true

https://github.com/nikelborm/3d-printer/blob/main/readme-images/Screenshot_20210414_154659.png?raw=true

Загрузка нарезанной 3d модели

https://github.com/nikelborm/3d-printer/blob/main/readme-images/Screenshot_20210414_154444.png?raw=true

https://github.com/nikelborm/3d-printer/blob/main/readme-images/Screenshot_20210414_154752.png?raw=true

Наблюдение за температурой

https://github.com/nikelborm/3d-printer/blob/main/readme-images/Screenshot_20210414_154910.png?raw=true

https://github.com/nikelborm/3d-printer/blob/main/readme-images/Screenshot_20210414_155557.png?raw=true

TODO: Добавить график, на котором отображены реальные значения

Далее подробно

  1. Сайт выводится в поисковой выдаче Яндекса на первой строке при запросе Hello Printy 3D.
  2. Мы избавились от всех проводов и вы можете управлять вашим 3d принтером из любой точки мира. И в дополнение реализован уникальный механизм отправки моделей на печать, не имеющий аналогов. Во всех программах для того чтобы отправить модель на печать, нужно подключить 3d принтер к ПК, запустить печать и держать ПК подключённым к принтеру на протяжении процесса печати. У нас же всё реализовано так, что даже при отключении от принтера raspberry pi, он допечатает загруженную модель до конца самостоятельно. Этого удалось достичь благодаря тому что наше приложение работает напрямую с внутренней памятью 3d принтера, загружая в неё 3d модель. А потом с помощью g команды запускает её печать.
  3. Предыдущая версия с упрощённым меню отображалась на телефонах отлично. С текущим меню следует поработать над адаптивностью. Весь остальной контент на страницах отображается хорошо.
  4. Система автоматического развёртывания приложения после отправки новой версии кода на github. Работает как в части сервера, так и в части raspberry pi.
  5. Система для автоматического перезапуска приложения в случае критических сбоев. Работает как в части сервера, так и в части raspberry pi.
  6. Система для запуска приложения при старте системы. Работает как в части сервера, так и в части raspberry pi.
  7. Реализована система Graceful Shutdown, для безопасного завершения процессов. Работает как в части сервера, так и в части raspberry pi.
  8. Реализована система Self-Healing WebSocket, для автоматического переподключения к серверу в случае потери соединения. Работает как на веб клиентах, так и на raspberry pi.
  9. Соединение между сервером и веб клиентами, а также между сервером и raspberry pi идёт через WebSocket.
  10. Подключение raspberry pi к принтеру идёт через Serial порт.
  11. Реализована система авторизации WebSocket подключений. Благодаря ей только авторизованные подключения с raspberry pi и веб клиентов смогут выполнять какие-либо привилегированные действия. До авторизации все сообщения, кроме запросов авторизации игнорируются. И в случае если произошло некое событие в нашей системе неавторизованное устройство о нём уведомлено не будет.
    1. Только авторизованная raspberry pi будет получать команды отправленные с веб клиентов и только авторизованная raspberry pi сможет отправлять какие-либо сообщения о своём состоянии на сервер.
    2. Только авторизованные веб клиенты смогут отправлять команды и получать данные о состоянии принтера.
  12. Так как веб сервер и код для raspberry pi это два независимых компонента, то их можно можно запускать как на разных устройствах (как это сейчас: серверная часть запущена на heroku и доступна на весь интернет, а принтерный компонент запущен на raspberry pi), так и вместе на raspberry pi. Для второго варианта понадобится только изменить лишь одну строчку в конфигурационном файле. И в таком случае панель управления будет доступна исключительно внутри локальной сети по айпи, который она занимает. Выбор за конечным пользователем, что ему удобно.
  13. Наша система универсальна и непривередлива.
    1. Код сервера и код для работы с принтером запускается на любом из семейств ОС: Linux, Windows, Mac.
    2. На любых устройствах, способных запустить эти ОС. Главное чтобы была поддержка интернета и серийных портов (необходимо только для работы с принтером). То есть вы можете использовать не только raspberry pi, но и любые другие (например более дешёвые) микрокомпьютеры.
    3. Это же касается и вебсервера, который очень нетребователен к ресурсам.
    4. Отдельно хочется подчеркнуть, что наша система также может работать со всеми принтерами, которые подключаются через серийный порт ( почти все 3d принтеры имеют эту возможность ). Для смены принтера опять же необходимо поправить лишь пару строчек в конфигурационном файле на raspberry pi.
  14. Простая конфигурация как сервера, так и raspberry pi.
  15. Наша система легко масштабируема. Вы можете покдлючить до 4х принтеров одновременно к raspberry pi и после того как поправить несколько строчек в конфигурационном файле системы автозапуска процессов, все они станут доступны в панели управления. Но работать будут синхронно. Так модель отправленная на печать запустится на всех принтерах одновременно, что особенно востребованно для промышленных производств. В будущем планируется добавление асинхронной работы с принтерами (можно будет выбрать с каким конкретно идёт сейчас работа)
  16. Наша система позволяет отслеживать подключён ли принтер к интернету, успешно ли соединение по последовательному порту.
  17. Принтер после того как получает какую-либо команду всегда отправляет какой-либо отчёт. И все отправленные отчёты можно наблюдать на сайте. История всех этих отчётов ведётся с момента открытия вкладки браузера и пока не закроется. В будущем планируется добавить возможность сохранения истории отчётов на сервере и их подгрузка при входе в интерфейс.
  18. В случае, если произошла ошибка в коде на raspberry pi, то на сервер отправляется отчёт об этой ошибке.
  19. В панели управления реализовано 4 глобальных возможности:
    1. Терминал. Можно отправлять команды любые G команды ( а это абсолютный контроль над всеми системами принтера ) и видеть все отчёты, которые отправляет принтер в ответ. Также есть возможность очистить терминал и некоторые отладочные функции. Если принтер не подключён или идёт печать, показывается предупреждающее уведомление, что отправка команд будет либо бесполезна, либо опасна.
    2. Контроль осей. Джойстик представляет из себя графическую оболочку над командами для управления положением печатающей головки и стола. Движение по оси происходит относительно текущей позиции. Можно изменять координату на 0.1, 1, 10, 100 единиц. Можно делать в обоих направлениях по каждой оси. Также можно вернуть всё в базовое положение. Функция нужна для тестирования позиционирования печатающих элементов и проверки работы движущих элементов. Также выводятся предупреждения. Во время печати мы не даём человеку выстрелить себе в ногу и все нажатия во время печати модели приведут лишь к всплывающему уведомлению.
    3. Температура. На графике показываются реальные температуры и температуры, до которых планируется нагрев, головки и стола за последние 5 минут. Если отсутствует подключение к принтеру, кнопки блокируются.
    4. Загрузка модели. Можно загрузить нарезанную модель. Такое же предупреждение как и на предыдущих страницах. Файл можно как выбрать на файловой системе так и просто перетащить в браузер. Как только начинается печать, вниз показывается статус бар печати, содержащий имя файла, анимированный прогресс бар, процент выполненности, время начала печати и время окончания. Когда печать подойдёт к концу, прогресс бар станет зелёным и появится возможность закрыть статус бар. Прогресс бар можно будет увидеть даже, если закрыть сайт, а потом снова её открыть. В планах добавить функцию финального подтверждения отправки файла, чтобы выбранная модель не отправлялась на печать сразу.