新車内ソーラーシステム発電状況

※注意 raspistill で撮った2592×1944ピクセルの超巨大画像(2.6MB)なので、モバイル回線でクリックしないように。

13.6V なので、車のバッテリー60Ahを充電しつつ、30,000mAhモバイルバッテリー充電と、携帯電話充電と、Raspberry Pi Zero 2 W+GPSモジュールが動かせてるな。

この画像はGIMPでシャープネス加工して見やすくしたものだけど、文字が細いから、高解像度にしないと読み取れないのが課題だな。

【Raspberry Pi Zero 2 W】cron が動かない

RX-7 を監視するプログラムを Raspberry Pi Zero 2 Wで動かしている。

crontab にこう設定してあって、起動時にモニタプログラムが起動するようになっているのだが、最近、こいつが動いてない事が多い。

幸い、リモート接続は可能なので、ssh で接続して、手動で動かしているのだが、原因を調べると、どうも cron が動いてないっぽい。

systemctl status cron.service で状態を確認しても、running と出てるし、プロセスもちゃんと上がっているので、表面上異常は一切見付けられない。

うーん……

これは、モニタプログラムを /etc/rc.local 起動するしかないかな。

しかし、1分毎に動かしてる転送されていない動画を転送する処理は cron が動いていないと、問題がある。

rc.local で起動したモニタプログラムに、ログを調べて cron のログが無いようだったら、systemctl restart cron.service を実行する機能を付けねばならんか。

しかし、基幹部に欠陥があると、想定していた前提が崩壊してしまうので、こういうのは何とかならんのかのう 🙁

 

【Raspberry Pi Zero 2 W】metric 設定

車載のRaspberry Pi Zero 2 W(以降rx7pi)が、家のWiFiに繋がってる時に通信が遅くてしょうがない。

まあ、原因ははっきりしていて、ssh でログインする時に、WiFiのIPアドレスで繋ぐと応答は速いけど、パッケージ更新とかやると、metric の低い順のネットワークデバイスで通信するので、usb0 = povo 2.0 128kbps 通信となってしまう為だ。

rx7pi は dpcpcd ではなく、NetworkManager で通信を管理してるので、設定状況は次の通り。

100 usb0
600 wlan0
750 bluetooth

という順で優先されるけど、usb0 と wlan0 を入れ替えたいので、ちょこっと検索。

ネットワーク設定nmcli コマンドでルーティングメトリックを設定します。ルーティングメトリックは値が小さいほど優先順位が高いため、主回線の soracom を 500、副回線の ntt を 700 に設定します。次のコマンドを実行してください。ターミナル
sudo nmcli c m soracom ipv4.route-metric 500
sudo nmcli c m ntt ipv4.route-metric 700sudo nmcli c down soracom
sudo nmcli c down nttsudo nmcli c up soracomsudo nmcli c up ntt

情報源: ラズパイ1個で2個の4GPiを同時使用する際の、LTE回線自動切換え #RaspberryPi – Qiita

パラメータが省略してあるので、分かり辛いが、 c = connection、m = modify か。

よし、イケた。

後は、WiFi接続時に VPN のwireguard を再接続するように設定する。

$2に up とか down が入ってくるようだが、どの道VPNを再起動して良い状況なので、判別せず。

実行属性つけておくのを忘れずに。

 

【Raspberry Pi Zero 2 W】車の電圧監視

車に50Wのソーラーパネルをバッテリー直結にしたが、過充電が心配で、何とか電圧監視する仕組みを導入できないか考えていた。

過充電が心配なら、ソーラーチャージコントローラーを噛ませばいいじゃないかという話だが、如何せんソーラーパネルのパワーが低いので、充電するよりもソーラーチャージコントローラーの待機電力の方が大きければ、太陽光発電をしない方がマシというのは本末転倒だ。

正攻法なら、INA226のセンサーで車のバッテリー電圧を計って、ネットワークで確認して、14.4Vを越えていなければOKという判断もできるが、待てよ……

家にソーラーパネル100W買った時におまけでついてきたチャージコントローラーがあるので、とりあえず待機電力には目を瞑って、それを噛ませて過充電の心配を無くす。

そして、車載のRaspberry Pi Zero 2 Wは車内監視カメラがあるので、ソーラーチャージコントローラーには電圧表示があるから、それを写せばいいんじゃね?

車内の動画だと、128kbps の通信速度で送れるように低解像度にしてあるから、電圧が読み取れません><

 

 

 

そうだ raspistill ならフル解像度で撮影できるなと気付き、カメラデバイスを専有している motion 停めて撮影してみた。

さすがに 2560×1920ピクセルともなると、ちゃんと、12.5V って読めるな。

ちょっと手間掛かるけど、これで日中に駐車場でどんな充電状況なのかが一応分かるな。

将来的には、低消費電力の電菱のSolar Amp B に替えたいな。

【Raspberry Pi Zero 2 W】接続環境見直し

携帯電話のbluetooth テザリングにより車載のRaspberry Pi Zero 2 W(以下rx7pi)の通信を賄っていて、カメラの動態検知やGPS測定による位置移動、警報装置発報をメール通知するようにしている。

しかし、時折、一切の通信不能になる時があって、恐らく、bluetooth のチップがハングアップして通信機能が失われているのだろう。

で、以前、携帯電話のUSBテザリングを使用していて、これはRF回路を使わないから、電力喰わないので良いのだが、携帯電話のロックを解除しないと接続してくれないので、時折ロック解除を忘れて、まる一日通信不能の事があった。

ふと、設定で画面ロックを使わないようにしたらどーなんの?とやってみた所、rx7pi が起動したら、即携帯電話にUSB接続した。これで bluetooth がハングアップしようが通信に問題が無くなったな 🙂

DE-C41-30000BKリン酸鉄リチウムイオンバッテリー

パススルー対応リン酸鉄リチウムイオンモバイルバッテリこうにう

Raspberry Pi Zero 2 W+GPS+Zenfone Max Pro[m2] を繋いでテスト。

DE-C41-30000BKを満充電の後、26時間連続稼働で残りゲージ2つ(50%以下)くらいなので、48時間くらいイケそうだな。

最近、RX-7のバッテリがよく低電圧に陥り、カーポートソーラーに2日ほど接続していたが、夕方エンジン掛けようとするも掛からず、ジャンプスタータで始動した。

RX-7のバッテリがもうそろそろダメなのかもしれん。

パススルー対応リン酸鉄リチウムイオンモバイルバッテリこうにう

 

車載Raspberry Pi Zero 2 W(以下rx7pi)を稼働させるのに、バッテリが低電圧になるのを解決すべく、ポータブルバッテリをこうにう。

エレコムは 自社、Amazon、楽天市場のショップで同一価格なので、ポイント4倍の楽天で買うのが一番お得。

リチウムイオン電池じゃなく、ハイブリットカーのバッテリにも使用されているリン酸鉄リチウムイオン電池なので、高温になりがちな車載でも安心。

以前、ガラケーをFOMA 補助充電アダプタ03に繋ぎ、それに4.5Wソーラーパネルに接続して電力を賄っていたが、スマートフォン+GPS+rx7pi を車のバッテリに繋ぐと電圧低下で、エンジン始動できなくなる。

そこで、以前みたいに、今回買ったDE-C41-30000BKへ rx7pi 一式を接続して、入力に18Wソーラーパネルを接続して、車の電力系から独立させてみようと思った。

ソーラーパワーのみで賄えるようになったらうれしいな 🙂
まあ、できなくても、週末のみモバイルバッテリー充電すればOKの体制にはしたいなあ。

【Raspberry Pi Zero 2 W】低電圧

10月9日夜、車のセキュリティのリモコンが鳴って、何だろう?と思って車を確認。

セキュリティOFFにしようにもOFFにならない。
どうも、バッテリ低電圧の警告でリモコンが鳴ってた模様。
何度かやってる内になんとかセキュリティOFFにはなった。

18Wソーラーパネルを接続してはいたが、天気が悪く小雨が降ってて、全然陽に当たってなかった。

カーポートソーラーの常夜灯も、22時頃に消灯してしまったので、やっぱり日照が全然足りてなかったのだろう。

車載のRaspberry Pi Zero 2 W(以下rx7pi)の電源は落としていたが、USBポートに繋いでいた携帯電話とGPSは通電したまんま。

それらの電源を遮断して、とりあえず、ジャンプスターターでエンジンを掛けて、30分ほど放置。

翌朝、エンジンは掛かり、会社へ行って、家に帰ったらrx7pi系統を電源遮断していたが、今日、会社帰りにエンジンオートスターターでエンジン始動させようとするもエンジン始動せず。

一応、電気の食う携帯電話は、車のエンジンが掛かってる間だけ電力供給するようにしていたのだが、GPSモジュールをデータ取得間隔1000ms→100msで動かしてたから、やっぱり電気食うんだろうなあ。

セキュリティOFFとドア解錠はできたので、そのままキーでエンジン始動させると、セルの回りが悪いながらもエンジンは始動。

携帯電話は、エンジン掛かってる間だけ充電しても100%にならんので、とりあえず家で充電。

GPSのデータ取得間隔を1000msに戻したけど、現状は、日々、バッテリが消耗していくばかりなので、バッテリ回復するまで、rx7pi は稼働させない方が良さそうだ。

【Raspberry Pi Zero 2 W】謎のパケットロス

RX-7車載の Raspberry Pi Zero 2 W(以降rx7pi) だが、家の Wi-Fi に繋ぐと、謎のパケットロスが発生する。

rx7pi はプログラムで次の機能を持たせている。

  • 車載警報装置からのイヤホンマイク端子ON信号を GPIO で検出するGPIO監視
  • Bluetooth ヘッドフォン接続時に警戒モードをOFFにするBluetooth監視
  • GPSデータを読み取り、100m移動したらメールを飛ばすGPS監視

これらの機能のプログラムを走らせると、Wi-Fiのパケットロスが発生する。

GPIOの信号線半田付けする時に、チップ抵抗まで盛ってしまい、ショートさせたので、まだショート箇所が残ってるのかと半田吸い取り線をヨドバシから買って、信号線の付け直しをしてみたが症状変わらず。

GPIO監視だけのテストプログラムを動かしたら発生しないので、GPIOでは無いようだ。

端末から監視プログラムを動かすと、

携帯電話へ bluetooth テザリングで接続してなかったらするようにしてるが、家なので、携帯電話は有効にしていない。

ちょっと気になるので、bluetooth テザリング接続部をコメントアウトすると、パケットロスが無くなった。

この部分でパケットロスが発生しとるようで、bluetooth と Wi-Fiは同一チップで制御しとるから、大方、bluetooth の制御コマンドを送ると、Wi-Fi の回路の処理が停止して影響が出とるのかな?

安物の Wi-Fiチップだと、回路共通部分での競合ってありそうで、嫌だのう。

今まではUSBテザリングを使っていたが、スマートフォンの画面ロックを解除しないと、通信が確立しないので、朝、システムを起動して、画面ロック解除を忘れて、その後、通信不可ってのが嫌で、bluetooth テザリングにしたんだよなあ。

車載機としては、bluetooth テザリングが通信の生命線なので、接続断の場合は、何度もリトライを繰り返す処理にしてるけど、Wi-Fi 接続時はキャンセルする例外を入れんといかんかな?

Wi-Fi繋がってたら、bluetooth テザリング接続をしないようにした。
これで謎のパケットロスは解消した。 🙂

【Raspberry Pi Zero 2 W】警戒プログラム変更

Raspberry Pi Zero 2 Wは 4コアなので、並列処理した方が速くなる為、本体プログラムと bluetooth のチェックを分けた。

【メイン処理】

【bluetoothチェック処理】

【GPS関連処理】

今までは USBテザリングで通信していたが、セキュリティの為か、携帯電話の画面ロックを解除した状態にしないと接続できなかった。

しかし、bluetooth テザリングは、一度ペアリングすれば、接続要求によって簡単に繋がるので、画面ロック解除しなくても良くなった。

以前試行した時は、bluetooth テザリングに、 bt-pan というプログラム使ってたけど、接続できなくて sleep 1 で回してても負荷が無茶苦茶高かった記憶がある。

問題は最大3Mbps程度の通信スピードになるが、povo 2.0 の非課金速度が128kbps なので、ボトルネックになる事は無い。

今は、NetworkManagerを導入したおかげで、sudo nmcli dev connect [MACアドレス] で接続できるので、負荷が非常に低く、load avarage も

こんな感じで非常に低負荷で済んでいる。