Mini CNC aus DVD Brennern

Dürfte ein Arbeitsbereich von etwa 4×4 cm möglich sein :

Hab das Ding mit einem Ramps 1.4 Board angesteuert.
Damit die mini Schrittmotoren nicht abbrennen darf das Board aber nur mit etwa 7 Volt versorgt werden.
(PWM, Motorspulen in Sättigung ?!?)

Cronjob – kurz vor Sonnenaufgang starten

Da mein PI2 auf dem Solarakku hängt, und hauptsächlich Solardaten erfasst, wollte ich ihn so starten, dass er bei Sonnenschein sicher schon läuft, aber nicht unnötig früh schon eingeschaltet wird.
Dafür hab ich im Excel eine Sinuskurve via Formel gebastelt.

Jänner/Dezember = etwa 9:00 (Winterzeit)
Juli/August = etwa 6:00 (Sommerzeit)

Es ergab sich dann allerdings das Problem, dass unter Linux nicht so einfach ein Cronjob nach einer anderen Zeitzone (die keine Sommer/Winterzeitumstellung hat) einrichten kann.
Geht leider auch nicht als anderer User…
Darum hab ich das dann mit einer extra „if“ Anweisung gelöst.
D.h. um 9:00 und um 10:00 läuft der Job. Aber nur, wenn die UTC-Stunde 8 ist…
Liese sich natürlich noch vereinfachen, aber ich lass das mal so, damit es leichter zu verstehen ist :

0 9,10 * 1,12 * if test $(TZ="UTC" date +"\%H") -eq 8; then /bin/startpi2 ; fi
9 8,9 * 2,11 * if test $(TZ="UTC" date +"\%H") -eq 7; then /bin/startpi2 ; fi
22 7,8 * 3,10 * if test $(TZ="UTC" date +"\%H") -eq 6; then /bin/startpi2 ; fi
43 6,7 * 4,9 * if test $(TZ="UTC" date +"\%H") -eq 5; then /bin/startpi2 ; fi
16 6,7 * 5,8 * if test $(TZ="UTC" date +"\%H") -eq 5; then /bin/startpi2 ; fi
1 6,7 * 6,7 * if test $(TZ="UTC" date +"\%H") -eq 5; then /bin/startpi2 ; fi

– wird die Zeit zeigen, wie gut das funktioniert…

OctoPI und Ereignisse

Hat man an seinem 3D Drucker einen PI mit OctoPI Betriebssystem angeschlossen, kann man über diverse Ereignisse ganz einfacht informiert werden. Das geht zwar (teilweise) auch via Android-Apps am Händy, aber dafür muss die entsprechende App das können. (Und das klappt z.Zt. nur recht unzuverlässig…)

Ausserdem lassen sich so auch noch ganz andere Dinge veranlassen. (z.B. Drucker automatisch abschalten, wenn fertig…)

Datei : /home/pi/.octoprint/config.yaml

Nach den Zeilen mit „appearance : color: blak“ z.B. folgendes einfügen :

events:
  enabled: true
  subscriptions:
  - command: /home/pi/nachricht.sh NichtMehrVerbunden
    event: Disconnected
    type: system
  - command: /home/pi/nachricht.sh DruckFehlgeschlagen
    event: PrintFailed
    type: system
  - command: /home/pi/nachricht.sh Fertig
    event: PrintDone
    type: system

Damit das funktioniert, muss es natürlich die /home/pi/nachricht.sh geben. (Und sie muss ausführbar sein)
Relativ einfach geht das z.B. mit Telegram (hat eine API !) :

#!/bin/bash
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

TEXT="$HOSTNAME
$1"
TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
CHATID=yyyyyyyyy
TIMEOUT=10


URL=https://api.telegram.org/bot$TOKEN/sendMessage
CMDARGS="chat_id=$CHATID&disable_web_page_preview=1&text=$TEXT"
curl -s --max-time $TIMEOUT -d "$CMDARGS" $URL >/dev/null

PI Tunings

sw raid
bei komischem device namen nach reboot. z.b. md127

mdadm -scan --detail >> /etc/mdadm/mdadm.conf

nach reboot nur 1 device, 2. fehlt

bootwait=5

in die

/boot/cmdline.txt

einfügen

seltsame Abstürze, ping geht noch, aber sonst nix mehr
könnte der swap voll sein.
Ist vermutlich besser, einfach keinen Swap zu konfigurieren.
Dann geht halt dem einen oder anderen Prozess der Speicher aus.
Aber alle anderen Prozesse sollten ganz normal weiterlaufen…
grade beim pi 2 und 3 (die ja eh 1GB RAM haben)

systemctl disable dphys-swap

dann rebooten, und mit free nachschaun, ob swap 0

/tmp und /var/log in ramdisk – in die /etc/fstab folgendes eintragen :

tmpfs    /tmp    tmpfs    defaults,noatime,nosuid,size=100m    0 0
tmpfs    /var/log    tmpfs    defaults,noatime,nosuid,mode=0755,size=100m    0 0

Das führt aber leider dazu, dass einige Dienste (vorallem nginx und apache) nicht mehr starten können, weil es nach einem reboot die log Verzeichnisse nicht mehr gibt. Das behebt man am besten via /etc/rc.local. Da drin einfach das fehlende Verzeichnis anlegen, und service … restart rein.

merkwürdiges netzwerk verhalten, statische ip in /etc/network/interfaces
ip a zeigt eine 2. ip an ?
wurde vermutlich via dhcp zugewiesen

dpkg -l | grep dhcp

apt purge …pakete deinstallieren…

oder
/etc/dhcpcd.conf
ignore o.ö. das if rausnehmen
oder gleich da drin die static ip konfigurieren

Raspberry 3D Drucker

Gibt bereits ein fertiges Image, um einen 3D Drucker via WLAN
steuern zu können.
OctoPI heisst das.
Hab mir für diesen Zweck einen eigenen PI3 gekauft, und gleich hinten am Drucker angeschraubt.

Es gibt zwar auch einige Alternativen.
Aber mit guter SW Unterstützung, Wlan onboard, und mind 2 USB Ports gibts nix Besseres oder Preisgünstigeres.

Sehr Cool : läuft alles weitgehend ohne konfiguration.
Sogar eine USB Webcam wird unterstützt.
Der Drucker kann nun überall stehen, wo es halt praktisch ist. Nur Strom und WLAN Empfang notwendig.

Das Konstrukt hat meiner Meinung nach 2 Schönheitsfehler :
1. vor dem Ausschalten sollte der PI runtergefahren werden.
Das ist besonders dann blöd, wenn man sich z.B. mit dem Druckbereich verschätzt hat, und schnell mal den Strom unterbrechen muss. (kein Not AUS vorhanden)

2. bastelt man am PI, dann muss auch der Drucker ständig mitlaufen. Einer der Lüfter am Druckkopf läuft dabei dauernd.

———

Das lässt sich aber alles recht elegant lösen.
Als erstes hab ich mal einen Taster von GPIO4 nach Masse und eine LED mit Widerstand nach +3,3V geschaltet.
Drückt man da drauf, fährt der PI runter, und zeigt den Halted-Zustand dann via LED an.
Sobald die ständig leuchtet, kann der Drucker gefahrlos ausgesteckt werden.
Das script dazu folgt noch…

Als 2. hab ich ein 12V 10A Relais eingebaut, mit dem der PI nun die Stromversorgung des Druckers schalten kann.
Da der Drucker offenbar recht grosse Elkos verbaut hat, musste ich vor dem 5V Wandler noch eine Shotky Diode und einen Elko einbauen. Sonst rebootet der PI sofort nachdem das Relais einschaltet.

Fährt man den PI jetzt runter – egal ob via Knopf oder via shell – dann wird auch die Stromversorgung für den Drucker abgeschaltet (weil die GPIOs dann natürlich auch nix mehr ansteuern).

Dann läuft nur mehr das Netzteil und der PI im Halt Zustand.