Programmation
L’Arduino Uno peut être programmé avec le (logiciel Arduino (IDE)). Sélectionnez « Arduino Uno » dans le menu Outils > Board (selon le microcontrôleur de votre carte). Pour plus de détails, consultez la référence et les tutoriels.
L’ATmega328 de l’Arduino Uno est livré préprogrammé avec un bootloader qui vous permet d’y charger un nouveau code sans utiliser de programmateur matériel externe. Il communique en utilisant le protocole STK500 original (référence, fichiers d’en-tête C).
Vous pouvez également contourner le bootloader et programmer le microcontrôleur via l’en-tête ICSP (In-Circuit Serial Programming) en utilisant Arduino ISP ou similaire ; voir ces instructions pour plus de détails.
Le code source du firmware ATmega16U2 (ou 8U2 sur les cartes rev1 et rev2) est disponible dans le dépôt Arduino. L’ATmega16U2/8U2 est chargé avec un chargeur de démarrage DFU, qui peut être activé en :
- Sur les cartes Rev1 : en connectant le cavalier de soudure à l’arrière de la carte (près de la carte d’Italie), puis en réinstallant le 8U2.
- Sur les cartes Rev2 ou ultérieures : il y a une résistance qui tire la ligne HWB du 8U2/16U2 à la masse, ce qui facilite la mise en mode DFU.
Vous pouvez ensuite utiliser le logiciel FLIP d’Atmel (Windows) ou le programmateur DFU (Mac OS X et Linux) pour charger un nouveau firmware. Ou vous pouvez utiliser l’en-tête ISP avec un programmateur externe (en écrasant le bootloader DFU). Consultez ce tutoriel fourni par l’utilisateur pour plus d’informations.
Avertissements
L’Arduino Uno possède un polyfusible réinitialisable qui protège les ports USB de votre ordinateur contre les courts-circuits et les surintensités. Bien que la plupart des ordinateurs fournissent leur propre protection interne, le fusible fournit une couche supplémentaire de protection. Si plus de 500 mA est appliqué au port USB, le fusible interrompra automatiquement la connexion jusqu’à ce que le court-circuit ou la surcharge soit supprimé.
Différences avec les autres cartes
L’Uno diffère de toutes les cartes précédentes en ce qu’elle n’utilise pas la puce pilote FTDI USB vers série. Au lieu de cela, elle comporte l’Atmega16U2 (Atmega8U2 jusqu’à la version R2) programmé comme un convertisseur USB-série.
Alimentation
La carte Arduino Uno peut être alimentée via la connexion USB ou avec une alimentation externe. La source d’alimentation est sélectionnée automatiquement.
L’alimentation externe (non USB) peut provenir soit d’un adaptateur secteur (wall-wart), soit d’une batterie. L’adaptateur peut être connecté en branchant une fiche positive centrale de 2,1 mm dans la prise d’alimentation de la carte. Les fils d’une batterie peuvent être insérés dans les têtes de broche GND et Vin du connecteur POWER.
La carte peut fonctionner sur une alimentation externe de 6 à 20 volts. Cependant, si elle est alimentée par moins de 7V, la broche 5V peut fournir moins de cinq volts et la carte peut devenir instable. Si vous utilisez plus de 12V, le régulateur de tension peut surchauffer et endommager la carte. La plage recommandée est de 7 à 12 volts.
Les broches d’alimentation sont les suivantes :
- Vin. La tension d’entrée de la carte Arduino lorsqu’elle utilise une source d’alimentation externe (par opposition aux 5 volts de la connexion USB ou d’une autre source d’alimentation régulée). Vous pouvez fournir une tension par cette broche, ou, si vous fournissez une tension via la prise d’alimentation, y accéder par cette broche.
- 5V.Cette broche sort un 5V régulé du régulateur de la carte. La carte peut être alimentée soit par la prise d’alimentation DC (7 – 12V), soit par le connecteur USB (5V), soit par la broche VIN de la carte (7-12V). L’alimentation par les broches 5V ou 3,3V contourne le régulateur, et peut endommager votre carte. Nous ne le conseillons pas.
- 3V3. Une alimentation de 3,3 volts générée par le régulateur embarqué. L’appel de courant maximum est de 50 mA.
- GND. Broches de masse.
- IOREF. Cette broche sur la carte Arduino fournit la référence de tension avec laquelle le microcontrôleur fonctionne. Un shield correctement configuré peut lire la tension de la broche IOREF et sélectionner la source d’alimentation appropriée ou activer des traducteurs de tension sur les sorties pour travailler avec le 5V ou le 3,3V.
Mémoire
L’ATmega328 dispose de 32 Ko (dont 0,5 Ko occupé par le bootloader). Il dispose également de 2 Ko de SRAM et de 1 Ko d’EEPROM (qui peut être lu et écrit avec la bibliothèque EEPROM).
Entrée et sortie
Voir le mapping entre les broches Arduino et les ports ATmega328P. Le mappage pour les Atmega8, 168 et 328 est identique.
Mappage des broches ATmega328P
Chacune des 14 broches numériques de l’Uno peut être utilisée comme entrée ou sortie, en utilisant les fonctions pinMode(),digitalWrite() et digitalRead(). Elles fonctionnent à 5 volts. Chaque broche peut fournir ou recevoir 20 mA comme condition de fonctionnement recommandée et possède une résistance pull-up interne (déconnectée par défaut) de 20-50k ohm. Un maximum de 40mA est la valeur qui ne doit être dépassée sur aucune broche d’E/S pour éviter des dommages permanents au microcontrôleur.
En outre, certaines broches ont des fonctions spécialisées :
L’Uno dispose de 6 entrées analogiques, étiquetées A0 à A5, qui fournissent chacune 10 bits de résolution (soit 1024 valeurs différentes). Par défaut, elles mesurent de la terre à 5 volts, bien qu’il soit possible de modifier l’extrémité supérieure de leur plage en utilisant la broche AREF et la fonction analogReference(). Il y a quelques autres broches sur la carte :
- AREF. Tension de référence pour les entrées analogiques. Utilisée avec analogReference().
- Reset. Amenez cette ligne BAS pour réinitialiser le microcontrôleur. Typiquement utilisé pour ajouter un bouton de réinitialisation aux shields qui bloquent celui de la carte.
Communication
L’Arduino Uno possède un certain nombre de facilités pour communiquer avec un ordinateur, une autre carte Arduino ou d’autres microcontrôleurs. L’ATmega328 assure la communication série UART TTL (5V), qui est disponible sur les broches numériques 0 (RX) et 1 (TX). Un ATmega16U2 sur la carte canalise cette communication série sur USB et apparaît comme un port com virtuel pour les logiciels de l’ordinateur. Le micrologiciel 16U2 utilise les pilotes COM USB standard, et aucun pilote externe n’est nécessaire. Cependant, sous Windows, un fichier .inf est nécessaire. Le logiciel Arduino (IDE) comprend un moniteur série qui permet d’envoyer des données textuelles simples vers et depuis la carte. Les LED RX et TX de la carte clignotent lorsque des données sont transmises via la puce USB-à-série et la connexion USB à l’ordinateur (mais pas pour la communication série sur les broches 0 et 1).
Une bibliothèque SoftwareSerial permet la communication série sur n’importe quelle broche numérique de l’Uno.
L’ATmega328 supporte également la communication I2C (TWI) et SPI. Le logiciel Arduino (IDE) comprend une bibliothèque Wire pour simplifier l’utilisation du bus I2C ; consultez la documentation pour plus de détails. Pour la communication SPI, utilisez la bibliothèque SPI.
Réinitialisation automatique (logicielle)
Plutôt que de nécessiter une pression physique sur le bouton de réinitialisation avant un téléchargement, la carte Arduino Uno est conçue de manière à pouvoir être réinitialisée par un logiciel exécuté sur un ordinateur connecté. Une des lignes matérielles de contrôle de flux (DTR) de l’ATmega8U2/16U2 est connectée à la ligne de réinitialisation de l’ATmega328 via un condensateur de 100 nanofarad. Lorsque cette ligne est affirmée (prise basse), la ligne de réinitialisation tombe suffisamment longtemps pour réinitialiser la puce. Le logiciel Arduino (IDE) utilise cette capacité pour vous permettre de télécharger du code en appuyant simplement sur le bouton de téléchargement dans la barre d’outils de l’interface. Cela signifie que le bootloader peut avoir un timeout plus court, car l’abaissement de DTR peut être bien coordonné avec le début de l’upload.
Cette configuration a d’autres implications. Lorsque l’Uno est connecté à un ordinateur fonctionnant sous Mac OS X ou Linux, il se réinitialise chaque fois qu’une connexion lui est faite depuis un logiciel (via USB). Pendant la demi-seconde qui suit, le bootloader fonctionne sur l’Uno. Bien qu’il soit programmé pour ignorer les données malformées (c’est-à-dire tout ce qui n’est pas un téléchargement de nouveau code), il interceptera les premiers octets de données envoyés à la carte après l’ouverture d’une connexion. Si un sketch s’exécutant sur la carte reçoit une configuration à usage unique ou d’autres données lors de son premier démarrage, assurez-vous que le logiciel avec lequel il communique attend une seconde après l’ouverture de la connexion et avant d’envoyer ces données.
La carte Uno contient une trace qui peut être coupée pour désactiver l’auto-reset. Les pastilles de chaque côté de la trace peuvent être soudées ensemble pour la réactiver. Il est étiqueté « RESET-EN ». Vous pouvez également être en mesure de désactiver la réinitialisation automatique en connectant une résistance de 110 ohms de 5V à la ligne de réinitialisation ; voir ce fil de discussion du forum pour plus de détails.
Révisions
La révision 3 de la carte comporte les nouvelles fonctionnalités suivantes :
- 1.0 pinout : ajout des broches SDA et SCL qui sont proches de la broche AREF et deux autres nouvelles broches placées près de la broche RESET, l’IOREF qui permettent aux shields de s’adapter à la tension fournie par la carte. Dans le futur, les shields seront compatibles à la fois avec la carte qui utilise l’AVR, qui fonctionne avec 5V et avec l’Arduino Due qui fonctionne avec 3.3V. La deuxième est une broche non connectée, qui est réservée pour des fins futures.
- Circuit RESET plus fort.
- L’Atmega 16U2 remplace le 8U2.