Table of Contents

BigTreeTech PI V1.2

YouTube Video #61


Vielen Dank an folgende Sponsoren für dieses Video:

Pros / Cons

Default User / Passwort

Image Installation

:!: :!: ACHTUNG :!: :!:
Das BTT Pi 1.2 (wie auch der BTT CB1) laufen nicht mit dem Raspberry Pi Image!
Es muss ein Image von BTT genutzt werden das an den SBC angepasst ist.
Hinweis

Nicht wundern beim Login … Da steht CB1 und nicht PI1.2. Das Image ist für beide System identisch!

Updates

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.

Minimale printer.cfg

Um Klipper vorübergehend in Betrieb zu nehmen, kann man folgende Mini Konfiguration verwenden:

printer.cfg
[include mainsail.cfg]
[mcu]
serial : /tmp/klipper_host_mcu
 
#[mcu Board]
#serial : /dev/serial/by-id/usb-Klipper_stm32f407xx_2B0035001147393437303337-if00
 
[printer]
kinematics: none
max_velocity: 1000
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


Controller : STM32G0B1
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://github.com/bigtreetech/BTT-Pi/issues/11 Ich würde also als erstes die Firmware aktualisieren

Adapter einsetzen

CAN Bus aktivieren

Damit der Adapter im Betriebsystem auch erkannt wird muss eine Netzwerk Interface Konfiguration (/etc/network/interfaces.d/can0) angelegt werden. Es ist möglich das die Datei schon im BTT Image eingepflegt ist …

Can Bus Test

HDMI Display

Am HDMI Anschluss sollte nach dem Start sofort eine Ausgabe erfolgen. TBD: Prüfen was wenn mit SPI Monitor! Anpassungen kann man an zwei Stellen vornehmen:

Hier in der zweiten Zeile die # entfernen und die Auflösung anpassen

Hiermit kann die grafische Ausgabe auf dem HDMI Port gedreht werden.
:!: Die Textkonsole bleibt davon leider unberührt :!:

3,5" SPI Display

Links

ADXL345

BTT Modul

ADXL345 pin Function Pi 1.2 Pin Pi 1.2 GPIO
3V3 (or VCC) Power 3,3V 3.3V DC power
GND GND GND GND
CS Chip Select PC3 (3-1)*32 + 3 = gpio67
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 spidev0_0 als SPI Bus. Für die Konfig ist folgendes notwendig:

DIY

Pi 1.2 Pin Function Pi 1.2 GPIO Wird genutzt von …
PC3 CS spidev0_0 (3-1)*32 + 3 = gpio67 spidev0_0 ADXL345
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 GPIO75 spidev1.0 MCP2515
PC7 CS of spidev1_1 GPIO71 spidev1.1 TFT
PC13 CS of spidev1_2 GPIO77 spidev1.2 frei
Hinweis 1
Die Default CS Pins können nicht in Klipper genutzt werden. Da kommt ein Fehler “Unable to open out GPIO chip line”
Hinweis 2
Für Klipper einen freien GPIO verwenden und den als CS Pin nutzen (Beispiel gpio74)

Tests

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:

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:gpio211   # Hier ggf. den Host anpassen -> Name der Linux MCU
max_power      : 1.0
#shutdown_speed:
cycle_time     : 0.010
hardware_pwm   : false
kick_start_time: 1.100

Als Ergebnis bekommt man in MainSail einen neuen Lüfter

Beispiel OutPin

Einen einfachen Ausgang zum Schalten von was auch immer kann man so realisieren:

[output_pin OutPin]
pin   : gpio79
pwm   : false
value : 0
ACHTUNG
Hier darf nicht einfach irgendeine Last angeschlossen werden. Die GPIO Pins können nämlich kaum Strom abgeben. Als im Zweifel mit einem Mosfet arbeiten oder jemanden fragen der sich damit auskennt ;-)

Ergebnis in MainSail

Links

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.

Links

USB Boot

Root FS umhängen
setenv bootargs “root=${rootdev} rootwait rootfstype=${rootfstype} ${consoleargs} consoleblank=0 loglevel=7 ubootpart=${partuuid} usb-storage.quirks=${usbstoragequirks} ${extraargs} ${extraboardargs}”

boot.cmd anpassen …

https://linux-sunxi.org/FEL/USBBoot

Configs

/boot/BoardEnv.txt

BoardEnv.txt
bootlogo=true
overlay_prefix=sun50i-h616

## 'sun50i-h616-biqu-sd' for CB1, 'sun50i-h616-biqu-emmc' for CB1 eMMC version
fdtfile=sun50i-h616-biqu-sd

## default 'display' for debug, 'serial' for /dev/ttyS0
console=display

## Specify HDMI output resolution (eg. extraargs=video=HDMI-A-1:800x480-24@60)
#extraargs=video=HDMI-A-1:1024x600-24@60

## uncomment for ws2812
#overlays=ws2812

## uncomment for i2c-gpio, pwm3, disable uart0 for pwm3
#overlays=light

overlays=spi-spidev
param_spidev_spi_bus=1
param_spidev_spi_cs=1
param_spidev_max_freq=1000000

## uncomment for TFT35_SPI screen
#overlays=tft35_spi

## uncomment MCP2515 spi to canbus module
#overlays=mcp2515

## Chipselect Lines !
## uncomment overlays=spidev1_2 to release 'spidev1.2' to user space (For example: adxl345), 
## spidev1.0 is used by MCP2515, 
## spidev1.1 is used by tft35_spi. 
## uncomment to release 'spidev0.0' to user space
#overlays=spidev0_0

## uncomment to release 'spidev1.0' to user space
#overlays=spidev1_0

## uncomment to release 'spidev1.1' to user space
#overlays=spidev1_1

## ADXL345
## uncomment to release 'spidev1.2' to user space
#overlays=spidev1_2

## uncomment to set 'PH10' for IR
#overlays=ir

## write the config after the 'overlays' and separate it with a space when multiple functions are enabled
#overlays=disable_uart0 pwm ws2812 light tft35_spi mcp2515 spidev0_0 spidev1_0 spidev1_1 spidev1_2 ir

#------------------------------------------------#
rootdev=UUID=e345f9fc-00c8-4132-8e8e-8afa1304e8ed
rootfstype=ext4

printer.cfg

printer.cfg
[include mainsail.cfg]
[virtual_sdcard]
path           : /home/biqu/printer_data/gcodes
on_error_gcode : CANCEL_PRINT

[mcu]
serial         : /tmp/klipper_host_mcu 

[printer]
kinematics: none
max_velocity   : 1000
max_accel      : 1000

# 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      : 1.0
#shutdown_speed:
cycle_time     : 0.010
hardware_pwm   : false
kick_start_time: 1.100

[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
#   False.
value: 0
#   The value to initially set the pin to during MCU configuration.
#   The default is 0 (for low voltage).
##cycle_time: 0.0100
#   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.
##hardware_pwm: False

[adxl345]
cs_pin  : gpio74 
spi_bus : spidev1.1

[resonance_tester]
accel_chip: adxl345
probe_points:
    150,150,20  # Bettmitte