Octoprint. Плюшки. Часть 1. Питание принтера.

Подписаться на 3Dtoday
vasyna
Идет загрузка
Загрузка
18.02.17
16339
54
печатает на Anycubic Kossel linear plus
Техничка
41
Я давно перешел на окту, рад. А еще раньше я пересел (точнее вынужденная мера) со сток блока питания на "православный" ATX блок питания. И вот дюже меня бесил момент включения/выключения. Ибо по первой у меня как и у всех был на коротко закорочен зеленый и черный провод. Т.е. принудительное включение. Со временем я осмелился на GPIO, но бесило лишнее тыканье в меню (спасибо плагину System Command Editor, я так пол года рулил блоком питания), а вот буквально на днях я вообще автоматизировал полностью процесс работы блока питания.
Начнем с комплектующих:
1. OrangePi * (любая версия с GPIO нам подойдет, но в основном у людей или One или PC) с установленным в данном случае Armbian + Octoprint
2. "Любой" PNP транзистор. В моем случае это какой-то 945 выпаянный с платы управления радиомашинкой самой дешевой (в свободное время переделываю машинки на 2.4ГГц управление со всеми плюшками, по сему такого добра валом). По пинам он в принципе похоже с этим http://paratran.com/2paratranKR.php?tr=120
3. Резистор 100Ом (опять же с той платы, мощность значения не имеет)
4. ATX блок питания
5. Паяльник, припой, канифоль какая-нибудь, немного проводков (я резал с того же БП)
6. Капельку интернета.

Поехали. Для начала любимое - софтварная часть.
Заходим по ssh на нашу апельсину (для малины WiringOP надо менять на WiringPI, ну и гит репозитарий другой).
В do_start добавляем строчку "gpio mode 24 OUTPUT"
т.е. на выходе получаем:

do_start()
{
# Return
# 0 if daemon has been started
# 1 if daemon was already running
# 2 if daemon could not be started

is_alive $PIDFILE
RETVAL="$?"

if [ $RETVAL != 0 ]; then
start-stop-daemon --start --background --quiet --pidfile $PIDFILE --make-pidfile \
--exec $DAEMON --chuid $OCTOPRINT_USER --user $OCTOPRINT_USER --umask $UMASK --nicelevel=$NICELEVEL \
-- $DAEMON_ARGS
gpio mode 24 OUTPUT
RETVAL="$?"
fi
}
Этим мы принудительно переведем ножку в режим выхода.
fee69c929ad2dd234a8a5ba1f821e78b.png
Закрываем, сохраняем.
Объясню почему 24. Это нога нам 100% не пригодится ни сегодня, ни завтра. По этому мы ее и используем. До этого юзал 11 ногу, она тоже не сильно нужна, но в дальнейшем мы будем прикручивать экран (тизер) и нам уже не стоит будет возвращаться сюда.
  • Закрываем терминал. И идем в WebGUI.
  • Settings - Plugin Manager (я надеюсь он у вас уже стоит, если нет, то читаем как установить тут https://github.com/foosel/OctoPrint) - Get More - PSU
c6d3c0ac38484055c32261d5b1579297.png
  • Устанавливаем плагин "PSU Control". Соглашаемся на рестарт окты.
  • Settings - PSU Control
4655d60db2f9dd205d3a301dffa59647.png
  • Switching Method - System Command
  • On System Command - gpio write 24 1
  • Off System Command - gpio write 24 0
  • Если не стоят галочки на "Automatically turn PSU ON" и "Automatically turn PSU OFF when idle" ставим.
  • SAVE
Ну в общем софтварно мы готовы. Поехали железо. Начнем с азов. В идеале ATX блок питания может рапортовать о том что он готов к включению и нас не ждет "бум да гаса разбейха ли барбосса" (как-то так это звучало в Звездных войнах :) ). По идее нужно брать этот аспект во внимание, но... опустим его. Еще PSU control может "палить" включен ли блок питания, но опять же я ранее пробовал при печати принудительно включать пин (gpio write 24 1) и ни чего не происходило, ну в смысле печать не приостанавливалась, смещения слове не было. Следовательно мы и этот пункт опустим.
Дальше питание самой апельсины. Ей надо 5В2А по даташиту, но лабораторник даже с нагрузкой на проц почти на 100%, 3.5'' экраном с подсветкой и белым экраном, поднятой сетью и подключенной MKS Gen 1.2 (которая не запитана на данный момент от 12В) показал потребление в пике 1А. Так что... у блока питания есть дежурное питание 5В до 2А. Т.е. блок питания включен в сеть, тумблер включен, power_on подтянут к + питания (т.е. висит в воздухе) и мы можем не включая всю эту "дуру" получить 5В2А, что более чем. Это у нас фиолетовый провод. Вот с него то мы и берем питания для нашей апельсинки. Т.е. по факту она все время будет включена ( Что нам и на руку. Лично я сидя на работе и отрисовав очередной корпус не замедлительно отправляю его на печать). Даже если добавить туда вебку и вентилятор на 5В для охлаждения апельсины, то все равно запаса у нас ВАГОН!
И так, непосредственно подключение:
a02af8494954042306e504d847e95321.JPG
Распиновка GPIO OrangePI:
Где первый пин на гребенке на плате отмечен белой стрелочкой. Вообще указанный нами 24 пин на самом деле на плате далеко не 24. Он на самом деле 35. Именно на гребенке. Но для WiringPI именно пин 24. Т.е. подключаем "24 pin GPIO" к 35 пину на гребенке. "Black wire from ATX" - к любому черном проводу и "Green wire from ATX" к зеленому проводу блока питания. Т.е. взяв подобный моему транзистор скосой стороной к себе, слева направо подключаем так:
1. Черный провод блока питания
2. Зеленый провод блока питания
3. На 35 (физически) пин гребенки GPIO (со стороны белой стрелочки 3-й снизу)
Но не забываем, нам надо обязательно ограничить ток на базу транзистора. 100Ом при 3.3В более чем. Т.е. между 3 пином транзистора и ножкой апельсины чудном образом должен оказаться резистор ;). Все это в термоусадку и... и как-то решите вопрос подключения провода от резистора к апельсине. Тут каждый сам горазд, но я сделал съемным, ибо бывает надо.
На выходе получаем вот такую конструкцию:
PREVIEW
Описываю порядок действия:
1. Блок питания в сети и тумблер его включен, но сам блок питания находится в спящем режиме и +12В у нас "нет"
2. Апельсина загружена
3. Заходим в WebGUI и делаем скажем "set home". Блок питания автоматически включается, у нас появляется 12В, моторы поехали и мы счастливы.
4. После печати по остыванию хотэнда до указанной температуры в "Wait For Temperature" либо если температура упала раньше/была меньше чем указанное в "Idle Timeout" (все это в octoprint - settings - PSU control) время за которое не поступит любая gcode команда за исключением указанных в "Ignore Commands" питание принтера будет выключено. Точнее будет выполнена команда "gpio write 24 0", которая разомкнет наш электронный ключ и блок питания обесточит все линии кроме дежурки. Т.е. даже в термокамере мы будет убеждены что хотэнд остыл и скажем между печатью "по месту" принтер выключаться не будет.
PS. Все это справедливо для заранее целого и качественного блока питания. Всякие дешевые корпусные блоки питания могут и 500мА на дежурке не держать. И опять же пренебрежение тригера готовности блока питания...
PSS. Опять же старался разжевать чтобы не прикладывать велико ума... а просто взять и пользоваться. По сему ребята волокущие можете спокойно пройти мимо, вы и не на такое способны, мы в вас не сомневаемся.

PSSS. Можно настроить на определенные команды в GCODE и добавить их в слайсинг, но как по мне это не удобно.
PSSSS. Принудительно включить питание с помощью данного плагина можно только подвигав любой осью, либо включив нагрев и прочее. Либо же в System Command Editor добавить 2 пункта меню:

Name - Printer power ON
Action -printer-power-on
command - gpio write 24 1
и
Name - Printer power OFF
Action - printer-power-off
command - gpio write 24 0
Use Confirmation - Ставим галочку чтобы при выключении был запрос

Message - Power Supply is currently ON.

Т.е. мы можем принудительно через System - Printer power ON включить питание или через Printer power OFF выключить.
PSSSSS. Если питание активировано плагином PSU, то сверху появится значок молнии. Если он зеленый, значит питание включено, если серый, то выключено. По нажатию на него можно так же включать и выключать питание:
470f2c78b4eb99ca4f7fdd1a89dadbab.JPG
c7167c8db88b562c157b8b33adb3fb09.JPG
За сим откланиваюсь.
Подписаться на 3Dtoday
41
Комментарии к статье

Комментарии

18.02.17 в 17:04
1
Отлично! К этому осталось добавить, что можно все это применить практически без изменений к традиционному кирпичу, путем включения его через твердотельное реле (DA). Да, питание малины-апельсины придется использовать внешнее.
18.02.17 в 17:29
1
Вполне. К простым бп более чем. Но размеры.
19.02.17 в 12:20
1
Это если кирпичи уже есть, установлены и работают. Я буду так делать, только заводить управление еще на ESP8266, чтобы можно было дергать розетку независимо от малины-апельсины.
19.02.17 в 14:43
1
Зачем? чем апельсина не устроила? я впн поднял у себя и открыл только 1 порт для него входящий и все ) В любой точке мира при наличии интернета рули и попробуй взломай )
19.02.17 в 14:59
0
Дополнительный контур отрубания. Если апельсина зависнет. Итоговая "гениальная розетка" должна управлять как от esp, так и от апельсины, первая приоритетнее.
19.02.17 в 15:03
1
Итоговая "гениальная розетка" должна управлять как от esp, так и от апельсины, первая приоритетнее.
Хммм... 2 симистора в ряд и все. Т.к. нагрузки там не такие и великие, то даже радик не сильно то и нужен будет.
19.02.17 в 15:05
0
Дык, это понятно. Традиционное MOC3063+BTA16.
19.02.17 в 21:50
0
А мне больше нравится просто умные розетки с LAN и Arduino. Напрямую с принтером никакой связи, но можно перезагрузить/выключить/включить принтер или что-то измерить... А лишний WiFi, да ещё и нифига не защищенный. ESP8266 не работает по HTTPS...
19.02.17 в 21:53
0
Согласен, с проводами спокойнее.
29.04.17 в 00:53
-1
Ну я так и представил, хаккер, вместо того чтобы зарабатывать приличные деньги программистом, будет неделями анализировать WiFi трафик соседей и в финале подаст питание на 3D принтер, удиви тем самым хозяев. Ну бред же. Можно же вредить всем проще, спички в замки совать, стекла бить и т.п. как было у всех в детстве до изобретения WiFi.
19.02.17 в 12:12
1
Да, питание малины-апельсины придется использовать внешнее.

На АТХ есть дежурные (неотключаемые) 5В. Или я чего путаю?

Add:
pin 9 => + 5VDC Standby
19.02.17 в 12:18
0
Это все одной фразой, относится к
к традиционному кирпичу
18.02.17 в 17:36
0
у меня похожим способом реализована, только два бп
5V
12V

Уппавляются тоже октопринтом правда через твердотельное реле, и GCODE
18.02.17 в 20:16
1
Главное новый корпус на старом корпусе не отпечатать :D
18.02.17 в 21:42
1
Я не совсем всё понял, но хочу и одобряю.
19.02.17 в 13:07
0
Я тоже мало что понял, но чувствую тема очень полезная.
Подскажите с чего начать изучение про Octoprint.
Самые основы.
Спасибо.
19.02.17 в 13:21
1
У меня нет собственно подробного описания процесса работы в OctoPrint, но есть про настройку и плюшки. Например:
http://3dtoday.ru/blogs/eta4ever/orange-octopus-a-step-by-step-guide/ (про начальную настройку, в плане используемого дистрибутива устарело)
http://3dtoday.ru/blogs/eta4ever/orange-octopus-junior-and-penguin-stuff/ (более актуально)
http://3dtoday.ru/tag/Octoprint/ (в целом можно пролистать)
19.02.17 в 13:32
0
Спасибо. Буду изучать.
19.02.17 в 14:28
0
Эхъ, если б мне не лень было... Ведь полезная вещь же, особенно когда наночь ставлю, и засыпаю по звуки принтера, то к середине ночи, если печать закончилась вой вентиляторов всё же напрягает, а так всё тихо было бы...
19.02.17 в 14:45
1
15 минут на все если. Ибо тернистый путь то уже пройден. Ctrl+c ctrl+v и все готово )
08.05.17 в 00:58
0
Случайно не знаете можно ли в качестве команд включения/отключения использовать http запросы?
У меня беспроводная розетка включается таким кодом:

http://IP:3480/data_request?id=lu_action&DeviceNum=57&serviceId=urn:upnp-org:serviceId:SwitchPower1&action=SetTarget&newTargetValue=1

Вот как запихнуть это в Octoprint?
08.05.17 в 06:37
1
К сожаленю я не могу сейчас запустить окту (блок питания и 2 окта на работе, я все таки запустил сенсор, скоро будет мануальчик )))) ). Но вот я точно помню что или в самой окте или... Да вот же:
http://3dtoday.ru/blogs/vasyna/octoprint-buns/
Только надо не напрямую, а скорее всего
http://proft.me/2013/08/17/spravochnik-po-komandam-wget-i-curl/
curl --request POST "http://example.com/form/" --data "field1=value1&field2=value2"
Тебе по идее
curl --request POST "http://IP:3480/data_request?id=lu_action&DeviceNum=57&serviceId=urn:upnp-org:serviceId:SwitchPower1&action=SetTarget&newTargetValue=1"
08.05.17 в 09:11
0
Огромное спасибо! Заработало! :)

Сработало так:
curl 'http//IP:3480...'

Теперь принтер под полным контролем :)
08.05.17 в 11:54
0
А авторизация тут где? Или так?
08.05.17 в 12:09
0
Не понял вопроса? Ты имеешь ввиду лог/пасс? Так я так понимаю у автора нет ее. но и это не проблема. пост то у нас есть.
08.05.17 в 12:11
0
Да-да, именно. Я уж испугался, что оно прямо так работать будет.
08.05.17 в 12:23
0
Ну я хз что там за розетка, но вроде бы есть и с авторизацие, есть без, есть те которые можно включать/выключать. В любом случае логпасс по POST передются, следоватлеьно можно выдрать запрос из браузера и затулить его, потом 1 сек таймаута и запрос на выключение.
24.05.17 в 09:13
0
Подскажите, если я хочу использовать более простую схему из штатного БП для принтера и отдельно постоянно включенной апельсинки, достаточно ли будет включить в разрыв сетевого (230в) провода принтера твердотельное реле SSR-25DA, а на управляющий контакт просто подать выход GPIO24 через резистор 100 Ом? Или надо какие то еще схемы наворачивать?
24.05.17 в 09:25
1
Не совсем понял мысль по поводу резистора. Зачем он там? токоограничивающий резистор уже есть в реле. Так что просто подключаем и все. А так да. 220 один провод в разрыв через реле и 24 ногу на управялющий плюс, землю управляющую на землю окты/платы управления принтера, корпус блока питания (если он GND, т.е. звонится), выхода GND блока питания. И все. У меня сейчас примерно по такому принципу и сделано. С установкой силиконовой грелки я отказался от ATX в виду слишкой большой лишней мощности и сейчас так же стоит на входе ттр.
09.07.17 в 09:23
0
Не подскажите, как настроить функцию мониторинга состояния БП в данном плагине? (Orange Pi Zero)
09.07.17 в 13:34
0
Через делитель напряжения из 12В делаем 5. Цепляем на любую ногу и указываем этот пин в плагине
09.07.17 в 14:36
0
У меня АТХ, так что я там 3.3В на ногу вывожу, но дело не в этом... Я как ни указываю в плагине ногу, оно не работает. Если через SSH командами ногу считывать, то всё нормально, но плагин не видит...
09.07.17 в 18:40
0
У меня все работает. От простого юзверя ноги позволяет дергать?
10.07.17 в 01:41
0
Дёргать через gpio write без проблем. С управлением блоком всё в порядке. Проблема с считыванием его статуса. Я там просто на ногу прицепил 3.3В вывод блока. Через SSH считывание по gpio read нормально работает, а вот если в плагине ногу указать, то хрен вам... (сейчас возможности что-нибудь проверить нет, ибо Zero сгорела...)
14.01.18 в 12:15
0
Добрый день! Не получается состояние питания настроить. В веб морде постоянно зеленым горит значек питания. По ssh состояние gpio 23 приходит 0 или 1 в зависимости от питания. В чем может быть дело?
acd9001009673f05407a57cb1b5fd30f.jpg
c9b272197ca2037ed79f77c6b86b5b85.jpg
14.01.18 в 12:37
0
К сожалению давно не пользуюсь подобным и изначально не пользовался сенсором, ибо как по мне он лишний. Так что не подскажу.
16.11.17 в 20:57
-1
что то не едут у меня лыжи. Имею orange pi zero. Ее питание от дежурки. arduino запитано отдельно от преобразователя 5v, питание 12v от рампса отключено. Сгородил схемку, выполнил установку wiringOP но т.к. на зеро всего 26 пиновая гребенка то в настройках выставил gpio 11 если я понял правильно это 26 нога гребенки. Но зайдя в веб морду т.к. arduino отключено то естественно связи с ней нет и не доступны все органы управления, соответственно послать команду по какой бы включилось питание через web морду не возможно. Круг замкнулся. Как этим теперь управлять и правильно ли я понял соответствие пинов?
[IMG]
17.11.17 в 06:41
0
Прочтите статью и сделайте все букву в букву. И поедут ваши лыжи.
Закрываем терминал. И идем в WebGUI.
Settings - Plugin Manager (я надеюсь он у вас уже стоит, ес...
17.11.17 в 08:57
0
Стоят нужные plugin. Как должен октопринт себя вести если нет коннекта с arduino если на ней нет питания? Что то должно быть активно по управлению? Сомневаюсь. И все же хотелось уточнить по соответствию gpin правильно ли я понял что gpin 11 в данном случае на гребенке контакт 26?
[IMG]
17.11.17 в 09:02
0
Распиновку ищите в интренете, желание нет.
System command editor поставили? Добавили команды? Вверху меню, называется system. Там появится включить и выключить.
17.11.17 в 09:16
0
Да найти то нашел но там довольно запутано. Поэтому есть сомнения. Сейчас к сожалению идет печать поэтому все управление активно если питания на arduino нет то управление не активно. к сожалению не помню активно ли меню под кнопкой "питание"
d74d80d058a451de628aa4ad5db09083.png
4cb13d0af41b8a7a0a5a7dab5c6f1f3b.png
[IMG]
17.11.17 в 09:21
0
Принудительно включить питание с помощью данного плагина можно только подвигав любой осью, либо включив нагрев и прочее. Либо же в System Command Editor добавить 2 пункта меню:

Name - Printer power ON
Action -printer-power-on
command - gpio write 24 1
и
Name - Printer power OFF
Action - printer-power-off
command - gpio write 24 0
Use Confirmation - Ставим галочку чтобы при выключении был запрос

Message - Power Supply is currently ON.

Т.е. мы можем принудительно через System - Printer power ON включить питание или через Printer power OFF выключить.
17.11.17 в 09:30
0
Спасибо. Попробую этот вариант.
[IMG]
19.11.17 в 11:17
-1
Как всегда дело было на в бобине. Надо было ставить wiringOP-zero. Под зеро особая версия.
в сети есть соответствие распиновки зеро но оно не соответствует действительности. Указано что пин 26 это gpio10 в реальности это gpio 11.
В схемке управления ошибка, для умеющего держать паяльник не критична но все же. На коллектор n-p-n транзистора должен приходить минус на ATX блоках питания это черный провод. Следовательно зеленый на эмиттер.
[IMG]
19.11.17 в 11:19
-1
До вот еще что

Name - Printer power OFF
Action - printer-power-off
command - gpio write 24 0
не работает
сообщение от окты
Command custom:printer-power-off not found
[IMG]
19.11.17 в 11:22
-1
PS. Для тех у кого пинг отваливаться окончательно в простое - переформатируйте и накатите образ заново. Мне помогло.
[IMG]
19.11.17 в 14:40
0
1/ Все там правильно. Нам надо зеленый сажать на землю. Так зеленый подтянут к плюсу. Не путайте.
2. Научитесь редактировать сообщения.
3. не работает у вас. У нас все работает.
19.11.17 в 14:39
0
del
19.11.17 в 18:44
0
Как раз сейчас у меня все работает.
[IMG]
18.02.18 в 19:57
0
А не скажет ли благородный дон, какой репозиторий надо использовать для малины? На гитхабе поискал, а там их по ключевым словам много.
https://github.com/WiringPi/WiringPi ? И он еще каким-то образом должен кончаться на .git?
Ну и дурацкий вопрос: собрался отвести на управление питанием нижний левый пин на малине #37, он же gpio26. Мне в do_start надо будет 37 или 26 вписывать?
Благодарю заранее.
18.02.18 в 20:41
0
git clone git://git.drogon.net/wiringPi
Все зависит от используемой библы. gpio readall выдаст табличуку с пинами. там и найдете как она называется.
18.02.18 в 21:19
0
"Все зависит от используемой библы". - Папа, а ты сейчас с кем разговаривал? (из известного анекдота) :)

То есть, вместо нужно
git clone git://git.drogon.net/wiringPi

без .git на конце и без -b h3 ?

Или, может быть, благородному дону будет угодно снизойти и объяснить почему нельзя просто прописать
gpio mode 24 OUTPUT
в /etc/init.d/octoprint , а надо еще какой-то репозиторий клонировать. Пиндосы-то вроде без этого как-то обходятся:
https://github.com/foosel/OctoPrint/wiki/Controlling-a-relay-board-from-your-RPi
Хотя они наверняка косячат. ;)
UPD: не, они не косячат, именно так и делают. Просто я проглядел, они установку библиотек в отдельную ссылку вынесли. Вопрос снят.
19.02.18 в 00:14
0
Для тех, кто в танке (т.е. таких, как я) и у кого малина:
  • cd /home (здесь именно домашняя папка вашего пользователя. Напр, если пользователь не pi, а вы создали и работаете под пользователем maker, то "cd /home/maker" )
  • git clone git://git.drogon.net/wiringPi (все, как говорило светило)
  • cd WiringPi
  • chmod +x ./build
  • sudo ./build (здесь-то, видимо, библы и устанавливаются)
  • sudo nano /etc/init.d/octoprint
Тут оказалась странность. захотел использовать физический пин 7. Проверил его по таблице
$ gpio readall
Там он физически №7, wPi 7, BCM 4. Так вот прописывать его надо, почему-то, именно как 7, а не 4.
gpio mode 7 OUTPUT
после этого перезагрузиться и опять gpio readall и увидеть, что физический пин 7 стал выходом.
Спасибо vasyna.
Это для тех, кто, как и я, не знает, где какой пин:
https://raspberrypi.stackexchange.com/questions/66873/how-to-read-output-of-gpio-readall
19.02.18 в 08:08
0
Там он физически №7, wPi 7, BCM 4. Так вот прописывать его надо, почему-то, именно как 7, а не 4.
Это все зависит от реализации библиотеки. Кто как формирует нумерацию.

Для написания комментариев, пожалуйста, авторизуйтесь.

Читайте в блогах

Rolls-Royce испытывает авиационные двигатели нового поколения с 3D-печатными деталями

Трёхопорное крепление стола для дрыгопринтера

3D PRINT EXPO. Еще год спустя

как я каретку менял (Anet E10). Или недостоверная инструкция по замене.

Фотожаба го го!

Знакомство с 3д печатью, как я стал геркулесоводом, и впечатления от Hercules