Isi kandungan:

Pengaturcaraan Arduino Over the Air (OTA) - Ameba Arduino: 4 Langkah
Pengaturcaraan Arduino Over the Air (OTA) - Ameba Arduino: 4 Langkah

Video: Pengaturcaraan Arduino Over the Air (OTA) - Ameba Arduino: 4 Langkah

Video: Pengaturcaraan Arduino Over the Air (OTA) - Ameba Arduino: 4 Langkah
Video: How to Perform the OTA Upload to an ESP32 Board Using Arduino Cloud 2024, November
Anonim
Pengaturcaraan Arduino Over the Air (OTA) - Ameba Arduino
Pengaturcaraan Arduino Over the Air (OTA) - Ameba Arduino

Terdapat banyak mikrokontroler Wi-Fi di luar sana di pasaran, banyak pembuat menikmati pemrograman mikrokontroler Wi-Fi mereka menggunakan Arduino IDE. Namun, salah satu ciri paling keren yang ditawarkan oleh mikrokontroler Wi-Fi cenderung diabaikan, iaitu memprogram dan memuat naik kod anda dari jauh dan tanpa wayar menggunakan fungsi OTA (Over-The-Air).

Dalam Instructable ini, saya akan menunjukkan kepada anda cara mengatur OTA pada mikrokontroler Wi-Fi anda menggunakan Arduino IDE di mana-mana di mikrokontroler Wi-Fi Ameba Arduino!

Bekalan

Ameba Arduino x 1

Langkah 1: OTA

OTA
OTA

OTA (Over-The-Air) merujuk kepada mekanisme peningkatan dalam talian melalui Internet.

Arduino IDE menawarkan ciri OTA, yang mengikuti aliran kerja pada gambar di atas.

(i) Arduino IDE mencari melalui mDNS untuk peranti dengan perkhidmatan Arduino IDEOTA di rangkaian tempatan.

(ii) Oleh kerana perkhidmatan mDNS dijalankan di Ameba, Ameba bertindak balas terhadap carian mDNS dan membuka port TCP khusus untuk sambungan.

(iii) Pengguna mengembangkan program di Arduino IDE. Setelah selesai, pilih port rangkaian.

(iv) Klik muat naik. Kemudian Arduino IDE menghantar gambar OTA ke Ameba melalui TCP, Ameba menyimpan gambar ke alamat tertentu dan menetapkan pilihan boot untuk boot dari gambar ini lain kali.

Aliran kerja terdiri daripada tiga bahagian: proses imej mDNS, TCP dan OTA. Perincian yang berkaitan dengan mDNS dijelaskan dalam tutorial mDNS. Pengaturcaraan soket TCP digunakan dalam memindahkan gambar dan sudah disediakan dalam OTA API.

Di bahagian seterusnya, kita akan membincangkan bagaimana memproses gambar OTA, dan memperkenalkan beberapa pengetahuan asas mengenai susun atur memori kilat Ameba dan aliran boot.

Langkah 2: Tata Letak Memori Flash Ameba

Tata Letak Memori Ameba Flash
Tata Letak Memori Ameba Flash

Saiz memori kilat Ameba RTL8195A adalah 2MB, antara 0x00000000 hingga 0x00200000. Walau bagaimanapun, saiz memori kilat Ameba RTL8710 adalah 1MB. Untuk menyesuaikan penggunaan papan yang berbeza, kami menganggap susun atur memori kilat adalah 1MB.

Seperti yang ditunjukkan dalam gambar di atas, program Ameba menempati tiga bahagian memori flash:

- Gambar Boot:

Iaitu pemuat but. Apabila Ameba boot, ia meletakkan imej boot ke memori dan melakukan inisialisasi. Selanjutnya, ia menentukan ke mana untuk meneruskan selepas bootloader. Bootloader melihat alamat OTA dan pin pemulihan di kawasan data sistem dan menentukan gambar yang akan dijalankan selepas itu. Pada akhir pemuat but, ia meletakkan gambar ke memori dan meneruskan untuk melaksanakannya.

- Gambar Lalai 2 :

Kod pemaju diletakkan di bahagian ini, alamatnya bermula dari 0x0000B000. 16 bait pertama adalah tajuk gambar, 0x0000B008 ~ 0x0000B00F merangkumi Tandatangan, yang digunakan untuk mengesahkan sama ada gambar itu sah. Medan tandatangan mempunyai dua nilai yang sah untuk membezakan gambar baru dari gambar lama.

- Gambar OTA:

Data di bahagian ini juga merupakan kod pembangun. Secara lalai, bahagian memori ini bermula dari 0x00080000 (boleh diubah). Perbezaan utama antara gambar OTA dan Imej Lalai 2 adalah alamat memori kilat dan nilai Tandatangan.

Selain kod, terdapat beberapa blok data:

- Data Sistem:

Blok data sistem bermula dari 0x00009000. Terdapat dua data yang berkaitan dengan OTA:

1. Alamat OTA: Data 4 byte bermula dari 0x00009000. Ia memberitahu alamat Gambar OTA. Sekiranya nilai alamat OTA tidak sah (iaitu, 0xFFFFFFFF), gambar OTA dalam memori kilat tidak dapat dimuat dengan betul.

2. Pin Pemulihan: Data 4 byte mulai dari 0x00009008, Pin pemulihan digunakan untuk menentukan gambar mana (gambar default 2 atau Gambar OTA) yang akan dijalankan ketika kedua gambar tersebut valid. Sekiranya nilai pin pemulihan tidak sah (iaitu, 0xFFFFFFFF), gambar baru akan dilaksanakan secara lalai.

Data sistem akan dikeluarkan semasa kami memuat naik program ke Ameba melalui DAP. Iaitu, alamat OTA akan dikeluarkan dan Ameba akan menentukan bahawa tidak ada gambar OTA.

- Data Kalibrasi: Data penentukuran periferal ditempatkan di blok ini. Biasanya data ini tidak boleh dihapuskan.

Langkah 3: Aliran Boot

Aliran Boot
Aliran Boot

Dari gambar di atas, Kami membincangkan senario berikut: (i) OTA tidak digunakan, gunakan DAP untuk memuat naik program:

Dalam keadaan ini, bootloader memeriksa tandatangan gambar lalai 2 dan alamat OTA. Oleh kerana alamat OTA dikeluarkan, gambar lalai 2 akan dipilih untuk dilaksanakan.

(ii) Gambar OTA dipindahkan ke Ameba, alamat OTA diset dengan betul, pin pemulihan tidak ditetapkan:

Ameba telah menerima gambar yang dikemas kini melalui OTA, tandatangan gambar lalai 2 akan ditetapkan ke tandatangan lama.

Bootloader memeriksa tandatangan gambar lalai 2 dan alamat OTA. Ia akan mendapati alamat OTA mengandungi gambar OTA yang sah. Oleh kerana pin pemulihan tidak ditetapkan, ia memilih gambar baru (iaitu gambar OTA) yang akan dijalankan.

(iii) Gambar OTA dipindahkan ke Ameba, alamat OTA diset dengan betul, pin pemulihan ditetapkan:

Ameba telah menerima gambar yang dikemas kini melalui OTA, tandatangan gambar lalai 2 akan ditetapkan ke tandatangan lama.

Bootloader memeriksa tandatangan gambar lalai 2 dan alamat OTA. Ia akan mendapati alamat OTA mengandungi gambar OTA yang sah. Kemudian periksa nilai pin pemulihan. Sekiranya pin pemulihan disambungkan ke RENDAH, gambar baru (iaitu gambar OTA) akan dijalankan. Sekiranya pin pemulihan disambungkan ke TINGGI, gambar lama (iaitu gambar lalai 2) akan dijalankan.

Langkah 4: Contoh

Contohnya
Contohnya
Contohnya
Contohnya
Contohnya
Contohnya
Contohnya
Contohnya

Untuk menggunakan ciri OTA, sila tingkatkan firmware DAP ke versi> 0.7 (v0.7 tidak termasuk). Firmware DAP lalai kilang adalah versi 0.7. Ikuti arahan untuk menaik taraf firmware DAP:

Buka contoh: "Fail" -> "Contoh" -> "AmebaOTA" -> "ota_basic"

Isi maklumat ssid dan kata laluan dalam kod contoh untuk sambungan rangkaian.

Terdapat beberapa parameter yang berkaitan dengan OTA:

§ MY_VERSION_NUMBER: Pada versi pertama, kita harus menetapkan alamat OTA dan pin pemulihan. Oleh kerana kali ini kami memuat naik melalui USB adalah versi pertama, kami tidak perlu mengubah nilai ini.

§ OTA_PORT : Arduino IDE akan mencari Ameba melalui mDNS. Ameba akan memberitahu Arduino IDE bahawa ia membuka port TCP 5000 untuk menunggu gambar OTA.

§ RECOVERY_PIN : Konfigurasikan pin yang digunakan untuk pemulihan. Kami menggunakan pin 18 di sini.

Kemudian kami menggunakan program muat naik USB ke Ameba. Klik Alat -> Pelabuhan, periksa port bersiri untuk digunakan:

Harap maklum bahawa Arduino IDE menggunakan satu port untuk memuat naik program dan outputlog. Untuk mengelakkan situasi bahawa log tidak dapat dihasilkan ketika kita menggunakan OTA, kita menggunakan terminal port bersiri yang lain (mis., Tera term atau dempul) dan bukannya monitor bersiri untuk menonton mesej log.

Kemudian klik muat naik dan tekan butang set semula.

Dalam mesej log:

1. Di antara “===== Masukkan Gambar 1 ====” dan “Masukkan Gambar 2 ====”, anda dapat mencari “Gambar Imej 2: Tambah 0xb000”. Ini bermakna Ameba memutuskan untuk boot dari Default Image 2 pada 0xb000.

2. Setelah "Masukkan Gambar 2 ====", anda dapat mencari "Ini adalah versi 1". Ini adalah mesej log yang kami tambahkan dalam lakaran.

3. Setelah Ameba disambungkan ke AP dan mendapat alamat IP "192.168.1.238", ia mengaktifkan mDNS dan menunggu pelanggan.

Seterusnya, kami mengubah suai "MY_VERSION_NUMBER" menjadi 2.

Klik "Tools" -> "Port", anda dapat melihat senarai "Port rangkaian". Cari "MyAmeba di 192.168.1.238 (Ameba RTL8195A)", MyAmeba adalah nama peranti mDNS yang kami tetapkan dalam contoh kod, dan "192.168.1.238" adalah IP Ameba.

Sekiranya anda tidak dapat menemui port rangkaian Ameba, sila sahkan:

- adakah komputer dan Ameba anda berada dalam rangkaian tempatan yang sama?

- cuba mulakan semula Arduino IDE.

- periksa mesej log di Monitor Bersiri untuk melihat sama ada Ameba berjaya disambungkan ke AP.

Kemudian klik muat naik. Kali ini program akan dimuat naik melalui TCP. Di terminal log, anda dapat melihat maklumat sambungan pelanggan.

Apabila gambar OTA berjaya dimuat turun, Ameba akan reboot dan log seterusnya akan ditunjukkan di terminal log.

- Di antara "===== Masukkan Gambar 1 ====" dan "Masukkan Gambar 2 ====", Anda dapat melihat mesej log "Gambar Flash 2: Tambah 0x80000". Ini bermaksud Ameba memutuskan untuk boot dari OTA Image pada 0x80000.

- Setelah "Masukkan Gambar 2 ====", log "Ini adalah versi 2" adalah pesan yang kami tambahkan dalam lakaran.

Untuk pulih ke gambar sebelumnya setelah gambar OTA dimuat ke Ameba, sila sambungkan pin pulih yang kami tetapkan dalam lakaran (iaitu, pin 18) ke HIGH (3.3V), dan tekan reset.

Kemudian gambar Lalai 2 akan dipilih semasa boot. Perhatikan bahawa gambar OTA yang dimuat turun tidak dihapuskan, setelah pin pemulihan terputus dari TINGGI, gambar OTA akan dijalankan.

Kami merumuskan aliran pembangunan menggunakan OTA dalam gambar berikut.

Disyorkan: