あっきぃ日誌

鉄道ブログのような技術系ブログのようななにか

Raspberry Piで走らせるカメラ付きプラレール

年末に東急2020系のプラレール車両を買いました。ほしかったのはおまけの2020系のカタログの方だったのは言うまでもないですが、せっかくなので車両も何かしら遊んでみることにして、1月から気が向いたときにちまちまといじくっていました。

f:id:Akkiesoft:20190220133335j:plain:w480

で、いじくった結果がこちら。元の車体に穴を開けたりするような破壊的な改造は加えないとだけ決めて、Raspberry Piを載せたりなんだりした結果、リモートから運転操作しながら運転台からの映像が見られる物体になりました。

f:id:Akkiesoft:20190220222450j:plain:w640

f:id:Akkiesoft:20190220140117j:plain:w640

動画で。

youtu.be

……あらかじめ書いておくと、こんなことをしなくてもタカラトミー自らがそう言う製品を売っています。しかし、私ドクターイエローいまだに見たことなくて身近な乗り物ではないからなあ?

使った部材

使用した部材は、Pimoroniで販売されているPiZero向けの小型カメラモジュール、LiPo SHIMとLiPoバッテリー、前にイジェピラーで使っていたL9110Sモータードライバー、単3形ダミー電池、細い電線です。あと、本当は2.5インチSSDのシャーシに埋め込んで使うつもりだったPiZero W。

Wide Angle Camera Module for Raspberry Pi Zero – Pimoroni

akkiesoft.hatenablog.jp

LiPo SHIM – Pimoroni

akkiesoft.hatenablog.jp

www.dx.com

単3型ダミー電池 UM-3Dの通販ならマルツオンライン

https://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-585G

組成

先頭動力車には屋根にPiZero Wと、運転席に小型カメラモジュールを設置。車体は非破壊の方針なので、固定はひっつき虫です。電池は単3ですが、加工したダミー電池(後述)を差し込み、ここでの電池交換は基本的にしません。

中間車にはモータードライバーとLiPo SHIMを搭載。LiPo SHIMはLiPo電池のコネクターがあり、抜き差しできる必要があるので屋根にひっつき虫で固定しました。配線は極力車内を通しています。モータードライバーは車内に雑に放り込み、固定はしていません。ピンヘッダーとかがついていて扱いやすいモジュールですが、面倒なのでケーブルはすべてはんだ付けしました。配線のため、先頭動力車とは連結解除できなくなっています。

付随先頭車である反対側の先頭車にはLiPoバッテリーを固定無しで放り込んでいます。コネクター部分だけ外出ししてあり、中間車と接続するか連結解除して充電器につなぐかができるようにしました。

各部の工作の過程

カメラ

とりあえずPiZero Wとカメラをつけて、走行は制御せず走るようすが録画できるみたいなものを作りました。

f:id:Akkiesoft:20190220134257j:plain:h480

後からカメラを小型に変更しました。

f:id:Akkiesoft:20190220134222j:plain:w480

ダミー電池の加工

モーターの制御は、モータードライバーでPWMコントロールするため、プラレールに入れる電池はダミー電池として、ダミー電池の+と-からそれぞれ伸ばしたケーブルをモータードライバーと接続します。ダミー電池は+と-がワイヤーでつながった状態なので、ニッパーで切り離して、ケーブルをはんだ付けしました。試作段階では、単4電池を単3電池に変換するアダプターを使い、-側にアルミホイルを詰めていました。このまま使っても良かったのですが、ケーブルを補足するタイミングで交換しました。

f:id:Akkiesoft:20190220133523j:plain:w480

モータードライバーの追加

リモート走行するためのモータードライバーを追加し始めた様子。

f:id:Akkiesoft:20190220134534j:plain:w480

テスト段階ではひとまず屋根上に載せていましたが、結構かさばって見栄えが悪いので後から車内に格納しました。

youtu.be

モータードライバーには3V以上の電源が必要ですが、Raspberry Piの3.3Vを利用するのと不安定っぽいので考えていたところ、LiPo SHIMにバッテリーの電源(3.6V or 3.7V)がそのまま取り出せる穴(BAT+, GND)があいていたのでここから取るようにしました。バッテリーの容量が小さいのでどのみちすぐ容量がなくなって不安定になるんですけど。

中間車に詰め込んだ後の様子。

f:id:Akkiesoft:20190220135037j:plain:w480

LiPo SHIMの配置

試作の段階ではLiPo SHIMはピンソケットがつえた状態で、PiZero Wもヘッダーがついた状態でした。ただ走らせるぶんにはこれでも問題ありませんが、橋をくぐるときに建築限界を確実に超えてしまうため、ヘッダーを外して分散させる方法にしました。

ピンソケットの取り外し。買ってすぐの状態に戻したとも言う。

f:id:Akkiesoft:20190220135528j:plain:w480

ブックオフのホビーコーナーで仕入れた橋を無事にくぐる様子。

f:id:Akkiesoft:20190220222709j:plain:w480

Web UI

カメラモジュールの映像をライブストリーミングする方法を調べたところ、PythonのPiCameraモジュールのドキュメントにサンプルが載っており、そのまま使えるレベルだったので使用しています。これは先日のOSC2019 OsakaでEjectコマンドユーザー会のリモートブースで使用したのと同じです。

akkiesoft.hatenablog.jp

マスコンはINPUTタグのスライダーを90度回したものをそれっぽくカラーリングしました。マスコンの操作で現在の位置を出す部分にはイベント駆動を利用して、移動結果をAPIに送るにはonupdateを利用しています。

f:id:Akkiesoft:20190220222937j:plain:h480

f:id:Akkiesoft:20190220223000j:plain:h480

モーターの制御は先述のイジェピラーのコードを少し流用する形で実装しつつ、マスコンの位置に合わせてスピードを変えたり、ブレーキのかかり具合を決めたりしています。w

課題/TODO

  • バッテリーがすぐ無くなる。デカいバッテリーは車内に入らないのが難点。
  • バック機能。優先順位が低いだけ。
  • WebUIのデザインセンスを磨く(?)

展示予定です!

Raspberry Piで走行可能にしたカメラ付きプラレールは、今週末のOSC2019 Tokyo/Springで展示予定です。建築限界的に問題なければ、加算器とのコラボもできるかも知れませんね(建築限界を気にしていたのはこれが理由!)。

event.ospn.jp

また、3/3に日本橋サイボウズさんの会場をお借りして、「Raspberry Jam Big Birthday Weekend 2019 in TOKYO」と題し、今年もラズパイのお誕生日を祝います。こちらでも展示予定ですので、ぜひご参加ください。

www.raspi.jp

充電時間のほうが長いかも知れませんが、ぜひ見に来てくださいね。