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

有較多選擇性。步驟如下

要先 git clone https://github.com/reemo3dp/mellowfly-geminipi-armbian,再執行下面的步驟。

# 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 KERNEL_BTF=no
----------------

建好了,但無法開機。

還是不要這麼麻煩自己建,git 是有建好的 image,下載來用就好。

步驟

下載 image,燒到 sd 卡。

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

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

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

記得,一定要執行 armbian-config ,Disable updating kernel,然後再執行 apt update。不然,更新後,可能無法開機。

以 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。

連接 LCD 測試

反組譯它的 dtbo,確認 FPC 連線的接腳後,設定 dts 如下。

$ cat /boot/overlay-user/ili9341_lcd.dts
/dts-v1/;
/plugin/;

/ {
    compatible = "xunlong,orangepi-one", "allwinner,sun8i-h3";

    fragment@0 {
        target = <&spi1>;
        __overlay__ {
            status = "okay";
            cs-gpios = <&pio 0 13 0>; /* PA13*/
            // 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 6 6 1>; /*RESET=PG6*/
                dc-gpios = <&pio 6 7 0>; /*DC_RS=PG7*/
                led-gpios = <&pio 0 0 0>; /*LED=PA0*/
                debug = <4>;
            };
        };
    };
};

先用 ili9341 的驅動測試。


它把 LED 直接 enable,因此不能控制亮度,LCD 也會有點燙。可以顯示畫面,只是解析度不對。這表示可以用 16 位元的格式,用 656 儲存 RGB 資料。

依據官方文件,它使用 ST7796 控制晶片。

直接把 fb_ili9341.c 拿來線譯成 external module,Makefile 如下。
$ cat Makefile 
CONFIG_LOCALVERSION="-tegra"
EXTRAVERSION= -test
CDIR=/lib/modules/`uname -r`/build
#KDIR=/usr/src/linux-headers-6.6.36-current-sunxi64
MODULE_NAME := fb_ili9341n
MODDESTDIR=/lib/modules/`uname -r`/kernel/drivers/staging/fbtft/
KVER=`uname -r`

#@echo $(KERNELVERSION)

obj-m := fb_ili9341n.o

modules:	
	@echo $(KERNELVERSION)
	make -C ${CDIR}   M=${PWD}

install:
	install -p -m 644 $(MODULE_NAME).ko  $(MODDESTDIR)
	/sbin/depmod -a ${KVER}

clean:
	rm -f *.mod* *.o *.ko modules.order  Module.symvers

為了區別,只改名成 fb_ili9341n。

結果是不成功,載入 module 時會出現 "Unable to handle kernel paging request at ... " 的錯誤。沒辦法,官方沒有主動支援自己編譯的 image。


overlay 設定,可參考 FLY-TFT/rpi-overlays/fly-tft-v2.dts





網誌存檔