Pembaruan Firmware Jauh Arduino Nano

8

Saya sedang mengerjakan Arduino Nano (memori flash 32Kb yang 2Kb digunakan oleh boot loader, 2Kb SRAM, 1Kb EEPROM) .

Micro-controller mengambil input dari perangkat listrik melalui modul RS485 dan memposting data yang dibaca ke server jauh menggunakan modul GPRS A6 . Produk seharusnya berinteraksi dengan server jarak jauh, memposting data pada interval waktu tertentu.

Saya telah menyelesaikan bagian integrasi dan perangkat berfungsi dengan baik, mengumpulkan data dan memposting di server (appx 10-15 Km jauhnya). Satu-satunya tantangan yang saya hadapi adalah jika ada 100 perangkat semacam itu dan saya perlu memperbarui firmware, menggunakan server jauh (atau mekanisme lain yang sesuai), bagaimana saya harus melanjutkannya.

Saya telah melalui banyak posting yang menyarankan menggunakan Arduino lain sebagai ISP, ini bisa menjadi pendekatan terakhir saya (karena akan meningkatkan biaya akhir produk).

Pembaruan firmware melalui udara masih belum jelas seperti pada komunitas Stack Exchange untuk pengendali mikro kelas bawah. Diskusi apa pun bisa sangat membantu bagi banyak orang.

Ashish K
sumber
Jelaskan "lokasi terpencil", 10 meter, 1 km, 10 km untuk pengguna?
Bence Kaulics
@BenceKaulics kami menggunakan modul GPRS untuk mengirim permintaan ke pengontrol mikro yang berjarak sekitar 10 Km.
Ashish K
3
Anda perlu menjelaskan kasus penggunaan Anda dengan lebih jelas, termasuk tumpukan perangkat lunak. Lihatlah pertanyaan - pertanyaan lainnya melalui pembaruan di udara .
Sean Houlihane
Apakah ini pengembangan baru, atau apakah Anda mencoba melakukan retrofit pada produk yang sudah ada?
Sean Houlihane
@ SeanHoulihane Ini adalah perkembangan baru. Saya bisa menggunakan mikro-controller (biaya menjadi satu-satunya batasan) yang dapat mengirim data ke server di lokasi yang jauh (10 Km). Saya telah menggunakan modul GPRS untuk mengirim data dan satu-satunya tantangan yang saya hadapi saat ini adalah bagaimana saya memperbarui firmware dari jarak jauh.
Ashish K

Jawaban:

9

Jawaban singkat: Itu mungkin.

Jawaban panjang: Ini rumit. Itu sebabnya banyak sekali implementasi yang sangat buruk di luar sana.

Paling tidak Anda memiliki dua langkah dalam setiap proses pembaruan jarak jauh / over-the-air.

  1. Mengirimkan firmware
  2. Menginstal firmware.

Tentu saja, ini adalah batas minimum absolut. Jika Anda bekerja di iterasi, itu juga langkah pertama yang sangat valid. Jika Anda memiliki lebih dari satu perangkat, Anda harus dapat mengaitkan firmware yang benar ke perangkat yang benar . Jika Anda ingin mengurangi kemungkinan bricking perangkat Anda, Anda akan ingin cara untuk memverifikasi keadaan perangkat Anda sebelum dan setelah pembaruan , Anda juga ingin mengamankan transportasi dan membuat transportasi seandal mungkin dan — tentu saja— memiliki strategi mundur jika terjadi kesalahan pembaruan .

Itulah lima langkah lagi yang membawa Anda menuju produk yang andal. Ada praktik terbaik di luar sana untuk hal-hal ini tetapi mereka bergantung pada lingkungan proyek Anda. Mungkin itu sesuatu yang murah dan tingkat kegagalan 5% pada pembaruan tidak apa-apa, mungkin itu alat pacu jantung dan bahkan satu kesalahan total tidak dapat diterima karena itu mengarah ke skenario yang fatal. Anda harus menemukan solusi untuk dasar-dasar yang sesuai dengan produk Anda.

Selain itu, ada lusinan hal yang perlu dipertimbangkan. Apakah Anda memiliki pelanggan? Apakah Anda harus memberi tahu mereka? Apakah mereka memiliki hak dalam memperbarui waktu / instalasi? Apakah perangkat Anda di berbagai negara? Apakah batasan hukum berlaku? Apakah standar normatif berlaku? Berapa banyak perangkat yang Anda perbarui? 1? Satu lusin? Ratusan? Jutaan?

Jika Anda memperbarui lima perangkat prosesnya bisa sangat cerewet. Jika Anda memperbarui jutaan yang bisa menjadi sangat mahal. Dan ya, itu memengaruhi apa yang saya sebutkan di atas sebagai langkah pertama, mentransmisikan firmware. Mungkin Anda memang membuat alat pacu jantung dan biaya proses ratusan pesan per pembaruan oke mempertimbangkan alternatifnya.

Itu hanya pertanyaan yang saya tuliskan dalam dua menit, jadi daftar ini tentu tidak lengkap. Maksud saya adalah tanpa informasi mengenai skenario kami tidak dapat membantu Anda dengan baik.

Helmar
sumber
Terima kasih banyak @Helmar, saya akan memperbarui pertanyaan dengan sedetail mungkin. Untuk pengontrol mikro yang tidak mendukung OS yang menjalankannya, pembaruan firmware jarak jauh masih samar dan solusi yang jelas tidak hanya akan membantu saya tetapi bagi banyak orang yang bekerja pada papan pengembangan low-end. Saya akan meminta Anda untuk memeriksanya setelah pembaruan juga.
Ashish K
1
Mungkin, asalkan platform mengizinkan flash untuk dipecah menjadi setidaknya 3 wilayah (atau Anda lebih suka berlari dari RAM saat Anda melakukan flash ulang, dan memiliki banyak suku cadang, atau JTAG yang dapat digunakan dari jarak jauh).
Sean Houlihane
@SeanHoulihane seri ATmega tidak dapat berjalan dari RAM.
Chris Stratton