PrésentationLorsque vous travaillez avec des contrôleurs d'un système distribué, vous devez souvent redémarrer les contrôleurs. L'utilisation de la console Arduino IDE pour le redémarrage par le client n'est pas très pratique, car pour chaque type de contrôleur, il est nécessaire de configurer (ou vérifier) le type de carte et les numéros de port COM, ce travail doit être effectué par du personnel familiarisé avec l'IDE, et tous les clients ne veulent pas savoir que le système est construit sur les contrôleurs Arduino.
Dans ce travail, nous considérons les options de téléchargement des contrôleurs (Arduino sur Atmega328 et Atmega32u4 et un contrôleur Teensy compatible) dans des commandes distinctes et via un fichier de commandes, sans utiliser l'IDE.
Disposition des cartes de communication USB COM ArduinoEn organisant le canal de communication série, les cartes Arduino peuvent être divisées en cartes avec un convertisseur USB-UART et en cartes avec des microcontrôleurs qui prennent en charge la communication USB sans convertisseurs externes. Les premiers incluent Arduino UNO, Arduino NANO, Arduino Mini, Arduino UNO Ethernet, Arduino UNO WiFi cartes basées sur des microcontrôleurs
Atmega328 . Les seconds sont les cartes Arduino Leonardo, Arduino Micro, Arduino Yun Mini, Arduino Industrial 101, Arduino Leonardo Ethernet avec contrôleurs
Atmega32u4 [1].
Télécharger le contrôleur Arduino (Atmega328) avec avrdude.exeLe téléchargement du fichier
hexadécimal sur le contrôleur Arduino peut être fait avec
avrdude.exe . Ce programme fait partie du package de la console IDE, par exemple, Arduino version 1.8.5. Le chargeur avrdude.exe est lancé par l'utilitaire
cmd ou
invite de commande , qui sont lancés comme illustré à la figure 1.
Figure 1 Un exemple d'exécution de l'utilitaire d'invite de commandes.Pour obtenir un exemple d'écriture d'une commande pour charger du code
hexadécimal dans un contrôleur Arduino sur votre ordinateur, procédez comme suit.
• Connectez Arduino
• Téléchargez l'IDE Arduino
• Sélectionnez un type de carte Arduino dans le menu> Outils> Carte>
• Sélectionnez le port COM sur la carte dans le menu> Outils> Port>
• Définissez le drapeau de téléchargement dans l'onglet Préférences: menu Arduino IDE> Fichier> Préférences> Afficher la sortie détaillée pendant> téléchargement
• Menu Lancer> Esquisse> Télécharger
• Une fois le téléchargement terminé, dans la fenêtre de sortie de la console Arduino IDE, recherchez la commande avec
avrdude , elle ressemble, par exemple, à ceci:
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
Pour exécuter la
commande avrdude avec l'utilitaire d'invite de commandes, des guillemets doubles doivent être entrés dans la commande, comme illustré ci-dessous.
"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
La commande ci-dessus peut être utilisée pour charger des programmes
hexadécimaux dans un contrôleur Arduino avec une puce Atmega328 et un convertisseur USB-UART séparé. Pour les contrôleurs avec Atmega32u4 qui prend en charge la communication USB sans convertisseur matériel, des étapes supplémentaires sont nécessaires pour exécuter la commande, qui sont décrites ci-dessous dans la section correspondante.
Étant donné que le programme compilé - le fichier hex est stocké dans le dossier des fichiers temporaires pendant que la console IDE est ouverte (.. \ AppData \ Local \ Temp \ ..), il est préférable de copier le fichier hex dans un dossier séparé, copiez le chargeur de démarrage avrdude.exe et le fichier avrdude.conf là-bas .
Après avoir déplacé les fichiers (figure 2), par exemple, vers le dossier C: \ ArdIDE, la commande de téléchargement avec les chemins d'accès aux fichiers mis à jour prend la forme, comme illustré à la figure 3.
Figure 2 Placer le chargeur de démarrage et le fichier hexadécimal dans un dossier séparé.
Figure 3 Lancement du chargeur de démarrage avrdude avec l'invite de commande.Chargement du contrôleur Teensy avec le chargeur teensy_post_compile.exeAprès avoir installé le logiciel
Teensyduino des contrôleurs
Teensy , les contrôleurs correspondants apparaissent dans la liste des périphériques de la console Arduino IDE (voir Figure 4).
Figure 4 Liste des contrôleurs Teensy dans la console Arduino IDE.Un exemple d'écriture d'une commande pour charger du code hexadécimal dans un contrôleur
Teensy peut être obtenu en suivant la séquence ci-dessus pour les contrôleurs Arduino. Dans la fenêtre de sortie, vous devez trouver l'exemple de chargeur de démarrage - la commande
teensy_post_compile . Pour le téléchargement hors ligne, vous pouvez copier les fichiers nécessaires dans un dossier séparé, par exemple, comme indiqué ci-dessous. Les fichiers teensy_post_compile, teensy_post_compile.exe et teensy.exe peuvent être extraits du package Arduino complété par l'application Teensy.

Vous trouverez ci-dessous des exemples de commandes de téléchargement de fichiers hexadécimaux Blink_1.ino et Blink_2.ino vers deux contrôleurs Teensy connectés à un ordinateur via un concentrateur 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
Dans ces entrées, les ports concentrateurs sont désignés comme usb: 0 / 1A0000 / 0/1/1/1 et usb: 0 / 1A0000 / 0/1/1/2.
Télécharger le contrôleur Arduino (Atmega32U4) avec avrdude.exeLes cartes Arduino UNO, Leonardo, Micro, etc. sont basées sur le microcontrôleur ATmega32U4. Ce microcontrôleur possède un canal USB intégré (USB 2.0 pleine vitesse), par conséquent, le téléchargement de programmes dans celui-ci diffère du chargement envisagé dans les microcontrôleurs ATmega328 via un convertisseur USB-UART supplémentaire.
Le numéro de port COM du contrôleur Arduino est répertorié dans la liste du gestionnaire de périphériques, par exemple.

Lorsque le port COM virtuel du contrôleur Arduino pro Micro est ouvert (avec n'importe quelle fréquence de transmission de 1200, ..., 9600, ... 115200 bauds), le contrôleur est réinitialisé et le programme utilisateur est lancé. Dans l'environnement MATLAB, le programme de création de port virtuel est le suivant.
Après avoir fermé le port COM virtuel avec une fréquence non égale à 1200 bauds, par exemple, comme indiqué ci-dessous
fclose(s); delete(s); clear s
Le programme utilisateur du contrôleur est exécuté.
La réinitialisation du contrôleur et le démarrage du chargeur de démarrage du contrôleur sont effectués après l'ouverture et la fermeture du port COM avec une fréquence de 12 000 bauds par l'environnement externe, par exemple MATLAB, comme illustré ci-dessous.
La même opération peut être effectuée avec la commande de
mode , comme le montre la figure 5.
Figure 5 Exécution de la commande de mode dans l'invite de commandes. La commande définit la fréquence de transmission pour le port COM15 sur 1200 bauds, ce qui provoque la réinitialisation du contrôleur et le démarrage du chargeur de démarrage, et modifie également temporairement les numéros de port virtuel du contrôleur dans la liste des périphériques.Après avoir fermé le port (commande fclose (s)), le chargeur du contrôleur crée son propre port virtuel (CDC), qui apparaît dans la liste du gestionnaire de périphériques avec un nouveau numéro pendant environ 8 secondes.

Après la durée d'existence du nouveau port virtuel (8 secondes), le port COM avec le numéro d'origine est renvoyé à la liste du gestionnaire de périphériques.

Pendant l'existence du nouveau port COM, le programme utilisateur peut être téléchargé via le contrôleur à l'aide de l'exemple de
commande avrdude de la console Arduino IDE. L'obtention d'un exemple de commande avrdude bootloader dans un IDE Arduino est similaire à l'option ci-dessus pour les microcontrôleurs Atmega328. Le port virtuel créé disparaît de la liste des périphériques après le redémarrage de la carte et le port COM avec le numéro d'origine est renvoyé à la liste.
Le chargeur de démarrage peut également être démarré en connectant la broche RST de la carte Arduino à la masse GND.
Si la réinitialisation automatique du contrôleur (en créant et en désactivant le port COM à une fréquence de 1200 bauds) ne fonctionne pas, le chargement des appareils (Arduino Leonardo, Arduino Pro Micro) basé sur le microcontrôleur ATmega32U4 peut être effectué via la console Arduino IDE dans l'ordre suivant.
1. Appuyez et maintenez le bouton «Reset» (ou court-circuitez la broche RST à la masse). La connexion série USB est déconnectée. Le port COM du contrôleur disparaît de la liste du gestionnaire de périphériques.
2. Appuyez sur le bouton

Téléchargez (Ctrl + U) Arduino IDE. La figure 6 montre l'état initial du gestionnaire de périphériques (à gauche) et de l'IDE Arduino (à droite) à ce stade
Figure 6 Le numéro de port COM dans le gestionnaire de périphériques et une indication du processus de compilation du programme dans la console Arduino IDE.3. Attendez que l'indicateur d'état termine la compilation de «Compilation» et procède au téléchargement de «Téléchargement», comme le montre la figure 7.
Figure 7 Le numéro du nouveau port COM temporaire dans le gestionnaire de périphériques et une indication du processus de chargement du programme dans la console Arduino IDE.4. Relâchez le bouton «Reset» (ouvrez la broche RST). La connexion USB est rétablie. Téléchargement en cours. L'indicateur indique la fin du téléchargement avec la phrase Terminé le téléchargement (voir figure 8)
Figure 8 Le numéro de port COM dans le gestionnaire de périphériques et une indication de la fin du chargement du programme dans la console Arduino IDE.Téléchargement des contrôleurs via un fichier bat (commande) batLe chargement hors ligne (sans utiliser la console Arduino IDE) peut être effectué à l'aide d'un fichier batch (batch). Un exemple de fichier batch (avec l'extension bat) pour télécharger des fichiers HEX sur deux contrôleurs Arduino Pro Micro (Atmega32u4) connectés à l'ordinateur via le premier concentrateur, à deux contrôleurs Teensy connectés à l'ordinateur via le deuxième concentrateur et au contrôleur Arduino UNO (Atmega328) ci-dessous. Les fichiers HEX téléchargés et tous les programmes nécessaires pour cela ont été précédemment placés dans le dossier partagé illustré à la figure 9.
Figure 9 Exemple de contenu d'un dossier pour le chargement hors ligne de 5 contrôleurs: Arduino Pro Micro (Atmega32u4), Teensy et Arduino UNO (Atmega328)
Le fichier de commandes mcLoad.bat pour le chargement hors ligne de cinq contrôleurs est illustré ci-dessous. Un délai d'une seconde (TIMEOUT / T 1 / NOBREAK) est ajouté avant le chargement des contrôleurs Arduino Pro Micro. Un délai de 2 secondes est entré avant le chargement du deuxième contrôleur Teensy. Une fois le chargement de tous les contrôleurs terminé, la fenêtre du programme Teensy.exe se ferme.
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
La déconnexion du contrôleur de la ligne USB n'affecte pas le chargement des contrôleurs restants.
Pour exclure le nom Arduino de la liste des gestionnaires de périphériques, par exemple «Arduino UNO (COMX)», vous pouvez utiliser des programmes, par exemple RegOwnersahipEx, ou des clones matériels de contrôleurs Arduino, par exemple WAVGAT, qui est indiqué dans la liste des périphériques comme «USB-SERIAL CH340 (COMX) ) ».
Liste bibliographique1. Comparaison des cartes Arduino (tableau)
digitrode.ru/arduino-comparison.html2. Arduino Micro,
shop.pimoroni.com/products/arduino-micro3. Dr. Bob Davidov. Technologies de contrôle informatique dans les systèmes techniques portalnp.ru/author/bobdavidov.