Composant · Contrôleur

Arduino Uno

L'Arduino Uno est la carte la plus répandue pour la robotique — logique 5 V, simple à programmer, difficile à casser. Ce qu'elle fait et quand l'utiliser.

Présentation

L’Arduino Uno est une petite carte de développement construite autour de l’ATmega328P de Microchip, un microcontrôleur 8 bits. Elle expose les broches de la puce sur des connecteurs étiquetés, ajoute un port USB pour la programmation et l’alimentation, et gère les parties délicates — régulateur de tension, quartz d’horloge, circuit de reset — pour vous laisser vous concentrer sur le code et le câblage. Pour une énorme part des apprenants en robotique, l’Uno est la façon dont ils font tourner un moteur ou allumer un capteur pour la première fois.

Son attrait durable n’est pas la puissance brute — aux standards modernes, il est lent et avare en mémoire. C’est le pardon. Les broches 5 V tolèrent les erreurs de câblage des débutants, la communauté a répondu à presque toutes les questions possibles, et presque chaque capteur et pilote loisir est livré avec un exemple qui suppose un Uno.

Schéma légendé d'une carte Arduino Uno : un port USB-B et une prise barillet CC sur le bord gauche, le microcontrôleur ATmega328P au centre, un connecteur d'E/S numériques pour les broches D0 à D13 le long du bord supérieur, et des connecteurs d'alimentation et d'entrées analogiques (A0 à A5) le long du bord inférieur.
L'Arduino Uno en un coup d'œil : USB et alimentation CC à gauche, l'ATmega328P qui réfléchit, E/S numériques le long du bord supérieur, et alimentation plus entrées analogiques en bas. Télécharger le SVG

Fonctionnement

Vous écrivez un croquis — un programme C++ à deux fonctions. setup() s’exécute une fois à la mise sous tension ; loop() tourne ensuite pour toujours. À l’intérieur, vous lisez les entrées et pilotez les sorties via les broches :

  • Broches numériques lisent ou écrivent un signal HAUT/BAS (5 V / 0 V) — un appui de bouton, une LED, l’entrée de direction d’un pilote moteur.
  • Broches PWM (marquées ~) simulent une tension analogique en commutant très vite. C’est ainsi qu’on règle la vitesse moteur ou la luminosité d’une LED.
  • Entrées analogiques mesurent une tension de 0–5 V et la rapportent comme un nombre de 0–1023. C’est ainsi qu’on lit un potentiomètre ou un capteur de ligne analogique.

L’Uno n’a pas de système d’exploitation. Votre code est la seule chose qui tourne, ce qui rend la temporisation prévisible — précieux quand on boucle une commande autour d’un vrai robot.

Quand l’utiliser

Prenez un Uno quand vous apprenez, quand vous voulez la plus grande pile possible de tutoriels et bibliothèques compatibles, ou quand le travail de votre robot est simple et temps réel : lire quelques capteurs, exécuter une boucle de commande, entraîner deux moteurs. Un suiveur de ligne, un éviteur d’obstacles ou un petit rover différentiel sont carrément dans sa zone de confort.

Regardez ailleurs quand il faut du Wi-Fi ou Bluetooth (un ESP32 est l’évolution habituelle), des maths lourdes ou de la vision par caméra (un Raspberry Pi), ou beaucoup de mémoire. Les 2 Ko de SRAM de l’Uno se remplissent plus vite que les débutants ne l’imaginent — longues chaînes et grands tableaux sont les coupables habituels.

Pièges courants

  • C’est une carte 5 V. Beaucoup de capteurs modernes sont en 3,3 V et peuvent être endommagés par la logique 5 V. Vérifiez la fiche technique avant de câbler.
  • N’alimentez pas les moteurs depuis la carte. Le régulateur de l’Uno ne peut pas fournir le courant moteur ; utilisez une batterie séparée et un pilote moteur. Alimenter les moteurs via l’Uno est la façon la plus courante de faire décrocher ou redémarrer sa carte pour un débutant.
  • delay() bloque tout. Pendant un delay(), la carte ne peut ni lire les capteurs ni réagir. Pour tout comportement réactif, mesurez le temps avec millis().
  • Surveillez votre mémoire. Si la carte se comporte bizarrement sans raison claire, vous manquez peut-être de SRAM.

Brochage : ce que chaque broche peut vraiment faire

Quatorze broches numériques et six analogiques, mais elles ne sont pas interchangeables. Six d’entre elles ont un second rôle qui compte.

Broche Aussi Notes pour un robot
D0 (RX) Série matérielle Ne pas utiliser. Le programmateur USB la possède
D1 (TX) Série matérielle Ne pas utiliser. Idem
D2, D3 Interruptions externes 0 et 1 Les seules deux broches réveillables sur tout front — réservez-les aux encodeurs
D3, D5, D6, D9, D10, D11 PWM (~) Les six broches analogWrite. La vitesse moteur vit ici
D10–D13 SPI (SS, MOSI, MISO, SCK) Nécessaire pour une carte SD ou une radio nRF24
D13 LED intégrée A une LED et une résistance attachées — entrée faible, sortie correcte
A0–A5 Entrées analogiques, 10 bits Aussi utilisables en numériques si vous êtes à court
A4, A5 I²C (SDA, SCL) Partagées par chaque appareil I²C — les utiliser en analogiques coûte le bus

Deux de ces lignes façonnent la plupart des conceptions robotiques. D2 et D3 sont les seules vraies broches d’interruption, ce qui signifie qu’un robot à deux encodeurs de roues les utilise toutes deux et n’en a plus. Et A4/A5 sont le bus I²C, donc un MPU-6050 plus un réseau de capteurs analogiques sur un Uno se disputent aussitôt les broches.

Cette pression sur les broches est la raison la plus fréquente de dépasser un Uno — pas la vitesse, pas la mémoire. Quatorze numériques et six analogiques disparaissent vite une fois qu’on a un pilote moteur (6 broches), une paire d’encodeurs (4 broches, dont 2 interruptions), et un réseau de capteurs (6 analogiques).

L’alimenter, et les trois façons de s’y tromper

Entrée Tension Chemin Notes
USB 5 V Via un fusible réarmable Limité à 500 mA pour toute la carte
Prise barillet 7–12 V Via le régulateur linéaire embarqué L’alimentation recommandée
Broche VIN 7–12 V Même régulateur La même que la prise, exposée en broche
Broche 5V 5 V Directement sur le rail Contourne le régulateur — aucune protection

Le régulateur est linéaire, ce qui signifie qu’il brûle la différence entre l’entrée et 5 V en chaleur. À 12 V en entrée et 200 mA tirés, cela fait (12 − 5) × 0,2 = 1,4 W dans un petit boîtier, et il chauffe vraiment. Alimentez en 9 V plutôt qu’en 12 V si vous avez le choix.

Trois erreurs précises à nommer :

Alimenter les moteurs depuis la broche 5 V. Le régulateur ne peut pas fournir le courant moteur, donc le rail chute, la carte redémarre, et le symptôme ressemble à un plantage logiciel. Les moteurs ont leur propre alimentation et ne partagent que la masse.

Alimenter la broche 5 V depuis une source non régulée. Cette broche est directement sur le rail, donc tout ce qui dépasse environ 5,5 V va droit dans l’ATmega328P.

Alimenter à la fois par USB et la prise. La carte gère cela (un comparateur sélectionne la source la plus haute), mais une batterie sur la prise ne chargera pas et peut réinjecter via une conception limite sur un clone.

Ce que les broches peuvent vraiment fournir

Limite Valeur Signification
Par broche 20 mA recommandés, 40 mA maximum absolu Une LED convient. Un moteur non. Une bobine de relais non
Total toutes broches 200 mA Huit LED à 20 mA font déjà tout le budget
Broche 5 V, alimenté USB ~450 mA après la consommation propre Un servomoteur peut dépasser cela seul
Broche 3,3 V 50 mA Vient du régulateur de la puce USB — très limité

La broche 3,3 V piège régulièrement. Ce n’est pas un rail d’usage général ; c’est une commodité à 50 mA. Un module ESP-01 en émission décrochera dessus aussitôt.

Le problème des 2 Ko de mémoire

L’Uno a 32 Ko de flash pour votre programme et 2 Ko de SRAM pour ses variables en cours d’exécution. La flash est rarement la contrainte. La SRAM l’est, constamment.

Chaque littéral de chaîne dans un Serial.print est copié en SRAM au démarrage :

Serial.println("Calibration complete, entering drive mode");   // 43 bytes of SRAM, forever

Vingt tels messages font 800 octets — 40 % du total. La solution est F(), qui laisse la chaîne en flash et la lit au besoin :

Serial.println(F("Calibration complete, entering drive mode"));  // 0 bytes of SRAM

Les tableaux sont l’autre consommateur. Un float fait 4 octets, donc un tampon d’enregistrement de 200 échantillons fait 800 octets sans aucun avertissement — le compilateur rapporte joyeusement l’usage flash et ne dit rien d’utile sur la SRAM d’exécution.

Le symptôme d’épuisement n’est pas une erreur propre. La pile grandit vers le bas, le tas vers le haut, et quand ils se rencontrent, les variables se corrompent silencieusement. La carte se comporte bizarrement : lectures insensées, boucle qui saute, reset sans cause. Si un Uno commence à se comporter irrationnellement après l’ajout d’une fonction, suspectez la SRAM avant tout.

// Drop this in and watch it while you develop.
int freeRam() {
  extern int __heap_start, *__brkval;
  int v;
  return (int)&v - (__brkval == 0 ? (int)&__heap_start : (int)__brkval);
}

Sous environ 200 octets libres, attendez-vous à des ennuis.

Dépannage

Symptôme Cause probable Solution
Redémarre quand les moteurs démarrent Courant moteur via la carte Alimentation moteur séparée, masse commune seulement
Échec d’envoi : « not in sync » Quelque chose sur D0/D1, ou mauvais port Déconnectez tout sur les broches série
Comportement erratique après ajout de code Plus de SRAM Enveloppez les littéraux dans F() ; vérifiez freeRam()
analogWrite sans effet Broche non PWM Utilisez 3, 5, 6, 9, 10 ou 11
La bibliothèque Servo casse le PWM sur 9/10 Servo prend le temporisateur 1 Utilisez d’autres broches PWM, ou pilotez les servos depuis un PCA9685
Appareil I²C introuvable A4/A5 utilisées pour autre chose Le bus I²C est ces deux broches, exclusivement
Régulateur très chaud Entrée proche de 12 V Descendez à 7–9 V
Appareil 3,3 V décroche Limite 50 mA sur cette broche Utilisez un régulateur 3,3 V séparé
Capteur lisant n’importe quoi Capteur 3,3 V sur logique 5 V Adaptez les niveaux, ou utilisez une carte 3,3 V

Uno ou autre chose ?

Carte Logique Pourquoi la choisir
Uno 5 V Indulgente, documentée partout, puce sur support remplaçable
Nano 5 V Même puce, format maquette, 8 entrées analogiques au lieu de 6
Mega 2560 5 V 54 numériques, 16 analogiques, 6 interruptions, 8 Ko SRAM — la réponse à la pression des broches
ESP32 3,3 V Wi-Fi, Bluetooth, double cœur, bien plus rapide
Pro Micro 5 V USB natif — peut simuler clavier ou souris

La Nano mérite une mention pour les robots : c’est le même ATmega328P avec le même code, et elle expose A6 et A7 en entrées analogiques supplémentaires. Pour un réseau de réflectance à 8 canaux, c’est la différence entre tenir ou non, et c’est exactement pourquoi les suiveurs de ligne spécifient si souvent une Nano.

Le résumé honnête : la valeur de l’Uno est que tout y fonctionne du premier coup. Chaque bibliothèque, chaque tutoriel, chaque schéma suppose l’Uno. Cela vaut plus pendant l’apprentissage que toute spécification, et quand vous la dépassez, ce que vous dépassez sera presque toujours le nombre de broches.

Explorer le graphe

Utilisé dans ces réalisations

Projets, parcours d'apprentissage et simulateurs qui intègrent le composant Arduino Uno.

Comparer

Alternatives

Questions

FAQ : Arduino Uno

Qu'est-ce que l'Arduino Uno ?

L'Arduino Uno est une carte à microcontrôleur conviviale construite autour de la puce ATmega328P. Elle permet de lire des capteurs et de commander moteurs, LED et autres électroniques avec de courts programmes C++ appelés croquis, et c'est la carte sur laquelle la plupart apprennent la robotique.

À quoi sert l'Arduino Uno en robotique ?

En robotique, l'Uno joue le cerveau du robot : il lit les capteurs, exécute une boucle de commande, et pilote les moteurs via un pilote tel que le L298N. Il convient aux suiveurs de ligne, éviteurs d'obstacles et petits rovers dont le travail est simple et exige une temporisation prévisible et temps réel.

Quel microcontrôleur est utilisé dans l'Arduino Uno ?

L'Arduino Uno utilise l'ATmega328P de Microchip, un microcontrôleur AVR 8 bits cadencé à 16 MHz avec 32 Ko de flash et 2 Ko de SRAM. La carte ajoute une interface USB, un régulateur de tension et des connecteurs autour de cette seule puce.

L'Arduino se programme-t-il en C ou en C++ ?

Les croquis Arduino sont écrits en C++ avec un cadre simplifié et adapté aux débutants. On peut aussi utiliser du C pur, puisque C est largement un sous-ensemble de C++, mais les fonctions et bibliothèques Arduino standard sont en C++.

Le code Arduino est-il difficile à apprendre ?

Non — Arduino est l'une des voies les plus douces vers la programmation matérielle. La structure à deux fonctions setup et loop, un énorme écosystème de bibliothèques et des milliers d'exemples font qu'un débutant peut faire clignoter une LED ou tourner un moteur en une heure.

Pour la robotique, que vaut mieux : Arduino ou Raspberry Pi ?

Ils résolvent des problèmes différents. Arduino est un microcontrôleur — idéal pour la commande temps réel des moteurs et capteurs avec une temporisation prévisible. Un Raspberry Pi est un vrai ordinateur Linux — meilleur pour la vision, les gros calculs ou le Wi-Fi. Beaucoup de robots avancés utilisent les deux : un Pi pour penser et un Arduino pour agir.

Pourquoi l'Arduino Uno est-il si répandu ?

Parce qu'il est indulgent et bien supporté. Ses broches 5 V tolèrent les erreurs de câblage des débutants, presque chaque capteur loisir est livré avec un exemple pour Uno, et la communauté a répondu à presque toutes les questions — on reste donc rarement bloqué longtemps.

Peut-on utiliser ChatGPT ou l'IA pour écrire du code Arduino ?

Oui — les assistants IA peuvent rédiger et déboguer des croquis Arduino et sont une aide utile. Testez toujours le code généré sur le matériel avant de lui faire confiance, car un croquis d'apparence plausible peut avoir de faux numéros de broches, minutage ou logique.

Pour aller plus loin

Références