2019年7月26日

そうだ、HUD作ろう

CRプレマシーに乗ってたが、去年の秋~冬ごろから急に燃費が下がりはじめ、ちょうど年明けで車検だったので 手放して50エスティマに乗り換えた。
エスティマのメータが非常に見難いので 速度と瞬間燃費は プレマシーから使いまわしてるレー探(ZERO 94VS)のOBD-II表示の方を見る習慣がついてしまった。

ところがこのレー探の表示がどうにも野暮ったい、あとフレームレート低い → だったら作ってしまえ。というのがこのエントリ。
これまでこの手の工作はArduinoでしかやってこなかったんだけど、グラフィックも取り扱ってみたくなったし初のラズパイ工作に取り組んでみようと思う。


用意したもの:
  • ラズパイZERO WH
  • MicroSDカード、とりあえず手持ちの 16GB
  • TFT LCD (2.2インチ 320x240 SPI https://www.amazon.co.jp/dp/B00QV2WDJM)
  • MiniHDMI-HDMI変換アダプタ
  • USB OTGケーブル+ハブ
ラズパイもLCDも、いずれもガタクタ箱にストックしてた品物。ホントはもっと横長の、400x240とかの LCDがよかったけど、まずはこれで作ってみることにする。

まずはRaspbianのインストールから。https://www.raspberrypi.org/downloads/
Stretchかと思ったらBusterなんてのが出てた。他の記事によれば Xなくても Qtだったりフレームバッファを直に叩くとかで何とかなりそうなんで Liteで。
  • イメージをダウンロードして展開、SDカードに書き込み
  • ブートパーティションのルートディレクトリに"ssh"ファイルを置く
  • HDMIとUSBキーボードをつないで起動
  • ログインして sudo iwlist wlan0 scan でWi-Fiアクセスポイント探す
  • /etc/wpa_supplicant/wpa_supplicant.conf にSSIDとパスワードを書く
    $ sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
     
    ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
    update_config=1
    country=JP
    network={
       ssid="SSID"
       psk="password"
    }
  • IPアドレスはWi-Fiルータ側でMACアドレス見て縛っとくのでラズパイ側は DHCPのまま、ここから先は PCから SSH経由で作業
  • raspi-configで「5 Interfacing Options」→「P4 SPI」で<Yes>を選んで SPIを有効化
  • sudo rpi-update
  • sudo reboo
続いて LCDを結線して FrameBuffer回り。接続は http://www.neko.ne.jp/~freewing/raspberry_pi/raspberry_pi_3_tft_lcd_2_8inch_spi_with_touch_xpt2046_fbtft/ に書いてあるのと同じようにした。
  • sudo modprobe fbtft_device name=adafruit22a
  • con2fbmap 1 1
何かあっさり出た。
modprobeの speed=xxxx オプションを指定しながら上限を探ってみたら、195MHzぐらいまでは行けた。
ついでに起動時にロードされるようにしておく、webを漁った範囲だとこれで画面出せるっぽいんだけど・・・
  • /etc/modulesの末尾に modprobeの引数「modprobe fbtft_device name=adafruit22a rotate=xxx speed=xxx」を書く
  • /boot/cmdline.txt の記載がある行の末尾に「fbcon=map:10」を追記する
・・・どうも上手くいかない。Raspbian Busterでロードのやり方変わったんかな?
この辺は後日どうにかしよう。

(2019/07/27追記)
https://qiita.com/tieste/items/b3e7116031d918a0a561 を参考にしてみたらできるようになった。ありがてぇ。
触るのはこの3ファイル。/etc/modules だけだとダメなんだな。
  • /etc/modprobe.d/fbtft.conf
  • option fbtft_device name=adafruit22a rorate=270 speed=96000000
  • /etc/modules-load.d/fbtft.conf
  • fbtft_device
  • /etc/modules
  • fbtft_device


で、ついでに仮組みしてみた。
余ってたIDEケーブルをぶった切って、高さを抑えるために液晶側はコネクタ使わず直結。
ラズパイのコネクタ回りが液晶の裏に隠れていい感じ。ただし、液晶とラズパイの横幅がほぼ同じだけどネジ穴の幅が微妙に違うのでどう細工するかは今後の課題。


0 件のコメント:

コメントを投稿