PLUMの209系を作ってる傍ら、天賞堂のT-Evolution クモヤ145にラズパイとカメラを仕込んだカメラカーも作っている
車両
車両はクモヤ145にTOMIXのPS23パンタグラフの足を切って装着。元三鷹車のクモヤ145-117に設定。車輪は純正パーツで構成。車輪からの集電は無し。
#buynow No.3 天賞堂のクモヤ145(JR東Hゴム黒)。前回はパンタは純正のPS16だったけど、今回は元三鷹車のクモヤ145-117にするつもりなのでTOMIXのPS23を調達。カプラーはIMONのHO-265。 pic.twitter.com/rqa8ELlbus
— まっちゃん (@mattyan_1117) December 24, 2022
そのままだと、Raspberry Pi Zero 2Wのポートの出っ張りが引っかかって入らないので、車体内側の窓パーツを削って挿入。
その際、バネ状の部分で前後が完全に分離されてしまうので、プラ板を接着して固定。
Raspberry Pi
Raspberry Piはスターターセットで買ったものから使用。microSDカードもついてくるとはいえ、その他諸々セットで約1万は流石に高いな……
電源は単4電池3本(3.6V~4.5V)をStrawberry LinuxさんのTPS61230A 昇圧型DC-DCコンバータモジュール(5V 2.5A)で5Vに昇圧してGPIOの5Vピンから給電するいつもの方式を採用。連続駆動試験でおよそ40分くらいは画像送信できてた。まぁ十分だろう。
ソフトウェア
mc2ではC++で書いたプログラムを使ってたけど、今回は「車両側ではキャプチャした映像を配信するだけにして、録画とかしたければクライアント側でやる」方針で設計。
あれこれ考えた結果ffmpegでキャプチャとHLSのファイル作成を行い、lighttpd(これで「ライティ」って読むのなんで?)で配信するという方式を採用。問題点として、リアルタイムより数秒遅れることがあるけど、知ってればどうとでもなるので気にせず採用。
キャプチャするコマンドは
ffmpeg -f v4l2 -i /dev/video0 -input_format yuyv422 -video_size 1280x720 -c:v h264_v4l2m2m -b:v 1000k -bsf:v h264_mp4toannexb -flags +loop-global_header -f hls -hls_time 2 -hls_list_size 2 -hls_flags +delete_segments -hls_segment_filename "/var/www/html/video%6d.ts" /var/www/html/stream.m3u8
で/var/www/htmlに細切れの動画本体とプレイリストが作成されるので、それを配信する。
配信したものはブラウザでは再生できない(Safariだとできるらしい?あとhls.jsを使えばfirefoxでも再生できる)ので、VLC Playerで再生 Or 保存
クモヤ145の運転台が高い位置にあるので、上の方が思いっきり余ってるが、単焦点レンズで画角調整ができないので、あとでトリミングするしかなさそう。もしくはカメラを下向きに調整するか。
あと、もともとピント調整してないのと、窓ガラス(プラスチック)で視界が歪んでどこにピントがあってるのかわからん。どこにもあっていないかもしれない。
この先やりたいこと
マイクが無いので、今のところ無音。
マイクは秋月電子通商で「SPH0641LU4H使用 超広帯域マイクモジュールキット」とRaspberry PiにつなぐためのI2C変換モジュールの「ADAU7002使用ステレオPDMーI2S(TDM)コンバータモジュールキット」を買ってあるので、実験して映像とのタイムラグがないことを確認してから実装したい。
タイムラグは調整で縮める事はできるかもだけど、仕組み上0にはできないし諦める方針。