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 是比較好改。

網誌存檔