Vielen Dank an den Sponsor für dieses Video:
Fazit
Aus meiner Sicht ist ein CB1 nur bedingt als “Bastelrechner” für Maker einsetzbar.
In einem 3D Drucker erfüllt es aber durchaus seinen Zweck.
Für das CB1 / CM4 Modul mit eMMC Speicher müssen die Schalter RPIBOOT
und USBOTG
gesetzt sein zum Aufspielen des Systems.
Für den normalen Betrieb müssen diese Schalte ausgeschaltet sein!
ACHTUNG
Das BTT CB1 (wie auch der BTT Pi 1.2) laufen nicht mit dem Raspberry Pi Image!
Es muss ein Image von BTT genutzt werden das an den SBC angepasst ist.
CB1_Debian11_minimal_kernel5.16_20230712.img.xz
). In dem größeren Image ( CB1_Debian11_Klipper_kernel5.16_202300712.img.xz
) ist u.A. noch ein Grafiktreiber für den SBC integriert. Klipper läuft mit beiden Images problemlos. system.cfg
mit einem Texteditor öffnen# wifi name WIFI_SSID="WLAN_SSID" # wifi password WIFI_PASSWD="WLAN_PASSWORT"
system.cfg
eingetragen: hostname="BTT-CB1"
sudo apt update && sudo apt upgrade -y && sudo apt install -y git silversearcher-ag wavemon hexedit sudoku tcpdump iptraf mc htop dcfldd nano usbutils ranger tldr ncdu can-utils multitail fd-find && mkdir -p ~/.local/share && tldr -u
sudo apt autoremove alsa* modem* cups* pulse* avahi* -y
ip a
Wer das BTT CB1 mit einem ADXL345 Sensor für Input Shaper ausstatten möchte, sollte den Linux Prozess noch einrichten. Der Sorgt dafür, dass die GPIO Pins vom BTT CB1 aus Klipper Sicht genutzt werden können und ermöglicht eben den Betrieb von extra Sensoren wie dem ADXL345.
cd ~/klipper/
sudo cp ./scripts/klipper-mcu.service /etc/systemd/system/
sudo systemctl enable klipper-mcu.service
make menuconfig
sudo service klipper stop
make flash -j4
sudo service klipper start
Um Klipper vorübergehend in Betrieb zu nehmen, kann man folgende Mini Konfiguration verwenden:
[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.
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 …
sudo nano /etc/network/interfaces.d/can0
allow-hotplug can0 iface can0 can static bitrate 1000000 up ifconfig $IFACE txqueuelen 1024
sudo reboot
ip a
ein CAN Interface listen : can0: <NOARP,UP,LOWER_UP,ECHO> mtu 16 qdisc pfifo_fast state UP group default qlen 1024 link/can
sudo systemctl stop klipper.service
~/klippy-env/bin/python ~/klipper/scripts/canbus_query.py can0
sudo systemctl start klipper.service
Die meisten Board bieten die Anschlüsse für CSI (Kamera) und DSI (Monitor). Wie hier z.B. beim Manta Board:
Diese Anschlüsse funktionieren aber NICHT mit dem CB1!
Am HDMI Anschluss sollte nach dem Start sofort eine Ausgabe erfolgen. Anpassungen kann man an zwei Stellen vornehmen:
sudo nano /boot/BoardEnv.txt
## Specify HDMI output resolution (eg. extraargs=video=HDMI-A-1:800x480-24@60) #extraargs=video=HDMI-A-1:1024x600-24@60
sudo nano /boot/system.cfg
########################################### # HDMI klipperScreen rotation # ks_angle: Rotation angle # normal: 0; inverted: 180; # left: 90 to left; right: 90 to right; #ks_angle="normal"
Auf einem M8P Manta Board lässt sich der HDMI Ausgang nur betreiben, wenn das Board extra mit USB-C versorgt wird. Zusätzlich muss der 5V USB Jumper gesetzt sein!
Nachtrag 09.02.2024
Einige User berichten das der HDMI Ausgang auch mit dem CB1 und 24V Versorgung funktioniert.
Hier muss sich BTT mal zu Wort melden, warum es u.A. bei mir nicht klappt.
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)
CB1 Pin | Function | CB1 GPIO |
---|---|---|
PH6 | SPI1 CLK | GPIO230 |
PH7 | SPI1 MOSI | GPIO231 |
PH8 | SPI1 MISO | GPIO232 |
PC10 | CS | GPIO74 |
sudo nano /boot/BoardEnv.txt
spidev1_1
hinzufügen → Bsp: overlays=spidev1_1 ir
[adxl345] cs_pin: BTTPI:gpio74 spi_bus: spidev1.1 [resonance_tester] accel_chip: adxl345 probe_points: 60, 60, 20 # an example
BTTPI
anpassen an den Namen der eigenen Linux MCU!!/dev
auftauchen ´nach einem Reboot/boot/BoardEnv.txt
eingetragen : overlays=spidev1_1 ir
/dev
vorhanden ist kann man in der MainSail Konsole den Input Shaper Sensor abfragen mit ACCELEROMETER_QUERY
Die GPIO Pins vom BTT Pi können von Klipper angesteuert werden. Man muss nur mit der Pin Bezeichnung aufpassen …
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.
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
[temperature_sensor CB1] sensor_type: temperature_host
Dieses Beispiel steuert einen Lüfter über den CB1 eingebauten Temperatursensor:
[temperature_fan Case_fans] pin: PD4 sensor_type: temperature_host off_below: 0.4 min_temp: 10 max_temp: 90 target_temp: 55 control: pid pid_Kp: 2 pid_Ki: 4 pid_Kd: 0.1
sudo apt install lm-sensors
sensors
Hinweis
Diese Anleitung klappt nur wenn eine grafische Umgebung auf dem CB1 installiert ist. Bei dem “großen” Image von BTT ist das der Fall.
Weiterhin braucht man MobaXTerm um die Ausgaben über den X Server zu bekommen.
sudo apt install python3-virtualenv python3-tk lm-sensors -y
virtualenv grapher
cd grapher/
source bin/activate
pip3 install matplotlib
nano grapher.py
import tkinter import matplotlib import matplotlib.pyplot as plt from collections import deque from datetime import datetime import subprocess import time def run_linux_program(): command = 'sensors |grep crit |cut -d "+" -f2|cut -d "C" -f1' result = subprocess.run(command, capture_output=True, text=True, shell=True) print(result.stdout.strip()[:4]) return float(result.stdout.strip()[:4]) # Initialisierung des Diagramms matplotlib.use('TkAgg') print(f"Interactive mode: {matplotlib.is_interactive()}") print(f"matplotlib backend: {matplotlib.rcParams['backend']}") plt.ion() fig, ax = plt.subplots() values = deque(maxlen=100) try: while True: values.append(run_linux_program()) ax.clear() ax.plot(values) ax.set_title('CB1 Temp Monitor') ax.set_xlabel('Zeit') ax.set_ylabel('Temp') # Festlegen von 5 Ticks auf der Y-Achse y_ticks = [20, 40, 60, 80, 100, 120] ax.set_yticks(y_ticks) for y_tick in y_ticks: ax.axhline(y=y_tick, linestyle='dashed', color='gray', linewidth=1) plt.draw() plt.pause(1.0) except KeyboardInterrupt: pass finally: plt.ioff() plt.show()
sudo apt install stress
stress -c 4 -m 4
Gefühlt ist das Image etwas “zäh”.