• Willkommen zur 3D-Druck-Community, einer nichtkommerziellen,
  • werbefreien und privaten Plattform rund um das Thema 3D-Drucken
  • vorrangig im deutschsprachigen Raum. Von User für User.
Hallo, Gast! Anmelden Registrieren


Themabewertung:
  • 1 Bewertung(en) - 1 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Mit Octoprint Schalten
#1
Hi!
 
Ich wollte meinen Drucker und andere Peripherie Über das webUi bzw. loakal an meinem Drucker Steuern. Lösungsansätze gibt es viele. Aber keins hat mir so wirklich gefallen.
 
Zum Schluss habe ich mich dazu entschieden die GPIO Schnittstelle an meinem OPI (Orange PI) zu verwenden. 
 
Hierzu habe ich mir bei Ali ein GPIO Relais Board und bei Reichelt mir ein paar Widerstände und eine Folientastatur besorgt.
 
 Zu den Funktionen:
 
- Schalten vor Ort über Taster
- Schalten aus der Ferne über Octoprint ( Softwareswitch)
 
Was soll noch kommen:
- Octoprint Plug-In (Relais Status mit Rot / Grün Ampel)
- Automatikfunktionen in Octoprint (z.B. Schalte Drucker aus nach druck Ende)
 
Was brauch man:
 
Hardware:
- OPI / RPI
- Relais Board 
- Dupont Brücken oder Stecker (Männlein / Weiblein)
- Tastatur oder einzelne Taster
 
Software: 
 
-      Betriebssystem (Armbian o.ä.)
-      Octoprint
-      Wiriring OP / Wiring RP
-      Texteditor (midnight commander)
-      Putty
 
Wie Funktioniert es:
 
-      Ihr installiert euer System
-      Installiert Octoprint ( Wenn nötig)
-      Installiert Wiring OP / RP und konfiguriert eure GPIO Schnittstelle
 
Ich habe mir nun hierzu 2 kleine Shell Scripts geschrieben.
Das eine ist für den Software Switch über Octopi und das andere um eine Selbsthaltung der Ausgänge zu realisieren.


script gpiosw
 
Code:
#! /bin/bash

# +-----+-----+----------+------+---+--OrangePiPC--+---+------+---------+-----+--+
# | BCM | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | BCM |
# +-----+-----+----------+------+---+----++----+---+------+----------+-----+-----+
# |     |     |     3.3v |      |   |  1 || 2  |   |      | 5v       |     |     |
# |   2 |   8 |    SDA.0 | ALT5 | 0 |  3 || 4  |   |      | 5V       |     |     |
# |   3 |   9 |    SCL.0 | ALT5 | 0 |  5 || 6  |   |      | 0v       |     |     |
# |   4 |   7 |   GPIO.7 |  OUT | 0 |  7 || 8  | 0 | OUT  | TxD3     | 15  | 14  |
# |     |     |       0v |      |   |  9 || 10 | 0 | OUT  | RxD3     | 16  | 15  |
# |  17 |   0 |     RxD2 |  OUT | 0 | 11 || 12 | 0 | OUT  | GPIO.1   | 1   | 18  |
# |  27 |   2 |     TxD2 |  OUT | 0 | 13 || 14 |   |      | 0v       |     |     |
# |  22 |   3 |     CTS2 |  OUT | 0 | 15 || 16 | 0 | OUT  | GPIO.4   | 4   | 23  |
# |     |     |     3.3v |      |   | 17 || 18 | 0 | OUT  | GPIO.5   | 5   | 24  |
# |  10 |  12 |     MOSI | ALT4 | 0 | 19 || 20 |   |      | 0v       |     |     |
# |   9 |  13 |     MISO | ALT4 | 0 | 21 || 22 | 0 | OUT  | RTS2     | 6   | 25  |
# |  11 |  14 |     SCLK | ALT4 | 0 | 23 || 24 | 0 | ALT4 | CE0      | 10  | 8   |
# |     |     |       0v |      |   | 25 || 26 | 0 | OUT  | GPIO.11  | 11  | 7   |
# |   0 |  30 |    SDA.1 | ALT4 | 0 | 27 || 28 | 0 | ALT4 | SCL.1    | 31  | 1   |
# |   5 |  21 |  GPIO.21 |  OUT | 0 | 29 || 30 |   |      | 0v       |     |     |
# |   6 |  22 |  GPIO.22 |  OUT | 0 | 31 || 32 | 0 | OUT  | RTS1     | 26  | 12  |
# |  13 |  23 |  GPIO.23 |  OUT | 0 | 33 || 34 |   |      | 0v       |     |     |
# |  19 |  24 |  GPIO.24 |  OUT | 0 | 35 || 36 | 0 | OUT  | CTS1     | 27  | 16  |
# |  26 |  25 |  GPIO.25 |   IN | 0 | 37 || 38 | 0 | OUT  | TxD1     | 28  | 20  |
# |     |     |       0v |      |   | 39 || 40 | 0 | OUT  | RxD1     | 29  | 21  |
# +-----+-----+----------+------+---+----++----+---+------+----------+-----+-----+
# | BCM | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | BCM |
# +-----+-----+----------+------+---+--OrangePIPC--+------+----------+-----+-----

# Pin 2  VCC     Relay
# Pin 6  GND     Relay
# Pin 7  GPIO.7  Relay 1
# Pin 29 GPIO.21 Relay 2
# Pin 31 GPIO.22 Relay 3
# Pin 33 GPIO.23 Relay 4
# Pin 12 GPIO.1  Taster 1
# Pin 16 GPIO.4  Taster 2
# Pin 18 GPIO.5  Taster 3
# Pin 26 GPIO.11 Taster 4


#Wichtige Variablen Setzen
gpio mode 7 out
gpio mode 21 out
gpio mode 22 out
gpio mode 23 out

gpio mode 1 in
gpio mode 4 in
gpio mode 5 in
gpio mode 11 in

#erstmal alles aus schalten
gpio write 7 0
gpio write 21 0
gpio write 22 0
gpio write 23 0


#Feststellen ob beim starten der Taster gerückt ist und entsprechend den Merker setzen

taster1="$( gpio read 1 )"
if [ "$taster1" = "1" ] ; then
merker1="AUS"
else
merker1="AN"
fi

taster2="$( gpio read 4 )"
if [ "$taster2" = "1" ] ; then
merker2="AUS"
else
merker2="AN"
fi

taster3="$( gpio read 5 )"
if [ "$taster3" = "1" ] ; then
merker3="AUS"
else
merker3="AN"
fi

taster4="$( gpio read 11 )"
if [ "$taster4" = "1" ] ; then
merker4="AUS"
else
merker4="AN"
fi


#Hier die eigentliche Abfrage Schleife

while true
do


#Abfragen ob der Taster nicht gedrück ist und der Merker AN ist, dann setze den Merker auf AUS

taster1="$( gpio read 1 )"
if [ "$taster1" = "1" ] && [ "$merker1" = "AN" ]; then
merker1="AUS"
fi

taster2="$( gpio read 4 )"
if [ "$taster2" = "1" ] && [ "$merker2" = "AN" ]; then
merker2="AUS"
fi

taster3="$( gpio read 5 )"
if [ "$taster3" = "1" ] && [ "$merker3" = "AN" ]; then
merker3="AUS"
fi

taster4="$( gpio read 11 )"
if [ "$taster4" = "1" ] && [ "$merker4" = "AN" ]; then
merker4="AUS"
fi


#Abfragen ob der Taster gedrückt ist und der Merker AUS ist, dann setze den Merker auf AN, anschließend Schalte das Relais um.

if [ "$taster1" = "0" ] && [ "$merker1" = "AUS" ]; then
merker1="AN"

relais1="$( gpio read 7 )"
if [ "$relais1" = "1" ]; then
gpio write 7 0
else
gpio write 7 1
fi

fi

if [ "$taster2" = "0" ] && [ "$merker2" = "AUS" ]; then
merker2="AN"

relais2="$( gpio read 21 )"
if [ "$relais2" = "1" ]; then
gpio write 21 0
else
gpio write 21 1
fi

fi

if [ "$taster3" = "0" ] && [ "$merker3" = "AUS" ]; then
merker3="AN"

relais3="$( gpio read 22 )"
if [ "$relais3" = "1" ]; then
gpio write 22 0
else
gpio write 22 1
fi

fi

if [ "$taster4" = "0" ] && [ "$merker4" = "AUS" ]; then
merker4="AN"

relais4="$( gpio read 23 )"
if [ "$relais4" = "1" ]; then
gpio write 23 0
else
gpio write 23 1
fi

fi

sleep 0.2
done


script gpiosoftsw
Code:
#! /bin/bash

# switch script
        gsw1="$(gpio read 7)"
        gsw2="$(gpio read 21)"
        gsw3="$(gpio read 22)"
        gsw4="$(gpio read 23)"
    
case "$1" in

    sw1)

        if [ "$gsw1" = "1" ] ; then
        gpio write 7 0
        echo "Switch 1 deactivated"
        else
        gpio write 7 1
        echo "Switch 1 Activated"
        fi
        ;;
    sw2)    
    
        if [ "$gsw2" = "1" ] ; then
        gpio write 21 0
        echo "Switch 2 deactivated"
        else
        gpio write 21 1
        echo "Switch 2 Activated"
        fi
        ;;
    sw3)
        if [ "$gsw3" = "1" ] ; then
        gpio write 22 0
        echo "Switch 3 deactivated"
        else
        gpio write 22 1
        echo "Switch 3 Activated"
        fi
        ;;
    sw4)
        if [ "$gsw4" = "1" ] ; then
        gpio write 23 0
        echo "Switch 4 deactivated"
        else
        gpio write 23 1
        echo "Switch 4 Activated"
        fi
        ;;
    *)
        echo "use sw1 - sw4"
        ;;
esac
 
HINWEIS: Nicht jedes Board ist gleich, somit ist Meine Auflistung der GPIO Ports nicht unbedingt für euch passend.
 
Ich habe das Skript gpiosw in die rc.locale eingetragen damit es automatisch startet.
 
Falls ihr eure Pinbelegung wissen wollt (und auch feststellen wollt ob alles funktioniert mit gpio) führ in Putty unter Root einfach gpio readall aus.
 
Dann geht es an das Verkabeln. Ich habe mit den Relais angefangen.
War bei meiner Variante ganz einfach Ihr benötigt einmal GND, VCC (+5V), und eure vier Ausgänge auf eurer Schnittstelle.
Die Taster sind etwas Komplexer. Hier ist es so dass die Eingänge sehr empfindlich auf Schwankungen bzw. Einflüsse von außen reagieren. Deshalb müssen Pullup bzw. Pulldown Wiederstände gesetzt werden. Diese bewirken das der Zustand (Hi / Low) stabil bleibt. Die Schaltung erkläre ist recht kompliziert deshalb habe ich sie mal schnell aufgemalt.
 
   
 
Bilder von meinem Drucker gibt es wenn ich meine Verkabelung fertig gestellt habe.
zum schluss sollte man das Ganze noch in die Octoprint Config eintragen.

config.yaml

Code:
 [size=small][font=Monaco, Consolas, Courier, monospace]accessControl:[/font]
[/size] salt: 1OC5saY1ayK8um8YiXVulqrfQMJhM3pG
api:
  key: A9EFC63270B642A4B1AF15BC1A25BD6F
appearance:
  colorTransparent: true
  defaultLanguage: de
feature:
  pollWatched: true
folder:
  uploads: /home/octopi/.octoprint/upload
gcodeViewer: {}
plugins:
  announcements:
    channels:
      _important:
        read_until: 1478614200
  cost:
    cost_per_meter: '0.06'
    currency: €
  discovery:
    upnpUuid: 3a18cc06-d1f0-4120-85d1-9ad00812441a
  softwareupdate:
    _config_version: 4
    check_providers:
      bqappcompanion: bqappcompanion
      cost: cost
      customcontrol: customControl
      displayprogress: displayprogress
      requestspinner: requestspinner
      systemcommandeditor: eeprom_marlin
      yamlpatcher: yamlpatcher
    checks:
      octoprint:
        checkout_folder: /home/octopi/OctoPrint/
        prerelease: true
        prerelease_channel: rc/maintenance
printerParameters: {}
printerProfiles:
  default: mkc
serial:
  baudrate: 115200
  disconnectOnErrors: false
  maxCommunicationTimeouts: {}
  port: /dev/ttyUSB0
  timeout:
    temperature: 2.0
server:
  commands:
    serverRestartCommand: sudo service octoprint restart
    systemRestartCommand: sudo shutdown -r now
    systemShutdownCommand: sudo shutdown -h now
  firstRun: false
  secretKey: azuEnG4Frp3SxEV2pq2F4qUSYNVNCed8
  seenWizards:
    cura: null
system:
  actions:
  - action: streamon
    command: /home/octopi/scripts/webcam start
    confirm: false
    name: Start video stream
  - action: streamoff
    command: /home/octopi/scripts/webcam stop
    confirm: false
    name: Stop video stream
  - action: start vnc
    command: sudo systemctl start myvncserver.service
    confirm: Start x11vnc?
    name: Start VNC
  - action: stop vnc
    command: sudo kill $(pgrep x11vnc)
    confirm: Kill x11vnc?
    name: Stop VNC
  - action: Gpio sw1
    command: /home/octopi/scripts/gpiosoftsw sw1
    name: Drucker ein/aus
  - action: Gpio sw2
    command: /home/octopi/scripts/gpiosoftsw sw2
    name: LED ein/aus
  - action: Gpio sw3
    command: /home/octopi/scripts/gpiosoftsw sw3
    name: Schalter 3
  - action: Gpio sw4
    command: /home/octopi/scripts/gpiosoftsw sw4
    name: Schalter 4
temperature: {}
webcam:
  ffmpeg: /usr/bin/avconv
  snapshot: http://192.168.178.90:8080/?action=snapshot
  stream: http://192.168.178.90:8080/?action=stream
  timelapse:
    fps: 10
    options:
      interval: 30
    postRoll: 2
    type: timed
  watermark: false
Hinweis: Die Scripts usw. sind alle noch Beta Status. Wer Fehler findet oder Verbesserungen hat bitte sagt es mir.
 
 
Ich versuche demnächst auch mal eine Zip File zu erstellen wo alles drinne ist. Bei mir ist im Moment Zeitlich alles etwas knapp.
 
So sieht das im Octoprint aus:
     
 
Reply to top
#2
Danke. So einen ähnlichen Thread gibts glaub ich schon (da ging es, wenn ich mich recht erinnere, um das Ausschalten des Druckers per Relais + GPIO)..
Achtung: Das Bundesministerium für Wissenschaft hat bestätigt -  lesen gefährdet die Dummheit!
 
Reply to top
#3
Oh .. sorry dann hab ich den wohl übersehen. Aber du bist ja admin
Zur not verschieben oder anhängen.

Was ich vergessen habe. Wenn sich einer mit phyton programmierung aus kennt insbesondere octoprint plugins. Da steig ich noch nicht so durch.
Vg flipi

Gesendet von meinem SM-G800F mit Tapatalk
 
Reply to top
#4
Hallo,
der ahnliche thread ist wohl dieser hier:

http://www.3d-druck-community.de/thread-1887.html

Dennoch besten Dank für die Info. Ich nutze Octoprint auch und bin begeistert von den Möglichkeiten, auch wenn ich noch nicht mal ansatzweise alle Funktionen nutze. Ein wenig liegt das auch an der (noch) nicht so guten Anbindung eines CTC.

Weiter so.

Gruß
Eckhard
 
Reply to top
#5
Octoprint ist super. Ich habe es auf einem Raspi B+ laufen. Das ist so lala. Auf dem Orange Pi Plus deutlich schneller, dafür krieg ich da einfach kein Streaming konfiguriert.
Deine Lösung ist natürlih richtig geil
---Signatur---
Besucht doch mal meinen Online Shop unter https://kolbers.de - Einplatinencomputer und mehr. Dort findet ihr Orange Pi und Zubehör.
 
Reply to top
#6
Ich habe ei opi one. Straming klappt auch ... natürlich kein hd aber timelease geht und 3d tv geht auch


Edit:
Habe aber auch lang gebraucht bis die webcam lief.
Gesendet von meinem SM-G800F mit Tapatalk
 
Reply to top
#7
Octopi als image installieren, dann läuft Streaming mit einer raspi Kamera out of the box.
Allerdings hat dies den Nachteil, dass man den raspi neu aufsetzt und alle evtl. gemachten Änderungen neu installiert werden muss.
Allerdings empfiehlt es sich, den Raspi exclusiv am Drücker laufen zu lassen, also ist das Image der entspanntere Weg.

Gruß
Eckhard
 
Reply to top
#8
Wenn man einen original raspi hat .. ja.

Es gibt auch dieses image für den opi aber die einige module sind dort nicht im kernel eingebunden.

Somit musste man mit bin2fex bzw. Fex2bin im kernel rumpfuschen.

Was ich noch gerne hätte das ich einen dnla server auf den opi hab, aber so das die video funktion in octoprint erhalten bleibt.

Gesendet von meinem SM-G800F mit Tapatalk
 
Reply to top
#9
(15.12.2016, 20:56)flipi0815 schrieb: Wenn man einen original raspi hat .. ja.

Genau. Ich habe einen Nano-Pi M3, auf dem ich Armbian und Octoprint installiert habe. Nun hab ich ab und an das Problem, dass 1. sich der Service manchmal nicht selbst startet, 2. die Weboberfläche nicht erreichbar ist, wenn ich den Server von Hand starte.


(15.12.2016, 16:23)flipi0815 schrieb: Ich habe ei opi one. Straming klappt auch ... natürlich kein hd aber timelease geht und 3d tv geht auch

Die Webcam hatte ich sofort am klappen (ip-cam mit eigenem Http-Server drin), aber was ich machen muss, um Timelapseaufnahmen zu triggern und abzulegen, da fehlt mir jeglicher Ansatz.
Websuchen führten mich immer zu dieser Config-Datei, aber ich habe bisher nur über das Webinterface konfiguriert...
Wahrscheinlich ist das total offensichtlich, was da einzutragen ist, aber ich könnte einen Schubser gebrauchen... Blush
 
Reply to top
#10
Was steht den in der log datei wenn octoprint muckt?

Zu der cam. Unterstützt deine cam die snapshot funktion ... als das sie nur ein foto macht?
Wenn ja musst du einfach nur die webadresse zu dem snapshot in der config einfügen. Wenn nicht muss man versuchen das anders zu lösen.

Gesendet von meinem SM-G800F mit Tapatalk
 
Reply to top
  


Möglicherweise verwandte Themen...
Thread Verfasser Replies Views Last Post
  Octoprint-->Kamera - LowBudget Lösung PrintPiet 18 661 Vor 2 Stunden
Last Post: Porky6666
  OctoPrint auf Windows PC - ich check das nicht PrintPiet 13 254 18.02.2017, 12:15
Last Post: ColoradoSLim
  Octoprint und die Z Achse Würmer 3 196 01.02.2017, 16:24
Last Post: Würmer
  [Tipp] OctoPrint auf dem Orange Pi Plus installieren 3D_Joe 9 780 27.01.2017, 15:43
Last Post: Freeclimber
  Octoprint - Heizbett heizt nicht auf Sepa1818 6 328 01.01.2017, 12:36
Last Post: Sepa1818



Browsing: 1 Gast/Gäste