バッテリー駆動のデータ収集プロジェクト用のマイクロコントローラーの選択


18

私は井戸の水位を測定することを計画しています。それは深さ約10 mで、最大水位は最大5 mです。私の計画は、超音波センサー HC SR04を使用して深度を測定し、ZigBeeを介して自宅のRaspberry Piに送信することです。

前の質問で説明したように、 超音波センサーとZigBeeモジュールを接続するマイクロコントローラーを選択する必要があります。

選択のパラメーターは次のとおりです。

  1. 低電力:バッテリーでこれを実行する予定なので、低電力使用が優先されます。現時点では、電力使用量の目標も、バッテリー交換の日数も、使用するバッテリーさえもありません。これは学習プロジェクトであり、自宅にあるため、柔軟性はありますが、電力使用量は少ない方が良いです。

  2. 低コスト:これは私にとって学習プロジェクトであり、これに法外な金額を費やしたくないので、低コストの方が良いです。

  3. 井戸内での作業:プロジェクト全体が井戸内で動作し、厳しい日光と雨にさらされます。しかし、私は良いケースと保護を提供します。

  4. プログラムが簡単。

ZigBeeを選んだのは、シンプルで、ユースケースと低電力を満たしているからです。しかし、私の要件はセンサーデータを転送することであり、他のトランスポートにオープンです。私の井戸からRaspberry Piまでの距離は約6メートルで、間に壁があります。私は、水ポンプが稼働しているとき(毎日約20分)、10分ごとに1分に2回水深を測定することを計画しています。


2
これはかなり広範に感じられるか、またはトピックから外れていると思われます。ボード上の小さなMCUが適しています。Zigbeeを決定しない場合は、BLEを搭載したBBC micro:bitとバッテリーコネクタを確認することをお勧めします。
ショーンフーリハネ

2
zigbee無線が必要な場合は、少なくともそれをMCU(通常はARM Cortex-M)CPUと組み合わせる部品を評価する必要があります。そのルートに行かなければならないという意味ではありませんが、そうしないことに決めた場合は、正当な理由があるはずです。
クリスストラットン

2
「井戸の中」とはどういう意味ですか?ケースは水中にありますか?水中でXbeeモジュールからの送信または受信を期待しないでください。多くは、水によく吸収される2.4 GHz帯域で動作します。他のものは、900 MHz付近で動作しますが、これも水を十分に浸透できない可能性があります。ケースが水中でない場合、6m +壁はxbeesでうまくいくはずです。
ジョナスシェーファー

「ウェル内」とは、デバイスがウェル内に配置されるが、水の上に配置されることを意味します。
ラジ

回答:


20

マイクロコントローラー選択の一般的なプロセス。

  1. マイクロコントローラーに対する要件をまとめます。この場合の例:

    • 1つのハードウェアタイマー、トリガーとエコーパルス間の時間を測定します。
    • センサーのエコーピンとトリガーピンを接続する2つのGPIOピン
    • おそらくUARTは、 RF通信モジュールをインタフェースします。
    • バッテリ電圧を監視するための1つのADC入力


    これには8ピンコントローラーを使用できますが、一般的な目的でもプログラマーピンを使用する必要がある場合があります。

  2. 必要なCPUパフォーマンスメモリ要件を決定します。8ビットMCUを使用するだけで十分ですか、それとも32ビットMCUが必要ですか?許容できるCPUクロック速度は、数十MHzまたは1 M​​Hzで十分ですか?どのくらいのプログラムメモリ、RAM、ROMが必要ですか?

    説明されているアプリケーションがあれば、高いコンピューティングパフォーマンスは必要ありません。おそらく8ビットのコントローラーで十分です(ただし、32ビットのコントローラーよりも安くはないので、価格によってここで決定できます)。

  3. 低電力。それほど重要ではない場合、最低の電源電圧とシステムクロック周波数で低電力モードを使用することで、ほぼすべての種類のコントローラーに対応できます。より重要な場合は、(ARM®Cortex®-M0またはM0 + CPUコア)などの専用の低電力MCUコアから開始して、検索リストの絞り込みを開始できます。通常、データシートにはほとんどの低電力モード/ VCC / SysClk周波数の表が含まれており、より良いものには各周辺機器の消費量も記載されています。

  4. 開発者ツール。私はそれを非常に重要な側面と考えています。専用のハードウェアプログラマーツールは多額の費用がかかるため、通常は既にプログラマーがいるMCUにこだわります。別のファミリまたはブランドに切り替える場合、後でカスタムボードのプログラミングに使用できるオンボードプログラマーを備えた開発ボードに投資することをお勧めします。一般に、プログラムをマイクロコントローラーにダウンロードできるようになるにはどれくらいの費用がかかるかを常に最初に確認してください。

@Seanがコメントで指摘したように、可能かつ費用対効果の高いソリューションは、統合されたプログラム可能なアプリケーションMCUに付属するRFモジュールを検索することです。このようなモジュールは、BLE、WiFi、ZigBee、および他の多くのテクノロジー向けに存在します。

さらに、どのMCUが井戸でどのように生き残るかについて。それはすべて、デバイスに提供するエンクロージャーでダウンします。たとえば、エンクロージャが100%耐水性でない場合、どのMCUを選択するかは重要ではありません。


TL; DR; ここに製品固有の部分があります。

  1. Farnellでは0.87 $ / 1個ATtiny25を選択できます。8ビット、8ピンなので、スペースを取りません。パワーダウンモードでは、ウォッチドッグが無効の場合、3 Vで0.2μAを消費します。ウォッチドッグが有効な場合、2〜4μAです。それはArduinoの互換性のある、それは多くのあなたの費用(USBaspまたはAVRDUDEプログラマコストeBayで2 $程度)ではないでしょうプログラミングそう。(:このMCUはハードウェアによるSPIのみを備えているため、RF通信モジュールとのインターフェースにはArduino Software Serialライブラリを使用する必要があります。)全体として、小型で安価で、比較的低消費電力ですが、ビットバンギングUARTはそれを複雑にします。2 kBのプログラムメモリがあり、これで十分です。

  2. または、スタンバイモードで2μA、ストップモードで5μAを消費するARM Cortex M0を使用します。このようなMCUは、たとえばSTM32F030F4で、価格は1.09 $ / 1個です。最大48 MHzのシステムクロック周波数を備えた、より強力な32ビットコントローラーですが、ご覧のとおり+ 0.2 $のみです。16 kBのプログラムメモリが搭載されており、この単純なタスクには十分ではありません。SPI、UART、I2C、その他多くの周辺機器を備えています。Farnellでのプログラミングにはさらに費用がかかり、専任プログラマには20ドルかかります。私の意見では、それだけの価値はありません。代わりに、オンボードプログラマー(ST-LINK)を備えたF0ファミリ用の開発ボードに投資できますSTM32F0Discoveryボードのコストは最大10ドル。このボードでプロトタイピングを開始し、後でプログラマとして使用できます。


3
ディスカバリーおよびヌクレオボードのST-LINKは、多くの場合、ボード自体にあるMCU以外のMCUに使用できることに注意してください。その特定のボードについてはわかりませんが、その外観からは、SWDを使用しており、右側のジャンパーを使用して切断できます。それについての良いところは、ST-LINKがプログラマーであるだけでなく、インサーキットデバッガーであり、開発を大幅に容易にすることです。
ジョナスシェーファー

3
また、XBEEからの応答を気にしない場合は、ATtinyのユニバーサルシリアルインターフェイスを使用して、ビットバンギングソフトウェア実装よりも高速なUARTを取得できます。
ジョナスシェーファー

3
無線モジュールには専用のMCUリソースが頻繁に付属していることに注意してください(また、型式承認を簡素化するためにモジュールが存在します)。あなたは周期的な割り込みを受け入れる必要があるので、CPUは通常など、RFスタックと共有されている
ショーンHoulihane

3
ULPBENCHは、低電力動作(バッテリー)が重要な場合に適したリソースです。
ネオゾン

5

プログラミングの容易さと低コストを考えると、おそらく何らかのArduinoモジュール(または低コストのクローン)から始めるでしょう。超音波センサーのコードはすでに存在します。たとえば、Digi XBeeモジュールを使用したZigBeeのサンプルコードも同様です。後者では、XBeeをシリアルポートに接続し、由緒ある古い「AT」コマンドインターフェイスと接続した後、テキストを(Raspberry Piに)送信できるポイントツーポイントチャネルを取得します。 )。ZigBeeは、最も安価なタイプの短距離通信ではありませんが、XBeeモジュールは過去5年間で実質的に価格が下落しています。

Arduinoで使用されているC / C ++ベースの言語に問題がある人もいることは知っていますが、この場合は、他のユーザーからの既存のスクリプトを主にマージすることになります。

「Arduinoスリープモード」にグーグルでアクセスすると、Arduinoを低電力モードにし、散発的に目を覚まして測定値を取得し、通信し、スリープモードに戻る方法の例があります。


1
ATmegaチップを使用すると優れた電力管理が可能ですが、典​​型的なArduino ボードには寄生バッテリーがあり、バッテリーの寿命を大幅に制限します。
クリスストラットン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.