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。

參考 ARMBIAN OS - Networking,Armbian 使用 Netplan.io 來描述網路設定。使用 armbian-config 設定後,會將設定存在 /etc/netplan/armbian.yaml,直接修改設定,再執行  "netplan apply",即可讓設定生效。 

# cat armbian.yaml
network:
  version: 2
  renderer: NetworkManager
  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"

依照 https://github.com/dw-0/kiauh 安裝 klipper。整個安裝過程,明顯比用 Orange Pi Zero 3 慢很多,可能要 2倍以上的時間。

安裝谐振测量所需的軟體

在執行到下列安裝指令時,很可能會掛掉,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 的接腳如下。


觸控屏

--------------
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>;
            };

        };
    };
};

再執行下面的指令,

------------------
armbian-add-overlay ili9341_lcd.dts
------------------


https://chrizog.com/rpi-linux-fbtft-touchscreen-setup




沒有留言:

張貼留言

網誌存檔