予測不能な電力供給に対処する戦略


15

車にPiをインストールし、それを使用してGPSデータを記録したい。SDカードへの書き込み時に電源が遮断されることによる問題を最小限に抑えるために、(プログラムで)どの戦略に従うことができますか?

これまでのところ、私は考えることができます:

  • データの保存と断続的な書き込みのみ
  • 車速がゼロに近づいていないとき(つまり、イグニッションをオフにしようとしているとき)にのみ書き込みます
  • 一時ファイルに書き込みます。このファイルは破損する可能性がありますが、時々それを保持します

あるかどうか疑問に思っています

  • ファイルシステムモード突然のシャットダウン後もほとんどの時間滞在できる
  • 信頼性の高い書き込み中にパワーダウンから回復する方法

明らかに(私は)データの損失は避けられませんが、どうすれば最小化できますか?

回答:


3

供給側には(少なくとも)2つのオプションがあります。

  • 現在、多くの車には点火によって切り替えられないアクセサリーソケットがあります...あなたの車があれば、それを使用してください(ただし、使用していないときはプラグを抜いてください!)クランキング)
  • 独自の電力変換器を設計している場合は、車両の電源が切れた後も電源が十分に長く維持されるように、十分な大きさのリザーバーコンデンサを追加します... GPIOに対して車両の停止(車両の供給がしきい値を下回る)を検出することもできます電源オフ後に書き込みを開始しないようにしてください

2

Windows Embeddedには、拡張書き込みフィルターと呼ばれる概念があります。彼らはこれを使用して、電力損失などによるデータの破損を防ぎます。OSは、それをRAMオーバーレイに書き込みます。電源が失われてもファイルシステムは破損せず、必要な場合にのみデータをメモリに「コミット」できます。

同様に、Linuxオペレーティングシステムには、ファイルシステムをそのまま保持する技術があり、必要な場合にのみSDカードに書き込むことができます。この質問では、読み取り専用ファイルシステムの構築方法について説明します。必要な場合にのみ変更を保存できます。これは、オプション3を使用することを意味します。「一時ファイルに書き込み、必要に応じて永続化する」。この質問は、記事「読み取り専用ファイルシステムの構築方法」も指します。おそらく、それが最初の出発点かもしれません!


PIでこの記事を使用しようとした人はいますか?多くの適応が必要と
思われる-GuySoft

2

それはすべて、失う準備ができているデータの量に依存します。何かを失う余裕がない場合は、イグニッションがオフになったときにPIがオフにならないように、(もちろんヒューズを使用して)PIをバッテリーに直接接続する方法を見つける必要があります。

繰り返しますが、典型的なカーバッテリーは約80 Ahであり、PIは500〜1200 mAを消費します(モデルAまたはモデルBによって異なります)。そのため、2〜6日でカーバッテリーが消耗します。だから、これが受け入れられるとは思わない。

それでもデータを失う余裕がない場合は、PIから電源を制御し、点火の状態を監視できるカスタムハードウェアを設計することができます。イグニッションがオフになっている場合は、データをSDカードにフラッシュし、OSをシャットダウンしてから、最後のステップとして電源をオフにします。PIを再び起動するには、イグニッションをオンにしたときに電源もオンにする必要があります。これはすべて実行可能ですが、かなり大きなプロジェクトです。

ただし、シャットダウン時に一部のデータを失うことが許容できる場合は、書き込みのたびにfsync呼び出しを実行するようにGPSデータを定期的にファイルに保存するデーモンを設計します(データをSD-カード)。数秒ごとにこれを行う(そして、デフォルトのジャーナリングext4ファイルシステムを使用している)場合、おそらく、各電力損失で最後の数秒しか失いません。

Raspbian(少なくとも私のインストール)には、ブート時にルートファイルシステムのfsckが付属していなかったことに留意してください。マウントごとに有効にするには、次を実行する必要があります。

tune2fs -c 1 /dev/mmcblk0p2

また、/ etc / fstabのルートファイルシステムの最後の行を次のように1に変更する必要があります。

/dev/mmcblk0p2  /               ext4    defaults,noatime,commit=120  0       1
                                                               Change this ^^^^^

これを行わないと、ルートファイルシステムが時々起動できなくなる可能性があります。そのため、制御されたシャットダウンを行わずに電源を切るヘッドレスシステムを実行している場合、これは絶対に必要です。


1

これは、piの電気自動車をきれいに消毒し、車の点火の損失の検出を処理し、その間にpiに電力を供給し、GPIOピンに信号を送信してpiを安全にシャットダウンする良い追加のようです

残念ながら、現時点では品切れのようですが、事前注文できます。


0

頻繁に電力の損失に対処する必要がある場合は、ファイルシステムとブート方法(読み取り専用、ジャーナル、無人fsck、クイックリカバリなど)を慎重に選択すると、システムが確実に起動するのに役立ちます。

アプリケーション側では、特定のデータベース(sqlite?)を使用すると、再オープン時にデータの書き込みステータス全体または書き込みステータスなしが保証されます。

ベターでしょう実際に必要なときを除き、シャットダウンすることを避けるためにしようとすること。コントローラーが小さい場合、電源を頻繁に監視し、電源が切れた場合は、物事をシャットダウンしたり、不揮発性データを保存したり、電源が回復するまでプロセッサーをスリープまたは停止するための小さなウィンドウがあります。PIのような大きな汎用プロセッサでは、かなり長いギャップが必要になる場合があります。

そのため、オンラインのパワーリザーブとメイン電源がダウンした場合の警告があれば役立つかもしれません。不具合がある場合は、一時的な電力損失(書き込みをせずに息を止めてください)とシャットダウンの可能性(保存してクリーンアップ)を区別する必要があります。

車では+12/24 Vがあり、PIは+5 Vを使用するため、コンバータ内またはコンバータの前に何かの可能性(heh)があります。たとえば、コンバータの前に、電圧が低下したときに引き継ぐ適切なサイズの別の9-12 VバッテリーをダイオードORで接続できる場合があります。消費電力が比較的大きいことを考慮すると、何らかの方法で充電を続ける必要があります。また、主電源ライン用のコンパレータまたは特別な電圧モニターを装備し、主電源がダウンしたときにアラートを受け取ることもできます。(私は、PIに信号を送るための高速な方法が何であるかを知らない。)


1
関連する電源の質問が表示されているようです:raspberrypi.stackexchange.com/questions/3778/…–
XTL
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.