Raspberryをデータロガーとして設定する


13

タイトルが示すように、ディスプレイに少しのステータスを表示することに加えて、シリアルポートからいくつかの情報を読み取り、ファイルに記録する簡単な組み込みアプリケーションに取り組んでいます。

現在、ロギングが実行されているように見えます。システムを設定しようとしていますが、いくつか質問があります。

  1. システムは、FAT32 USBスティックにデータを記録することを目的としています。FAT32USBスティックは、いつでも取り外し、再接続、または交換できます。挿入されたUSB大容量ストレージを固定ディレクトリに自動マウントする推奨方法は何ですか?usbmountパッケージはほぼこれを行うようですが、メンテナンスが不足しているため、少し注意が必要です。

  2. 電源を保証できず、クリーンシャットダウンを実行できません。ありがたいことに、書き込まれるファイルは、内部OS情報を除き、ログだけです。OSのジャーナリングファイルシステムは自分を救うのですか、それともシステムを読み取り専用でマウントするか、RAMディスクをいじる必要がありますか?

  3. USBスティックのFATファイルシステムは存続し、停電や突然の排出から回復しますか?マウントするたびに新しいログファイルを作成する必要がありますか?

  4. Xサーバーが自動的に起動するように設定し、LXDE自動起動スクリプトをいじってステータス表示を開始し、ウィンドウマネージャー/スクリーンセーバーを無効にしました。継続的な表示を維持するためのその他の落とし穴はありますか?

  5. ロガーにはイーサネットアクセスがなく、正確なクロックが必要です。RasClockモジュールは適切なオプションですか?

長い投稿と複数の半関連の質問について申し訳ありません。

私はソフトウェアを完全に制御できる単純な組み込みデバイスを扱うことに慣れていて、実際のオペレーティングシステムを正しく構成するタスクは少し不安になります。一方、このタイプのアプリケーションにPiを使用しているのは自分だけではないのではないかと疑っています。


他のデータロガーが試せるように、動作中のUSB->シリアルソリューションをどこかで説明していますか?スクレーパー/ロガー/ウェブカメラPiから付加価値を引き出したいと思っています。ありがとう!
タイViinikka

回答:


7

システムは、FAT32 USBスティックにデータを記録することを目的としています。FAT32USBスティックは、いつでも取り外し、再接続、または交換できます。

そのプラグを抜いた部分には問題があります。私の知る限り、コンピュータシステムはどこにも潜在的な問題なしにUSBスティックを抜き取らない権利を約束します。そのため、それを回避する方法について考える必要があります。

電源を保証できず、クリーンシャットダウンを実行できません。

繰り返しになりますが、突然(ほぼ)コンピューターシステムの電源を切ることは危険です。これは、通常、(停電など?に、事故によって、時代のこの束をやっていない人)まで大丈夫終了、しかし、 PIとSDカードの破損を報告する人々の異常な量があるように思われます。したがって、「ほとんどの場合、システムが正常にシャットダウンされない」という場合は、行き止まりの戦略になるため、再考する必要があります。キーボードまたはネットワークに接続せずにシャットダウントリガーできることに注意してください。同様の方法を使用して、USBスティックのクリーンなアンマウントもトリガーできます。

キャッシュを制限するsyncオプションを追加できます/etc/fstabが、man mount次の点に注意してください。

書き込みサイクルの数が限られたメディア(フラッシュドライブなど)の場合、「同期」によりライフサイクルが短くなる場合があります。

これにはSDカードが含まれますが、メディアを断続的にテスト(および必要に応じて交換)することを覚えている限り、それは価値があるかもしれません。これは一般的なパフォーマンスにわずかに影響を与えると思います。

そのため、できる限りプラグまたはUSBスティックを突然引っ張らないようにし、これに依存するセットアップを設計しないでください。たとえば、自分や他のユーザーに「いつでもUSBスティックを抜いても構いません」と言わないでください。

syncアプリケーションで適切な呼び出しを行う(たとえば、アイドル状態のとき、または重要な書き込みの後に)のは良い考えです。

必要なものをすべてインストールして構成したら、、、およびに別々のパーティションを作成し/var、それらのrwをマウントする/run/tmp、潜在的にルートファイルシステムを読み取り専用でマウントできます。そのようなマウントされたパーティションを1つ作成し、そこにrwディレクトリをシンボリックリンクすることもできます。

raspbian piでは、/run既にtmpfs(RAM)であるため、心配する必要はありません。/sysそして/procRAMにもあります(ただし、彼らが意図しているもの以外のもののためにそれらを使用しないでください)。システムが単一の目的のためであり、すべてのデータがUSBスティックに送られる場合/varは、唯一の問題がありますが、決定的にそうではありません。


私たちの主な問題は、緊急停止中にいつでも電源が切れる可能性があることです。テスト中に頻繁に発生すると思われるものです(そのため、ロガーが必要になります)。Piのバックアップバッテリーを取り付け、電力の損失を検出するために何らかのセンサーを接続するかどうかを確認します。ただし、ルートファイルシステムが読み取り専用モードでマウントされ、USBメモリが定期的なフラッシュなどで保護されている場合、私の人生はずっと楽になります。
-doynax

@doynax:ルートファイルシステムROで実行することが可能です。私はそれについての経験はありませんが、基本的な懸念が何であると思うかについて、最後にいくつかの段落を追加しました。
goldilocks

2

以前は、メモリカードの読み取り/書き込みを行うデバイスドライバーに取り組んでいました。動作の途中でそれらが引っ張られる可能性があるため、バッテリーまたはコンデンサでバックアップされた電力でも役に立たないでしょう。チップのフォーマット仕様に基づいて、「ホット」な取り外しと挿入によって最小限のダメージを与えるために必要な動作を推測しました。

基本的に、あなたがする必要があるのは、データブロックの書き込み中に切断された場合(または連絡先がうそをついている場合)、事実を認識できるようにすることです。基本的に、データにブロック番号(および固定サイズでない場合は長さ)を追加し、最後にcrcと(同じ)ブロック番号を追加します。

最初に行う書き込みは最後に行われ、次のブロック番号ではない値を使用します。このように、書き込みが完了しない場合、ブロック番号の不一致が発生し、そのデータブロックはゴミであることがわかります。次に、実際のブロック番号、長さ、お気に入りのアルゴリズムによって生成されたCRC、実際のブロック番号の順にデータブロックを書き込みます。(CRCは、データを破損する不審な連絡先から保護することです)。

電源が復旧するか、メモリカードが再挿入される場合、ブロックの開始シーケンス番号と終了シーケンス番号が一致しないか、CRCが正しくないポイントまでのみ、連続ブロックを受け入れます。そのブロックを削除して、ロギングを再開します。

ただし、これは低レベルのものです。ファイルシステムを介してそれを行うことは別の話です。

本当に必要なのは、FATの冗長コピーであり、FATテーブルについても同様のことを行います。連続番号は、どちらが最新であるかを示し、前後の一致とCRCにより整合性が確保されます。

就寝時間を過ぎているので、これが十分明確であることを願っています。


1

正確な時計については、安価なGPSモジュールがたくさんあります。それよりも正確な時計を見つけるのは難しい。


それは素晴らしい提案です。時計の設定とバッテリーの取り扱いの手間を省いてください。タイムゾーン(および、DSTの規則)を追跡する必要があるだけで、純粋なデータロガーの世界時は問題ないはずです。
doynax

GPSモジュールは、空の一部が見えない場合でも屋内で動作しますが、単純なRTCよりも利点がありますか?
ステファンゴーリチョン14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.