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スゴイなぁ。
3Dプリンター
3Dプリンターで電子工作のケースを作る。

ESP32+BMP180の温湿度+気圧計

raspberrypi+5インチLCDで作ったスマートディスプレイ(magicmirror2)
久しぶりに設計作業が出来て嬉しい。
pirateaudioのメモ2
pirateaudioにmopidyの組み合わせでLCDに日本語表示させるのは情報が探せなくて断念。
raspberrypi zero +Volumioの組み合わせを試す
ネットの情報だとVolumioのプラグインにpirateaudioが対応しているそうだが、Volumio3になったせいかプラグインのリストには出てこない。
作者のGithubから直接インストールすることにした。
ここの説明に沿ってインストールするが、これもそのままでは動かず、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の中身を編集するソフトを使って元のファイルを書き換えて対応。これでブラウザの表示は日本語で表示された。
ディスプレイの表示が四角になるのはフォントらしいが、調査中
ESP-WROOM-02+ST7735
ESP-WROOM-02を使って1.8インチの液晶に絵を出すまでにハマりまくったので
忘れないうちにメモを書いておこう。
買ったものたち
いつもの如くアマゾンで部品を手配。
ESP-WROOM-02 32メガビット 品 4MB 技適取得済み お得な2個セット
[スイッチサイエンス] ESP-WROOM-02ピッチ変換用基板《フル版》(基板のみ)
Amazon.co.jp: HiLetgo 3.3V 5V MB102 ブレッドボード専用 パワー サプライ モジュール Arduinoと互換 [並行輸入品]: おもちゃ
とりあえず絵が出せた。
参考にしたサイトはいろいろあるけどこちら。
170321: ESP-WROOM-02+ST7735s | なんかしてるえかいくん
実にありがたい。

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

ハマったポイント
・当初 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_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



