3.5インチLCDにデスクトップを表示させるのにGeminiさんに聞いたら解決した話

手元にRaspberrypi ZERO Wと3.5インチのSPI接続のLCDが余っていたのでなんか作るかと触り始めたらいろいろ面倒だったので備忘録的にメモ

このLCDが余っていたので使ってみようかと思う。

 

購入の履歴からすると、KUMANの3.5インチディスプレイ+ケースのセットだった模様
10年以上前の話だったような気が。
基板にあるように480×320の画面サイズ

 

Raspberrypi ZERO Wが余っていたので組み合わせるとこんな感じ

 

購入した時のインストールガイドなどがどっかに行ってしまったので、ネットで情報拾いながら設定するもうまく映らない。

で、アレコレ試した後にGeminiさんにどうすればいいかを聞いたら解決した。
いや、Geminiさんスゴイね。

 

ということで、うまくいった(ハズ)のところだけ書いておくと
・まずはドライバを入れる

このサイトに従ってGithubからクローン
3.5inch RPi Display - LCD wiki

sudo rm -rf LCD-show
git clone https://github.com/goodtft/LCD-show.git
chmod -R 755 LCD-show
cd LCD-show/
sudo ./LCD35-show

 

で、 /boot/firmware/config.txtを編集する(変更したところを抜粋)

# Enable DRM VC4 V3D driver
#dtoverlay=vc4-kms-v3d =>コメントアウト

[cm5]
#dtoverlay=dwc2,dr_mode=host =>コメントアウト

[all](ここから下はまるっと追記した)
hdmi_force_hotplug=1
dtparam=i2c_arm=on
dtparam=spi=on
enable_uart=1
#dtoverlay=rpi-display
#dtoverlay=tft35a:rotate=90
dtoverlay=piscreen,speed=16000000,rotate=90
hdmi_group=2
hdmi_mode=1
hdmi_mode=87
hdmi_cvt=480 320 60 6 0 0 0
gpu_mem=128

こちらも追記 /boot/firmware/cmdline.txt
console=serial0,115200 console=tty1 root=PARTUUID=94e3431a-02 rootfstype=ext4 fsck.repair=yes rootwait cfg80211.ieee80211_regdom=JP fbcon=map:1 fbcon=font:ProFont6x11
(赤字が追記分)

 

/usr/share/X11/xorg.conf.d/10-fbdev.conf (ファイルを新規作成)
Section "Device"
  Identifier "my_fb"
  Driver "fbdev"
  Option "fbdev" "/dev/fb1"
EndSection

Section "Screen"
  Identifier "my_screen"
  Device "my_fb"
EndSection

Section "ServerLayout"
  Identifier "my_layout"
  Screen "my_screen"
EndSection

で、ここから /etc/lightdm/lightdm.conf
[Seat:*]
中略
xserver-command=X -layout my_layout

と変更してもデスクトップが出ないので

 

# すでに作成したファイルを、別の設定ディレクトリにもコピー
sudo cp /usr/share/X11/xorg.conf.d/10-fbdev.conf /etc/X11/xorg.conf

sudo usermod -a -G video,render,input ユーザー名

をやった後に


LightDMを止めて
sudo systemctl disable lightdm

 

nano ~/.bashrc
一番下に以下を追記:

Bash
if [ -z "$DISPLAY" ] && [ "$(tty)" = "/dev/tty1" ]; then
  startx -- -layout my_layout
fi


それと sudo raspi-config で
・Advanced Options > Wayland を選択
・System Options > Boot / Auto Login を選択

・1 System Options

・B2 Console Autologin (←重要:DesktopではなくConsoleを選びます)

 

とやってようやくデスクトップが表示された。

Geminiさんありがとう!



ちなみに、検索した際にLCDドライバは最新のRaspberrypi OSに対応していないから、レガシーを選べという記事がありその通りにしたのだが

「Buster(Debian 10)」だと思っていたら「Bookworm(Debian 12)」だった。

/boot/config.txtが /boot/firmware/config.txtに変わっていることからGeminiさんに間違いを指摘されるなど。AIスゴイなぁ。

 

pirateaudioのメモ2

pirateaudioにmopidyの組み合わせでLCDに日本語表示させるのは情報が探せなくて断念。

 

raspberrypi zero +Volumioの組み合わせを試す

 

ネットの情報だとVolumioのプラグインにpirateaudioが対応しているそうだが、Volumio3になったせいかプラグインのリストには出てこない。

作者のGithubから直接インストールすることにした。

GitHub - Ax-LED/volumio-pirate-audio: Python code (Plugin) to use pirate audio dac with volumio (including display and the 4 buttons) and a raspberry pi.

 

ここの説明に沿ってインストールするが、これもそのままでは動かず、ST7789を入れ直して動作した。

  • sudo pip uninstall ST7789
  • sudo pip install ‘ST7789==0.0.3’
    こんな感じで古いバージョンを入れるといいらしい。

日本語に関しては、display.pyのフォントをNotoフォントに入れ替えることで表示ができた。

font_s = ImageFont.truetype(script_path + '/fonts/NotoSansCJK-Regular.ttc', 20)
font_m = ImageFont.truetype(script_path + '/fonts/NotoSansCJK-Regular.ttc', 24)
font_l = ImageFont.truetype(script_path + '/fonts/NotoSansCJK-Regular.ttc', 30)
こんな感じ。

フォントファイルのオーナー、グループをvolumioにした。これが影響していたかは検証していない。(フォントインストールしてコピーしてくるとオーナー、グループはrootになっている)

 

忘れないうちに情報として書き残しておく。

 

プラグインの作者  氏に感謝

 

追加

Yボタンが利かなかったのはPirateaudioは新しいものだとYボタンのGPIOが20から24に変わっているとのこと。
/boot/config.txtの中身とdisplay.pyのYボタンに関する部分を20から24に変更して動作した。

PirateAudioのメモ

PirateAudioのメモ

環境 

Raspberry Pi zero w
OS:raspberrypiOS Lite


インストール(Mopidy)
ここを参照

https://raspida.com/setup2pirate-audi

ブラウザでの日本語の文字化け

ファイル名のフォーマットがUFT-8になってない為だと思ったけど、実はそこではなかったようで、mp3ファイルの中身に書かれていたタグの問題だった。

Mp3tagというmp3の中身を編集するソフトを使って元のファイルを書き換えて対応。これでブラウザの表示は日本語で表示された。

https://arakoki70.com/?p=6852

 

ディスプレイの表示が四角になるのはフォントらしいが、調査中

 

ESP-WROOM-02+ST7735

 

ESP-WROOM-02を使って1.8インチの液晶に絵を出すまでにハマりまくったので

忘れないうちにメモを書いておこう。

 

買ったものたち

いつもの如くアマゾンで部品を手配。

 

ESP-WROOM-02 32メガビット 品 4MB 技適取得済み お得な2個セット

Amazon CAPTCHA

 

[スイッチサイエンス] ESP-WROOM-02ピッチ変換用基板《フル版》(基板のみ)

Amazon CAPTCHA

 

Amazon.co.jp: HiLetgo FTDI FT232RL 3.3V 5.5V USB to TTL シリアル コンバーター アダプター モジュール for Arduino [並行輸入品]: おもちゃ

 

Amazon.co.jp: HiLetgo 3.3V 5V MB102 ブレッドボード専用 パワー サプライ モジュール Arduinoと互換 [並行輸入品]: おもちゃ

 

とりあえず絵が出せた。

参考にしたサイトはいろいろあるけどこちら。

170321: ESP-WROOM-02+ST7735s | なんかしてるえかいくん

実にありがたい。



f:id:woosan900rr:20170507123859j:image

ついでに配線図も忘れないようにあげておく

 f:id:woosan900rr:20170521162459p:plain

 

ハマったポイント

・当初 IO0 のHi/Loだけがモード切替に関係していると思い込み、IO2、IO15の

配線をしていなかった為、うまく起動しなかった。

参考にしたサイトのこの図を見て間違いに気付くなど

・AdafruitのST7735ライブラリを最新の1.0.4に上げるが、コンパイルエラーとなる。

このページを参考に修正。

https://github.com/adafruit/Adafruit-ST7735-Library/issues/25

 

不思議なことにライブラリバージョン1.0.1では存在していたESP8266に関する部分が

1.0.4ではすっかり消えていた。

仕方ないので「Adafruit_ST7735.h」を直接編集して以下の部分を追加。

#elif defined(ESP8266)
volatile uint32_t *dataport, *clkport, *csport, *rsport;
uint32_t _cs, _rs, _rst, _sid, _sclk,
datapinmask, clkpinmask, cspinmask, rspinmask,
colstart, rowstart; // some displays need this changed

#endif

厄介だったのはとりあえずespの記述がある1.0.1で固定したいのだが

ArduinoIDEのライブラリマネージャーが、勝手に更新走らせるので

起動時に1.0.4のエラーが出るバージョンに書き換えられてしまうこと。

直接書き換えたのでなんとかなったけど、ちょっと焦った。

それとzipファイルから直接登録したライブラリの場所が当初表示されず

探し回った。

C:Users\[ユーザー名]\Documents\Arduino\libraries

にあるのだが、普段は表示されないっぽい。

 

・ST7735の配線が分からず探し回るなど。

こちらも参考にしたサイトの情報をもとに配線をする。

ST7735 -> ESP-WROOM-02

 (A0 → IO4

 RST → IO5

 CS → IO16

 SDA → IO13

 SCLK → IO14

ST7735のライブラリにある、サンプルスケッチもこの配置に修正した。

#include <Adafruit_GFX.h>    // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library
#include <SPI.h>

// For the breakout, you can use any 2 or 3 pins
// These pins will also work for the 1.8" TFT shield
#define TFT_CS     16
#define TFT_RST    5  // you can also connect this to the Arduino reset
                      // in which case, set this #define pin to 0!
#define TFT_DC     4
 
ESP-WROOM-02は性能も良いのだが、いかんせんピン数が少ない。
いろいろ繋いで遊ぶならESP-WROOM-32の方便利かも。
 
f:id:woosan900rr:20170507133737j:image
やっぱりこの形になってると、いろいろ楽できて助かる。