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 lub off).
  • 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ądzenia printer.

Porady dotyczące rozwiązywania problemów

  1. Sprawdź numerację pinów GPIO Upewnij się, że używasz poprawnego schematu numeracji pinów GPIO (np. BCM dla Raspberry Pi).

  2. Monitoruj stan GPIO Użyj poniższego polecenia, aby wyświetlić stany pinów GPIO:

    cat /sys/kernel/debug/gpio
    
  3. Przeglądaj logi Moonrakera Przeanalizuj logi w celu debugowania problemów z przyciskami lub urządzeniami:

    tail -f /var/log/moonraker.log