題:
Arduino能夠運行24/7嗎?
Butzke
2014-02-12 04:24:10 UTC
view on stackexchange narkive permalink

我正在製作一個簡單的Arduino Web服務器,並且希望一直保持打開狀態。因此,它必須忍受持續工作。

我正在使用帶以太網屏蔽的Arduino Uno,它由5V @ 1A的簡單插座電源供電。

我的問題:

  • 將Arduino一直打開會不會有任何問題?
  • 為此是否還推薦了其他一些Arduino主板?
  • 我是否需要注意一些預防措施?這個嗎?
第一個問題!
**主持人注意:**我們似乎收到了很多答案,表明它在他們的情況下有效。如果您有技術要補充的問題,請隨時回答。但是,技術答案似乎涵蓋了它的工作原理。如果您絕對*必須*聲明您的情況有效,則最好添加一條評論。
十一 答案:
sachleen
2014-02-12 04:36:58 UTC
view on stackexchange narkive permalink

您不應該一直保持任何問題,但是要考慮的是您可能擁有的任何計數器,例如使用 millis()

從Millis上的 Arduino文檔

大約50天后,該數字將溢出(返回零)。

因此,對於長時間運行的項目,您可能不會立即看到問題,但可能會彈出這樣的問題,並在以後造成錯誤。

確切地說,毫秒是`uint32_t'變量,因此它將在4294967296毫秒(即〜49.7天,〜1193小時或〜71582分鐘)內溢出(“返回零”)。
然後您要做的就是使用另一個uint32_t,它會在第一次翻轉時增加,然後您可以享受兩次翻轉之間大約5.846×10 ^ 8年的時間。
很多時候,mills()過渡並不是真正的問題,因為人們傾向於使用millis()是相對的方式。它們將採用兩次millis()調用之間的差,或者將採用開始時間,並檢查millis()是否大於start + Time。算術轉換和millis()轉換通常會相互抵消,以使time2-time1準確無誤,即使它們之間沒有轉換,只要沒有兩次轉換即可。通常,如果您的代碼使用絕對的millis()值,則可以將其重構為使用相對的millis()邏輯。
如果執行millis()-startTime(開始時間為無符號長整數,也稱為uint32_t),則除非發生了多次溢出,否則始終會得到有效的結果
更準確地說,溢出發生在49天,17小時,2分鐘,47秒和295毫秒之後。
millis()溢出從來沒有問題。有關更多詳細信息,請參見[millis()溢出...是一件壞事?](http://www.gammon.com.au/millis)。基本上,如果您使用適當的數據類型通過減法計算時間間隔,則永遠不會有問題。
即使不直接使用“ millis”,我也不知道是否可以確定沒有一個導入的庫可以使用。
Matthew G.
2014-02-12 04:40:23 UTC
view on stackexchange narkive permalink

需要記住的幾件事(@Sachleen提到的 millis()之外):

  • 就像任何電子設備一樣,熱量可以破壞性的。從熱量的角度來看,微控制器本身不太可能成為一個大問題,但電源等其他組件可能會引起問題。

  • 如果您的代碼使用 EEPROM.write(),請注意,您Uno的ATmega328P中的EEPROM僅額定100,000次寫入。

TheDoctor
2014-02-12 04:54:56 UTC
view on stackexchange narkive permalink

請記住,閃存和EEPROM的壽命有限(分別約為10,000和100,000個寫入周期),因此,如果您對它們進行大量寫入,則它們可能會損壞。在我進行的測試中,外部EEPROM花費了大約3天的時間才開始損壞。

儘管文檔中可能列出了10k個週期,但許多測試表明,大約100k是開始出現問題的地方。
根據數據表,EEPROM壽命至少為100,000個寫週期。我想我記得曾經讀過一個測試,其中腐敗始於近百萬次寫入。
JVarhol
2014-02-12 04:47:08 UTC
view on stackexchange narkive permalink

運行Arduino 24/7應該沒問題。

但是請確保您有一個可以通風的箱子,並將其放在通風良好的地方。就像計算機一樣,如果您不將它們放置在可以使其保持涼爽的環境中,它們將不會保持涼爽。

服務器負載也是要考慮的事情,服務器上的負載越多,它必須執行的處理越多,並且產生的熱量就越多。

ATmega不像傳統計算機那樣具有傳統的低功耗模式,因此負載無關緊要。如果您不進行主動計算,那隻是在等待。至少對於ATmega MCU而言,運行時的功耗實際上幾乎是靜態的(除了諸如寫入EEPROM /閃存之類的事情)。以太網接口的功耗可能因流量負載而變化,但除非處於理想的真空狀態或在加熱器或類似物品上,否則不會產生足夠的熱量。
[Atmega328p](http://www.atmel.com/Images/Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet.pdf)具有低功耗消耗約0.1 uA的睡眠模式。
僅當代碼實際上使處理器進入睡眠狀態時,才有意義。
sdcharle
2014-07-17 20:08:02 UTC
view on stackexchange narkive permalink

自2011年下半年以來,我們一直在位於布盧明頓的Bloominglabs Hackerspace上運行基於Arduino的RFID訪問系統,除了幾次停電和軟件更新外,它不間斷運行。最近,我們添加了一個網絡恆溫器,價格相同-全天候運行。

我也有一個24/7全天候運行的RFID訪問系統。它唯一“出現故障”的情況是電源關閉,因為它使用的是市電。自2011年以來一直沒有問題。
哈哈,史蒂夫!
@NickGammon是的,您的系統很棒,但是為什麼auth不基於卡DATA,而僅基於令牌UID?請向我們展示一個明智的解決方案。
你想說什麼?這與發布者的問題無關。
Manishearth
2014-02-12 04:50:23 UTC
view on stackexchange narkive permalink

Arduino可以在很長一段時間內毫無問題地運行,儘管取決於局部條件和您可能必須連接散熱器的計算強度。

此外,請保持通風良好。

這也取決於所使用的程序,如果您的服務器時不時地在提供一個頁面,這應該不是問題,但是如果您希望流量持續不斷,那麼Arduino可能會迅速升溫。 p>

您還需要確保電源的穩定性,在使用Arduino進行台式實驗時,這不是一個大問題,如果將來自市電的電源轉換為永久性燈具,這可能會成為一個問題。 / p>

沒有任何理由期望計算負載導致Arduino過熱。正如在更多基於事實的答案中所指出的那樣,“正常”情況是在滿負荷下運行。如果有一個可能會過熱的組件將成為電壓調節器,但這主要是輸入電壓的函數,因為不執行任何操作時它已經以接近最高預期電流的速度運行。
@ChrisStratton以太網屏蔽可能會根據使用情況改變功率。另外,Arduino可能處於低功耗狀態(例如,在12AM和5AM之間休眠)。
Steven10172
2014-02-12 07:48:43 UTC
view on stackexchange narkive permalink

我從來沒有運行過Arduino這麼長時間,但是應該沒有問題。需要注意的一件事是輸入電壓。

儘管Arduino能夠處理7-20v,因為輸入超過12v的任何東西都會在較長時間後過熱並導致電路板損壞。作為避免Arduino過熱的快速建議,我會保持電壓盡可能接近7v。

EternityForest
2014-04-04 12:08:21 UTC
view on stackexchange narkive permalink

我想提到的問題很少出現,但是會引起長期問題。內存洩漏和堆碎片。幾乎沒有人在嵌入式內容中分配內存,但是如果您這樣做,請正確執行。

你擊敗了我,+ 1。
我相信String類使用malloc,這很常見。
同意特別是對於Web服務器,請確保不要做任何可能導致內存碎片的事情,例如使用String類。但是,很容易避免這種情況。我有一個作為網絡服務器運行的Arduino,讓我知道我的車庫門是否關閉。這已經運行了多年。
TimboTinkerer
2014-04-07 01:13:32 UTC
view on stackexchange narkive permalink

我用第一個Arduino構建了一個簡單的電源監控器。它由來自Web服務器的USB供電,而Web服務器又通過相當大的備用電池(不具有通知功能)供電。

它還連接至插入非充電接口的手機充電器。 -UPS電源插座。

因此,如果電源中斷,則Arduino會向服務器上運行的一個小程序發送一條消息。服務器程序依次向我發送電子郵件通知。

它已於2013年9月下旬安裝,2014年3月23日-我收到了第一封電子郵件!

所以我沒有看到一個問題(它不使用millis()),但確實每5秒對電源採樣一次。

next-hack
2017-09-02 21:53:46 UTC
view on stackexchange narkive permalink

Arduino能夠運行24/7嗎?

這是可靠性問題。在可靠性方面,有很多事情要考慮。

  1. 該軟件。有更強大的軟件。有功能較弱的軟件。例如,對於關鍵應用程序,不鼓勵動態內存分配,因為它可能導致內存碎片。不幸的是,Arduino嚴重依賴於動態內存分配。由於大多數Arduino開發板的RAM都非常有限,因此這個問題更加嚴重。
  2. 庫。許多Arduino庫確實存在bug(甚至是Arduino包中內置的bug,就像WString一樣簡單!)。在正常操作中,此類錯誤可能根本不會出現。但是,您不能指望“一切都會好起來”,而“用戶”(或子系統)將按預期運行。圖書館也可能有其局限性(即不正確的錯誤)。例如,許多用戶已經引用了themillis()函數,該函數將在50天后重置。如果處理不當,可能會導致嚴重的錯誤。
  3. 硬件的可靠性(甚至不談論廉價的Arduino克隆……)。此處將打開一類新的子問題。我只引用一個非常有限的子集。
    • Arduino板是否為可靠性而設計? (例如,用過的電容器和其他組件的可靠性如何?)
    • 抗EMI的堅固性?我不會依靠這一點:大多數Arduino板只有兩層,並且缺少適當的接地/電源層。
    • EEPROM(這既是軟件又是硬件)。您的軟件使用EEPROM嗎?是否正在實施某種算法來防止循環(在同一單元上重複寫入/擦除)?
    • 閃存的保留時間。保留時間隨溫度以及編程循環次數而減少。
    • 電離輻射。是的,即使概率非常低,至少在海平面上,輻射引起的單事件擾動的概率也不為零,並且應採取適當的對策(尤其要考慮到RAM沒有硬件錯誤檢測)
    • 電源質量。
    • 操作環境。是在25°C的受控環境下,還是在屋頂上的黑匣子中(夏季,在陽光下為70°C)?溫度越高,所有降解機理越快。
    • ...
  4. ol>

    arduino可以完美地工作很多年。但這並不能確保每個arduino都能做到。

    一些對策可以提高可靠性:

  • 使用看門狗:重置無響應的系統比卡住/異常的系統要好。
  • 避免使用任何使用內存分配的庫。
  • 實施(如果使用EEPROM)算法可以保留它!
  • 良好的電源。
  • 避免惡劣的環境(高溫,高濕,持續的大熱循環等)。
user2497
2017-11-05 02:34:11 UTC
view on stackexchange narkive permalink

它肯定可以運行24/7。我要么使用5V至5V引腳,要么使用7808至Vin引腳來減輕vreg的負擔。理想情況下,該電壓為6.5V,但我沒有此類電源。不過,您可能希望在5V上使用一個去耦器帽,以在給電源供電時吸收任何小的尖峰。的數量為78XX,但是您需要為這些電阻(也許是微調電位器)提供一些電阻。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...