Чи здатний Arduino працювати 24/7?


46

Я роблю простий веб-сервер Arduino і хочу постійно його включати. Тож треба тривати, щоб постійно працювати.

Я використовую Arduino Uno з Ethernet Shield. Він живиться від простого джерела живлення 5В @ 1A.

Мої запитання:

  • Чи будуть у мене якісь проблеми залишати Arduino увімкненим весь час?
  • Чи є якась інша дошка Arduino, рекомендована для цього?
  • Чи є якісь обережні заходи, які мені потрібно прислухатися до цього?

Перше питання!
TheDoctor

Примітка модератора: ми, здається, отримуємо багато відповідей, які стверджують, що це спрацювало в їхній ситуації. Якщо у вас є щось технічне, щоб додати питання, сміливо відповідайте. Однак технічні відповіді, схоже, охоплюють, що це працює. Якщо ви абсолютно зобов'язані констатувати, що ваша ситуація спрацювала, було б краще додати коментар.
Анонімний пінгвін

Відповіді:


58

У вас не повинно виникнути жодних проблем із його збереженням, однак, слід врахувати, що у вас є лічильники, наприклад, у використанні millis().

З документів Arduino на мілісах :

Приблизно через 50 днів ця кількість переповниться (повернеться до нуля).

Тож для проектів, які тривалий час, ви можете не побачити проблему одразу, але щось подібне може спливати і викликати помилки в дорозі.


19
Якщо бути точним, міліс - це uint32_tзмінна величина, тому вона переллється ("повернеться до нуля") за 4294967296 мілісекунд, що становить ~ 49,7 дня, ~ 1193 годин або ~ 71582 хвилин.
Вонор Коннор

5
Тоді все, що вам потрібно зробити, - це використовувати інший uint32_t, який збільшується, коли перший перевертається. Тоді ви можете насолоджуватися приблизно 5.846 × 10 ^ 8 років між перекиданнями.
80ХД

4
якщо ви зробите millis () - startTime (з часом запуску як без підпису, так і uint32_t), ви завжди отримаєте дійсний результат, якщо не відбудеться більше одного переливу
Lesto

1
Якщо точніше, переповнення відбувається через 49 днів, 17 годин, 2 хвилини, 47 секунд і 295 мілісекунд.
Memet Olsen

4
Переповнення millis () ніколи не повинно бути проблемою. Бачити переповнення millis () ... погана річ? для отримання детальної інформації. В основному, якщо ви обчислюєте часові інтервали відніманням, використовуючи відповідні типи даних, у вас ніколи не виникне проблеми.
Нік Гаммон

33

Пару речей, про які слід пам’ятати (поза згадкою про @ Sachleen millis()):

  • Як і будь-яка електроніка, тепло може бути руйнівним. Мікроконтролер, ймовірно, не стане великою проблемою з точки зору тепла, але інші компоненти, такі як джерело живлення, можуть спричинити проблеми.

  • Якщо використовується ваш код EEPROM.write(), майте на увазі, що EEPROM у ATmega328P вашого Uno має оцінку лише 100 000 записів.


12

Пам’ятайте, що спалах та EEPROM мають обмежений термін служби (приблизно 10 000 та 100 000 циклів запису відповідно), тож якщо ви багато пишете на них, вони можуть пошкодитися. У тесті, який я зробив, зовнішньому EEPROM знадобилося близько 3 днів, щоб почати пошкоджуватися.


1
Хоча в документації можуть бути перераховані цикли 10k, багато тестів показали, що ~ 100k саме там починають виникати проблеми.
Рон

Термін служби EEPROM - це мінімум 100 000 циклів запису згідно з таблицею. Я думаю, що пам’ятаю, як читав тест, де корупція почалася майже на мільйон.
user2973

10

Запуск Arduino 24/7 не повинен бути проблемою.

Але будьте впевнені, що у вас є корпус, який дозволяє здійснювати вентиляцію, і ви зберігаєте його у добре провітрюваному приміщенні. Так само, як і комп’ютери, якщо ви не будете тримати їх в оточенні, яке може підтримувати їх круто, вони не залишаться прохолодними.

Також слід враховувати навантаження на сервер, чим більше навантаження на сервер, тим більше обробці він повинен робити, і тим більше тепла буде виробляти.


3
У ATmega немає традиційних режимів малої потужності, як у звичайних комп'ютерів, тому навантаження не має значення. Якщо ви не робите активних обчислень, це просто чекання. Споживання енергії під час бігу насправді майже статичне (за винятком таких речей, як запис у EEPROM / flash), принаймні для ATmega MCU. Можливі зміни в потужності інтерфейсу Ethernet, що визначається завантаженням трафіку, але нічого, швидше за все, не генерує достатньо тепла, щоб це було проблемою, якщо воно не знаходиться в ідеальному вакуумі або на нагрівачі чи іншому.
Вонор Коннор

1
Atmega328p має режим сну з низькою потужністю, який тягне ~ 0,1 мкА.
JRobert

2
Що було б доречно лише в тому випадку, якщо код насправді переводить процесор у режим сну.
Кріс Страттон

8

Ми працювали на нашій Arduino системі доступу RFID в Bloominglabs Hackerspace в Bloomington IN з кінця 2011 року, окрім пари відключень електроенергії та оновлень програмного забезпечення, які вона працює цілодобово, без проблем. Зовсім недавно ми додали мережевий термостат, та сама угода - він працює цілодобово.


У мене теж є система доступу RFID, яка працює 24/7. Єдиний раз, коли він "виходить з ладу", це якщо електроживлення відключається, оскільки воно працює від електромережі. Це триває з 2011 року, без проблем.
Нік Гаммон

Ха-ха, ей Стів!
дельтарай

@NickGammon Так, ваша система крута, але чому auth не базується на даних DATA картки, а лише на UID-маркері? Будь ласка, покажіть нам розумне рішення.
user2497

який твій погляд? це не пов'язане з питанням афіші.
sdcharle

6

Arduinos може працювати без проблем протягом дуже тривалого часу, хоча, залежно від місцевих умов та інтенсивності обчислень, вам, можливо, доведеться приєднувати радіатори.

Крім того, тримайте його добре провітрюваним.

Це також залежить від програми, яка використовується, якщо ваш сервер час від часу обслуговує сторінку, це не повинно бути проблемою, але якщо ви очікуєте постійного трафіку, то Arduino може швидко нагріватися.

Ви також хочете забезпечити стабільність електроживлення, якщо експерименти на аркадіно з ардуїно на стільниці це не велика проблема, але це може стати проблемою, якщо перетворити живлення від електромережі на постійне кріплення.


2
Немає жодної причини очікувати, що обчислювальне навантаження призведе до перегріву ардуїно. Як було зазначено у більш відповідях, що ґрунтуються на фактах, звичайний випадок - це працювати з повним навантаженням. Якщо є компонент, який може перегріватися, це буде регулятор напруги, але це в першу чергу функція вхідної напруги, оскільки він працює майже на найвищому очікуваному струмі, коли нічого не робить.
Кріс Страттон

@ChrisStratton Щит Ethernet може змінювати потужність залежно від використання. Також Arduino може перебувати в умовах низької потужності (наприклад, спати між 12:00 та 5:00 ранку).
Анонімний пінгвін

4

Я так довго не керував Ардуїно, але проблем не повинно бути. Одне, на що слід стежити - це вхідна напруга.

У той час як Arduino здатний обробляти 7-20V, оскільки вхід все, що перевищує 12 В, може перегріватися через триваліші періоди часу і призвести до пошкодження плати. Як швидка рекомендація, щоб уникнути перегріву Arduino, я б тримав напругу якомога ближче до 7В.


4

Я хотів би згадати проблему, яка виникає не дуже часто, але може викликати довгострокові проблеми. Витоки пам'яті та фрагментація купи. Майже ніхто не зловживає вбудованими матеріалами, але якщо ви це зробите, зробіть це правильно.


Ти мене побив, +1.
hoosierEE

Я вважаю, що клас String використовує malloc, і це досить часто.
user2973

Домовились. Особливо, використовуючи веб-сервер, переконайтеся, що ви не зробите нічого, що може фрагментувати пам'ять, як, наприклад, використовувати клас String. Однак цього легко уникнути. У мене Arduino працює як веб-сервер, щоб повідомити мені, чи закриті мої гаражні двері. Це працює вже роками.
Нік Гаммон

4

Я створив простий монітор живлення зі своїм першим Arduino. Він живиться через USB від веб-сервера, що, в свою чергу, живиться через досить значну резервну батарею (яка не має можливостей оповіщення).

Він також підключений до зарядного пристрою для мобільних телефонів, підключеного до розетки, що не має джерела живлення.

Тож якщо потужність вмирає, Arduino надсилає повідомлення невеликій програмі, що працює на сервері. Серверна програма в свою чергу надсилає мені повідомлення електронною поштою.

Він був встановлений наприкінці вересня 2013 року, 23 березня 2014 року - я отримав свій перший електронний лист!

Тому я не бачив проблеми (не використовує millis ()), але він відбирає потужність кожні 5 секунд.


1

Чи здатний Arduino працювати 24/7?

Це питання надійності. У надійності є дуже багато, що варто врахувати.

  1. Програмне забезпечення. Є більш надійні програмні засоби. Є менш надійні програмні засоби. Наприклад, для критичних програм динамічний розподіл пам’яті не перешкоджає, оскільки це може призвести до фрагментації пам’яті. На жаль, Ардуїно багато в чому покладається на динамічне розподіл пам'яті. Ця проблема загострюється, оскільки більшість плат Arduino мають дуже обмежену оперативну пам'ять.
  2. Бібліотеки. У багатьох бібліотеках Arduino є помилки (навіть ті, що вбудовані в пакет Arduino, прості, як WString!). При нормальній роботі такі помилки можуть взагалі не з’являтися. Однак ви не можете сподіватися, що "все буде добре" і що "користувач" (або підсистема) буде діяти так, як було передбачено. Бібліотеки також можуть мати свої обмеження (тобто неправильно помилки). Наприклад, багато користувачів вже цитували функцію millis (), яка скидається через 50 днів. Якщо неправильно попрацювати, це може призвести до серйозних помилок.
  3. Надійність обладнання (навіть не кажучи про дешеві клони Arduino ...). Тут відкривається новий клас підпитів. Я наведу лише дуже обмежений підмножина.
    • Чи призначені дошки Arduino для надійності? (наприклад, яка
      надійність використовуваних конденсаторів? та інших компонентів?)
    • Міцність проти EMI? Я б не покладався на це: більшість дощок Arduino мають лише два шари та відсутність належної площини / потужності.
    • EEPROM (це і програмне, і апаратне забезпечення). Чи використовується ваше програмне забезпечення за допомогою EEPROM? Чи реалізується якийсь алгоритм для запобігання руху циклічного циклу (повторне записування / стирання в одних і тих же осередках)?
    • Час збереження флеш-пам’яті. Час утримування зменшується з температурою, а також із кількістю циклів програмування.
    • Іонізуюче випромінювання. Так, навіть якщо ймовірність ДУЖЕ низька, принаймні на рівні моря, ймовірність радіаційного розладу одного випадку не дорівнює нулю, і слід вживати адекватних контрзаходів (особливо враховуючи, що оперативна пам'ять не має апаратного виявлення помилок ) у критичних додатках.
    • Якість електроживлення.
    • Операційне середовище. Навколишнє середовище, що контролюється 25 ° C, чи у чорному ящику над дахом (70 ° C під сонцем влітку)? Чим вище температура, тим швидше всі механізми деградації.
    • ...

Тим не менш, ви не повинні дивуватися, якщо ваш ардуїно буде працювати бездоганно багато років. Але це не гарантує, що кожен ардуїно буде.

Деякі контрзаходи підвищують надійність:

  • Використовуйте сторожового собаку: краще скинути систему, що не реагує на чутливість, ніж застрягу / недоброзичливу.
  • Уникайте використання будь-якої бібліотеки, яка використовує розподіл пам'яті.
  • Реалізуйте (якщо ви використовуєте EEPROM) алгоритм для його збереження!
  • Гарне джерело живлення.
  • Уникайте суворих навколишніх середовищ (висока температура, висока вологість, великий та безперервний тепловий цикл тощо).

0

Це звичайно може працювати 24/7. Я або використовую 5V на 5V контактний, або 7808 на штирі Vin, щоб вивантажити vreg. В ідеалі це було б 6,5 В, але таких запасів у мене немає. Можливо, ви хочете, щоб кришка для роз'єднання на 5 В, щоб намочити незначні шипи при включенні живлення.

Будь-яке додане обладнання, яке працює на 5В, я харчуюся 7805. Ви можете використовувати LM317s або LM350s замість 78XX, але вам знадобиться кілька резисторів для цих, можливо, охайних.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.