Moonraker to potężne narzędzie dostarczające API często wykorzystywane z Klipperem w druku 3D. Jedną z jego przydatnych funkcji jest możliwość bezpośredniego sterowania pinami GPIO raspberry w celu zarządzania urządzeniami zasilającymi. Ten poradnik wyjaśnia, jak skonfigurować piny GPIO w Moonrakerze i wykorzystać je do kontroli zasilania lub do obsługi wejść z przycisków.
Konfiguracja pinów GPIO w Moonrakerze
Aby użyć pinu GPIO do kontroli zasilania, musisz zdefiniować sekcję power
w pliku konfiguracyjnym
Moonrakera (moonraker.conf
). Oto przykładowa konfiguracja:
Przykładowa konfiguracja
[power printer]
type: gpio
#PC14
pin: !gpio78
initial_state: off
#off_when_shutdown: True
#off_when_shutdown_delay: 30
locked_while_printing: True
on_when_job_queued: True
bound_services: klipper
Wyjaśnienie kluczowych opcji
type
: Określa typ urządzenia, w tym przypadku GPIO.pin
: Wskazuje numer pinu GPIO z ewentualnymi modyfikatorami, np.!
dla stanu aktywnego niskiego.initial_state
: Ustala stan urządzenia po starcie (on
luboff
).locked_while_printing
: Zapobiega zmianie stanu zasilania podczas aktywnego zadania druku.on_when_job_queued
: Automatycznie włącza urządzenie, gdy zadanie druku zostanie dodane do kolejki.bound_services
: Określa usługi, od których zależy to urządzenie (np.klipper
).
Dodanie przycisku do sterowania GPIO
Możesz zintegrować fizyczny przycisk, aby kontrolować stan pinu GPIO.
Aby to zrobić, zdefiniuj button
w pliku moonraker.conf
.
Przykładowa konfiguracja przycisku dla przełączania zasilania
[button power_btn]
type: gpio
pin: ^!gpio70
on_press:
{% do call_method("machine.device_power.post_device", device="printer", action="toggle") %}
Przykład z awaryjnym zatrzymaniem
Jeśli chcesz użyć przycisku do awaryjnego zatrzymania drukarki, możesz skonfigurować go w następujący sposób:
[button emergency_stop]
type: gpio
#PC7
pin: ^!gpio71
on_press:
{% do call_method("printer.emergency_stop") %}
Metody możliwe do wywołania można znaleźć w dokumentacji Moonraker API.
Wyjaśnienie kluczowych opcji
type
: Określa typ przycisku, w tym przypadku GPIO.pin
: Wskazuje numer pinu GPIO, do którego jest podłączony przycisk, z modyfikatorami jak!
dla stanu aktywnego niskiego oraz^
dla podciągnięcia do wysokiego.on_press
: Wykonuje akcję opartą na Jinja2, aby przełączyć stan urządzeniaprinter
.
Porady dotyczące rozwiązywania problemów
Sprawdź numerację pinów GPIO Upewnij się, że używasz poprawnego schematu numeracji pinów GPIO (np. BCM dla Raspberry Pi).
Monitoruj stan GPIO Użyj poniższego polecenia, aby wyświetlić stany pinów GPIO:
cat /sys/kernel/debug/gpio
Przeglądaj logi Moonrakera Przeanalizuj logi w celu debugowania problemów z przyciskami lub urządzeniami:
tail -f /var/log/moonraker.log