2024年12月13日 星期五

Orange Pi One 安裝使用

網拍上,有人便宜拍賣汰換的 Orange Pi One 單板電腦,相對便宜很多,就買了幾個回來備用。


買的開發板,有附盒子,風扇,USB 轉圓柱頭的電源線,這些自己買,又要一百多吧。電源接頭規格 DC 4.0x1.7mm,打算買 DC-DC 的板子來將 24V 轉成 5V,給香橙派用。

WiFi使用 

------------
dmesg 的訊息
[    6.976374] systemd[1]: Listening on systemd-rfkill.socket - Load/Save RF Kil
l Switch Status /dev/rfkill Watch.
[    7.090397] usb 2-1: RTL8188EU rev D (TSMC) romver 0, 1T1R, TX queues 2, WiFi=1, BT=0, GPS=0, HI PA=0
[    7.090433] usb 2-1: RTL8188EU MAC: e0:e1:a9:93:da:11
[    7.090444] usb 2-1: rtl8xxxu: Loading firmware rtlwifi/rtl8188eufw.bin
[    7.398809] usb 2-1: Firmware revision 11.1 (signature 0x88e1)


$ lsmod 
Module                  Size  Used by
rtl8xxxu              159744  0
binfmt_misc            16384  1
mac80211              643072  1 rtl8xxxu
libarc4                12288  1 mac80211
-------------------

Orange Pi One,終究是 2016 的產品,使用上的體驗,速度遠比不上 2023 年出的  Orange Pi Zero 3。以電腦的進步來看,7年的時間,速度大約至少差 2倍。但是網拍的二手貨,很便宜,買一些來改 3D 印表機。3D 印表機改 Klipper,至少要一個上位機。只改一台,錢差一點沒差,但收集了一堆來改,改完想賣出,差幾百,就不一定有人要收,成本能省就省吧。 在成本上比較,前者,主板+WiFi+SD卡,約 400元,後者,主板+SD卡,約 600元。

安裝 armbian 的 image,版本比較新,https://www.armbian.com/orange-pi-one/ 。

即使安裝 network-manager,"apt install network-manager",執行 nmtui,顯示不正常。只好用armbian-config 設定 WiFi。

依照 https://github.com/dw-0/kiauh 安裝 klipper。

安裝谐振测量所需的軟體

在執行到下列安裝指令時,很可能會掛掉,ssh 沒反應。

~/klippy-env/bin/pip install -v "numpy<1.26"

把僅有的 SD 空間,313MB 設成 swap,再儘可能把 service 停掉,擠出記憶體。

## 列出所有 active 的 service
systemctl list-units --type=service --state=active
OR
systemctl --type=service --state=active

## 把目前確定沒用的 service 都停掉
sudo systemctl stop klipper
sudo systemctl stop KlipperScreen.service
sudo systemctl stop NetworkManager.service
sudo systemctl stop moonraker.service
sudo systemctl stop nginx.service

終於安裝成功。

啟用 SPI 

使用 armbian-config 啟用 sun8i-h3-spi-spidev,會在 /boot/armbianEnv.txt 中,加入一行

overlays=sun8i-h3-spi-spidev 

從 console 看到載入失敗的訊息

Failed to load '/boot/dtb/overlay/sun8i-h3-sun8i-h3-spi-spidev.dtbo'

因為已加上 overlay_prefix=sun8i-h3。修改後,並加上 param 參數,成功看到 /dev/spidev0.0 的裝置。完整的 /boot/armbianEnv.txt 如下。

verbosity=1
bootlogo=false
console=both
disp_mode=1920x1080p60
overlay_prefix=sun8i-h3
rootdev=UUID=5fda7286-2a9d-4d7c-aa26-de3614b88ae6
rootfstype=ext4
overlays=spi-spidev
param_spidev_spi_bus=0
usbstoragequirks=0x2537:0x1066:u,0x2537:0x1068:u

可以參考 /boot/dtb/overlay/README.sun8i-h3-overlays 的說明。

接線

IO 的接腳如下。



2024年11月26日 星期二

Docker 吃掉硬碟空間處理

docker container 的 log 會無限成長,可以有好幾個 GB,只能手動刪除。

-------------------
# du -h -d 1
7.6G ./usr
47G ./var

# du /var/ -h -d 1
6.9G /var/cache
509M /var/log
40G /var/lib

# du /var/cache/ -h -d 1
942M /var/cache/debtap
5.6G /var/cache/pacman
387M /var/cache/pkgfile
6.9G /var/cache/

# pacman -Sc
Packages to keep:
  All locally installed packages

Cache directory: /var/cache/pacman/pkg/
:: Do you want to remove all other packages from cache? [Y/n] 
removing old packages from cache...
error: missing package metadata in /var/cache/pacman/pkg/unzip-6.0-20-x86_64.pkg.tar.zst.part

Database directory: /var/lib/pacman/
:: Do you want to remove unused repositories? [Y/n] 
removing unused sync repositories...

# du /var/cache/ -h -d 1
3.2M /var/cache/samba
80K /var/cache/ldconfig
942M /var/cache/debtap
2.1G /var/cache/pacman
387M /var/cache/pkgfile
4.0K /var/cache/private
1.1M /var/cache/fontconfig
3.4G /var/cache/


# du -h -d 1
4.1M ./f61f4a601db2be573c2b6351a04fcf1e79540e3cd8e1de41c6c9ab4a0fa204e0
48K ./2136c92af607bfee2ca204d3c77843dce66d7706f753e944dbe84820cf72c5ee
40K ./dc1f8e5f1fb6be942dad52e52453e2960d3bedf788f1774ddfe4462a03c66dc3
21G ./f3c5128d570fec0021b34ff8650fe9dcc531a2bcc59feb52aa9ff1e3f87b7e39
10M ./a3aefcd51740895bb721982b2dff7bfbcea164290b626a1dfb226b3a85274e50

dc1f8e5f1fb6 ==> nginx-hls-vod-server-web


清除所有 container 的 log
# truncate -s 0 /var/lib/docker/containers/*/*-json.log
-------------------

可以設 option,限制log 的大小。

--------------------------
file: /etc/docker/daemon.json
{
  "log-opts": {
    "max-size": "20m",
    "max-file": "5"
  }
}
--------------------------



2024年11月23日 星期六

MKS 安裝非官方 image -- redrathnure / armbian-mkspi


安裝 MKS PI 官方的 image,問題實在多,例如,重新啟動後,USB 無線網卡不會動,無法自己編譯 USB網卡的驅動。

redrathnure / armbian-mkspi,提供依據 Armbian 的 build image 程序所建立專案。

可以自己建,也可以直接下載已建立的 image 來用。

若有裝 MKS LCD,啟動後,可以在 LCD 上動到啟動過程。

安裝 rtl8188gu 驅動

安裝的是 McMCCRU / rtl8188gu 的驅動。

make 時,要加上參數,"make ARCH=arm64"。

另外,os_dep/linux/ioctl_cfg80211.c 中,呼叫 cfg80211_ch_switch_notify() 時,少一個參數,修改後,即可成功編譯。

---------------------
cfg80211_ch_switch_notify(adapter->pnetdev, &chdef, 0, 0);
---------------------

但是在載入 module 時,會出現無法載入 firmware 的錯誤。

---------------
[ 4377.664977] usb 1-1: RTL8710BU rev A (SMIC) romver 1, 1T1R, TX queues 3, WiFi
=1, BT=0, GPS=0, HI PA=0
[ 4377.665002] usb 1-1: RTL8710BU MAC: 50:2b:73:64:0e:e6
[ 4377.665011] usb 1-1: rtl8xxxu: Loading firmware rtlwifi/rtl8710bufw_SMIC.bin
[ 4377.665131] usb 1-1: Direct firmware load for rtlwifi/rtl8710bufw_SMIC.bin failed with error -2
[ 4377.665146] usb 1-1: request_firmware(rtlwifi/rtl8710bufw_SMIC.bin) failed
[ 4377.665155] usb 1-1: Fatal - failed to load firmware
[ 4377.665187] rtl8xxxu: probe of 1-1:1.0 failed with error -11
[ 4377.681468] 8188gu: loading out-of-tree module taints kernel.
[ 4377.711868] usbcore: registered new interface driver rtl8710bu
----------------

預設是安裝 armbian-firmware,/lib/firmware 下,沒有 rtlwifi/rtl8710bufw_SMIC.bin。

-----------------------
$ sudo apt install linux-firmware
[sudo] password for mks: 
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Package linux-firmware is a virtual package provided by:
  armbian-firmware-full 24.8.3
  armbian-firmware 24.11.1
You should explicitly select one to install.
-----------------------

若自己下載再 copy 到那個目錄下,會出現 Invalid firmware signature 的錯誤。

-----------------------
[  752.779538] usb 1-1: new high-speed USB device number 4 using dwc2
[  753.256104] usb 1-1: New USB device found, idVendor=0bda, idProduct=b711, bcdDevice= 2.00
[  753.256126] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  753.256134] usb 1-1: Product: 802.11n WLAN Adapter
[  753.256141] usb 1-1: Manufacturer: Realtek
[  753.256147] usb 1-1: SerialNumber: 00E04CB82101
[  753.284791] usb 1-1: RTL8710BU rev A (SMIC) romver 1, 1T1R, TX queues 3, WiFi=1, BT=0, GPS=0, HI PA=0
[  753.284815] usb 1-1: RTL8710BU MAC: 50:2b:73:64:0e:e6
[  753.284824] usb 1-1: rtl8xxxu: Loading firmware rtlwifi/rtl8710bufw_SMIC.bin
[  753.285626] usb 1-1: rtl8xxxu_load_firmware: Invalid firmware signature: 0x213c
[  753.285646] usb 1-1: Firmware revision 21571.89 (signature 0x213c)
[  753.285695] usb 1-1: Fatal - failed to load firmware
[  753.285731] rtl8xxxu: probe of 1-1:1.0 failed with error -22
[  753.327045] rtl8710bu 1-1:1.0 wlx502b73640ee6: renamed from wlan0
[  753.417659] rtl8710bu 1-1:1.0 wlx502b73640ee6: Current addr:  50 2b 73 64 0e e6 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[  753.417690] rtl8710bu 1-1:1.0 wlx502b73640ee6: Expected addr: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[  753.417700] ------------[ cut here ]------------
[  753.417704] netdevice: wlx502b73640ee6: Incorrect netdev->dev_addr
[  753.417774] WARNING: CPU: 1 PID: 633 at net/core/dev_addr_lists.c:519 dev_addr_check+0xb0/0x140
[  753.417801] Modules linked in: uas lz4hc lz4 zram 8188gu(O) nls_iso8859_1 rtl8xxxu mac80211 cfg80211 snd_soc_spdif_tx rfkill snd_soc_simple_card libarc4 snd_soc_simple_card_utils hantro_vpu rockchip_vdec(C) v4l2_vp9 rockchip_rga videobuf2_dma_contig v4l2_h264 videobuf2_dma_sg v4l2_mem2mem videobuf2_memops videobuf2_v4l2 snd_soc_hdmi_codec videodev videobuf2_common mc snd_soc_rockchip_spdif snd_soc_core fb_st7796(C) snd_compress fbtft(C) snd_pcm_dmaengine snd_pcm snd_timer rk_crypto snd soundcore rng_core cpufreq_dt joydev ads7846 sunrpc ip_tables x_tables autofs4 dwmac_rk stmmac_platform stmmac pcs_xpcs lima gpu_sched drm_shmem_helper dw_hdmi_cec dw_hdmi_i2s_audio spidev gpio_syscon

-----------------------

重新裝 armbian-firmware-full 後,就有 rtlwifi/rtl8710bufw_SMIC.bin 這個檔了。重新插拔 USB WIFI 網卡,可以正常載入 firmware。

-----------------------
[ 1729.358248] usb 1-1: new high-speed USB device number 6 using dwc2
[ 1729.834781] usb 1-1: New USB device found, idVendor=0bda, idProduct=b711, bcdDevice= 2.00
[ 1729.834801] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1729.834809] usb 1-1: Product: 802.11n WLAN Adapter
[ 1729.834816] usb 1-1: Manufacturer: Realtek
[ 1729.834822] usb 1-1: SerialNumber: 00E04CB82101
[ 1729.863786] usb 1-1: RTL8710BU rev A (SMIC) romver 1, 1T1R, TX queues 3, WiFi=1, BT=0, GPS=0, HI PA=0
[ 1729.863811] usb 1-1: RTL8710BU MAC: 50:2b:73:64:0e:e6
[ 1729.863820] usb 1-1: rtl8xxxu: Loading firmware rtlwifi/rtl8710bufw_SMIC.bin
[ 1729.864170] usb 1-1: Firmware revision 16.0 (signature 0x10b1)
[ 1731.131773] rtl8xxxu 1-1:1.0 wlx502b73640ee6: renamed from wlan0
[ 1732.597696] wlx502b73640ee6: authenticate with 2c:4d:54:5f:30:c8
[ 1732.605563] wlx502b73640ee6: send auth to 2c:4d:54:5f:30:c8 (try 1/3)
[ 1732.611218] wlx502b73640ee6: authenticated
[ 1732.611797] wlx502b73640ee6: associating to AP 2c:4d:54:5f:30:c8 with corrupt probe response
[ 1732.614590] wlx502b73640ee6: associate with 2c:4d:54:5f:30:c8 (try 1/3)
[ 1732.620845] wlx502b73640ee6: RX AssocResp from 2c:4d:54:5f:30:c8 (capab=0xc31 status=0 aid=4)
[ 1732.622572] usb 1-1: rtl8xxxu_bss_info_changed: HT supported
[ 1732.625258] wlx502b73640ee6: associated
-----------------------





2024年10月30日 星期三

CNC 使用摘要

 透過網路買了一台二手 CNC,慢慢熟悉中。


使用的控制板,極造科技 VVIP_ESP32_V1.0,網路上找不到資料。

賣家寄出前,把它設成 AP mode,造著他說的,用網路連上後,再把 WIFI 設成 Client mode,可以用其他電腦連上。

確定正常後,開始探索,可以做些什麼事。發現板子上的 Micro USB,應該是 UART 界面。使用 putty 連上後,出現熟悉的 ok,可能是 forth 系統吧。打的字不會出現,換行後不會從頭開始顯示,果然和 forth 的特性一樣。修改 putty 的 terminal 的設定,勾選 "Implicit CR in every LF","Local echo" 設成 "Force on",操作就正常了。

可以使用的指令,參考 Grbl v1.1 Commands 。

WIFI 設定,參考 Can't Get WiFi to Connect #465

-----------------
[ESP420] 指令顯示的訊息
Chip ID: 12311
CPU Frequency: 240Mhz
CPU Temperature: 46.7C
Free memory: 125.65 KB
SDK: v3.2.3-14-gd3e562907
Flash Size: 4.00 MB
Available Size for update: 1.87 MB
Available Size for SPIFFS: 169.38 KB
Baud rate: 115200
Sleep mode: Modem
Web port: 80
Data port: 23
Hostname: cnc
Current WiFi Mode: STA (4C:11:AE:D7:17:30)
Connected to: TOTOLINK_N200RE
Signal: 100%
Phy Mode: 11n
Channel: 10
IP Mode: DHCP
IP: 192.168.66.217
Gateway: 192.168.66.1
Mask: 255.255.255.0
DNS: 192.168.66.1
Disabled Mode: AP (4C:11:AE:D7:17:31)
Current BT Mode: Off
Notifications: Disabled
FW version: 1.1f (20200319) (ESP32)
-----------------

安裝 FluidNC

安裝說明 FluidNC Web Installer。安裝很容易,照著說明做,完全不用自己編譯檔案。下載對應的 zip 檔,例如使用 Linux,下載 fluidnc-v3.8.3-posix.zip,解壓縮後,到解壓的目錄下,先把 USB 連上電腦,再執行 "sudo install-wifi.sh"。因為要有 root 的權限,才能開啟 /dev/ttyUSB0,所以用 sudo 執行。一路自動安裝完,然後自動進入 xmodem。

設定說明 1. Config file Overview


2024年10月13日 星期日

透過 tiny-drm 驅動 spi 觸控螢幕

參考連結 

  • Milk-V Duo tinydrm驱动屏幕(ili9488/st7789)
  • birdtechstep / tinydrm
  • https://blog.csdn.net/CNflysky/article/details/120492583
  • http://www.orangepi.org/orangepiwiki/index.php/Orange_Pi_Zero_3
  • https://lore.kernel.org/lkml/760f8dc6-3bd9-d63a-37e1-c9e472c09285@tronnes.org/T/
  • https://github.com/under-view/spi-tft-ILI9488,Development is done with kernel version 6.1.9
--------------
$ lsmod
Module                  Size  Used by
ili9341                16384  0
drm_mipi_dbi           28672  1 ili9341
--------------

2024年10月3日 星期四

Fly-Pi 自定 Armbian

參考

為了要編譯網卡的驅動,必須有預裝的而且使用非官方的 image,不會使用 cn 網域的伺服器,快多了。

Fly 提供的 Armbian image,沒有 kernel source,所以無法使用。

自已 build image

有較多選擇性。步驟如下

# Check out armbian's build repository
$ git clone https://github.com/armbian/build/ armbian
$ cd armbian/
# Apply patches from this repository
$ git am ../mellowfly-geminipi-armbian/patches/*.patch
# Compile ubuntu jammy with default kernel config
$ ./compile.sh BOARD=mellowflygeminipi BRANCH=current RELEASE=jammy BUILD_MINIMAL=no BUILD_DESKTOP=no KERNEL_CONFIGURE=no INSTALL_HEADERS=yes

不要只執行 ./compile.sh,透過互動界面選擇選項,那樣的選項較少。

建立 debian / legacy 的 image。

----------------
./compile.sh BOARD=mellowflygeminipi BRANCH=legacy RELEASE=bookworm BUILD_MINIMAL=no BUILD_DESKTOP=no KERNEL_CONFIGURE=no INSTALL_HEADERS=yes
----------------

建好了,但無法開機。

步驟

下載 image,燒到 sd 卡。

接上 Type-C 接口,再使用 putty 連線。

用 root 登入,密碼 1234,登入後,會要求改密碼。然後,立刻要建一個普通帳號,例如 fly / cc1234。

較特殊的網路設定,如要指定固定 IP,可以使用 nmtui 來設定。

armbian-config 

以 root 身分執行 armbian-add-overlay <overlay_file.dts>,藉以 Compile and activate the overlay , 例如 sudo armbian-add-overlay sht15.dts。

---------------------
$ ls /lib/modules/6.6.36-current-sunxi64/kernel/drivers/staging/fbtft/fb_ili*
fb_ili9163.ko  fb_ili9325.ko  fb_ili9341.ko  fb_ili9486.ko
fb_ili9320.ko  fb_ili9340.ko  fb_ili9481.ko
---------------------

可惜沒有 fb_ili9488.ko。

 

2024年9月5日 星期四

香橙派 zero3 (linux 6.1.xx) 連接 SPI LCD 屏幕 (ILI9341)

參考連結

前言

Linux 並沒有正式支援 SPI 界面的 LCD 螢幕,在 Armbian 下是透過 Overlay 來連接 SPI 界面的 LCD 螢幕。

在網路上找到的資料,都是舊的作法,香橙派的用户手册中查找到的驱动方法,也是只能在 linux 4.9 下驅動屏幕的方案。 但 Orange PI zero3 最近的系统是 debian bookworm linux6.1.31,因此不能用舊的方法驅動。

最先是在 CSDN 找到一篇,是新的作法,照著做,可以成功地輸出顯示到 LCD,但觸控功能沒有啟動。後來又找到相關的作法,把觸控功能也啟動了。

在淘寶買 spi lcd屏幕時,要注意使用的晶片。第一次貪大,買了 3.5" 的 LCD,使用的晶片為 ILI9488,必須自己編譯 Kernel 的 module。要選較舊的 ILI9341 晶片的 LCD,在 Armbian 的 kernel 就有現成的 module 可用。

另外,觸控功能的 IC 是 XPT2046,是 TI 的 ADS7843 的相容 IC,因此是用 ADS7843 的驅動程式。

正文

香橙派接腳定義如下圖。



連接 Orange PI 與屏幕,參考。SPI 是一對多的協定,其中 SDI, SDO, SCK 是共用的,使用 CS 選擇要溝通的裝置。

--------------
OPi Zero3 wiring:
Pin 23 - PH6  <-->  SPI1 SCK       & T_CLK
Pin 21 - PH8  <-->  SPI1 SDO<MISO> & T_DO
Pin 19 - PH7  <-->  SPI1 SDI<MOSI> & T_DIN
Pin 11 - PC6  <-->  DC
Pin 7  - PC9  <-->  RESET
Pin 13 - PC5  <-->  LED
Pin 22 - PC7  <-->  SPI1 CS       (PH9, originally)
Pin 18 - PC14 <-->  T_CS
Pin 16 - PC15 <-->  T_IRQ
Pin 1  - 3.3V
Pin 6  - GND
--------------

经过查找,发现有 ili9341 的驱动模块,位於下面的目錄:

  • /lib/modules/6.1.31-sun50iw9/kernel/drivers/staging/fbtft/fb_ili9341.ko
  • /lib/modules/6.1.31-sun50iw9/kernel/drivers/input/touchscreen/ads7846.ko

于是通过设备树 overlay 添加 ili9341 的设备节点,如下:

在 /boot/dtb/allwinner/overlay/ 目錄下,建立檔案 ili9341_lcd.dts。檔名可自己任意決定。

/dts-v1/;
/plugin/;

/ {
    compatible = "xunlong,orangepi-zero3", "allwinner,sun50i-h616";

    fragment@0 {
        target = <&spi1>;
        __overlay__ {
            status = "okay";
            /*cs-gpios = <&pio 7 9 0>;*/ /* PH9*/
            cs-gpios = <&pio 2 7 0>, <&pio 2 14 0>; /* PC7 PC14 */

            ili9341: ili9341@0 {
                compatible = "ilitek,ili9341";
                reg = <0>;  /* Chip Select 0 */
		#spi-cs-high;
                spi-max-frequency = <40000000>;
                rotate = <90>;
                bgr = <0>;
                fps = <30>;
		width = <240>;
		height = <320>;
                buswidth = <8>;
                reset-gpios = <&pio 2 9 1>; /*RESET=PC9*/
                dc-gpios = <&pio 2 6 0>; /*DC_RS=PC6*/
                led-gpios = <&pio 2 5 0>; /*LED=PC5*/
                debug = <4>;
            };

            ads7846: ads7846@0 {
                compatible = "ti,ads7846";
                reg = <1>;  /* Chip Select 1 */
		#spi-cs-high;
                spi-max-frequency = <1000000>;
                interrupt-parent = <&pio>;
                interrupts = <2 15 2>; /* PC15 IRQ_TYPE_EDGE_FALLING */
                pendown-gpio = <&pio 2 15 0>; /* PC15 */
		/* ti,swap-xy = <0x1>; */
		ti,x-min = /bits/ 16 <0>;
                ti,y-min = /bits/ 16 <0>;
                ti,x-max = /bits/ 16 <0x0FFF>;
                ti,y-max = /bits/ 16 <0x0FFF>;
                ti,pressure-min = /bits/ 16 <0>;
                ti,pressure-max = /bits/ 16 <0xFFFF>;
		ti,x-plate-ohms = /bits/ 16 <400>;
            };
        };
    };
};

执行下面的指令,會產生 ili9341_lcd.dtbo,放在 /boot/overlay-user/ 的目錄下。

$ sudo orangepi-add-overlay ili9341_lcd.dts
Compiling the overlay
Copying the compiled overlay file to /boot/overlay-user/
Overlay ili9341_lcd was already added to /boot/orangepiEnv.txt, skipping
Reboot is required to apply the changes

如訊息所說,會在 /boot/orangepiEnv.txt 的檔案中加入該 overlay。

$ cat /boot/orangepiEnv.txt 
verbosity=1
bootlogo=false
console=both
disp_mode=1920x1080p60
overlay_prefix=sun50i-h616
rootdev=UUID=535922e7-511d-46ea-82e6-573f913006af
rootfstype=ext4
user_overlays=opi_z3_ili9341_lcd

若要暫時停用該 overlay,可將其註解掉。例如,要使用 ADXL345 测量谐振時,也是用 SPI 來連接。

重新啟動,可以成功點亮 LCD。

疑难杂症

香橙派的 SPI1 CS 對應到 CPU 的 PH9,但使用 PH9,會報錯,dmesg 訊息如下:

-----------------
pin PH9 already requested by 5011000.spi;
-----------------

若是将 ili9341.dts 中的 cs-gpio 一行注释掉,則 fb0 可成功挂载,但是屏幕白屏

可以尝试更换cs的引脚,在此是把 cs 的引脚从 PH9 更换至 PC7 后可以正常点亮。另外,觸控的 CS 信號則是用 PC14。


具体操作:修改 ili9341_lcd.dts,

-----------------
    /* cs-gpios = <&pio 7 9 0>;  */
    cs-gpios = <&pio 2 7 0>; 
-----------------

"<&pio " 後面接的第一個數字,0 ~ 7 對應 Port A ~ Port H。最後一個數字,應是指定輸出 / 輸入。

只接 LCD 時,SPI1 SDO 不用接。開始時,照著 CSDN 的作法,成功點亮了 LCD。後來加上觸控的設定,沒注意到 SPI1 SDO 沒接,測了好久不成功,才發現一支腳沒接。

LCD 的設定

開機後,LCD 即會輸出顯示,但啟動 X 的應用程式,沒有顯示。

fb_tft 透過 fb_ili934 控制 LCD。在 X 的設定目錄下,建立 fbdev 的相關設定檔,如下。

$ cat /etc/X11/xorg.conf.d/98-fbdev.conf 
Section "Device"
  Identifier "myfb"
  Driver "fbdev"
  Option "fbdev" "/dev/fb0"
EndSection

重新啟動後,成功啟動 KlipperScreen。

觸控校正與設定

觸控是使用 XPT2046, 其為 ADS7846 的相容 IC。觸控要校正,才會和 LCD 的顯示一致。最先找到的作法,不能成功設定,但有了相關概令。參考 Arch Linux 的 Calibrating Touchscreen,只要設定 libinput 的 TransformationMatrix 參數即可。

設定的內容如下。

$ cat /etc/X11/xorg.conf.d/99-calibration.conf
Section "InputClass"
	Identifier	"calibration"
	MatchProduct	"ADS7846 Touchscreen"
	Option "TransformationMatrix" "0 1.15 -0.1 1.1 0 -0.05 0 0 1"
EndSection

轉換公式計算如下。X / Y range 是指傳回的數值的範圍,這裡是 0xFFF,即 4096。

-----------------------------------------------------
[  0    1.15  -0.1  ][X]   [ 1.15*Y - 0.10*Y_range ]
[ 1.1    0    -0.05 ][Y] = [ 1.10*X - 0.05*X_range ]
[  0     0      1   ][1]   [        1              ]
-----------------------------------------------------

網路上可以找到計算的公式,但後發現直接觀察修正最快。因為 KlipperScreen 不會顯示游標,我也不會啟動遠端的 X,只好另外裝 LightDM,啟動 lightdm,再慢慢調上面的參數。





2024年8月27日 星期二

珍妮類 UltiMaker 2 印表機改裝

2024 春節前,從網友接收過來的珍妮類 Ultimaker 結構 3D印表機,聽說這種十字形結構是最穩的結構,就一心想把它弄起來玩玩看。

在網路上找到一些相關的參考資料,想辦法把列印頭裝上 HGX lite 擠出機,改過的 Mini-Stealthburn,這樣可以使用很多不同的熱端,如拓竹的。

相片是目前的進度,接下來要弄 klipper 控制。(2024-02-21)


前輩回饋,"不好裝的機器,六根光軸平行度要求很高,偏一點都會卡卡的"," 沒錯,記得之前校正十字軸歪斜問題,根本人人遇到必須會的","鋁塑板,好懷念,當年各種山寨 UltiMaker MakerBot"。"體積超過300x300之後,強度比corexy強,得益於皮帶少了一半長,越大尺寸越明顯,加減速的變化,理論上可以更大"。

2024-04-15,開始測試

剛改好的 十字結構 的仿 ultimate maker 2 印表機,試印一下。蠻奇怪的,印出來是鏤空的,這應是擠出不足吧。

HGX lite 擠出機,拓竹熱端,有空再慢慢找原因,慢慢改吧


改好的 類 Ultimaker 2,十字架構 3D印表機,改用 Voron 的切片設定,列印成功。

因為參考 Voron,都改成 Klipper 了,也要用 Voron 的設定吧。先前在 PrusaSlicer 選 Ultimate 的印表機,結果擠出不足,列印失敗。


真不可靠,一個簡單的 toolhead 電路板,LED 方向也會搞錯。

使用時,打印頭正常加熱,但LED不會亮。確認LED 正常,只是方向反了。

解焊反過來重焊,就正常了。




Micromake 3D 印表機

 看到有一賣一台Micromake 3D 印表機和一堆零件,算算價值還可以,又衝動的買了。

Micromake 這家公司

想要瞭解我買的機器是那年代的東西,但找不到確切的資訊,只能依找到的零碎資料來拼湊。

找到 YouTube 的資料 https://www.youtube.com/c/micromake/playlists  (加入日期:2014年1月6日)

---------------------
簡介
我们是一只来自中国郑州的初创团队,我们正在做一些原创设计使得让3D打印机更加便宜并且安装容易,在基于开源的设计上不断改进并且形成商品,我们在中国向全球出售我们的产品,并且愿意将我们的设计及产品分享给更多maker!
-------------------------

相關資料整理

  • Http://Www.Micromake.Cn  -- 這網頁不存在了
  • 2020-07-31,[真.盖塔]HEATS 混剪,最後一部影片,與3D印表機無關
  • 2019-03-05,Micromake L4 UV SLA LCD 3D Printer, 光固化機器
  • 2019-01-18,後來改做玩具了
  • 2017-03-04,Micromake C1 3D Printer 24CM moon lamp,龍門式機器
  • 2016-04-29,Micromake 3D Printer 整机安装【1】框架的安装,Delta 機器
  • 2015-09-04,Micromake 3D印表機 機器調試【1】軟体安裝与燒錄固件 -- 第一部影片


ATOM 3D 印表機

 突然的,對各型 Delta 印表機有興趣,又買了 2台 ATOM 的機器,V2 和 V3 各一台。要改裝的話,V2 是比較好改。

2024年7月17日 星期三

D-FORCE 3D印表機

D-FORCE 400 3D印表機

3D印表機,越玩越大

有人的機器壞了不想修,因為要送回公司修,運費太貴,3千元賣出。

實在太大,貨運行不收,叫回頭車送,運費4千。

提早下班,想辦法用可以爬樓梯的菜籃車,一個人把它拖上4樓。拖上來後,全身虛脫,感覺心臟快得好像要爆了


------------------
賣家的說明
------------------
售 D-FORCE 400 delta型
列印範圍 直徑400mm 高度500mm
自動校正壞掉了 因為我不會手動校正 所以便宜出售
此機台適合會手動校正的使用者購買  其他的功能都正常
電源供應器(明緯)已換新 我把它拉出來外面散熱比較好
馬達都有外加風扇散熱 擠出機馬達也有加風扇
熱床改成磁鐵+薄鐵鈑   原廠的玻璃都還在
之前有買一堆備用配件 全部都一併贈送
機台有點大 限自取
----------------

D-FORCE 300 3D印表機

其實是先看到這台,只是賣家在國外,要等回國才能處理。

D-FORCE 3D印表機相關資訊

D-force 的印表機已停產多年,在網路上找到的資料

D-force 系列功能比較

D-FORCE V3.0+ 3D印表機D-FORCE 400 3D印表機
外型尺寸
(高x寬)
83 x 46 (cm)130 x 65 cm
重量22.5kg46kg
底板直徑300mm420mm
最大列印直徑260mm380mm
最大成型高度295mm500mm
控制系統32bit 控制板
校正系統平台自動校正
動力系統42型L40步進馬達57型L40步進馬達
傳動系統GT2 6mm同步帶+上銀線相容線性滑軌(MGN12H)GT2 6mm同步帶+上銀線相容線性滑軌(MGN15H)
校正系統平台自動校正平台自動校正+多點幾何平台校正
韌體Marlin 2.x
LCD控制面板12864 LCD顯示+旋鈕控制器圖型式LCD顯示

在露天找到的更詳細的比較表,借用一下。


這台應是初代 D400,重量三十幾公斤,對我來說實在好重,縱使藉助拉車,還是搬得很辛苦。

控制板是 MKS GV1.4,16位元 MCU,對我來說沒啥用,會換成 32位元的。57型步進馬達,真的好大一顆,整個機構,光買零件就要上萬吧。

生產 DForce 印表機的公司

YouTube 上找到的資訊,https://www.youtube.com/@triangle-lab6335/videos

-----------------
簡介

Triangle-lab was founded in 2014 to develop and manufacture delta-type 3D printers with a triangular shape, hence the name "Triangle-lab".
We now focus on developing and manufacturing extrusion and hot-end systems for desktop and industrial grade 3D printers.
Our continued innovation and R&D efforts bring high performance, high quality and affordable parts to the 3D printing community.
"Triangle-lab" "D-froce" are our registered trademarks.

Official website: https://www.trianglelab.net (這網頁還存活著,2024-08-28)
Official AliExpress Website: https://trianglelab.aliexpress.com/store/1654223
Facebook: https://www.facebook.com/Trianglelab.org
Twitter: https://twitter.com/Triangle_lab
Mail:sales@trianglelab.net       support@trianglelab.net
------------------

關於舊機器的資訊不多,不肯提供自家生產過的產品的訊息,不是很可靠的公司。

Klipper

參考 [分享] delta 列印機安裝klipper







2024年6月16日 星期日

類 UM2 3D 印表機,改鋁型材框架

Ultimaker 在 2011 創立,於 2013 發表 Ultimaker 2,簡稱 UM2,採用 crossed gantry,因而也稱為 CroXY 架構。在 2015 - 2018 左右,有許多 UM2 的仿製機。有一些新設計,可參考下列資訊。

相關資訊,並不多,而且有點複雜,實在不想照做。倒是接收了2台類 UM2 的機器,一台鹿頭科技出的,收到時,壓克力外框已破掉,無法修復。在網路找到改鋁擠框架的資訊,資訊還蠻完整的,就照著改。

改裝完成的樣子如上,和先前的樣子完全不一樣。但感覺比較穩,可以減少機體共振吧。因此也想把更早收到,已改 Klipper 和 mini voron 列印頭的珍妮印表機,也改成鋁型材框架。

材料準備

原來機器的零件規格數量,若有缺或老化,要添購。或當切鋁型材長度的參考。

光軸
  • X 光軸*2,D: 8mm,L: 337mm
  • Y 光軸*2,D: 8mm,L: 348mm
  • Z 光軸*2,D: 12mm,L: 339mm。淘寶拍賣資訊 - 標準版 338mm,加高版 438mm。珍妮印表機,500mm
  • Print_Head_Shaft_X,打印頭 X 光軸,D: 6mm,L: 320mm (珍妮只有312mm?)。珍妮印表機的 X/Y 移動光軸比較粗,為 8mm 光軸,兩端切削成 6mm直徑。
  • Print_Head_Shaft_Y,打印頭 Y 光軸,D: 6mm,L: 300.5mm。
軸承
  • 軸承 Ball Bearing F688-2RS,內徑 8mm,外徑 16mm
    • 微型薄壁法兰挡边小轴承 F688Z ZZ, F618/8,内径8mm, 外径16mm, 厚度5mm
  • Sintered_Bushing *4,石墨軸承,內徑 8mm,外徑 11mm,L: 30mm -- 8*11*30mm
  • Linear Bearing LM6LUU,內徑 6mm,外徑 12mm -- 這個直徑好像較小,要確認 --6*12*35mm 
  • Square Flanged Linear Bearing LMK12LUU,Z軸軸承,內徑 12mm,長度 57mm

打印玻璃,257mm*229mm*4mm,破了,要補買

spacer,间隔柱
  • 8.2x10x5 -- *2
  • 8.2x10x10 -- *5
  • 8.2x10x25 -- *1
皮帶
  • GT2 皮帶 (pitch 2mm), 100齒,長 200mm,寬 6.5mm, *2
  • GT2 皮帶 305齒,長 610mm *4

熱床支撐板 -- 305*255*3.5mm

熱床 -- 24V, 165W, 3.5 Ohm,240x257x1.5mm

1159 Z-Motor with Trapezoidal Lead Srew, 4 separate threads,即 4頭,8導程

1187 Trapezoidal Lead Nut,改 T8 消間隙 8導程螺母

改 2020铝型材

欧标2020L电泳,切割下列尺寸和數量, 

  • X: 308mm *6, 
  • Y: 334mm *6, 
  • Z: 標準版 395mm *4,加高版 500mm *4,珍妮印表機,560mm *4。

珍妮印表機的 Z軸鋁型材長度計算如下。

  • 標準版,395mm  - 338mm = 57mm。
  • 加高版,500mm - 438mm = 62mm。
  • 珍妮印表機,500mm + 60mm = 560mm。

Z 光軸及Z步進馬達,不要使用列印件固定。Z 光軸使用立式支撑固定座光轴支架,12mm。Z步進馬達使用 42步进电机固定片安装支架

M6*16 10.9级盘头内六角螺栓 圆头螺钉 圆杯螺丝 手用丝锥 手用丝攻 M6 铝型材垂直打孔器沉头孔穿孔连接开孔定位器 (extrusion drill guide )

Aluminum Extrusion Drilling Jig



2024年5月12日 星期日

Making a Chromecast receiver

買一個 ChromeCast,很便宜,但使用起來讓人超不爽的。在 3代之後,廣告超多,這也就算了,遙控器按一按就好。讓人抓狂的是手機連不上,按了連接後,電視沒反應。更扯的是,電視一直播廣告,手機的影片時間也在跑,它把廣告當成我要看的影片唬弄我。

不只是我討厭,很多人都不爽吧,因此有人想要自己搞 ChromeCast,只是 Google 不一定准,會卡掉。

Making a Chromecast receiver,不太知道這個的用法,它是根據 "an Android app called AirReceiverLite which can act as a Chromecast receiver"。

從Linux安裝Chromecast,用 Linux 連 ChromeCast。

interfect/castanet.sh,問題是要怎麼找到 reset 後的 CHROMECAST_IP?

https://www.expressvpn.com/blog/chromecast-factory-reset/

Cannot SET UP Chromecast on Linux

How to set up a Chromecast without logging in to Google Home?

在 Linux 上使用的方式,Linux 使用 VLC 投放媒體至 Chromecast

1. 可能的作法

A simple solution (2019-Mar-15) I used successfully is to:

  1. Download an older portable version of Chrome (not sure about direct links posting rules here, a search for "portable chrome 71 stable" should get you there
  2. Extract and run this portable version
  3. Navigate to chrome://cast
  4. Setup should work

2. 需要專業技巧的作法 

Chromecast gen 3

I followed this post: https://superuser.com/a/1692253

tldr:wget https://gist.githubusercontent.com/interfect/5f68381d55658d334e2bc4619d796476/raw/1d16ead908a92742d5f22231a2611242d673654f/castanet.sh

chmod +x castanet.sh

CHROMECAST_IP=192.168.0.100 WIFI_SSID="foobar" WIFI_PASSWORD="hackme" ./castanet.sh

make sure you have jq and nodejs installed or the script doesn't work.

NOTE: to get the initial chromecast IP you have to connect to it's wifi hotspot (ChromeCastXXXX) and then use wireshark on your laptop/desktop's wifi interface to see it. Filter for arp requests. There will only be 2 IPs; your wifi interface and the Chromecast. Use the IP for the Chromecast in the spot above.

參考 瞭解詳情:找不到裝置,相關敘述 "連上與 Chromecast、內建 Chromecast 的電視/揚聲器、Google Home 或具備助理裝置的電視/揚聲器相同的 Wi-Fi 網路。尋找與 GoogleHomeXXXX 或 ChromecastXXXX 類似的名稱。"


2024年5月7日 星期二

珍妮 3D 打印機主控板 20160428Ver1.35B

從網友那裡接收一台淘寶的珍妮類 UltiMaker 2 印表機,使用珍妮自己的主控板。在網路上完全找不到該主控板的相關資料,但因為它使用 32位元的 MCU,所以就留著一直想要怎麼才能把它拿來使用。

後來找到可在 STM32 上跑的 Forth,再透過 Forth 兼具 compile 和 interactive 的特性,慢慢整理各控制腳的資料。

上圖是主控板的正面。

上圖是主控板的背面。標示公司網站 www.jennyprinter.com,但無法連上該網站。板子的相關資訊 JPBoard,20160428Ver1.35B,NO.160801060B。搜尋這些關鍵字都沒有結果。


使用的 MCU 是 STM32F407VET6。MKS Monster8 也是使用這一顆 MCU,但 Monster8 可接 8個步進馬達。從版本編號來看,是 2016 年出的板子,當初買這板子應該也蠻貴的吧,因此一直捨不得丟,想著要怎樣才能使用它。

從電路板的外觀來看,這板子是參考 RAMPS 1.4 設計的,那兩顆自恢復保險絲 (PPTC) 是 RAMPS 1.4 才有的,而且後來版本的 RAMPS 的接線座也改了。

後來找到可在 STM32 上執行的 Forth,板子上也有 ISP 腳位,可以燒寫 Firmware。就透過 Forth 慢慢收集各個控制的對應的 MCU PIN 腳。

把控制腳,如步進驅動的 DIR,接上 LED 和 電阻,再用 Forth 程式對所有的 PIN 輪流送出幾個方波,看到那一個腳 LED 會閃。刪開始,測試一個控制腳要花比較長的時間,後面可以把已知的腳去除,就快多了。就這樣,大致把所有腳位都確認了。

連接 12864 LCD 

不太熟悉這個規格,參考 Anycubic kossel Delta 的 Klipper 設定檔。其型式為  -- "RepRapDiscount 2004 Smart Controller" type displays,lcd_type: hd44780。

下圖 fysetc 的 EXP1/EXP2 的圖示。

若只要用 LCD,使用到的腳為 reset,enable, d4, d5, d6, d7,encoder1, encoder2, click,5V,GND。SD 卡的控制信號就不要管了。

關於 kill 信號,fysetc 的說明「為了兼容某些主板,如 RAMPS1.4,FYSETC mini12864 設置了 RST(R3) 和 KILL(R4) 的可選擇電阻。目前,有些主板(S6/Spider)将 KILL 换成 5V,此時,請確認 mini12864 上 R4 處於空贴狀態,否则按下屏幕上的按钮會致使 5V 与 GND 短路,長时間操作會導致主板損壞。」MKS 的板子則是將 KILL 信號接到 3.3V。

所以,kill 不要接,也不要用,設定裡也不要設定。

改靜音驅動 TMC2209

為了相容於以前的 A4988 和 RAMPS,各家的電路略微的不同,但最後大致改得差不多。

TMC2209 採用單線的 UART。若要變成兩條線,此信號為 RX,串一個電阻後,當成 TX。早期的 TMC2209 遵循此作法,如 MKS,pin-4 為 pdn_uart,即 RX,串一個1K電阻連到 pin-5,當作 tx。但有的主板 rx 和 tx 的腳位反過來,因此不同家的驅動插到別家的主板,會不能用。

但後來各家的驅動都直接把 pin-4 和 pin-5 短路,不管插那一家的主板都可以用。只是在舊的主板上使用,要注意有的直接設定 A4988 為 16微步,亦即將 MS1~MS3 全部接到 VCC。必須將 MS3 的腳拔起來不要接,不然可能燒掉驅動。

另外,RAMPS 控制板的 pin-5 和 pin-6 是短路的。所以,pin-4, pin-5, pin-6 實質上是短路的。

至於這塊珍妮的主板,只要 MS1~MS3 的跳線不要接就好。

關於 Klipper 安裝設定

編譯 Klipper firmware 的注意事項,因電路設計問題,在 reset 之後,熱床和列印頭可能直接加熱,直到開機完成,才會關閉。

設定如上,因為板子上的 USB 插座是 UART1,沒辦法透過 USB 燒寫 firmware,所以不用 bootloader。communication interface 就選 UART1。

另外,"GPIO pins to set at micro-controller startup" 項目要加入 "!PA3, !PB6, !PB9, !PB8, !PC7, !PC6, !PB13",前面加 '!' 表示要將輸出設為 Low。這個設定是將 P12 接頭的輸出全部關掉,包括加熱器和風扇。

PCB 上驅動熱床的 MOSFET,明顯比較大顆,IRF1010ES,Vds: 60V,170W,Gate Threshold Voltage 2V~4V。但不知是那邊的問題,在開機沒輸出時,G的電壓為 5V左右,MOSFET 會完全導通,熱床電壓為 24V。但在 klipper 啟動熱床時,G的電壓為 3.3V左右,MOSFET 不會完全導通,接 LED燈條,電壓約 15V,FET 的 DS 壓降為 8V左右。接熱床則量不到電壓。HE0, HE1 的輸出則能正常運作。只能用 HE1 輸出,外接 MOSFET 來驅動熱床。HE0, HE1 的 MOSFET - IRLR7843,Vds: 30V, 140W,Gate Threshold Voltage 1.5V~2.3V

參考 IRF1010E N-Channel MOSFET: Datasheet, Pinout, Equivalent,有一些使用上的說明。





2024年4月25日 星期四

Klipper 的 TMC 驅動設定

很辛苦的把舊的 3D 印表機改成 TMC2209 的靜音驅動,發現 microstep 仍然只能設到 16,噪音無法減少多少,有點失望。

不想換主板,因為這台機器會不會繼續用都不確定,因為已有太多機器了。只好細讀相關資料,看能有多大的改善。

MCU 是 ATmega2560,調到 64 microstep,一執行 home 功能,就出現像上面的錯誤。

TMC2209 靜音驅動的考量

參考 TMC drivers

  • StealthChop:是一种使用 PWM 电压而不是电流来驱动电机的技术。结果在低速时几乎听不见。StealthChop 具有较低的步进速度限制,如果您需要更快地移动,您可能需要使用 spreadCycle 或配置混合模式。
  • SpreadCycle:是另一种步进模式。驱动器将使用四个阶段将所需的电流驱动到步进电机中。SpreadCycle 提供更大的扭矩。缺点是噪音水平略高。

兩種模式不要混用。低速時用 StealthChop,安靜。高速時用 SpreadCycle,較有力,較吵。

8 位元 CPU,如 Atmega2560,microstep 只能設到 16。使用 TMC 驅動的好處,是能透過 interpolation 降低噪音。但是 Klipper 的指引建議關閉 interpolation,使用 spreadCycle 或 stealthChop,其中 spreadCycle 為優先。截錄說明如下


The TMC driver interpolate setting may reduce the audible noise of printer movement at the cost of introducing a small systemic positional error. This systemic positional error results from the driver's delay in executing "steps" that Klipper sends it. During constant velocity moves, this delay results in a positional error of nearly half a configured microstep (more precisely, the error is half a microstep distance minus a 512th of a full step distance). For example, on an axis with a 40mm rotation_distance, 200 steps_per_rotation, and 16 microsteps, the systemic error introduced during constant velocity moves is ~0.006mm.

For best positional accuracy consider using spreadCycle mode and disable interpolation (set interpolate: False in the TMC driver config). When configured this way, one may increase the microstep setting to reduce audible noise during stepper movement. Typically, a microstep setting of 64 or 128 will have similar audible noise as interpolation, and do so without introducing a systemic positional error.

If using stealthChop mode then the positional inaccuracy from interpolation is small relative to the positional inaccuracy introduced from stealthChop mode. Therefore tuning interpolation is not considered useful when in stealthChop mode, and one can leave interpolation in its default state.




2024年4月23日 星期二

Anycubic Kossel 整理及安裝 Klipper

參考 Anycubic Kossel Klipper guide

設定檔,klipper/config /printer-anycubic-kossel-plus-2017.cfg

機器簡要資料

此機器一般稱為 Anycubic Kossel Linear Plus 3D printer。控制板為 YJYGR 的 TriGorilla,為 Mega2560 & RAMPS1.4 相容板。電源輸入為 12-24V,有些說可以到 35V。有不同的版本,如下圖的標誌中沒有版本註記,為 Trigorilla 1.0。


這一台機器,中文資料不多,倒是英文資料慢慢挖可以找到不少。

先放上來參考。

改靜音驅動

沒找到詳細的資料,只有查到 Amazon 的商品簡介,有一個是配 FYSETC 的 TMC2209 (V2.0) 驅動,PIN 不太一樣。要支援 TMC2209 靜音驅動,必須自己修改,有點囉唆,看看是否改用 MKS Gen l v2.1,不用煩惱。

要接 TMC2209,使用 UART mode,可參考 UART This! Serial Control of Stepper Motors With the TMC2208, Ramps 1.4 and Marlin

MKS 和 FYSETC 的 TMC2209,PIN4-RX,PIN5-TX。TMC2209 只有一個 PIN,即 PIN14 為 PDN/UART,用 20K 的電阻 pull down,接到插槽的 PIN4-RX。插槽的 PIN4 和 PIN5 之間可能是短路,或經 1K 電阻接在一起。假如 PIN5 是要連到一般 UART 的 TX,就必須用 1K 電阻,不能直接短路。如上述文章使用 Marlin,serial_tx_pin 和 serial_rx_pin 都用到。至於 Klipper 只需定義一個 uart_pin,就直接短路吧。

參考 FYSETC 的 Spider 2.3 的說明,它連到 PIN5-TX,所以 PIN4 和 PIN5 短路的話,就可以正常運作。


比對 A4988 的 PIN,PIN4-RESET,PIN5-MS3。假如沒跳線的話,那就要把 PIN4 和 PIN5 都斷開。

因為電路板已固定為使用 16 microstep,亦即 MS1, MS2, M3 都接高電位。RESET 那一腳則未直接接地或高電位。我使用的是 TMC2226,和 TMC2209 相容,可把它們當成一樣。確定驅動板的 PIN4-PIN5短路。

對板子做了一些改造。只會使用 UART mode,確定 MS1 和 MS2 永遠不會用到,直接把 PIN 拔掉。有很多網路的作法是把 PIN4, PIN5 往上推到正面,但正面有很大的散熱片,感覺很不可靠。我是把 PIN4 彎90度,剪短,焊引線。PIN5則不處理。以後用在其他支援靜音驅動的板子上,大部份都把 UART 接到 PIN5,只要把引線解焊,PIN 做一下絕緣即可。

另外,在廠家提供的控制板的電路圖或說明書,有些會把 PIN5 標成 CS。

在 TriGorilla 的板子上,有一排 5組 PIN 的預留焊點,標示 servo,可能是有其他用途。把驅動的 UART 信號連到這 5組 PIN 的控制信號即可。上圖只改了 X, Y, Z 軸的驅動。

TriGorilla 的板子有不同的版本,那 5組 PIN 對應的信號有些不同。像我使用的板子只有 TriGorilla 的標誌,沒有版本標示,那就是 1.0 版了。

建立及燒錄 Firmware

$ cd klipper
$ make menuconfig

[*] Enable extra low-level configuration options
    Micro-controller Architecture (Atmega AVR)
    Processor model (atmega2560)

$ make
..........
  Building out/compile_time_request.o
Version: v0.12.0-171-g2f6e94c9
  Linking out/klipper.elf
  Creating hex file out/klipper.elf.hex

$ ls /dev/serial/by-id/*
/dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0

$ make flash FLASH_DEVICE=/dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0

重新啟動系統。

Atmega2560 的 PIN 對照


2024年4月15日 星期一

ADXL345谐振测量 - 各種派

參考網址

此文件是依購買套件所提供的文件整理的,方便自己參考。

这是什么?

一种可用于减少打印中震纹(也称为重影或波纹)的技术。震纹是一种表面打印缺陷。


震纹是由打印机中的机械振动引起的,原因是打印方向的快速变化。请注意,震纹通常有机械原因:打印机框架刚性不足、皮带不紧或弹性太大、机械部件对齐问题、移动质量大等。如果可能,应首先检查和修复这些问题。

谐振补偿是一种开环控制技术,它创建一个命令信号来取消其自身的振动。谐振补偿需要一些调整和测量才能启用。除了震纹之外,谐振补偿通常会减少打印机的振动和晃动,并且还可以提高 Trinamic 步进驱动器的 StealthChop 模式的可靠性。

以下将提供 ADXL345 模块进行谐振测量的教程

第一步,材料准备

ADXL345 加速度传感器一块

必须采购如上图所示的模块,其他模块可能无法识别。

第二步,安装及接线

这是官方的接线图,不过研究下来其实 3.3V 和 GND 可以直接图中箭头指的这两个,这样就可以直接压一个 4×2 的插头一次性解决了。板子上應有 5V-3.3V 的降壓 IC,可以用 5V 的電源。

Orange PI Zero 3 的 IO 接線。

ADXL 345 SPI PIN 對應

  • MISO - DO  - SDO
  • MOSI - DI  - SDA
  • SCK  - SCK - SCL
  • CS   - CS

安装位置可以参考這個


安装有幾個要注意的点:

1)具体安装位置其实没有太大講究,毕竟这个模块作用只是测试,测试好后可以拆掉,但是一定要尽量靠近喷嘴。

2)ADXL345 板子上有 XYZ 的方向指向,但是按照资料好像说方向不一定非要和打印机的方向一致,但是每个轴必须平行,譬如 ADXL345 板子上的 Z 轴可以对着打印机的 X 轴,但是 Z 轴和 X 轴平行。(轴方向不需要一致这一点其实不是非常确认,如果有不同意见的可以反馈)

第三步,配置树莓派

硬件接好之后就可以试着软件的安装了。

因为Klipper需要通过树莓派的SPI针脚读取加速度传感器的数据,所以需要先将树莓派变成klipper的一块mcu板子,这样klipper才能读取到加速度传感器的数据。这一步在klipper官方的教程中是没有的,所以很多人这一步会忽略。

下面的命令都是在树莓派系统中执行,使用 putty 软件登录树莓派按步骤执行以下命令

首先安装 Python 的科学计算库,用作分析计算共振数据(实际执行的pip路径需要根据你klipper的venv环境的实际安装的路径来定,绝大部分情况是home目录下的klippy-env中)

~/klippy-env/bin/pip install -v numpy

安装系统依赖库

sudo apt install python-numpy python-matplotlib

将树莓派变成 klipper 的一块 mcu,复制官方提供的系统启动脚本,并设置成系统自动启动

cd ~/klipper/
sudo cp "./scripts/klipper-mcu-start.sh" /etc/init.d/klipper_mcu
sudo update-rc.d klipper_mcu defaults

systemd 的環境,執行下列指令安裝 service

sudo cp ~/klipper/scripts/klipper-mcu.service /etc/systemd/system/
sudo systemctl enable klipper-mcu.service

配置并编译树莓派的固件

cd ~/klipper/
make menuconfig

配置的控制器类型的时候,切记得要选择Linux process的



配置完成后按 Q 键保存退出,就可以编译固件了

按顺序运行以下命令

$ sudo service klipper stop
$ make flash
  Flashing
  Installing micro-controller code to /usr/local/bin/
    => 檔名為 /usr/local/bin/klipper_mcu
$ sudo service klipper start
$ sudo usermod -a -G tty pi  (pi 為安裝 klipper 的普通使用者,依自己選擇修改,如 mks)

或者執行 sudo sh ./scripts/flash-linux.sh,也可以安裝。

树莓派必須再執行 raspi-config 打开的SPI的接口。其他各家相容的 pi,依相關說明做設定。

如 Orange Pi Zero3,修改 /boot/orangepiEnv.txt,加上 spi1 的 overlay 設定。

 ...
rootfstype=ext4
overlays=spi1-cs1-spidev
usbstoragequirks=0x2537:0x1066:u,0x2537:0x1068:u

重開機後,就會出現 /dev/spidev1.1,因為 Orange Pi Zero3 的 IO 較少,只能用一個 spi port,假如使用 spi 連接 LCD,此時必須先將 LCD 取消掉。

Orange Pi Zero 3 無法啟動 klipper_mcu

無法啟動 klipper_mcu.service,沒有 /tmp/klipper_host_mcu 檔案,查看詳細的 systemctl log 如下。

 $ journalctl -u klipper-mcu | more
Oct 08 23:32:09 orangepizero3 systemd[1]: Started klipper-mcu.service - Starts the MCU Linux firmware for klipper on startup.
Oct 08 23:32:09 orangepizero3 klipper_mcu[615]: Got error -1 in sched_setscheduler: (1)Operation not permitted
Oct 08 23:32:09 orangepizero3 systemd[1]: klipper-mcu.service: Main process exited, code=exited, status=255/EXCEPTION
Oct 08 23:32:09 orangepizero3 systemd[1]: klipper-mcu.service: Failed with result 'exit-code'.
Oct 08 23:32:15 orangepizero3 systemd[1]: klipper-mcu.service: Scheduled restart job, restart counter is at 1.
Oct 08 23:32:15 orangepizero3 systemd[1]: Stopped klipper-mcu.service - Starts the MCU Linux firmware for klipper on startup.
Oct 08 23:32:15 orangepizero3 systemd[1]: Started klipper-mcu.service - Starts the MCU Linux firmware for klipper on startup.
Oct 08 23:32:15 orangepizero3 klipper_mcu[1249]: Got error -1 in sched_setscheduler: (1)Operation not permitted

參考下列說明,Klipper 討論 Orange pi zero 3 with ADXL,以及  Armbian kernel & Klipper host mcu: “Got error -1 in sched_setschedule”

執行下列指令。
$ sudo sysctl -w kernel.sched_rt_runtime_us=-1
$ echo "kernel.sched_rt_runtime_us = -1" | sudo tee /etc/sysctl.d/10-disable-rt-group-limit.conf

再重新啟動,即可成功啟動。

第四步,配置Klipper

在网页操作界面中打开Klipper的配置文件printe.cfg,在合适的地方加入下面的配置代码

[mcu rpi]
serial: /tmp/klipper_host_mcu

[adxl345]
cs_pin: rpi:None

[resonance_tester]
accel_chip: adxl345

probe_points:
    150,150,20  # 这个地方建议配置成热床的中间(此150参数配置为300热床)

MKS-Pi 的設定

[mcu rpi]
serial: /tmp/klipper_host_mcu

[adxl345]
cs_pin: rpi:None
spi_bus: spidev0.2

Fly-Pi 的設定

[mcu host]
serial: /tmp/klipper_host_mcu

[adxl345]
cs_pin: host:None
spi_bus: spidev1.1

配置完成后重启一下Klipper

在控制台中输入以下命令


ACCELEROMETER_QUERY 这个命令是查询加速器的参数,如果前面的软硬件安装正常的话,就会收到返回的加数据传感器参数,类似于下面内容……如果返回其他则可能是接线问题或adxl345模块问题

.....Recv: // adxl345 values (x, y, z): 470.719200, 941.438400, 9728.196800...

第五步,测试加速度

开始测试前,先把打印机的加速度配置调大(这个测试完之后可以还原回去)码

[printer]
max_accel: 7000
# max_accel_to_decel: 7000 # 停用
# minimum_cruise_ratio: 0.5  # 改用這個, default 0.5

如果你之前有配置过input_shaper的功能,需要先关掉之前配置好的参数

SET_INPUT_SHAPER SHAPER_FREQ_X=0 SHAPER_FREQ_Y=0

然后就开始可以测试共振了,比较省事的就是直接用自动测试配置命令

SHAPER_CALIBRATE

测试的时候,刀头会从 0MHz~120MHz 震动,逐渐测试 x轴和 y轴数据,期间声音会逐渐增大,如果机子组装过程没有太大问题的话,机子不应该会有太剧烈反应(如果有太剧烈的反应建议检查组装过程)

或手動分開執行

TEST_RESONANCES AXIS=X
TEST_RESONANCES AXIS=Y
# M112 太劇烈的話,緊急停止

測試頻率,在 5Hz ~ 133Hz 之間。

測試後,會產生 /tmp/resonances_x_*.csv and /tmp/resonances_y_*.csv。用下列指令產生圖檔。

~/klipper/scripts/calibrate_shaper.py /tmp/resonances_x_*.csv -o /tmp/shaper_calibrate_x.png
~/klipper/scripts/calibrate_shaper.py /tmp/resonances_y_*.csv -o /tmp/shaper_calibrate_y.png

完成测试后会进行一下计算,然后会显示出x轴和y轴推荐的配置方法和配置值,你可以根据这个配置方法和值手工配置 input_shaper 参数,类似这种

[input_shaper]
shaper_type_x = 3hump_ei
shaper_freq_x = 52.4
shaper_type_y = 2hump_ei
shaper_freq_y = 37.5

不过也能直接使用

SAVE_CONFIG

命令直接保存进配置文件

保存完毕后需要回到 printe.cfg 配置文件中,拉倒最底部可以找到被注释的内容,如下

#*# [input_shaper]
#*# shaper_type_x = mzv
#*# shaper_freq_x = 58.4
#*# shaper_type_y = mzv
#*# shaper_freq_y = 44.2

整个复制,替换原来的参数,并取消注释,最后保存并重启即可



網誌存檔