====== Fysetc Spider (USB) ======
Schrittweise Anleitung, um das Fysetc **Spider** Board (1.x-3.x) über über **USB** in Betrieb zu nehmen.
**Fysetc Spider Board 3.0** \\ {{:klipper_faq:flash_guide:stm32f446:pasted:20240226-181404.png}}
===== YouTube Video #94 =====
{{youtube>QWdDXVdh6aM?half}}
\\
===== Hinweise =====
* **SBC** bedeutet in der Anleitung **S**ingle **B**oard **C**omputer. Also meistens wohl ein Raspberry Pi.
* Es wird davon ausgegangen das auf dem SBC Klipper und MainSail eingerichtet ist.
* Ein Zugang zum SBC über SSH ist notwendig!
* Wenn ''dmesg -HW'' einen Fehler bringt, einfach ''dmesg -Hw'' verwenden.
* Der SD-Slot ist bei diesem Controller komplett überflüssig 8-)
===== Verkabelung =====
==== 3,3V Problem ====
Bei den Spider 1.x Boards gibt es evtl. ein Problem mit der Spannungsversorgung. Es kann unter Umständen vorkommen, dass die Elkos im Eingang und an den Schrittmotoren noch Spannung führen. Beim Einsetzen von Stepper Treibern kann es dann zu einem schlagartigen Entladen kommen. Dabei kann es die Stepper Treiber zuschießen. Deshalb bei den älteren Spider Boards folgendes machen:
* Das Board komplett stromlos machen. Am besten alle (!) Kabel ab - ALLE.
* Jetzt einen 100k Widerstand zwischen PWR-IN (24V GND) anschließen
* Einen weiteren 100k Widerstand steckt man auf einen Treiberslot an folgende Stelle (das ist immer Pin 15 & 16): \\ {{:klipper_faq:flash_guide:stm32f446:pasted:20240226-181216.png}}
* Das lässt man dann mal 10-15 Minuten so liegen.
* Widerstände abbauen und das Bord verkabeln ...
==== Stromversorgung ====
* Der Jumoer ist entweder mit ''DC5V / U5V'', ''DC5V / USB5V'' oder nur ''U5V'' gekennzeichnet.
* Der Jumper ''DC5V / U5V'' befindet sich je nach Board an unterschiedlichen Stellen:
* Spider 1.x / 2.2 -> Mittig vom Board unter E1-Mot. Nur U5V ist beschriftet!
* Spider 2.3 -> Overhalb von EXP1/EXP2.
* Spider 3.0 -> Direkt unterhalb vom USB-C Anxchluss.
* :!: Bei 24V Versorgung muss der Jumper immer auf die Position ''DC5V'' :!:
* **Betrieb**
* Im Betrieb wird das Board mit 24V versorgt (Anschluss PWR-IN GND / 24V)
* :!: Der Jumper auf Position ''DC5V'' setzen!
* **Firmware flashen**
* Das Board wird **nicht mit 24V versorgt**. \\ Den Jumper auf Position ''U5V'' (oder ''USB5V'') setzen.
* Das Board wird **mit 24V betrieben**. \\ Den Jumper auf Position ''DC5V'' setzen!
==== Versorgung Raspberry Pi ====
* Ein Raspberry Pi kann direkt über das Board versorgt werden. Ein passendes Kabel liegt bei.
* Über diesen Anschluss wird auch gleich TX / RX verbunden mit dem Pi. Damit wäre ein Betrieb über UART möglich.
==== 48V Anschluss ====
* 24V / 48V für die beiden X/Y Treiber \\ {{:klipper_faq:flash_guide:stm32f446:pasted:20240227-162120.jpeg}}
===== Bootloader sichern =====
Eine Sicherung lohnt nicht. Das Board wird mit Klipper ausgeliefert und kann schnell komplett neu geflasht werden.
===== DFU Modus =====
Das Board in den DFU Modus bringen:
* Im Terminal folgendes eingeben \\ ''dmesg -HW''
* **bis Spider 2.3** \\ Hier muss folgender Jumper gesetzt werden : \\ {{:klipper_faq:flash_guide:stm32f446:pasted:20240227-154227.png}} \\ Danach die Reset-Taste (die ist oberhalb vom USB-C Anschluss) einmal drücken. \\ Der Jumper kann auch im Betrieb gesetzt werden.
* **ab Spider 3.0** \\ Bei diesem Board gibt es an der Seite 2 Taster. Der Taster der zum USB-C Port zeigt ist BT0. Der da drüber ist Reset. \\ Den BT0 Taster gedrückt halten, einmal auf Reset drücken und dann BT0 wieder loslassen.
* Das Board meldet sich mit ''**Product: STM32 BOOTLOADER**'' oder ''**Product: DFU in FS Mode**'' \\
pi@Pi4Test:~ $ dmesg -HW
[Feb27 15:48] usb 1-1.1: USB disconnect, device number 11
[ +0.370339] usb 1-1.1: new full-speed USB device number 12 using xhci_hcd
[ +0.106951] usb 1-1.1: New USB device found, idVendor=0483, idProduct=df11, bcdDevice=22.00
[ +0.000036] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ +0.000018] usb 1-1.1: Product: STM32 BOOTLOADER
[ +0.000014] usb 1-1.1: Manufacturer: STMicroelectronics
[ +0.000014] usb 1-1.1: SerialNumber: STM32FxSTM32
* ''STRG+C'' drücken, um die Meldungen zu beenden
===== Klipper flashen =====
> **Hinweis** \\ Wenn das Board mit USB betrieben wird, braucht es **keinen extra Bootloader**!
* ''cd ~/klipper''
* ''make menuconfig'' \\
[*] Enable extra low-level configuration options
Micro-controller Architecture (STMicroelectronics STM32) --->
Processor model (STM32F446) --->
Bootloader offset (No bootloader) --->
Clock Reference (12 MHz crystal) --->
Communication interface (USB (on PA11/PA12)) --->
USB ids --->
() GPIO pins to set at micro-controller startup
* beenden mit ''Q'' und ''Y''
* Klipper kompilieren \\ ''make -j4''
* Klipper flashen \\ ''dfu-util -R -a 0 -s 0x08000000:mass-erase:force -D ~/klipper/out/klipper.bin'' \\ Das Ergebnis sollte sein ''File downloaded successfully''
===== Port ermitteln =====
* Den USB Stecker abziehen
* ''dmesg -HW'' starten \\
pi@Pi4Test:~/klipper $ dmesg -HW
[Mar 2 06:59] usb 1-1.1: USB disconnect, device number 35
[ +1.449289] usb 1-1.1: new full-speed USB device number 36 using xhci_hcd
[ +0.112047] usb 1-1.1: New USB device found, idVendor=1d50, idProduct=614e, bcdDevice= 1.00
[ +0.000036] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ +0.000016] usb 1-1.1: Product: stm32f446xx
[ +0.000012] usb 1-1.1: Manufacturer: Klipper
[ +0.000011] usb 1-1.1: SerialNumber: 390028000950315239323320
[ +0.012042] cdc_acm 1-1.1:1.0: ttyACM0: USB ACM device
* Wir brauchen die Information mit **tty...** also in diesem Fall **ttyACM0**
* ''STRG+C'' drücken, um die Meldungen zu beenden
* Den zugehörigen Link ermitteln \\ ''ls -lR /dev/ | grep -v '\%%->%%\s../tty' | grep -e 'tty%%[[:%%alpha%%:]]%%' -e serial''
* Wir brauchen die Info unter ''/dev/serial/by-id:'' : \\ ''lrwxrwxrwx 1 root root 13 Mar 2 06:59 **usb-Klipper_stm32f446xx_390028000950315239323320-if00** -> ../../ttyACM0''
* Achte darauf das am Ende die gleiche tty Bezeichnung steht wie sie im vorherigen Schritt ermittelt wurde (hier also ttyACM0)
* Was wir für die Konfig brauchen ist dann am Ende: \\ ''/dev/serial/by-id/usb-Klipper_stm32f446xx_390028000950315239323320-if00''
===== kurzer Test =====
Ob das Board korrekt mit Klipper läuft, lässt sich mit folgendem Befehl schnell testen: \\ ''~/klippy-env/bin/python ~/klipper/klippy/console.py /dev/serial/by-id/usb-Klipper_stm32f446xx_390028000950315239323320-if00''
Der Pfad am Ende muss natürlich mit dem übereinstimmen was ihr im vorherigen Schritt ermittelt habt!
Wenn ihr ein ''**connected**'' am Anfang des Textes seht, ist das Board richtig geflasht. \\ {{:klipper_faq:flash_guide:stm32g0b1:pasted:20231111-152555.png}}
===== Konfiguration =====
* ''cd ~/printer_data/config''
* **Beispiel Konfiguration** \\ ''wget https://raw.githubusercontent.com/FYSETC/FYSETC-SPIDER/main/firmware/Klipper/printer.cfg -O printer.cfg''
* ''nano ~/printer_data/config/printer.cfg'' \\ [mcu]
serial: /dev/serial/by-id/usb-Klipper_stm32f446xx_390028000950315239323320-if00
* Die Zeile mit ''serial'' entsprechend mit dem ermittelten Pfad von oben anpassen
===== Klipper Update =====
* Klipper Dienst stoppen \\ ''sudo systemctl stop klipper.service''
* ''cd ~/klipper && make menuconfig''
* Die Einstellungen sind genauso wie im Kapitel [[klipper_faq:flash_guide:stm32f446:fysetc_spider_usb#klipper_flashen|Klipper flashen]]
* ''make flash -j4 FLASH_DEVICE=/dev/ttyACM0''
* Wie man an den Port (hier ttyACM0) kommt, ist [[klipper_faq:flash_guide:stm32f446:fysetc_spider_usb#port_ermitteln|hier]] beschrieben
* Am Ende kann es zu einem Fehler kommen. Davon nicht irritieren lassen. Wichtig ist diese Zeile: \\ ''File downloaded **successfully**''
* Klipper Dienst starten \\ ''sudo systemctl start klipper.service''
* Sollte sich das Board nicht melden, am besten den Drucker einmal stromlos machen und neu starten.
===== Sonstiges =====
Diese Punkte sind nicht immer Bestandteil vom YouTube Video, aber nützlich 8-)
==== ST-Link (SWD) ====
Das Board verfügt über einen SWD Port. Mit einem entsprechenden ST-Link kann das Board auch direkt geflasht werden.
==== ADXL345 (Input Shaper) ====
Ein ADXL345 Sensor für Input Shaper kann direkt an das Board angeschlossen werden.
Bis Board 2.2 \\ {{:klipper_faq:flash_guide:stm32f446:pasted:20240302-070927.png}}
Ab Board 2.3 \\ {{:klipper_faq:flash_guide:stm32f446:pasted:20240302-071015.png}}
^ ADXL345 Pin ^ Spider Board (SPI1) ^ STM32 Pin ^
| GND | GND | |
| VCC | +5V | |
| CS | CS | PA4 |
| INT1 | N/A | |
| INT2 | N/A | |
| SDO | MISO | PA6 |
| SDA | MOSI | PA7 |
| SCL | CLK | PA5 |
* Konfig Anpassung \\
[adxl345]
axes_map : x,y,z
cs_pin : PA4
spi_bus : spi1
[resonance_tester]
accel_chip : adxl345
probe_points : 150, 150, 20 # Center of your bed, raised up a little
* **Test** in der MainSail Konsole mittels \\ ''ACCELEROMETER_QUERY'' \\ Als Ergebnis sollte in etwa sowas kommen: \\ ''accelerometer values (x, y, z): -1110.308913, 1184.329507, 11414.822920''
* Sollte der Test folgenden Fehler bringen ist die Verkabelung falsch! \\ ''Invalid adxl345 id (got 0 vs e5)''
==== STM32 Temperatur ====
Der interne Temperatur Sensor des STM32 kann mit folgendem Konfig Schnibsel ausgelesen werden:
[temperature_sensor Levi]
sensor_type : temperature_mcu
sensor_mcu : mcu
===== Links =====
* Github Repo \\ https://github.com/FYSETC/FYSETC-SPIDER
* Schaltplan \\ **Spider 1.x** https://github.com/FYSETC/FYSETC-SPIDER/blob/main/hardware/V1.x/Spider%20V1.0C%20SCH.pdf \\ **Spider 2.2** https://github.com/FYSETC/FYSETC-SPIDER/blob/main/hardware/V2.2/Spider%20V2.2%20SCH.pdf \\ **Spider 2.3** https://github.com/FYSETC/FYSETC-SPIDER/blob/main/hardware/V2.3/Spider_V2.3_SCH.pdf \\ **Spider 3.0** https://github.com/FYSETC/FYSETC-SPIDER/blob/main/hardware/V3.0/spider_V3.0_sch.pdf
* Klipper Konfig \\ https://github.com/FYSETC/FYSETC-SPIDER/blob/main/firmware/Klipper/printer.cfg