Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nikelborm/3d-printer
Панель управления 3d-принтером
https://github.com/nikelborm/3d-printer
bootstrap chartjs customize-cra express minimist mobx mobx-react raspberry-pi react react-dropzone react-router serialport styled-components websocket
Last synced: 16 days ago
JSON representation
Панель управления 3d-принтером
- Host: GitHub
- URL: https://github.com/nikelborm/3d-printer
- Owner: nikelborm
- Created: 2021-04-14T10:40:17.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2024-01-04T17:51:52.000Z (about 1 year ago)
- Last Synced: 2024-01-04T18:45:45.449Z (about 1 year ago)
- Topics: bootstrap, chartjs, customize-cra, express, minimist, mobx, mobx-react, raspberry-pi, react, react-dropzone, react-router, serialport, styled-components, websocket
- Language: JavaScript
- Homepage: https://hello-printy-3d.herokuapp.com/login/
- Size: 3.31 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Описание проекта
## Если кратко, то...
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_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_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_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_154107.png?raw=true)
![https://github.com/nikelborm/3d-printer/blob/main/readme-images/Screenshot_20210414_154659.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_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_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_154910.png?raw=true)
![https://github.com/nikelborm/3d-printer/blob/main/readme-images/Screenshot_20210414_155557.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. [Терминал](https://hello-printy-3d.herokuapp.com/admin/terminal/). Можно отправлять команды любые G команды ( а это абсолютный контроль над всеми системами принтера ) и видеть все отчёты, которые отправляет принтер в ответ. Также есть возможность очистить терминал и некоторые отладочные функции. Если принтер не подключён или идёт печать, показывается предупреждающее уведомление, что отправка команд будет либо бесполезна, либо опасна.
2. [Контроль осей](https://hello-printy-3d.herokuapp.com/admin/axesControl/). Джойстик представляет из себя графическую оболочку над командами для управления положением печатающей головки и стола. Движение по оси происходит относительно текущей позиции. Можно изменять координату на 0.1, 1, 10, 100 единиц. Можно делать в обоих направлениях по каждой оси. Также можно вернуть всё в базовое положение. Функция нужна для тестирования позиционирования печатающих элементов и проверки работы движущих элементов. Также выводятся предупреждения. Во время печати мы не даём человеку выстрелить себе в ногу и все нажатия во время печати модели приведут лишь к всплывающему уведомлению.
3. [Температура](https://hello-printy-3d.herokuapp.com/admin/heatObserver/). На графике показываются реальные температуры и температуры, до которых планируется нагрев, головки и стола за последние 5 минут. Если отсутствует подключение к принтеру, кнопки блокируются.
4. [Загрузка модели](https://hello-printy-3d.herokuapp.com/admin/loadSlicedModel/). Можно загрузить нарезанную модель. Такое же предупреждение как и на предыдущих страницах. Файл можно как выбрать на файловой системе так и просто перетащить в браузер. Как только начинается печать, вниз показывается статус бар печати, содержащий имя файла, анимированный прогресс бар, процент выполненности, время начала печати и время окончания. Когда печать подойдёт к концу, прогресс бар станет зелёным и появится возможность закрыть статус бар. Прогресс бар можно будет увидеть даже, если закрыть сайт, а потом снова её открыть. В планах добавить функцию финального подтверждения отправки файла, чтобы выбранная модель не отправлялась на печать сразу.