PendahuluanKetika 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 ArduinoDengan 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.exeMengunduh 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 2 Menempatkan bootloader dan file hex dalam folder terpisah.
Gambar 3 Meluncurkan bootloader avrdude dengan Command Prompt.Pemuatan pengontrol yang sedikit dengan teensy_post_compile.exe loaderSetelah menginstal perangkat lunak
Teensyduino untuk pengontrol
Teensy , pengontrol yang sesuai muncul di daftar perangkat konsol Arduino IDE (lihat Gambar 4).
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.

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.exePapan 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.

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.
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.
Operasi yang sama dapat dilakukan dengan perintah
mode , seperti yang ditunjukkan pada Gambar 5.
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.

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

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

Unggah (Ctrl + U) Arduino IDE. Gambar 6 menunjukkan keadaan awal manajer perangkat (kiri) dan Arduino IDE (kanan) pada titik ini
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 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 8 Nomor port COM di manajer perangkat dan indikasi penyelesaian pemuatan program di konsol IDE Arduino.Mengunduh pengontrol melalui file kumpulan (perintah) batPemuatan 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 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 bibliografi1. Perbandingan papan Arduino (tabel)
digitrode.ru/arduino-comparison.html2. Arduino Micro,
shop.pimoroni.com/products/arduino-micro3. Dr. Bob Davidov. Teknologi kontrol komputer dalam sistem teknis portalnp.ru/author/bobdavidov.