Octoprint: яркость вспышки и удаленное выключение

Наигравшись вдоволь со вспышкой для камеры, я начал понимать что чего то не хватает.
Вот нет удовлетворенности в душе, нет.

Думал я думал, и сформулировал, чего конкретно мне не нравится в этом.
Итак:
  1. Вспышка слишком яркая. Камера не успевает подстроится, в результате таймлапс пересвечен.
  2. Если включить свет и смотреть картинку, при записи кадра свет погаснет. Это раздражает.
  3. Окту надо выключать правильно, через меню. Но принтер то продолжает работать. Надо идти и щелкать выключателем. Лень.
Раздумья привели меня к следующему: 1 канала с окты для управления светом - мало. Надо 4. Пилотный свет (для просмотра), вспышка (для таймлапса), яркость_больше, яркость_меньше. Еще 1 канал на выключение принтера. Так же желательно чтобы принтер выключался не сразу вслед за октой, а через 7 секунд (время на перезагрузку мозгов). Блок питания менять на ATX я не собираюсь, меня вполне устраивает имеющийся. Так что будем извращаться с тем что есть.

Нам понадобится: твердотельное реле, кнопка первоначального запуска, контроллер обслуживающий все хотелки.

Начнем с кнопки. Сначала хотел вот такую



Но блин, она огромная. И дорогая.

Поэтому купил такую. Но в черном корпусе.



Теперь контроллер. Логика в прошивке такая: Через 2сек после включения, подается 12в на твердотельное реле. Независимые уровни яркости для пилота и вспышки (яркость регулируется подачей ШИМ на драйвер светодиодов), уровни хранятся в EEPROM, их можно изменять из окты, пилотный вход имеет приоритет перед вспышкой. Т.е. если включен пилот, любые мельтешения вспышки игнорируются. Логика настройки яркости: включили вспышку, отрегулировали ее яркость. Включили пилот - отрегулировали. Значения записаны в энергонезависимую память. Дальше при включении будут выставлены нужные уровни.
При появлении лог.1 на входе power, запускается 7сек таймер, по окончании которого, снимается 12в с твердотельного реле.
Почему не подать лог.1 напрямую с окты на SSR? А потому что при софтовой перезагрузке окты или малины, эта 1 становится 0 А в моем случае, принтер выключится только при явном указании "выключись".

Сделал все на atmega48.



Платка получилась небольшой.





Входы подключаем к малине, вот так



С железом все. Теперь покопаемся в мозгах октомалины.

В /etc/init.d/octoprint в секцию do_start прописываем переключение всех нужных gpio со входа на выход.


В ~/.octoprint/config.yaml в секцию events прописываем вкл-выкл вспышки при записи кадра таймлапса


В секцию server, в конце systemShutdownCommand дописываем: точка-с-запятой команда лог.1 на Power (да, окта может выполнять последовательно несколько команд через ;




Теперь заходим в веб-интерфейс. Ставим (если еще не поставили) плагин SystemCommandEditor.
С ним удобней.

Создаем пункты меню.


Вот типа так.




В регуляторах яркости используем ту самую точку-с-запятой.



Что получилось




Перегружаем и радуемся.

Небольшое видео про включение и выключение принтера.

Загрузка плеера

Подробнее...

Читайте на сайте