Внешние кнопки управления через ESP и HTTP

Открытая прошивка RepRapFirmware
Аватара пользователя
demonlibra
Помогаю слегка
Сообщения: 2552
Зарегистрирован: 18 янв 2020, 11:49
Откуда: Ростов-на-Дону

Внешние кнопки управления через ESP и HTTP

Сообщение demonlibra »

Пост для репраповодов и немного для юниводов

Ссылка на источник https://t.me/uni3dchat/236369

Долго искал дисплей для своего UNI на RepRap, но сенсорные дисплеи мне не нравятся.
Как-то раз увидел пульт управления ЧПУ станка, сразу появилась мысль сделать что-то подобное и понеслось. Реализовал простые функции: экстренная остановка, передвижение осей и остановка печати.
В итоге панель управления обросла дополнительными функциями: отображение статуса печати, статуса подключения, статуса прогрева стола и сопла, скриптованный запуск MESH, вывод BLTouch из ошибки, дополнительные датчики температуры, 4 аналоговых датчика, освещение и телеграм бот.
Все реализовал на HTTP запросах, физически панель подключается только к блоку питания принтера, следовательно ее можно расположить не только на самом корпусе принтера.
Сначала хотел все сделать навесом, но повсеместная реклама JLCPCB не дала расслабиться, и я пошел рисовать плату.

Взял ESP32 из-за большого количества портов и двухядерности, так как запрос статуса принтера занимает довольно много времени и в случае реализации на ESP8266 вешает весь скетч пока ждет ответа.

Получилась вот такая панель.
Фото по порядку: бот, режим ОТА, отображение статуса печати, процесс прогрева (синий - стол, красный - сопло), сама плата, ну и небольшая демонстрация.

Это первая рабочая инкарнация панели и прошивки. Поставил в принтер ее только для демонстрации.
Если кому-то интересно и хочет присоединиться к доработке, то милости просим.

Скетч написан через жо..у, даже стыдно показывать. Если человек мало по малу умеет писать скетч, то никакого труда повторить не вызовет.

Изображение Изображение Изображение Изображение

Изображение
Не бойся поломать. Бойся не починить ))
Изображение
Аватара пользователя
demonlibra
Помогаю слегка
Сообщения: 2552
Зарегистрирован: 18 янв 2020, 11:49
Откуда: Ростов-на-Дону

Re: Внешние кнопки управления через ESP и HTTP

Сообщение demonlibra »

Код: Выделить всё

--------Как работает модуль с кнопками:--------

1. Создается очередь в которую записывается http запрос на принтер
2. В цикле панель отправляет http запрос статуса на принтер
3. В ответ получает json bразбивает его по переменным
	3.1 если статус "Ожидает", то панель готова отправлять на принтер нажатия кнопок
	3.2 если статус отличный от "Ожидает", то работают только кнопки освещения, так как принтеру можно отправить сразу куча запросов и они встанут в очередь. Когда он освободится он начнет их все выполнять, хотя уже уже не нужно 
4. Если нажата кнопка то в начало очереди записывается http запрос и отправляется на принтер
5. Следом за ним идет запрос статуса и блокирует кнопки пока статус снова не станет "Ожидает"
6. Двойное нажатие на кнопку яркости освещения запускает режим ОТА
7. Тройное нажатие на кнопку СТОП перезагружает ESP
8. Кнопка MESH:
	8.1 Если BLTouch находится в состоянии ошибки то нажатие на MESH сбросит ошибку
	8.2 Если BLTouch не в ошибке, то запустится сначала преднагрев стола до 70 градусов, а затем запустится построение mesh сети. Остальные кнопки останутся заблокированными пока не закончится задача построение mesh сетки
9. Экстренная остановка работает по двойному нажатию кнопки.
10. Кнопки выбора осей Х, У и Z:
	- однократное нажатие 0.1
	- двукратное нажатие  10
	- трехкратное нажатие 50
11. Кнопка выбора фидера:
	- однократное нажатие 10
	- двукратное нажатие  20
	- трехкратное нажатие 50

--------Как работает модуль прогресс-бара:--------

1. Из переменных созданных из json получаем статус принтера, данные о температуре, текущем слое и проценте выполненного задания
	1.1 Если принтер в статусе "Ожидает", то не делаем ничего
	1.2 Если принтер в статусе "Печать", то отображаем статус печати
	1.3 Если принтер в статусе "Занят", то отображаем бегущий зеленый огонь
	1.4 Если принтер в статусе "Пауза", то отображаем бегущий оранжевый огонь
	1.3 Если панель, какое то время, не получала данные от принтера, то отображаем бегущий красный огонь
	1.4 Если если панель подключается к wifi, то отображаем бегущий синий огонь
	1.5 Если идет нагрев стола или сопла(перед печатью или запуском прогрева собственноручно), то отображаем статус прогрева стола или сопла(прогресс бар делится на две части, левая показывает нагрев стола, а правая нагрев сопла
	1.6 Если панель в режиме ОТА, то отображаем зеленые огни включенные через одного

--------Как работает телеграм бот:--------

1. При включении принтера отправляет в бот сообщение "Старт", которое также выведет меню, если настроена очистка истории бота
2. Из бота можно:
	- запросить статус принтера. В ответе будет информация из полученного json, плюс статус освещения и ссылки на вебкамеру и DWC
	- включить/выключить/поменять яркость освещения
	- посмотреть информацию по датчикам температуры подключенным к панели
3. Более глубокие функции управления принтером не стал реализовывать в соображениях безопасности и случайных нажатий
Не бойся поломать. Бойся не починить ))
Изображение
Аватара пользователя
demonlibra
Помогаю слегка
Сообщения: 2552
Зарегистрирован: 18 янв 2020, 11:49
Откуда: Ростов-на-Дону

Re: Внешние кнопки управления через ESP и HTTP

Сообщение demonlibra »

Не бойся поломать. Бойся не починить ))
Изображение

Вернуться в «RepRapFirmware»