Apakah Arduino mampu menjalankan 24/7?

46

Saya membuat server web Arduino sederhana dan saya ingin selalu dihidupkan sepanjang waktu. Jadi harus bertahan untuk tetap bekerja terus menerus.

Saya menggunakan Arduino Uno dengan Ethernet Shield. Ditenagai dengan catu daya outlet sederhana 5V @ 1A.

Pertanyaan saya:

  • Apakah saya akan mengalami masalah dengan membiarkan Arduino dihidupkan sepanjang waktu?
  • Apakah ada papan Arduino lain yang lebih baik direkomendasikan untuk ini?
  • Apakah ada tindakan pencegahan yang perlu saya perhatikan terkait hal ini?
Butzke
sumber
Pertanyaan pertama!
TheDoctor
Catatan Moderator: kami sepertinya mendapatkan banyak jawaban yang menyatakan bahwa itu berhasil dalam situasi mereka. Jika Anda memiliki sesuatu yang teknis untuk ditambahkan ke pertanyaan, jangan ragu untuk menjawab. Namun, jawaban teknis tampaknya mencakup bahwa itu berhasil. Jika Anda benar - benar harus menyatakan bahwa situasi Anda berhasil, akan lebih baik untuk menambahkan komentar.
Penguin Anonim

Jawaban:

58

Anda seharusnya tidak memiliki masalah untuk menyimpannya sepanjang waktu, namun, beberapa hal yang perlu dipertimbangkan adalah penghitung yang Anda miliki, seperti penggunaan millis().

Dari dokumen Arduino pada milis :

Jumlah ini akan melimpah (kembali ke nol), setelah sekitar 50 hari.

Jadi untuk proyek-proyek yang ada untuk jangka waktu yang lama, Anda mungkin tidak melihat masalah segera tetapi sesuatu seperti ini dapat muncul dan menyebabkan kesalahan di jalan.

sachleen
sumber
19
Lebih tepatnya, milid adalah uint32_tvariabel, sehingga akan meluap ("kembali ke nol") dalam 4294967296 milidetik, yaitu ~ 49,7 hari, ~ 1193 jam atau ~ 71582 menit.
Connor Wolf
5
Maka yang harus Anda lakukan adalah menggunakan uint32_t lain yang bertambah ketika yang pertama bergulir. Maka Anda dapat menikmati sekitar 5,846 × 10 ^ 8 tahun antara rollover.
80HD
4
jika Anda melakukan millis () - startTime (dengan waktu mulai sebagai panjang yang tidak ditandatangani, alias uint32_t), Anda akan selalu mendapatkan hasil yang valid kecuali terjadi lebih dari satu overflow
Lesto
1
Untuk lebih tepatnya, luapan terjadi setelah 49 hari, 17 jam, 2 menit, 47 detik dan 295 milidetik.
Memet Olsen
4
Melimpah millis () tidak pernah menjadi masalah. Lihat millis () meluap ... hal yang buruk? untuk lebih jelasnya. Pada dasarnya jika Anda menghitung interval waktu dengan pengurangan, menggunakan tipe data yang sesuai, Anda tidak akan pernah memiliki masalah.
Nick Gammon
33

Beberapa hal yang perlu diingat (di luar dari @ Sachleen menyebutkan millis()):

  • Seperti elektronik lainnya, panas bisa mengganggu. Kontroler mikro itu sendiri kemungkinan tidak akan menjadi masalah besar dari sudut pandang panas, tetapi komponen lain seperti catu daya dapat menyebabkan masalah.

  • Jika kode Anda menggunakan EEPROM.write(), ketahuilah bahwa EEPROM di ATmega328P Uno Anda hanya diperingkat untuk 100.000 penulisan.

Matthew G.
sumber
12

Perlu diingat bahwa lampu kilat dan EEPROM memiliki masa hidup yang terbatas (masing-masing sekitar 10.000 dan 100.000 siklus tulis) sehingga jika Anda banyak menulis kepada mereka, mereka mungkin menjadi rusak. Dalam tes yang saya lakukan, EEPROM eksternal membutuhkan waktu sekitar 3 hari untuk mulai menjadi rusak.

Dokter
sumber
1
Sementara dokumentasi mungkin mencantumkan siklus 10rb, banyak tes menunjukkan ~ 100rb di mana masalah mulai terjadi.
Ron
Seumur hidup EEPROM adalah minimum 100.000 siklus tulis menurut lembar data. Saya pikir saya ingat membaca ujian di mana korupsi dimulai pada hampir satu juta tulisan.
user2973
10

Menjalankan Arduino 24/7 Seharusnya tidak menjadi masalah.

Tetapi pastikan Anda memiliki case yang memungkinkan ventilasi dan Anda menyimpannya di area yang berventilasi baik. Sama seperti komputer, jika Anda tidak menyimpannya di lingkungan yang dapat membuatnya tetap dingin, mereka tidak akan tetap dingin.

Beban server juga harus dipertimbangkan, semakin banyak beban pada server, semakin banyak pemrosesan yang harus dilakukan, dan semakin banyak panas yang dihasilkan.

JVarhol
sumber
3
ATmega tidak memiliki mode daya rendah tradisional seperti komputer biasa, jadi memuat tidak relevan. Jika Anda tidak melakukan perhitungan aktif, itu hanya menunggu giliran. Konsumsi daya saat menjalankan sebenarnya cukup banyak statis (kecuali hal-hal seperti menulis ke EEPROM / flash), setidaknya untuk ATmega MCU. Mungkin ada variasi dalam penarikan daya antarmuka ethernet yang ditentukan oleh pemuatan lalu lintas, tetapi tidak ada yang cenderung menghasilkan panas yang cukup untuk menjadi masalah kecuali itu dalam ruang hampa sempurna atau pada pemanas atau sesuatu.
Connor Wolf
1
Atmega328p memiliki mode sleep daya rendah yang menarik ~ 0,1 uA.
JRobert
2
Yang hanya akan relevan jika kode benar-benar membuat prosesor tidur.
Chris Stratton
8

Kami telah menjalankan sistem akses RFID berbasis Arduino kami di Bloominglabs Hackerspace di Bloomington IN sejak akhir 2011 dan selain dari beberapa pemadaman listrik dan pembaruan perangkat lunak yang berjalan sepanjang waktu, tidak ada masalah. Baru-baru ini kami menambahkan termostat jaringan, kesepakatan yang sama - ini bekerja sepanjang waktu.

sdcharle
sumber
Saya juga memiliki sistem akses RFID yang beroperasi 24/7. Satu-satunya waktu "gagal" adalah jika daya padam, karena itu berjalan dari daya listrik. Ini telah berjalan sejak 2011 tanpa masalah.
Nick Gammon
Haha, hei Steve!
deltaray
@NickGammon Ya, sistem Anda keren, tapi mengapa auth tidak berdasarkan kartu DATA, tetapi hanya token UID? Tolong tunjukkan kami solusi cerdas.
user2497
apa maksudmu itu tidak terkait dengan pertanyaan poster.
sdcharle
6

Arduino dapat berjalan tanpa masalah untuk waktu yang sangat lama, meskipun tergantung pada kondisi lokal dan intensitas perhitungan Anda mungkin harus memasang heat sink.

Selain itu, jaga ventilasi tetap baik.

Itu tergantung pada program yang digunakan juga, jika server Anda melayani halaman sekarang dan kemudian, itu seharusnya tidak menjadi masalah, tetapi jika Anda mengharapkan lalu lintas konstan maka Arduino dapat memanas dengan cepat.

Anda juga ingin memastikan kestabilan catu daya, saat menjalankan percobaan benchtop dengan Arduino ini bukan masalah besar, sedikit pun bisa menjadi masalah jika mengubah daya dari listrik untuk perlengkapan permanen.

Manishearth
sumber
2
Tidak ada alasan apa pun untuk mengharapkan beban komputasi menyebabkan Arduino terlalu panas. Seperti yang telah ditunjukkan dalam jawaban yang lebih berbasis fakta, kasus normal adalah berjalan dengan beban penuh. Jika ada komponen yang mungkin terlalu panas yang akan menjadi pengatur tegangan, tetapi itu terutama fungsi dari tegangan input, karena sudah berjalan pada arus yang diharapkan tertinggi ketika melakukan apa-apa.
Chris Stratton
@ ChrisStratton, perisai Ethernet mungkin beragam daya tergantung penggunaan. Juga, Arduino bisa dalam kondisi daya rendah (misalnya, tidur antara jam 12 pagi dan jam 5 pagi).
Penguin Anonim
4

Saya belum pernah menjalankan Arduino selama itu, tetapi seharusnya tidak ada masalah. Satu hal yang harus diperhatikan adalah tegangan input.

Sementara Arduino mampu menangani 7-20v sebagai input apa pun lebih dari 12v dapat menjadi terlalu panas setelah periode waktu yang lebih lama dan menyebabkan kerusakan papan. Sebagai rekomendasi cepat untuk menghindari overheating dari Arduino saya akan menjaga voltase sedekat mungkin dengan 7v.

Steven10172
sumber
4

Saya ingin menyebutkan masalah yang tidak sering muncul tetapi dapat menyebabkan masalah jangka panjang. Memory Leaks and Heap Fragmentation. Hampir tidak ada orang yang menyimpan barang tertanam di mall, tetapi jika Anda melakukannya, lakukan dengan benar.

EternityForest
sumber
Anda mengalahkan saya untuk itu, +1.
hoosierEE
Saya percaya kelas String menggunakan malloc dan itu cukup umum.
user2973
Sepakat. Terutama dengan server web, pastikan Anda tidak melakukan apa pun yang dapat memecah memori, seperti menggunakan kelas String. Namun mudah untuk menghindarinya. Saya memiliki Arduino yang berjalan sebagai server web untuk memberi tahu saya jika pintu garasi saya ditutup. Itu sudah berjalan bertahun-tahun.
Nick Gammon
4

Saya membangun monitor daya sederhana dengan Arduino pertama saya. Ini didukung melalui USB dari server web yang pada gilirannya diaktifkan melalui cadangan baterai yang cukup besar (yang tidak memiliki kemampuan pemberitahuan).

Perangkat ini juga terhubung ke pengisi daya ponsel yang terhubung ke soket daya non-UPS.

Jadi, jika daya mati Arduino mengirim pesan ke program kecil yang berjalan di server. Program server pada gilirannya mengirimi saya pemberitahuan email.

Itu diinstal pada akhir September 2013, pada 23 Maret 2014 - Saya mendapat email pertama saya!

Jadi saya belum melihat masalah (tidak menggunakan millis ()) tetapi sampel daya setiap 5 detik.

TimboTinkerer
sumber
1

Apakah Arduino mampu menjalankan 24/7?

Ini adalah pertanyaan reliabilitas. Dalam keandalan, ada banyak hal yang perlu dipertimbangkan.

  1. Perangkat lunak. Ada perangkat lunak yang lebih kuat. Ada perangkat lunak yang kurang kuat. Misalnya, untuk aplikasi kritis, alokasi memori dinamis tidak disarankan, karena dapat menyebabkan fragmentasi memori. Sayangnya, Arduino sangat bergantung pada alokasi memori dinamis. Masalah ini diperburuk karena sebagian besar papan Arduino memiliki RAM yang sangat terbatas.
  2. Perpustakaan. Banyak perpustakaan Arduino memiliki bug (bahkan yang ada di dalam paket Arduino, semudah WString!). Dalam operasi normal, bug semacam itu mungkin tidak muncul sama sekali. Namun, Anda tidak dapat berharap bahwa "semuanya akan baik-baik saja" dan bahwa "pengguna" (atau subsistem) akan bertindak sesuai prediksi. Perpustakaan juga dapat memiliki batasannya (yaitu bug yang tidak benar). Sebagai contoh, banyak pengguna sudah mengutip fungsi millis (), yang me-reset setelah 50 hari. Ini, jika tidak ditangani dengan benar, dapat menyebabkan bug yang parah.
  3. Keandalan perangkat keras (bahkan tidak berbicara tentang klon Arduino murah ...). Di sini kelas subquestions baru terbuka. Saya hanya akan mengutip subset yang sangat terbatas.
    • Apakah Dewan Arduino dirancang untuk keandalan? (misalnya apa
      keandalan kapasitor yang digunakan? dan komponen lainnya?)
    • Kekokohan terhadap EMI? Saya tidak akan bergantung pada itu: sebagian besar papan Arduino hanya memiliki dua lapisan, dan kurangnya landasan / kekuatan pesawat yang tepat.
    • EEPROM (ini adalah perangkat lunak dan perangkat keras). Apakah perangkat lunak Anda menggunakan EEPROM? Apakah menerapkan beberapa algoritma untuk mencegah siklus (penulisan / penghapusan berulang pada sel yang sama)?
    • Waktu retensi memori flash. Waktu retensi berkurang dengan suhu, dan juga dengan jumlah siklus pemrograman.
    • Radiasi pengion. Ya, bahkan jika probabilitasnya SANGAT rendah, setidaknya di permukaan laut, probabilitas gangguan karena peristiwa tunggal yang diinduksi radiasi tidak nol, dan itu harus diambil tindakan pencegahan yang memadai (terutama dipertimbangkan bahwa RAM tidak memiliki deteksi kesalahan perangkat keras ) dalam aplikasi kritis.
    • Kualitas catu daya.
    • Lingkungan operasi. Lingkungan terkontrol 25 ° C, atau dalam kotak hitam di atas atap (70 ° C di bawah matahari di musim panas)? Semakin tinggi suhunya, semakin cepat semua mekanisme degradasi.
    • ...

Namun, Anda tidak perlu heran jika arduino Anda akan bekerja dengan sempurna selama bertahun-tahun. Tetapi ini tidak memastikan bahwa setiap arduino akan melakukannya.

Beberapa tindakan pencegahan akan meningkatkan keandalan:

  • Gunakan Watchdog: lebih baik untuk mereset sistem yang tidak responsif, daripada memiliki yang macet / salah tingkah.
  • Hindari menggunakan perpustakaan apa pun yang menggunakan alokasi memori.
  • Terapkan (jika Anda menggunakan EEPROM) suatu algoritma untuk melestarikannya!
  • Catu daya yang bagus.
  • Hindari lingkungan yang keras (suhu tinggi, kelembaban tinggi, siklus termal besar dan terus menerus, dll).
hack berikutnya
sumber
0

Itu pasti bisa berjalan 24/7. Saya juga menggunakan 5V ke pin 5V, atau 7808 ke pin Vin untuk menurunkan beban vreg. Idealnya adalah 6.5V, tapi saya tidak punya persediaan seperti itu. Anda mungkin ingin topi decoupler pada 5V, untuk merendam paku kecil saat menyalakan pasokan Anda.

Setiap perangkat keras terpasang yang berjalan pada 5V, saya memberi makan dengan 7805. Anda dapat menggunakan LM317 atau LM350 sebagai pengganti 78XX, tetapi Anda akan memerlukan beberapa resistor untuk itu, mungkin trimpots.

pengguna2497
sumber