クロスカブとラズパイ
中古でクロスカブ(JA45 白)を買ったのでオリジナルのRaspberry Pi Pico Wを使ってシフトインジケータを作った。
準備
仕様
カブのシフトを表示する
現在の時刻を表示する
現在と1時間後の天気のアイコンを表示する
満月の日には上下のふちが少し明るくなる
主要素材
作成
Raspberry Pi Picoとクロスカブの接続
シフトの情報をカブから取ってくる必要がある。
ざっくり説明すると、上の写真の右下あたりにカラフルなコードが何本も出ている箇所にシフトの信号をとれる端子があるのでマイナスを繋いで通電すればそのシフトということに。
カブのメーターとギアからの信号が110型/9極カプラで接続されているので、元から使用されてるニュートラルを分岐させたこれを割り込ませる。黄色い部分にはラズパイとカブのシフト表示で信号が行き来しないようにダイオードが入っており、左側の端子には1−4のシフト表示用の配線が刺さる。
・ラズパイの参考
https://take1mg.com/2022/09/multi-meter-with-arduino-seeeduino-xiao-02/
Nも取得できるようにしたので、今回はシンプルにif SHIFT1.value() == 0のような分岐に。
・バイクからデータ取得の参考https://minkara.carview.co.jp/userid/702151/car/2677456/5174098/note.aspx
https://youtu.be/ZEUlHCQLREM?si=4tx9qkk2i6QngqT6
Raspberry Pi Pico W
バイクとの接続は上記。
Pi Pico WはWifiとBluetoothが使えるので今回はBluetooth(BLE)を使用。
他にスマホから情報取得とDS3231 高精度リアルタイムクロックモジュールでエンジンを切っても時間がリセットさせないように対応。
ディスプレイの表示対応は結構楽しかった。制限が多い。
https://github.com/russhughes/gc9a01_mpy/tree/main
Androidアプリ
天気と満月判定と時刻をAndroidアプリからBluetooth Low Energy(BLE)で送信している。それだけのためになんでアプリ作ってるんだろうか。まあ、楽しくなっちゃったからだからしょうがない。
仕様
・設定がONになっている場合、
バックグラウンドで15分おきに
天気、満月かどうかをAPIから取得してデバイスとBLE通信。
・アプリ上でバックグラウンド送信のON、OFF。
手動接続と送信。
・送信データをとにかくコンパクトに。
デバイス本体
CADって3Dプリンタで出力した。表示部分はアクリルパネル。
防水は内部に防水塗料を塗ったり、グルーガン多用だったりするが……うまくいくといいな。ラズパイもここに入れようか悩んだがカブ内部に仕込むことにした。結構悩んだ。USB変換が間に入っているのは12Vを5Vに変換するのにこうなったのだが、もっといい方法があるだろうか?
GPT4.0
素のAndroidアプリを作るのは初めてなのでセットアップから聞きまくっている。上で書いたニュートラルの分岐にダイオード仕込むのも、一回失敗して相談してこうなった。
今回のチャット履歴は膨大なので避けるが、以前作ったときの会話を貼っておく。そんなに変わってないと思う。https://exp.scri.me/
おまけ
最初はディスプレイでドット絵を歩かせて遊んでいた。夜には夜カラーになる。
シフト表示もしてみたが、文字、小さいな。ドット絵、いらんな。となり今のシンプルなのに至る。
副産物としては、GPT先生に教わってPythonで色をRGB888からRGB565に変換するなど、ツールを作れるようになった。便利。この感じで気軽にPhotoshopScriptとか色々なもの作れそう。
白クロスカブはとても調子がよい。
今まで電車と徒歩でしかマップが開放されなかったのに、いきなり余白地帯を突っ切れるようになった。行けるスーパーがとても増えた。ちょっと遠回りして帰っちゃう。