ST7789 CS無しLCDをM5Stack Atom S3で使ってみる
M5Stack Atom S3 Lite買ったった。
ST7789 240x240 TFTを使ってやろうとおもったら
AdafruitのST7789ライブラリを使ってはまったので備忘録に。
まずこのライブラリはHard SPIとSoft SPIを選べ、どちらかでTFTを制御する。
Hard SPIは書き込みスピードが速いが、SPIの端子が拘束され指定できない。
Soft SPIは自由に端子が選べるが、遅いしどうやらSPI MODE0固定ぽい。
それじゃAtom S3 Liteで使えないやない。
と思ったらSPIのオブジェクトを参照渡しする方法があるのに気づいた。
で、こうやったらできた。※tft.initの引数SPI_MODE3も必須ポイントです。
Logicoolマウスの修理
LogicoolマウスAnywhere MXの修理をしてみた。
■調子が悪いところ
ボタンを一度しか押していないのに複数回押されたことになる
例えばある文字列を選択してコピーしたいなと思って左ボタンで
文字を選択しながらマウスを移動、ここまでの文字列というところで
ボタンから手を離すと選択が解除されてしまう。
またファイル選択をするとダブルクリックしたことになって、
アプリが起動してしまう。
いわゆるチャタリングを原因とする症状。
■webを漁ると大方2つの改善方法があるらしい
■でも私のマウスは
- マイクロスイッチが面実装品でアマゾンとかでは入手難
- 新品のマイクロスイッチが高価(新しいマウス買えるやん)
- マイクロスイッチは見た目分解できそうにない
- そもそもボタンの部品がスイッチに届かなくなっている感じ
■でやってみたこと
- スイッチとボタンの間に薄い板をいれ確実にスイッチをON させる
厚いとボタン押してないのに押されっぱなしになるので、
試しながら適度な厚みになるよう調整。写真青で囲った部分
最初0.01uFを入れたら、ボタン押されっぱなしに。
5分待ってもダメ。
Logicoolさん最小負荷電流守ってる?大丈夫か?
電池を持たせる為か?ボタン押されぱなしだと電流カット?
仕方がないので0.01uFを外したら、なんと解決!
ハンダコテの熱でクリーニングされてしまった様。
とこのままにして再発するのもイヤなので33pFをつけた。
オシロスコープ使って波形をみたいね。
写真赤で囲った部分
これで、症状はなくなった。しばらく様子見。もやもやするなぁ。
でも快調!!
そうだVolumioにCS無しST7789LCDを使おう
Pirate AudioのPluginを使わせていただきました。
Pluginのインストールはこの記事では触れません。
表示はデーモン化されているようです。
$ systemctl list-units | grep volumio
でサービスを確認。pirateaudio.serviceとなっています。
/etc/systemd/systemのpirateaudio.serviceの中を見ると
ExecStart=/usr/bin/python3 /data/plugins/miscellanea/pirateaudio/display.py
このdisplay.pyを修正しましょう。
まず、インスタンス生成部分の修正。
引数cs=1はcs=0へ変更します
引数rst=26,を行追加にします
このCS無しLCDはReset端子を制御する必要がある様です。
gpio26に割り当てました。pin37です。
インスタンスメンバに対し
disp._spi.mode=3を行追加して、SPIのモードをMODE3へ
本当はライブラリのコンストラクタへ入れておきたいですが。
disp.reset()を行追加して、リセット。
disp._init()を行追加して、初期化。
# Create ST7789 LCD display class.
disp = ST7789.ST7789(
height=240, #v0.0.6
width=240, #v0.0.6
rotation=90, # Needed to display the right way up on Pirate Audio
port=0, # SPI port
cs=0,
dc=9, # BCM pin used for data/command
rst=26,
backlight=13,
spi_speed_hz=80 * 1000 * 1000,
offset_left=0, #v0.0.6
offset_top=0 #v0.0.6
)
disp._spi.mode=3
disp.reset()
disp._init()
以上
VESAマウントを便利につかう
ディスプレイを背面から固定されるVESAマウントという規格があります。
それを使ってラズパイとか便利に使いたい。
ダイソーにデザインボードというのがありました。
これを選んだのは、穴が25mmピッチであらかじめあいていること!
穴あけしなくてもVESAマウント規格に合うのです。
4mm径のネジ、ナットも購入
いざ取り付け。あらかじめアルミの箱も25mmピッチで加工済み。
モバイルディスプレイをラズパイの手前に置きました。
参考になれば。
以上
ST7789 CS無し LCDにコンソールを
ST7789 LCD 240x240 1.3インチのちっちゃいところにRaspberry Piのコンソールを表示したい。
同じことを考えている人はいる様ですが、CS(ChipSelect)がない!カーネルバージョンがBusterから5.xに上がってしまった!との声が。
でもやりたいね。
いろいろ読み進めると、以下の2点がキーであることがわかりました。
・Pimoroni Pirate Audio Headphone Amp for Raspberry Pi
・ST7789のCS無しはSPI MODE3で動かす
経緯から
Webで見つけたあっきぃさんのページ
でも、僕のLCDモジュールにはCSがないのです。
あっきぃさんの通りにやってもダメでした。
Pimoroniの"DeviceTreeを使う"これは基本的に正解(でした)。
ここからCS無しを対応しましょう。
1. Install “buster-lite” and run “sudo apt update” but DO NOT run “sudo apt upgrade”
2. run “sudo raspi-config” and enable “SSH”, “SPI”, and “I2C” within “Interfacing Options” then reboot.
3. login as the pi user.
4. run “wget
https://gist.githubusercontent.com/hgroll/2731ae6d05350df663b123615f765bf5/raw/f8fe3829136296c20ba670dcd572e8a5c60da995/pidi-overlay.dts”
5. run “dtc -@ -I dts -O dtb -o pidi.dtbo pidi-overlay.dts”
6. run “sudo cp pidi.dtbo /boot/overlays/”
7. edit “/boot/config.txt” and add the line “dtoverlay=pidi”
8. edit “/boot/cmdline.txt” and append " fbcon=map:10 fbcon=font:VGA8x16" (with the beginning space) to the 1st line after the word “rootwait”
9. run “sudo dpkg-reconfigure console-setup” then select “UTF8”, “Guess optimal…”, “Let the system select…”, “8x16”, “Ok”
10. run “sudo reboot”
違うのは4.でgetしたdtsファイルの編集です。
このregとpinctrl-namesの間に「MODE3で動いてね」を挿入し、
Backlight LEDの値も1から0へ変更します。
この2行だけ付け加えて5.から先を進めましょう。
raspi-configでSPIを有効にするのを忘れずに。
以上