Peningkatan over-the-air?

8

Saya ingin dapat meningkatkan perangkat lunak pada Arduino tanpa menyentuh perangkat secara fisik atau merangkai kabel. Bisakah itu dilakukan?

Akan memilih protokol nirkabel yang membuatnya paling mudah.

Johannes Ernst
sumber
Lihatlah Moteino .
Gerben
Terlihat sangat bagus.
Johannes Ernst
Saya telah memesan beberapa Moteinos, dan mudah-mudahan akan berkeliling untuk mencoba peningkatan dalam beberapa hari mendatang.
Johannes Ernst

Jawaban:

6

Solusi terbaik dan termudah yang saya temukan adalah menggunakan Bluefruit EZ-Link dari Adafruit. Mereka memiliki modul yang Anda tancapkan ke pin Serial / Power / reset ( tautan di sini ) atau pelindung untuk uno ( tautan di sini ). Mereka juga punya deskripsi yang bagus dan panduan cara ( tautan di sini ) yang cukup bagus. Ini pada dasarnya muncul sebagai tautan bluetooth serial di arduino IDE dan Anda memprogramnya seperti biasa. Ini memiliki manfaat tambahan karena tidak hanya digunakan untuk pemrograman, tetapi juga untuk mengirim dan menerima data.

mwwalk
sumber
4

Kami telah mengimplementasikan pembaruan jarak jauh pada Arduino Pro Mini (ATMega328P) dengan memasukkan perintah "boot" ke dalam firmware normal. Cara kerjanya adalah:

  • Tuan rumah mengirimkan perintah "boot" ke Arduino jarak jauh.
  • Arduino melompat ke boot loader (alamat program 0x3C00 untuk Pro Mini)
  • Tuan rumah mengirimkan firmware baru melalui tautan menggunakan avrdude (protokol AVR109)

Ini tidak memerlukan boot loader atau perangkat keras baru. Ini bukan solusi yang baik untuk perangkat komersial, karena jika firmware yang diunggah rusak, papan tidak akan dapat dimasukkan ke mode boot loader tanpa hard reset.

Beberapa perangkat komunikasi nirkabel, seperti XBees, memiliki GPIO yang dapat diubah dari jarak jauh. Menghubungkan ini ke pin reset Arduino akan memungkinkan board untuk diatur ulang ke boot loader.

geometrikal
sumber
3

The Arduino Yun bisa jarak jauh reflashed (baik melalui wifi atau kabel jaringan): Anda harus memilih alamat IP-nya di bawah "Tools> Board" menu dari Arduino IDE dan kemudian tekan tombol upload seperti biasa.

Federico Fissore
sumber
2

Dimungkinkan untuk menulis bootloader yang berjalan di RAM (atau bahkan di Flash, mungkin di blok boot khusus - tergantung pada mikrokontroler).
Bootloader ini harus dapat membangun komunikasi nirkabel, memahami protokol dan menghapus / menulis memori Flash.
Pada dasarnya ada dua pendekatan untuk peningkatan perangkat lunak:

  1. Bootloader mencari startup untuk perintah "peningkatan perangkat lunak". Jika diterima, ia menunggu urutan pemrograman. Jika tidak diterima, itu memulai aplikasi.
  2. Aplikasi ini dapat menerima perintah seperti itu dan memberikan kontrol ke bootloader.

Protokol apa yang Anda pilih hampir tidak relevan. Pastikan ada cukup sumber daya untuk menyimpannya di RAM / Flash. Pada hak karena Arduino - misalnya - ada lebih dari cukup sumber daya untuk implementasi semacam itu.

mik
sumber
Ah! Apakah Anda mengetahui beberapa kode yang tersedia secara bebas yang mengimplementasikan hal semacam itu di suatu tempat?
Johannes Ernst
1

Ya, itu bisa dilakukan. Lowpowerlab.com memiliki Moteino yang dapat diprogram OTA.

Jose Leon
sumber
1

Papan Spark.io juga sangat bagus untuk perangkat mirip Arduino yang dapat diprogram OTA. Saya punya satu dan menemukannya cukup mudah untuk dikerjakan.

https://www.spark.io/

sdcharle
sumber