參考 requireJs中使用Vue3及Vue3框架(viewUIPlus、elementPlus)。
阿吉的部落格
2025年2月26日 星期三
2025年2月21日 星期五
LCD debug
9341 正常的訊息
使用 lsmod
https://mjmwired.net/kernel/Documentation/devicetree/bindings/display/ilitek,ili9486.yaml
2025年2月16日 星期日
在 Klipper 中使用 Fly 3D 的 D5
以前買來就直接使用。最近,怎麼都連不上。比較裝置的代碼,才發現不同
/dev/serial/by-id/usb-katapult_stm32f072xb_MELLOW-if00
燒了 Klipper 的 firmware,應是
/dev/serial/by-id/usb-Klipper_stm32f072xb_3C0029000557465036383420-if00
原來,在2024年9月1号之后出厂的D5已经刷好Katapult固件。
照著它的文件,就可以重新設定和 build 映像檔了。
https://mellow.klipper.cn/docs/ProductDoc/MainBoard/fly-d/fly-d5/flash/usb
燒入的指令
~/katapult/scripts$ python3 flashtool.py -d /dev/serial/by-id/usb-katapult_stm32f072xb_MELLOW-if00
喇叭要關掉,要設 default 值。
2024年12月13日 星期五
Orange Pi One 安裝使用
網拍上,有人便宜拍賣汰換的 Orange Pi One 單板電腦,相對便宜很多,就買了幾個回來備用。
到 Armbian - Orange Pi One 下載 image,是最新的 kernel。下載的是 xz 的壓縮檔,使用 unxz 解壓縮,unxz -k file.xz 則能保存壓縮檔。
可以使用圖形界面的燒錄程式,會檢查燒錄結果。也可以用 dd 或 dcfldd,後者較快,指令如下。
$ sudo dcfldd if=Armbian_xxx_Orangepizero3_bookworm_xxxx_minimal.img of=/dev/sde bs=10M
買的開發板,有附盒子,風扇,USB 轉圓柱頭的電源線,這些自己買,又要一百多吧。電源接頭規格 DC 4.0x1.7mm,打算買 DC-DC 的板子來將 24V 轉成 5V,給香橙派用。
WiFi使用
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。
參考 ARMBIAN OS - Networking,Armbian 使用 Netplan.io 來描述網路設定。使用 armbian-config 設定後,會將設定存在 /etc/netplan/armbian.yaml,直接修改設定,再執行 "netplan apply",即可讓設定生效。
# cat armbian.yaml
network:
version: 2
renderer: networkd
wifis:
wlx40a5ef154b5f:
# dhcp4: true
# dhcp6: true
addresses:
- 10.161.86.137/20
routes:
- to: default
via: 10.161.80.1
nameservers:
addresses:
- 8.8.8.8
- 8.8.8.4
access-points:
"Samsung-A50-cc":
auth:
key-management: "psk"
password: "wifi-password"
"renderer: networkd",是指使用 systemd-networkd 的網路設定。但 Klipper 會安裝 NetworkManager。改用 NetworkManager,參考 Migrate Ubuntu server from NetPlan to NetworkManager without disconnection (possibly over SSH) 。
要 disable systemd-networkd,但還是會被啟動。不過
依照 https://github.com/dw-0/kiauh 安裝 klipper。整個安裝過程,明顯比用 Orange Pi Zero 3 慢很多,可能要 2倍以上的時間。
ZSWAP 設定
參考 Armbian Documentation - Fine Tuning: Swap for experts
利用 SD 上剩下的一點空間,建立和掛載 swap,系統顯示訊息如下。
$ systemctl --type swap
UNIT LOAD ACTIVE SUB DESCRIPTION
dev-disk-by\x2duuid-f229c093\x2dfd22\x2d4ccc\x2da321\x2ddd68ac26f35b.swap loaded active active /dev/disk/by-uuid/f229c093-fd22-4ccc-a321-dd68ac26f35b
dev-zram0.swap loaded active active /dev/zram0
LOAD = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB = The low-level unit activation state, values depend on unit type.
2 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.
Armbian 預設使用 ZRAM,即上面列表的第二行。第一行是自己加上的 swap。在僅有 512MB 記憶體的單板電腦,空間很容易被耗盡,安裝軟體就會失敗。例如 Moonraker,就會因 /tmp 沒空間,而安裝失敗。
安裝谐振测量所需的軟體
在執行到下列安裝指令時,很可能會掛掉,ssh 沒反應。
~/klippy-env/bin/pip install -v "numpy<1.26"
把僅有的 SD 空間,設成 swap,依上述 ZSWAP 設定,再儘可能把 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
終於安裝成功。
/tmp 也不夠大,另建一個暫時的 tmp 。
# Create a temp folder on a disk that has a lot of space:
sudo mkdir -p /bigtmp
# Set generous access to the temp folder:
sudo chmod 777 /bigtmp
# Change TMPDIR env to the big folder you just created:
export TMPDIR=/bigtmp
# install package
安裝 moonraker,最多的時候,使用 /tmp 的空間約 266M。
啟用 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 的接腳如下。

觸控屏
OPi One wiring:
Pin 23 - PC2 <--> SPI0 SCK & T_CLK
Pin 21 - PC1 <--> SPI0 SDO<MISO> & T_DO
Pin 19 - PC0 <--> SPI0 SDI<MOSI> & T_DIN
Pin 31 - PA8 <--> DC
Pin 33 - PA9 <--> RESET
Pin 29 - PA7 <--> LED
Pin 35 - PA10 <--> LCD CS
Pin 26 - PA20 <--> T_CS
Pin 28 - PA19 <--> T_IRQ
Pin 1 - 3.3V (or Pin 4 - 5V)
Pin 6 - GND
--------------
建立 /boot/overlay-user/ili9341_lcd.dts,內容如下。
/dts-v1/;
/plugin/;
/ {
compatible = "xunlong,orangepi-one", "allwinner,sun8i-h3";
fragment@0 {
target = <&spi0>;
__overlay__ {
status = "okay";
// cs-gpios = <&pio 0 10 0>; /* PA10*/
cs-gpios = <&pio 0 10 0>, <&pio 0 20 0>; /* PA10 PA20 */
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 0 9 1>; /*RESET=PA9*/
dc-gpios = <&pio 0 8 0>; /*DC_RS=PA8*/
led-gpios = <&pio 0 7 0>; /*LED=PA7*/
debug = <4>;
};
ads7846: ads7846@0 {
compatible = "ti,ads7846";
reg = <1>; /* Chip Select 1 */
#spi-cs-high;
spi-max-frequency = <1000000>;
interrupt-parent = <&pio>;
/* IRQ PA19 */
interrupts = <0 19 2>; /* IRQ_TYPE_EDGE_FALLING */
pendown-gpio = <&pio 0 19 1>; /* ACTIVE_HIGH */
/* 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>;
};
};
};
};
再執行下面的指令,
2024年11月26日 星期二
Docker 吃掉硬碟空間處理
- 參考 stackoverflow 的 Is it safe to clean docker/overlay2/
- 清除 ArchLinux 的 pacman cache,rumansaleem/clean-up-arch-linux.md
docker container 的 log 會無限成長,可以有好幾個 GB,只能手動刪除。
可以設 option,限制log 的大小。
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 的錯誤。
預設是安裝 armbian-firmware,/lib/firmware 下,沒有 rtlwifi/rtl8710bufw_SMIC.bin。
若自己下載再 copy 到那個目錄下,會出現 Invalid firmware signature 的錯誤。
重新裝 armbian-firmware-full 後,就有 rtlwifi/rtl8710bufw_SMIC.bin 這個檔了。重新插拔 USB WIFI 網卡,可以正常載入 firmware。
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。
安裝 FluidNC
安裝說明 FluidNC Web Installer。安裝很容易,照著說明做,完全不用自己編譯檔案。下載對應的 zip 檔,例如使用 Linux,下載 fluidnc-v3.8.3-posix.zip,解壓縮後,到解壓的目錄下,先把 USB 連上電腦,再執行 "sudo install-wifi.sh"。因為要有 root 的權限,才能開啟 /dev/ttyUSB0,所以用 sudo 執行。一路自動安裝完,然後自動進入 xmodem。