Arduinoは24時間365日稼働できますか?


46

シンプルなArduino Webサーバーを作成していますが、常に有効にしておきたいと思います。そのため、継続的に仕事を続けることに耐えなければなりません。

イーサネットシールド付きのArduino Unoを使用しています。5V @ 1Aのシンプルなコンセント電源で動作します。

私の質問:

  • Arduinoを常にオンにしておくことに問題はありますか?
  • これに適した他のArduinoボードはありますか?
  • これに関して注意する必要がある注意事項はありますか?

最初の質問!
TheDoctor 14年

司会者のメモ:それが彼らの状況で機能したと述べる多くの答えを得ているようです。質問に追加する技術的なものがある場合は、お気軽にお答えください。ただし、技術的な答えは、それが機能することをカバーしているようです。あなたの状況がうまくいったと断言する必要がある場合は、コメントを追加することをお勧めします。
匿名のペンギン14

回答:


58

常にそれを維持することに問題はないはずですが、考慮する必要があるのは、の使用など、持っている可能性のあるカウンターですmillis()

millisArduinoドキュメントから:

この数値は、約50日後にオーバーフローします(ゼロに戻ります)。

そのため、長期間にわたって進行しているプロジェクトの場合、すぐに問題が表示されることはありませんが、このようなものがポップアップしてエラーを引き起こす可能性があります。


19
正確には、uint32_tミリ秒は変数であるため、4294967296ミリ秒でオーバーフロー(「ゼロに戻る」)します。これは、49.7日、1193時間、または71582分です。
コナーウルフ

5
次に、最初のロールオーバー時に増分する別のuint32_tを使用するだけです。その後、ロールオーバーの間隔は約5.846×10 ^ 8年になります。
80HD 14

4
あなたはミリ秒()を行う場合-のstartTime(開始時刻とunsigned long型として、別名のuint32_t)を複数のオーバーフローが起こっされていない限り、あなたは常に有効な結果を得ることができます
Lesto

1
より正確には、49日、17時間、2分、47秒、295ミリ秒後にオーバーフローが発生します。
ミメットオルセン14

4
millis()オーバーフローが問題になることはありませんmillis()オーバーフローを参照してください...悪いことですか?詳細については。基本的に、適切なデータ型を使用して減算によって時間間隔を計算する場合、問題は発生しません。
ニックギャモン

33

心に留めておくべきことがいくつかあります(@Sachleenによるの言及以外millis()):

  • 他の電子機器と同様に、熱は破壊的です。マイクロコントローラ自体は、熱の観点からは大きな問題にはならないでしょうが、電源のような他のコンポーネントが問題を引き起こす可能性があります。

  • コードでを使用する場合、EEPROM.write()UnoのATmega328PのEEPROMは100,000回の書き込みしか評価されないことに注意してください。


12

フラッシュとEEPROMの寿命は限られていることに注意してください(それぞれ約10,000回と100,000回の書き込みサイクル)。これらに大量の書き込みを行うと、破損する可能性があります。私が行ったテストでは、外部EEPROMが破損し始めるのに約3日かかりました。


1
ドキュメントには10​​,000サイクルが記載されている場合がありますが、多くのテストでは〜100kで問題が発生することが示されています。
ロン14

EEPROMの寿命は、データシートによると最低100,000書き込みサイクルです。100万回近くの書き込みで破損が始まったテストを読んだことを覚えていると思います。
user2973 14

10

24時間年中無休のArduinoの実行は問題になりません。

ただし、換気が可能なケースを用意し、換気の良い場所に保管してください。コンピューターと同じように、コンピューターを冷静に保つことができる環境に保管しないと、コンピューターは冷たくなりません。

サーバーの負荷も考慮する必要があります。サーバーの負荷が大きいほど、処理が多くなり、発生する熱も大きくなります。


3
ATmegaには通常のコンピューターのような従来の低電力モードがないため、負荷は関係ありません。アクティブな計算をしていない場合は、スピン待ちです。少なくともATmega MCUの場合、実行時の消費電力は実際にはほとんど静的です(EEPROM /フラッシュへの書き込みなどを除く)。トラフィックの負荷によって決定されるイーサネットインターフェースの消費電力にはばらつきがある場合がありますが、完全な真空状態またはヒーターなどで加熱しない限り、問題となるほど十分な熱は発生しません。
コナーウルフ

1
Atmega328pには、約0.1 uAを消費する低電力スリープモードがあります。
JRobert

2
これは、コードが実際にプロセッサをスリープ状態にする場合にのみ関連します。
クリスストラットン14

8

2011年後半から、インディアナ州ブルーミントンのBloominglabs HackerspaceでArduinoベースのRFIDアクセスシステムを実行しており、停電やソフトウェアアップデートが24時間実行されていることは別として問題ありません。さらに最近では、ネットワーク化されたサーモスタットを追加しました。これは24時間稼働しています。


私も24時間365日稼働するRFIDアクセスシステムを持っています。それが「失敗」するのは、主電源から実行されるため、電源が切れた場合だけです。これは2011年から問題なく実行されています。
ニックギャモン

ハハ、ちょっとスティーブ!
-deltaray

@NickGammonはい、あなたのシステムはクールですが、なぜ認証はカードのデータに基づいていないが、トークンUIDのみに基づいているのですか?賢い解決策を教えてください。
-user2497

あなたのポイントは何ですか?これは、ポスターの質問とは無関係です。
sdcharle

6

Arduinosは非常に長い間問題なく動作しますが、ローカルの条件と計算の強度によってはヒートシンクを取り付ける必要があります。

また、十分に換気してください。

使用しているプログラムにも依存します。サーバーが時々ページを提供している場合は問題になりませんが、一定のトラフィックが予想される場合は、Arduinoが急速に熱くなる可能性があります。

また、電源の安定性を確保する必要があります.Arduinoでベンチトップの実験を実行する場合、これは大きな問題ではありませんが、電源を主電源から恒久的な器具に変換する場合に問題になる可能性があります。


2
計算負荷によってArduinoが過熱することを期待する理由はまったくありません。より事実に基づいた回答で指摘されているように、通常のケースは全負荷で実行することです。過熱する可能性のあるコンポーネントが電圧レギュレータになりますが、それは主に入力電圧の関数です。何もしていないときに既に予想されるほぼ最大の電流で動作しているためです。
クリスストラットン14

@ChrisStratton aイーサネットシールドは、使用状況に応じて電力が異なる場合があります。また、Arduinoは低電力状態(たとえば、午前12時から午前5時までスリープ状態)になる可能性があります。
匿名のペンギン14

4

長い間Arduinoを実行したことはありませんが、問題はないはずです。気を付けるべきことの1つは、入力電圧です。

Arduinoは入力として7〜20vを処理できますが、12vを超えるものは長時間経過するとオーバーヒートし、ボードに損傷を与える可能性があります。Arduinoの過熱を避けるための迅速な推奨として、電圧を可能な限り7vに近づけます。


4

あまり頻繁には発生しないが、長期的な問題を引き起こす可能性のある問題について言及したいと思います。メモリリークとヒープフラグメンテーション。埋め込まれたものにmallocする人はほとんどいませんが、もしそうなら、それを正しく行います。


あなたは私を打ち負かした、+ 1。
hoosierEE

Stringクラスはmallocを使用しており、非常に一般的だと思います。
user2973 14

同意した。特にWebサーバーでは、Stringクラスを使用するなど、メモリを断片化する可能性のある操作を行わないでください。しかし、それを避けるのは簡単です。ガレージのドアが閉じているかどうかを知らせるために、WebサーバーとしてArduinoを実行しています。それは何年も実行されています。
ニックギャモン

4

最初のArduinoで簡単な電源モニターを構築しました。これは、WebサーバーからUSB経由で電力を供給され、Webサーバーは、かなりのバッテリーバックアップ(通知機能を持たない)から電力を供給されます。

また、UPS以外の電源ソケットに差し込まれた携帯電話充電器にも接続されます。

そのため、電源が切れると、Arduinoはサーバーで実行されている小さなプログラムにメッセージを送信します。サーバープログラムから電子メール通知が送信されます。

2013年9月下旬、2014年3月23日にインストールされました-最初のメールが届きました!

だから私は問題を見たことはありません(millis()を使用しません)が、5秒ごとに電力をサンプリングします。


1

Arduinoは24時間365日稼働できますか?

これは信頼性の質問です。信頼性には、考慮すべきことがたくさんあります。

  1. ソフトウェア。より堅牢なソフトウェアがあります。堅牢性の低いソフトウェアがあります。たとえば、重要なアプリケーションの場合、メモリの断片化につながる可能性があるため、動的なメモリ割り当ては推奨されません。残念ながら、Arduinoは動的メモリ割り当てに大きく依存しています。ほとんどのArduinoボードのRAMは非常に限られているため、この問題は悪化します。
  2. ライブラリ。多くのArduinoライブラリにはバグがあります(Arduinoパッケージに組み込まれているものでさえ、WStringと同じくらい簡単です!)。通常の操作では、このようなバグはまったく表示されない場合があります。ただし、「すべてがうまくいく」ことや、「ユーザー」(またはサブシステム)が予測どおりに動作することを期待することはできません。ライブラリには制限があります(つまり、適切にバグではありません)。たとえば、多くのユーザーは、50日後にリセットされるmillis()関数を既に引用しています。これは、正しく処理されない場合、重大なバグにつながる可能性があります。
  3. ハードウェアの信頼性(安価なArduinoクローンについても話さない...)。ここで、サブクラスの新しいクラスが開きます。非常に限られたサブセットのみを引用します。
    • Arduinoボードは信頼性のために設計されていますか?(たとえば
      、使用済みコンデンサーやその他のコンポーネントの信頼性はどうですか?)
    • EMIに対する堅牢性 私はそれに依存しません。ほとんどのArduinoボードには2層しかなく、適切なグランド/電源プレーンがありません。
    • EEPROM(これはソフトウェアとハ​​ードウェアの両方です)。ソフトウェアはEEPROMを使用していますか?サイクリング(同じセルでの書き込み/消去の繰り返し)を防ぐためのアルゴリズムを実装していますか?
    • フラッシュメモリの保持時間。保持時間は、温度とともに、プログラミングサイクルの数とともに減少します。
    • 電離放射線。はい、少なくとも海面での確率が非常に低い場合でも、放射線誘発性のシングルイベントアップセットの確率はゼロではなく、適切な対策を講じる必要があります(特に、RAMにハードウェアエラー検出がないことを考慮してください) )重要なアプリケーション。
    • 電源の品質。
    • 動作環境。25°Cで制御された環境ですか、それとも屋根の上の黒い箱の中(夏は太陽の下で70°C)?温度が高いほど、すべての劣化メカニズムが速くなります。
    • ...

それでも、あなたのarduinoが何年も問題なく動作するのであれば、驚かないでください。しかし、これはすべてのarduinoが保証するわけではありません。

いくつかの対策により、信頼性が向上します。

  • ウォッチドッグを使用してください:動かない/動作に問題があるシステムよりも、応答しないシステムをリセットする方が適切です。
  • メモリ割り当てを使用するライブラリを使用しないでください。
  • (EEPROMを使用する場合)それを保存するアルゴリズムを実装します!
  • 良い電源。
  • 過酷な環境(高温、高湿度、大きな連続した熱サイクルなど)を避けてください。

0

確実に24時間365日稼働できます。5Vピンに5Vを使用するか、Vinピンに7808を使用してvregをオフロードします。理想的には6.5Vですが、そのような電源はありません。ただし、電源投入時に小さなスパイクを吸収するために、5Vのデカップラーキャップが必要な場合があります。

5Vで動作するハードウェアが接続されている場合、7805を使用します。78XXの代わりにLM317またはLM350を使用できますが、これらにはいくつかの抵抗(おそらくトリムポット)が必要です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.