2024年10月13日 星期日

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

參考連結 

--------------
$ lsmod
Module                  Size  Used by
ili9341                16384  0
drm_mipi_dbi           28672  1 ili9341
--------------

2024年10月3日 星期四

Fly-Pi 自定 Armbian

參考

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

自已 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







網誌存檔