sbcs:61_-_bigtreetech_pi_v1.2_mit_can
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
sbcs:61_-_bigtreetech_pi_v1.2_mit_can [2023/09/22 02:38] – removed - external edit (Unknown date) 127.0.0.1 | sbcs:61_-_bigtreetech_pi_v1.2_mit_can [2024/02/06 05:15] (current) – [3,5" SPI Display] dominik | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== BigTreeTech PI V1.2 ====== | ||
+ | |||
+ | ===== YouTube Video #61 ===== | ||
+ | {{youtube> | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ===== Sponsor ===== | ||
+ | Vielen Dank an folgende Sponsoren für dieses Video: | ||
+ | * **Konstantin Schuller** für das Sponsoring eines BTT Pi 1.2 nebst CAN Modul | ||
+ | * **BigTreeTech** für das Sponsoring eines CAN Moduls, eines 3,5" Displays und eines ADXL345 Sensormoduls | ||
+ | |||
+ | ===== Links ===== | ||
+ | * Github \\ https:// | ||
+ | * Images \\ https:// | ||
+ | * Enabling panfrost GPU acceleration on the Bigtreetech PAD7 \\ https:// | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * Manual \\ https:// | ||
+ | * [HOWTO] 40-pin GPIO & ADLX345 on CB1 \\ https:// | ||
+ | ===== Pros / Cons ===== | ||
+ | * **<color # | ||
+ | * **<color # | ||
+ | * **<color # | ||
+ | * **<color # | ||
+ | |||
+ | * **<color # | ||
+ | * **<color # | ||
+ | * **<color # | ||
+ | * **<color # | ||
+ | |||
+ | ===== Default User / Passwort ===== | ||
+ | * User : **biqu** | ||
+ | * Passwort : **biqu** | ||
+ | ===== Image Installation ===== | ||
+ | |||
+ | > :!: :!: **<color # | ||
+ | |||
+ | * Image Download \\ https:// | ||
+ | * Image mit dem Raspberry Pi Imager auf eine SD Karte schreiben \\ https:// | ||
+ | * OS Wählen | ||
+ | * ganz unten auf " | ||
+ | * Hier jetzt die geladene XZ Datei auswählen | ||
+ | * SD Karte wählen | ||
+ | * Schreiben (Einstellungen kann man nicht mit schreiben lassen. Die sind nicht kompatibel zu dem Image!) | ||
+ | * Wlan einrichten \\ Um das WLan einzurichten muss auf der SD Karte eine Datei angepasst werden: | ||
+ | * Auf dem Laufwerk " | ||
+ | * Wifi Settings anpassen: \\ < | ||
+ | WIFI_SSID=" | ||
+ | # wifi password | ||
+ | WIFI_PASSWD=" | ||
+ | </ | ||
+ | * Hostname ggf. anpassen \\ Wird auch in der Datei '' | ||
+ | * Karte in den BTT Pi einsetzen | ||
+ | * Kühlkörper und WLAN Antenne nicht vergessen anzubringen :-) | ||
+ | * BTT Pi starten ... | ||
+ | |||
+ | > | ||
+ | |||
+ | ===== Updates ===== | ||
+ | * per SSH einloggen | ||
+ | * Updates und ein paar Tools installieren \\ '' | ||
+ | * überflüssige Dienste entfernen \\ '' | ||
+ | * IP ermitteln \\ '' | ||
+ | * Mainsail Weboberfläche öffnen über die IP | ||
+ | * Unter **Mashine** einmal die Repos neu laden um die roten " | ||
+ | * Jetzt alle Komponenten aktuslisieren lassen mit **UPDATE ALL COMPONENTS** | ||
+ | |||
+ | ===== Linux MCU einrichten ===== | ||
+ | Wer den BTT Pi mit einem ADXL345 Sensor für Input Shaper ausstatten möchte, sollte den Linux Prozess noch einrichten. Der Sorgt dafür, das die GPIO Pins vom BTT Pi aus Klipper Sicht genutzt werden können und ermöglicht eben den Betrieb von extra Sensoren wie dem ADXL345. | ||
+ | |||
+ | * auf dem BTT Pi einloggen mittels SSH | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * hier wählt man dann '' | ||
+ | * mit Q beenden und mit Y speichern | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | ===== Minimale printer.cfg ===== | ||
+ | Um Klipper vorübergehend in Betrieb zu nehmen, kann man folgende Mini Konfiguration verwenden: \\ <code ini printer.cfg> | ||
+ | [include mainsail.cfg] | ||
+ | [mcu] | ||
+ | serial : / | ||
+ | |||
+ | #[mcu Board] | ||
+ | #serial : / | ||
+ | |||
+ | [printer] | ||
+ | kinematics: none | ||
+ | max_velocity: | ||
+ | max_accel: 1000 | ||
+ | </ | ||
+ | |||
+ | :!: Mit dieser Konfig kann der Drucker natürlich rein gar nichts. Aber man wird erstmal alle Fehlermeldungen in MainSail los. | ||
+ | |||
+ | ===== CAN einrichten ===== | ||
+ | {{youtube_ideen: | ||
+ | Die folgenden Schritte sind nur notwendig, wenn man das CAN Modul besitzt und einsetzen möchte. | ||
+ | |||
+ | ==== Adapter flashen ==== | ||
+ | Bei mir war die aufgespielte Firmware komplett nutzlos. Weder das Gerät ließ sich in Linux finden, noch konnte ich den CAN Bus aktivieren. Das Problem haben wohl auch andere -> https:// | ||
+ | Ich würde also als erstes die Firmware aktualisieren | ||
+ | * benötigte Pakete installieren \\ '' | ||
+ | * '' | ||
+ | * Repository von Github klonen \\ '' | ||
+ | * '' | ||
+ | * Vorbereitungen für das Kompilieren (Create Toolchain) \\ '' | ||
+ | * Kompilieren \\ '' | ||
+ | * Jetzt den CAN Adapter über ein USB-C Kabel an den BTT Pi anschließen und dabei den BOOT Taster auf dem Board gedrückt halten | ||
+ | * Wer mag kann in der Konsole '' | ||
+ | [< 0.000000> | ||
+ | [< 0.235034> | ||
+ | [< 0.000047> | ||
+ | [< 0.000021> | ||
+ | [< 0.000015> | ||
+ | [< 0.000015> | ||
+ | </ | ||
+ | * Alternativ geht auch '' | ||
+ | * Wenn nichts davon eintritt nochmal abstecken und Vorgang wiederholen :-) | ||
+ | * Den CAN Adapter flashen \\ '' | ||
+ | |||
+ | ==== Adapter einsetzen ==== | ||
+ | * BTT Pi stromlos machen | ||
+ | * CAN Adapter einsetzen | ||
+ | * BTT Pi wieder starten | ||
+ | |||
+ | ==== CAN Bus aktivieren ==== | ||
+ | Damit der Adapter im Betriebsystem auch erkannt wird muss eine Netzwerk Interface Konfiguration (''/ | ||
+ | |||
+ | * '' | ||
+ | * folgenden Inhalt in der Datei einfügen : \\ < | ||
+ | auto can0 | ||
+ | iface can0 can static | ||
+ | bitrate 1000000 | ||
+ | up ifconfig $IFACE txqueuelen 1024 | ||
+ | </ | ||
+ | * Editor mit **STRG + x -> dann Y -> dann Enter** verlasen | ||
+ | * System neu starten mittels \\ '' | ||
+ | * Nach dem Reboot sollte der Befehl '' | ||
+ | can0: < | ||
+ | link/can | ||
+ | </ | ||
+ | * Wichtig dabei ist **state UP**. Wird hier ein DOWN angegeben, ist das Interface nicht betriebsbereit! | ||
+ | |||
+ | ==== Can Bus Test ==== | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | ===== HDMI Display ===== | ||
+ | Am HDMI Anschluss sollte nach dem Start sofort eine Ausgabe erfolgen. <color # | ||
+ | |||
+ | * '' | ||
+ | # | ||
+ | </ | ||
+ | Hier in der zweiten Zeile die # entfernen und die Auflösung anpassen | ||
+ | * '' | ||
+ | ########################################### | ||
+ | # HDMI klipperScreen rotation | ||
+ | # ks_angle: Rotation angle | ||
+ | # | ||
+ | # left: 90 to left; | ||
+ | # | ||
+ | </ | ||
+ | Hiermit kann die grafische Ausgabe auf dem HDMI Port gedreht werden. \\ :!: Die Textkonsole bleibt davon leider unberührt :!: | ||
+ | ===== 3,5" SPI Display ===== | ||
+ | * Die Auflösung beträgt 460x320 Pixel | ||
+ | * Das TFT ist ziemlich stromhungerig und wird merklich warm | ||
+ | * Aktivieren über '' | ||
+ | * bei den Overlays '' | ||
+ | * :!: **ACHTUNG** :!: \\ Es darf in der BoardEnv.txt Datei nur eine (!!) Zeile mit overlays geben. Also alle Overlays in einer Zeile zusammenfassen. Bei mehreren Overlays Zeilen zählt nur der letzte Eintrag in der Datei !! | ||
+ | * Wenn das TFT aktiviert wird hat es Vorrang vor dem HDMI Ausgang | ||
+ | * Der Bildschirm kann auch bei Bedarf kalibriert werden \\ https:// | ||
+ | |||
+ | ==== Links ==== | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * https:// | ||
+ | ===== ADXL345 ===== | ||
+ | ==== BTT Modul ==== | ||
+ | {{youtube_ideen: | ||
+ | |||
+ | |||
+ | ^ ADXL345 pin ^ Function | ||
+ | | 3V3 (or VCC) | Power | 3,3V | 3.3V DC power | | ||
+ | | GND | GND | GND | GND | | ||
+ | | CS | Chip Select | ||
+ | | SDO | MISO | PC4 | (3-1)*32 + 4 = gpio68 | ||
+ | | SDA | MOSI | PC2 | (3-1)*32 + 2 = gpio66 | ||
+ | | SCL | Clock | PC0 | (3-1)*32 + 0 = gpio64 | ||
+ | |||
+ | Das Modul verwendet '' | ||
+ | |||
+ | * Aktivieren über '' | ||
+ | * bei den Overlays '' | ||
+ | * :!: **ACHTUNG** :!: \\ Es darf in der BoardEnv.txt Datei nur eine (!!) Zeile mit overlays geben. Also alle Overlays in einer Zeile zusammenfassen. Bei mehreren Overlays Zeilen zählt nur der letzte Eintrag in der Datei !! | ||
+ | * Die [[sbcs: | ||
+ | * Klipper Konfig erweitern \\ < | ||
+ | [adxl345] | ||
+ | cs_pin: BTTPI: | ||
+ | spi_bus: spidev0.0 | ||
+ | |||
+ | [resonance_tester] | ||
+ | accel_chip: adxl345 | ||
+ | probe_points: | ||
+ | 60, 60, 20 # an example | ||
+ | </ | ||
+ | |||
+ | ==== DIY ==== | ||
+ | ^ Pi 1.2 Pin ^ Function | ||
+ | | PC3 | CS spidev0_0 | ||
+ | | PC4 | SPI0 MISO | (3-1)*32 + 4 = gpio68 | ||
+ | | PC2 | SPI0 MOSI | (3-1)*32 + 2 = gpio66 | ||
+ | | PC0 | SPI0 Clock | (3-1)*32 + 0 = gpio64 | ||
+ | | PH6 | SPI1 CLK | GPIO230 | ||
+ | | PH7 | SPI1 MOSI | GPIO231 | ||
+ | | PH8 | SPI1 MISO | GPIO232 | ||
+ | | PC11 | CS of spidev1_0 | ||
+ | | PC7 | CS of spidev1_1 | ||
+ | | PC13 | CS of spidev1_2 | ||
+ | |||
+ | > | ||
+ | > | ||
+ | |||
+ | * Aktivieren über '' | ||
+ | * bei den Overlays '' | ||
+ | * :!: **ACHTUNG** :!: \\ Es darf in der BoardEnv.txt Datei nur eine (!!) Zeile mit overlays geben. Also alle Overlays in einer Zeile zusammenfassen. Bei mehreren Overlays Zeilen zählt nur der letzte Eintrag in der Datei !! | ||
+ | * Die [[sbcs: | ||
+ | * Klipper Konfig erweitern \\ < | ||
+ | [adxl345] | ||
+ | cs_pin: BTTPI: | ||
+ | spi_bus: spidev1.1 | ||
+ | |||
+ | [resonance_tester] | ||
+ | accel_chip: adxl345 | ||
+ | probe_points: | ||
+ | 60, 60, 20 # an example | ||
+ | </ | ||
+ | * Hier gibt es eine Diskussion zu dem Thema \\ https:// | ||
+ | |||
+ | ==== Tests ==== | ||
+ | * Wenn ein SPI Bus über das Overlay aktiviert wurde sollte der im Device Verzeichnis ''/ | ||
+ | * {{youtube_ideen: | ||
+ | * Hier wurde folgendes in der ''/ | ||
+ | * Wenn der Bus in ''/ | ||
+ | * Bei einer erfolgreichen Abfrage liefert der Sensor Werte \\ {{youtube_ideen: | ||
+ | * Wenn der Sensor nicht antwortet kommt eine Fehlermeldung \\ {{youtube_ideen: | ||
+ | |||
+ | ===== GPIO nutzen (Linux MCU) ===== | ||
+ | Die GPIO Pins vom BTT Pi können von Klipper angesteuert werden. Man muss nur mit der Pin Bezeichnung aufpassen ... | ||
+ | ==== Pin Berechnung ==== | ||
+ | Um die GPIO Pins in Klipper nutzen zu können muss ggf. umgerechnet werden. Die Pins sind im Normalfall nach dem Schema **PxNN** benannt. **x** kann dabei von A..G gehen und **NN** ist eine Zahl. Das nutzt aber in Klipper nichts, weil dort die richtigen GPIO Nummern angegeben werden müssen. Dafür gibt es folgende Rechnung: | ||
+ | * Der Buchstabe wird in eine Zahl gewandelt. A = 0, B = 1 … G = 6 | ||
+ | * Die Zahl * 32 | ||
+ | * Anschließend noch die NN Nummer addieren | ||
+ | * Beispiel PC15 | ||
+ | * C = 2, NN = 15 | ||
+ | * 2*32 + 15 = 79 | ||
+ | * PC15 -> gpio79 | ||
+ | |||
+ | In der Klipper Konfig trägt man an der Stelle für den Pin dann gpio79 und **nicht** PC15 ein. | ||
+ | ==== Beispiel Lüfter ==== | ||
+ | Auf dem BTT Pi 1.2 Board ist ein extra Lüfter Anschluss mit Mosfet. Um diesen Lüfter zu nutzen kann man folgende Konfig verwenden: | ||
+ | |||
+ | < | ||
+ | [fan_generic GenFan] | ||
+ | pin : BTTPI: | ||
+ | max_power | ||
+ | # | ||
+ | cycle_time | ||
+ | hardware_pwm | ||
+ | kick_start_time: | ||
+ | </ | ||
+ | |||
+ | Als Ergebnis bekommt man in MainSail einen neuen Lüfter \\ {{youtube_ideen: | ||
+ | ==== Beispiel OutPin ==== | ||
+ | Einen einfachen Ausgang zum Schalten von was auch immer kann man so realisieren: | ||
+ | < | ||
+ | [output_pin OutPin] | ||
+ | pin : gpio79 | ||
+ | pwm : false | ||
+ | value : 0 | ||
+ | </ | ||
+ | |||
+ | > | ||
+ | |||
+ | Ergebnis in MainSail \\ {{youtube_ideen: | ||
+ | ==== Links === | ||
+ | * https:// | ||
+ | * https:// | ||
+ | |||
+ | ===== WS2812 Licht ===== | ||
+ | |||
+ | III. How can I enable ws2812 RGB lightning and which Pins are used for that? | ||
+ | |||
+ | Only PC14 can be used for ws2812 and if you can modify the dts, you can modify the dts to any io | ||
+ | |||
+ | Please check the attachment 4 for your reference. | ||
+ | ===== IR Sensor nutzen ===== | ||
+ | Ab Kernel 4.x gibt es einen IR Treiber im Kernel. Sowas wie Lirc ist also nicht mehr wirklich vonnöten. | ||
+ | |||
+ | * Erkennen, ob das IR Modul geladen wurde \\ '' | ||
+ | * '' | ||
+ | * Anzeigen welche Protokolle genutzt werden \\ '' | ||
+ | * Die meisten einfachen Fernbedienungen nutzen das NEC Protokoll. das kann man ändern indem man sich als root anmeldet '' | ||
+ | * Das überlegt aber keinen Reboot. Hier ggf. mit cron einen reboot job einfügen ... \\ '' | ||
+ | * Testen kann man das nun unterschiedlich ... | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * Python (https:// | ||
+ | from evdev import InputDevice | ||
+ | dev = InputDevice('/ | ||
+ | |||
+ | for event in dev.read_loop(): | ||
+ | print(event) </ | ||
+ | ==== Links ==== | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * https:// | ||
+ | |||
+ | ===== USB Boot ===== | ||
+ | Root FS umhängen \\ | ||
+ | setenv bootargs " | ||
+ | |||
+ | boot.cmd anpassen ... | ||
+ | |||
+ | https:// | ||
+ | ===== Configs ===== | ||
+ | |||
+ | ==== / | ||
+ | <code | BoardEnv.txt> | ||
+ | bootlogo=true | ||
+ | overlay_prefix=sun50i-h616 | ||
+ | |||
+ | ## ' | ||
+ | fdtfile=sun50i-h616-biqu-sd | ||
+ | |||
+ | ## default ' | ||
+ | console=display | ||
+ | |||
+ | ## Specify HDMI output resolution (eg. extraargs=video=HDMI-A-1: | ||
+ | # | ||
+ | |||
+ | ## uncomment for ws2812 | ||
+ | # | ||
+ | |||
+ | ## uncomment for i2c-gpio, pwm3, disable uart0 for pwm3 | ||
+ | # | ||
+ | |||
+ | overlays=spi-spidev | ||
+ | param_spidev_spi_bus=1 | ||
+ | param_spidev_spi_cs=1 | ||
+ | param_spidev_max_freq=1000000 | ||
+ | |||
+ | ## uncomment for TFT35_SPI screen | ||
+ | # | ||
+ | |||
+ | ## uncomment MCP2515 spi to canbus module | ||
+ | # | ||
+ | |||
+ | ## Chipselect Lines ! | ||
+ | ## uncomment overlays=spidev1_2 to release ' | ||
+ | ## spidev1.0 is used by MCP2515, | ||
+ | ## spidev1.1 is used by tft35_spi. | ||
+ | ## uncomment to release ' | ||
+ | # | ||
+ | |||
+ | ## uncomment to release ' | ||
+ | # | ||
+ | |||
+ | ## uncomment to release ' | ||
+ | # | ||
+ | |||
+ | ## ADXL345 | ||
+ | ## uncomment to release ' | ||
+ | # | ||
+ | |||
+ | ## uncomment to set ' | ||
+ | # | ||
+ | |||
+ | ## write the config after the ' | ||
+ | # | ||
+ | |||
+ | # | ||
+ | rootdev=UUID=e345f9fc-00c8-4132-8e8e-8afa1304e8ed | ||
+ | rootfstype=ext4 | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | ==== printer.cfg ==== | ||
+ | |||
+ | <code | printer.cfg> | ||
+ | [include mainsail.cfg] | ||
+ | [virtual_sdcard] | ||
+ | path : / | ||
+ | on_error_gcode : CANCEL_PRINT | ||
+ | |||
+ | [mcu] | ||
+ | serial | ||
+ | |||
+ | [printer] | ||
+ | kinematics: none | ||
+ | max_velocity | ||
+ | max_accel | ||
+ | |||
+ | # PIN CALC | ||
+ | # PG19 is definitely a GPIO pin. It may not be on the 40 pin GPIO header but any input / output pin on the BTT Pi and CB1 is GPIO. | ||
+ | #The formula to convert from PG19 to GPIO is: | ||
+ | #[(PG - PA)*32] + {Pin Number} | ||
+ | #Where PA = 1, PB =2….so PG = 7 | ||
+ | #So [(7-1)*32] + 19 = 211 | ||
+ | # Test PC15 | ||
+ | # (3-1)*32 + 15 = 79 -> GPIO79 | ||
+ | |||
+ | |||
+ | |||
+ | [fan_generic GenFan] | ||
+ | #host: | ||
+ | pin : gpio211 | ||
+ | max_power | ||
+ | # | ||
+ | cycle_time | ||
+ | hardware_pwm | ||
+ | kick_start_time: | ||
+ | |||
+ | [output_pin OutPin] | ||
+ | pin: gpio79 | ||
+ | pwm: false | ||
+ | # Set if the output pin should be capable of pulse-width-modulation. | ||
+ | # If this is true, the value fields should be between 0 and 1; if it | ||
+ | # is false the value fields should be either 0 or 1. The default is | ||
+ | # | ||
+ | value: 0 | ||
+ | # The value to initially set the pin to during MCU configuration. | ||
+ | # The default is 0 (for low voltage). | ||
+ | ## | ||
+ | # The amount of time (in seconds) per PWM cycle. It is recommended | ||
+ | # this be 10 milliseconds or greater when using software based PWM. | ||
+ | # The default is 0.100 seconds for pwm pins. | ||
+ | ## | ||
+ | |||
+ | [adxl345] | ||
+ | cs_pin | ||
+ | spi_bus : spidev1.1 | ||
+ | |||
+ | [resonance_tester] | ||
+ | accel_chip: adxl345 | ||
+ | probe_points: | ||
+ | 150, | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||