Mengunduh pengontrol tanpa menggunakan konsol IDE Arduino

Pendahuluan

Ketika bekerja dengan pengontrol sistem terdistribusi, Anda sering harus me-restart pengontrol. Menggunakan konsol Arduino IDE untuk me-reboot oleh pelanggan sangat tidak nyaman, karena untuk setiap jenis pengontrol perlu untuk mengkonfigurasi (atau memeriksa) jenis papan dan nomor port COM, pekerjaan ini harus dilakukan oleh personel yang akrab dengan IDE, dan tidak setiap pelanggan ingin tahu bahwa sistem ini dibangun pada pengontrol Arduino.

Dalam karya ini, kami mempertimbangkan opsi untuk mengunduh pengontrol (Arduino pada Atmega328 dan Atmega32u4 dan pengontrol Teensy yang kompatibel) dalam perintah terpisah dan melalui file batch, tanpa menggunakan IDE.

Pengaturan papan komunikasi USB COM Arduino

Dengan mengatur saluran komunikasi serial, papan Arduino dapat dibagi menjadi papan dengan konverter USB-UART dan papan dengan mikrokontroler yang mendukung komunikasi USB tanpa konverter eksternal. Yang pertama termasuk Arduino UNO, Arduino NANO, Arduino Mini, Arduino UNO Ethernet, papan WiFi Arduino UNO berdasarkan mikrokontroler Atmega328 . Yang kedua adalah Arduino Leonardo, Arduino Micro, Arduino Yun Mini, Arduino Industrial 101, papan Arduino Leonardo Ethernet dengan pengontrol Atmega32u4 [1].

Unduh Arduino Controller (Atmega328) dengan avrdude.exe

Mengunduh file hex ke pengontrol Arduino dapat dilakukan dengan avrdude.exe . Program ini adalah bagian dari paket konsol IDE, misalnya Arduino versi 1.8.5. Loader avrdude.exe diluncurkan oleh cmd atau utilitas Command Prompt , yang diluncurkan seperti yang ditunjukkan pada Gambar 1.


Gambar 1 Contoh menjalankan utilitas Command Prompt.

Untuk mendapatkan contoh penulisan perintah untuk memuat kode hex ke pengontrol Arduino di komputer Anda, lengkapi urutan berikut.

• Hubungkan Arduino
• Unduh Arduino IDE
• Pilih jenis papan Arduino dari menu> Peralatan> Papan>
• Pilih port COM di papan dari menu> Peralatan> Port>
• Atur bendera unggah di tab Preferensi: Menu Arduino IDE> File> Preferensi> Tampilkan keluaran verbose selama> unggah
• Buka menu> Sketsa> Unggah
• Setelah pengunduhan selesai, di jendela output konsol IDE Arduino, temukan perintah dengan avrdude , tampilannya, misalnya, seperti ini:

C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avrdude -CC:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega328p -carduino -PCOM3 -b115200 -D -Uflash:w:C:\Users\user-2\AppData\Local\Temp\arduino_build_628118/Blink.ino.hex:i 

Untuk menjalankan perintah avrdude dengan utilitas Command Prompt, tanda kutip ganda harus dimasukkan dalam perintah, seperti yang ditunjukkan di bawah ini.

 "C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/<b>avrdude</b>" -"CC:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf" -v -patmega328p -carduino -PCOM3 -b115200 -D -Uflash:w:C:\Users\user-2\AppData\Local\Temp\arduino_build_628118/Blink.ino.hex:i 

Perintah di atas dapat digunakan untuk memuat program hex ke dalam pengontrol Arduino dengan chip Atmega328 dan konverter USB-UART yang terpisah. Untuk pengontrol dengan Atmega32u4 yang mendukung komunikasi USB tanpa konverter perangkat keras, langkah-langkah tambahan diperlukan untuk menjalankan perintah, yang dijelaskan di bawah ini di bagian yang sesuai.

Karena program yang dikompilasi - file hex disimpan dalam folder sementara file sementara konsol IDE terbuka (.. \ AppData \ Local \ Temp \ ..), lebih baik untuk menyalin file hex ke folder terpisah, salin avrdude.exe bootloader dan file avrdude.conf di sana .

Setelah memindahkan file (Gambar 2), misalnya, ke folder C: \ ArdIDE, perintah unduhan dengan jalur akses file yang diperbarui mengambil formulir, seperti yang ditunjukkan pada Gambar 3.

gambar
Gambar 2 Menempatkan bootloader dan file hex dalam folder terpisah.

gambar
Gambar 3 Meluncurkan bootloader avrdude dengan Command Prompt.

Pemuatan pengontrol yang sedikit dengan teensy_post_compile.exe loader
Setelah menginstal perangkat lunak Teensyduino untuk pengontrol Teensy , pengontrol yang sesuai muncul di daftar perangkat konsol Arduino IDE (lihat Gambar 4).

gambar
Gambar 4 Daftar pengontrol yang sangat kecil di konsol Arduino IDE.

Contoh penulisan perintah untuk memuat kode hex ke controller Teensy dapat diperoleh dengan mengikuti urutan yang ditunjukkan di atas untuk pengontrol Arduino. Di jendela output, Anda perlu menemukan sampel bootloader - perintah teensy_post_compile . Untuk unduhan offline, Anda dapat menyalin file yang diperlukan ke folder terpisah, misalnya, seperti yang ditunjukkan di bawah ini. File teensy_post_compile, teensy_post_compile.exe dan teensy.exe dapat diambil dari paket Arduino yang dilengkapi oleh aplikasi Teensy.

gambar

Di bawah ini adalah contoh perintah untuk mengunduh file hex Blink_1.ino dan Blink_2.ino ke dua pengontrol Teensy yang terhubung ke komputer melalui hub USB.

 "C:\TnsIDE/teensy_post_compile" -file=Blink_2.ino "-path=C:\TnsIDE" "-tools=C:\TnsIDE" -board=TEENSY31 -reboot -port=usb:0/1A0000/0/1/1/1 -portlabel=COM19 (Teensy 3.2) Serial -portprotocol=Teensy 

 "C:\TnsIDE/teensy_post_compile" -file=Blink_1.ino "-path=C:\TnsIDE" "-tools=C:\TnsIDE" -board=TEENSY31 -reboot -port=usb:0/1A0000/0/1/1/2 -portlabel=COM23 (Teensy 3.2) Serial -portprotocol=Teensy 

Dalam entri ini, port hub ditetapkan sebagai usb: 0 / 1A0000 / 0/1/1/1 dan usb: 0 / 1A0000 / 0/1/1/2.

Unduh Arduino Controller (Atmega32U4) dengan avrdude.exe

Papan Arduino UNO, Leonardo, Micro, dll. Didasarkan pada mikrokontroler ATmega32U4. Mikrokontroler ini memiliki saluran USB bawaan (USB 2.0 kecepatan penuh), oleh karena itu, mengunduh program ke dalamnya berbeda dari pemuatan yang dipertimbangkan ke dalam mikrokontroler ATmega328 melalui konverter USB-UART tambahan.

Misalnya, nomor port COM pengontrol Arduino tercantum dalam daftar manajer perangkat, misalnya.

gambar

Ketika port COM virtual dari Arduino pro Micro controller dibuka (dengan frekuensi transmisi 1200, ..., 9600, ... 115200 baud), controller diatur ulang dan program pengguna diluncurkan. Dalam lingkungan MATLAB, program pembuatan port virtual adalah sebagai berikut.

 % create port. s=serial('COM15','Baudrate',9600); % 115200 fopen(s); 

Setelah menutup port COM virtual dengan frekuensi tidak sama dengan 1200 baud, misalnya, seperti yang ditunjukkan di bawah ini

 fclose(s); delete(s); clear s 

Program pengguna controller dijalankan.

Mengatur ulang pengontrol dan memulai bootloader pengontrol dilakukan setelah membuka dan menutup port COM dengan frekuensi 12000 baud oleh lingkungan eksternal, misalnya, MATLAB, seperti ditunjukkan di bawah ini.

 % create port. s=serial('COM15','Baudrate',1200); % 115200 fopen(s); pause(1.5); fclose(s); delete(s); clear s 

Operasi yang sama dapat dilakukan dengan perintah mode , seperti yang ditunjukkan pada Gambar 5.

gambar
Gambar 5 Menjalankan perintah mode di Command Prompt. Perintah ini menetapkan frekuensi transmisi untuk port COM15 menjadi 1200 baud, yang menyebabkan pengontrol untuk mengatur ulang dan bootloader untuk memulai, dan juga untuk sementara mengubah nomor port virtual pengontrol dalam daftar perangkat.

Setelah menutup perintah port (fclose (s)), loader controller menciptakan port virtual (CDC) sendiri, yang muncul dalam daftar manajer perangkat dengan nomor baru sekitar 8 detik.

gambar

Setelah waktu keberadaan port virtual baru (8 detik), port COM dengan nomor asli dikembalikan ke daftar manajer perangkat.

gambar

Selama keberadaan port COM yang baru, melaluinya program pengguna dapat diunduh ke controller menggunakan perintah avrdude sampel dari konsol IDE Arduino. Mendapatkan contoh perintah bootloader avrdude dalam IDE Arduino mirip dengan opsi di atas untuk mikrokontroler Atmega328. Port virtual yang dibuat menghilang dari daftar perangkat setelah board dinyalakan kembali dan port COM dengan nomor asli dikembalikan ke daftar.

Bootloader juga dapat dimulai dengan menghubungkan pin RST dari papan Arduino ke GND ground.
Jika pengaturan ulang otomatis pengontrol (melalui pembuatan dan penonaktifan port COM pada frekuensi 1200 baud) tidak berfungsi, pemuatan perangkat (Arduino Leonardo, Arduino Pro Micro) berdasarkan mikrokontroler ATmega32U4 dapat dilakukan melalui konsol IDE Arduino dalam urutan berikut.

1. Tekan dan tahan tombol "Reset" (atau hubung singkat pin RST ke ground). Koneksi USB serial terputus. Port COM pengontrol hilang dari daftar manajer perangkat.

2. Tekan tombol gambar Unggah (Ctrl + U) Arduino IDE. Gambar 6 menunjukkan keadaan awal manajer perangkat (kiri) dan Arduino IDE (kanan) pada titik ini
gambar
Gambar 6 Nomor port COM di manajer perangkat dan indikasi proses kompilasi program di konsol IDE Arduino.

3. Tunggu hingga indikator status selesai mengkompilasi "Kompilasi" dan mulai mengunduh "Mengunggah", seperti yang ditunjukkan pada Gambar 7.

gambar
Gambar 7 Jumlah port COM sementara yang baru di manajer perangkat dan indikasi proses pemuatan program di konsol IDE Arduino.

4. Lepaskan tombol "Reset" (buka pin RST). Koneksi USB dipulihkan. Pengunduhan sedang berlangsung. Indikator menunjukkan akhir unggahan dengan frasa Selesai mengunggah (lihat Gambar 8)

gambar
Gambar 8 Nomor port COM di manajer perangkat dan indikasi penyelesaian pemuatan program di konsol IDE Arduino.

Mengunduh pengontrol melalui file kumpulan (perintah) bat

Pemuatan offline (tanpa menggunakan konsol IDE Arduino) dapat dilakukan menggunakan file batch (batch). Contoh file batch (dengan ekstensi kelelawar) untuk mengunduh file HEX ke dua pengontrol Arduino Pro Mikro (Atmega32u4) yang terhubung ke komputer melalui hub pertama, ke dua pengontrol yang kecil yang terhubung ke komputer melalui hub kedua, dan ke pengontrol Arduino UNO (Atmega328) di bawah. File HEX yang diunduh dan semua program yang diperlukan untuk ini sebelumnya ditempatkan di folder bersama yang ditunjukkan pada Gambar 9.

gambar
Gambar 9 Contoh konten folder untuk memuat offline 5 pengontrol: Arduino Pro Micro (Atmega32u4), Teensy, dan Arduino UNO (Atmega328)

File batch mcLoad.bat untuk memuat lima pengendali secara offline ditunjukkan di bawah ini. Satu penundaan kedua (TIMEOUT / T 1 / NOBREAK) ditambahkan sebelum memuat pengontrol Arduino Pro Micro. Jeda 2 detik dimasukkan sebelum memuat pengontrol Teensy kedua. Setelah semua pengontrol selesai memuat, jendela program Teensy.exe ditutup.

 echo OFF echo UPLOAD: Arduino Pro Micro 1 mode COM42 BAUD=12000 TIMEOUT /T 1 /NOBREAK avrdude -Cavrdude.conf -v -patmega32u4 -cavr109 -PCOM45 -b57600 -D -Uflash:w:micro.ino.hex:i echo UPLOAD: Arduino Pro Micro 2 mode COM43 BAUD=12000 TIMEOUT /T 1 /NOBREAK avrdude -Cavrdude.conf -v -patmega32u4 -cavr109 -PCOM44 -b57600 -D -Uflash:w:micro.ino.hex:i echo UPLOAD: Arduino UNO avrdude -Cavrdude.conf -v -patmega328p -carduino -PCOM3 -b115200 -D -Uflash:w: BlinkUNO.ino.hex:i echo UPLOAD: Teensy 1 "C:\mcLOAD/teensy_post_compile" -file=Blink_1_Teensy.ino "-path=C:\mcLOAD" "-tools=C:\mcLOAD" -board=TEENSY31 -reboot -port=usb:0/1A0000/0/1/1/2 -portlabel=COM23 (Teensy 3.2) Serial -portprotocol=Teensy REM Delay 2 seconds: TIMEOUT /T 2 /NOBREAK echo UPLOAD: Teensy 2 "C:\mcLOAD/teensy_post_compile" -file=Blink_2_Teensy.ino "-path=C:\mcLOAD" "-tools=C:\mcLOAD" -board=TEENSY31 -reboot -port=usb:0/1A0000/0/1/1/1 -portlabel=COM19 (Teensy 3.2) Serial -portprotocol=Teensy REM Close Teensy.exe taskkill /f /IM Teensy.exe 

Memutuskan sambungan pengontrol dari jalur USB tidak memengaruhi pemuatan pengontrol yang tersisa.

Untuk mengecualikan nama Arduino dari daftar manajer perangkat, misalnya, "Arduino UNO (COMX)", Anda dapat menggunakan program, misalnya, RegOwnersahipEx, atau klon perangkat keras pengontrol Arduino, misalnya, WAVGAT, yang ditunjukkan dalam daftar perangkat sebagai "USB-SERIAL CH340 (COMX) ) ”.

Daftar bibliografi

1. Perbandingan papan Arduino (tabel) digitrode.ru/arduino-comparison.html
2. Arduino Micro, shop.pimoroni.com/products/arduino-micro
3. Dr. Bob Davidov. Teknologi kontrol komputer dalam sistem teknis portalnp.ru/author/bobdavidov.

Source: https://habr.com/ru/post/id437360/


All Articles