Arduino Duemilanove — Fiche carte

Arduino S.r.lMCU 8-32 bitarduino

⚡ L’essentiel en 60 secondes

L’Arduino Duemilanove, dont le nom signifie littéralement « deux mille neuf » en italien, fait référence à l’année de sa sortie en 2009. Elle représente une étape charnière dans l’histoire des cartes de développement électroniques, succédant au modèle Diecimila et précédant l’actuel Arduino Uno. Bien que cette carte soit aujourd’hui considérée comme obsolète et retirée de la vente officielle, elle reste un objet d’étude précieux pour comprendre l’évolution des microcontrôleurs et des interfaces de programmation. Sur le plan technique, la Duemilanove est construite autour d’un microcontrôleur de la famille AVR, plus précisément les modèles ATmega168 ou ATmega328. Pour le novice, il est important de comprendre que le microcontrôleur est le « cerveau » de la carte, une puce qui exécute les instructions de votre programme. La différence majeure entre les deux variantes réside dans la mémoire : l’ATmega168 dispose de 14 Ko d’espace pour le code utilisateur, tandis que l’ATmega328 offre 30 Ko, permettant des projets plus complexes. Cette puce fonctionne à une fréquence de 16 MHz, ce qui signifie qu’elle peut effectuer seize millions de cycles de calcul par seconde, une vitesse largement suffisante pour la majorité des applications de domotique ou de robotique simple.

L’interface avec l’ordinateur est assurée par une puce dédiée, l’FTDI FT232RL, qui convertit les signaux USB de l’ordinateur en signaux série TTL compréhensibles par le microcontrôleur. Cette architecture diffère des modèles plus récents qui utilisent le microcontrôleur lui-même pour gérer l’USB. Une particularité notable de la Duemilanove est la gestion automatique de l’alimentation : la carte choisit seule si elle doit être alimentée par le port USB ou par une source externe via la prise jack, une amélioration significative par rapport aux générations précédentes qui nécessitaient un pont de soudure manuel. La tension externe recommandée se situe entre 7 et 12 volts ; en dessous ou au-dessus de cette plage, la régulation de tension peut devenir instable ou surchauffer le régulateur de la carte. Il est également crucial de noter que la broche 3,3 volts est générée par la puce FTDI et limitée à 50 milliampères, ce qui la rend inadaptée pour alimenter des capteurs gourmands, nécessitant souvent un régulateur externe dédié.

Les possibilités d’entrée et de sortie sont définies par un ensemble standard de broches qui est devenu la norme pour les « shields » (cartes d’extension). On trouve quatorze broches numériques, dont six peuvent générer un signal de modulation de largeur d’impulsion (PWM). Le PWM est une technique qui simule une tension analogique en variant rapidement l’état d’une broche entre haut et bas, permettant par exemple de faire varier la luminosité d’une LED ou la vitesse d’un moteur. Six entrées analogiques permettent de lire des valeurs comprises entre 0 et 1023, correspondant à une tension de 0 à 5 volts. Cette résolution de 10 bits offre une précision correcte pour la plupart des capteurs courants. Les protocoles de communication série (UART), I2C et SPI sont également disponibles sur des broches spécifiques, permettant de connecter des écrans, des capteurs avancés ou des modules radio. Un point de vigilance physique concerne l’espacement entre les broches numériques 7 et 8, qui est de 160 mils au lieu des 100 mils habituels, une spécificité qui peut gêner l’insertion de certains shields anciens ou mal conçus.

La programmation de la carte s’effectue via l’environnement Arduino IDE ou l’outil en ligne de commande arduino-cli, en sélectionnant le cœur « arduino:avr ». Il est impératif de choisir la bonne variante de processeur (ATmega168 ou ATmega328) dans les menus, car les paramètrès de téléversement diffèrent : la vitesse de communication série avec le bootloader est de 19200 bauds pour le 168 et de 57600 bauds pour le 328. Le bootloader, un petit programme préinstallé qui permet de charger du code via l’USB sans outil de programmation externe, occupe 2 Ko de mémoire flash. Une subtilité technique importante réside dans la réinitialisation automatique : lors de l’ouverture du port série sur l’ordinateur, la carte se réinitialise pour entrer en mode programmation. Sur certains systèmes d’exploitation, cela peut entraîner la perte des premiers caractères envoyés par le programme hôte, car le bootloader reste actif pendant environ une demi-seconde. Pour les utilisateurs avancés, il est possible de désactiver cette fonction en coupant une piste spécifique nommée RESET-EN.

Enfin, il convient de mentionner les défis liés à la maintenance de cette carte aujourd’hui. N’étant plus produite, elle est sujette à des problèmes de disponibilité des composants, notamment la puce FTDI, dont les clones contrefaits ont parfois causé des conflits avec les pilotes Windows mis à jour automatiquement. De plus, la documentation officielle est désormais archivée dans la section « retired » du site Arduino. Malgré ces aspects, la Duemilanove demeure une plateforme robuste et pédagogique, offrant une introduction complète aux concepts fondamentaux de l’électronique embarquée, de la gestion des entrées-sorties à la communication série, tout en illustrant l’importance de la compatibilité matérielle et logicielle dans l’écosystème open source.

Forum (1 sujet) →

AttrSpecsvérifié
mcuAtmel ATmega168 or ATmega328/328P — 8-bit AVR RISC, single core, 16 MHz crystal (build.f_cpu=16000000L). Datasheets: ATmega48/88/168 (doc2545, docs.arduino.cc mirror), ATmega328P (docs.arduino.cc mirror).✔
gpunone.? non vérifié
memoryFlash 16 KB (ATmega168) or 32 KB (ATmega328), 2 KB used by bootloader → sketch space 14,336 B (upload.maximum_size=14336) / 30,720 B (upload.maximum_size=30720); SRAM 1 KB / 2 KB (upload.maximum_data_size=1024/2048); EEPROM 512 B / 1 KB (official page, boards.txt).✔
connectivitynone on-board (no WiFi/BT/Ethernet/radio) — the ATmega168/328 provide UART TTL (5 V) on pins 0 (RX) / 1 (TX), plus I2C (TWI) and SPI; USB-to-TTL is handled by a separate chip (below). Radios/networking came from shields.? non vérifié
usbboard-side FTDI FT232RL USB-to-TTL serial chip channels the UART over USB as a virtual COM port (FTDI VCP drivers); RX/TX LEDs flash on USB traffic (official page, "Communication"). FT232R family product page: ftdichip.com/products/ft232r/ (site blocks bot HEAD requests as of 2026-10-13 — HTTP 403; URL is the canonical FTDI page).✔
gpio(official page, "Input and Output"): - 14 digital I/O pins, 5 V logic, 40 mA per pin, internal pull-ups 20–50 kΩ. - PWM (8-bit, analogWrite): 3, 5, 6, 9, 10, 11. - External interrupts: 2 and 3 (attachInterrupt). - Serial: 0 (RX), 1 (TX) — TTL, tied to the FTDI chip. - SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK) (SPI library). - LED: 13 — on-board LED, HIGH = on. - 6 analog inputs, 10-bit resolution (0–1023), default 0–5 V range, updatable via AREF + analogReference. - I2C: A4 (SDA), A5 (SCL) (Wire library). - Reset pin (bring LOW) and AREF on the headers. - Pin-to-port mapping: official ATmega168 pin mapping.✔
power(official page, "Power"): - Powered from USB or external supply, selected automatically ("automatic power selection" was a Duemilanove addition over the Diecimila — archived store description, Wayback 2011-11-01). - External: 2.1 mm center-positive barrel jack, or battery into Gnd/Vin of the POWER header. Recommended 7–12 V, limits 6–20 V; <7 V makes the 5 V rail unstable, >12 V can overheat the regulator. - Pins: VIN (raw external input), 5V (regulated), 3V3 — generated by the on-board FTDI chip, max 50 mA, GND. - USB overcurrent protection: resettable polyfuse, breaks the USB link above 500 mA (official page).✔
mechanicalsmax PCB size 2.7 × 2.1 in (USB connector and power jack overhang), three screw holes; note the distance between digital pins 7 and 8 is 160 mil, not the 100 mil grid (official page, "Physical Characteristics").✔
  • Fabricant : Arduino S.r.l. (Italie). Page produit officielle (retirée) : docs.arduino.cc/retired/boards/arduino-duemilanove/, source markdown content.md dans arduino/docs-content.
  • Produit : L'Arduino Duemilanove (« 2009 » en italien, nommée d'après l'année de sa sortie) est une carte à microcontrôleur basée sur l'ATmega168 ou l'ATmega328, avec 14 E/S numériques (6 PWM), 6 entrées analogiques, un quartz 16 MHz, USB, prise d'alimentation, connecteur ICSP et bouton reset — « the latest in a series of USB Arduino boards » à l'époque, et le successeur amélioré de la Diecimila (page officielle retirée).
  • Année : 2009 (le nom signifie littéralement « deux mille neuf » en italien ; page officielle : « named after the year of its release »).
  • Prix de lancement :
  • Statut : Fin de vie / retirée. La carte vit dans la section « retired » de la documentation d'Arduino (page des cartes retirées), et renvoie 404 au 13-10-2026 (vérifié par requête directe). Elle a été remplacée dans la gamme par l'Arduino Uno (2010), qui a substitué la puce USB-série FTDI par un ATmega16U2 (Uno rev3 tech-specs.yml dans docs-content : « USB-Serial Processor: ATmega16U2 16 MHz »).
  • SKU / variantes : SKU A000001 = « Arduino Duemilanove w/ Atmega328 » (titre de la page produit archivée de la boutique officielle, instantané du 01-11-2011, Wayback Machine). Deux variantes de MCU ont été vendues : ATmega168 et ATmega328 ; les cartes ultérieures étaient livrées avec l'ATmega328P (description de la boutique en 2011 : « new processor ATMega328P re-loaded with bootloader » ; le core actuel compile atmega328p, boards.txt).

+ Points forts

  • Le vaisseau amiral 2009 — première Arduino de classe 328 : le Duemilanove fut la première carte de la série USB principale à offrir l'ATmega328 (le double de flash/SRAM de l'ATmega168), vendue comme « the new processor ATMega328P » sur la boutique officielle (page boutique archivée, 01-11-2011).
  • Améliorations de la Diecimila consolidées : reset automatique via DTR, connecteur d'alimentation étendu, LED embarquée sur 13, polyfuse USB contre les surintensités et sélection automatique USB/alimentation externe — tous listés comme ses différenciateurs dans la description officielle de la boutique (page boutique archivée, page officielle).
  • Série USB FTDI FT232RL — la dernière famille Arduino principale à utiliser un vrai pont FTDI ; le successeur Uno (2010) a déplacé l'USB vers un ATmega16U2 (Uno rev3 tech-specs.yml). Différence pratique : sur le Duemilanove le rail 3,3 V est alimenté par la puce FTDI (50 mA max) et le port série survit aux resets du MCU différemment (basé sur DTR, pas sur l'énumération CDC) (page officielle).
  • Jeu GPIO classique au format shield : 14 D (6 PWM) + 6 A (10 bits) + I2C + SPI + UART en 5 V, 40 mA/broche — le pinout qui est devenu le standard shield Arduino (page officielle).
  • Matériel libre : conception de référence EAGLE complète et schéma publiés et toujours en ligne : PDF du schéma, ZIP de la conception de référence (les deux vérifiés 200 OK le 13-10-2026).
  • Source du bootloader dans l'arbre : les sources ATmegaBOOT exactes et les fichiers HEX par carte sont livrés avec ArduinoCore-avr, de sorte que le bootloader peut être reconstruit/grillé depuis les sources (bootloaders/atmega/).

− Points faibles

  • Deux CPU, un seul nom de carte : il faut choisir l'entrée de carte correspondant à la puce réelle (« according to the microcontroller on your board » — section officielle Programming). Un sketch compilé/grillé pour le mauvais CPU échoue car la vitesse de téléversement et la taille de flash diffèrent : 19200 bauds / 14 336 o (168) contre 57600 bauds / 30 720 o (328) (page officielle, boards.txt).
  • Fenêtre du bootloader ~0,5 s + premiers octets avalés : l'ouverture du port réinitialise la carte ; le bootloader intercepte les premiers octets pendant environ une demi-seconde. Les protocoles de configuration côté hôte doivent attendre ~1 s après l'ouverture du port (page officielle, « Automatic (Software) Reset »).
  • Broche 3,3 V faible et alimentée par le FTDI : max 50 mA, générée par le FT232RL — les charges 3,3 V plus lourdes nécessitent leur propre régulateur (page officielle, « Power »).
  • Pièges de marge du régulateur : sous 7 V sur la prise, le rail 5 V peut s'affaisser ; au-dessus de 12 V, le régulateur linéaire peut surchauffer et endommager la carte (page officielle, « Power »).
  • Déclenchement de la polyfuse : >500 mA sur USB ouvre le fusible réinitialisable — la carte paraît « morte » jusqu'à la disparition du défaut et un cycle d'alimentation (page officielle, « USB Overcurrent Protection »).
  • Piège d'empreinte shield : l'espace entre les broches numériques 7 et 8 est de 160 mil, pas 100 mil — les connecteurs/shields doivent en tenir compte (page officielle, « Physical Characteristics »).
  • Spec périmée dans l'ancien marketing : la page boutique archivée affirme « 0.5 KB used by bootloader » pour la version 328, en contradiction avec la page officielle de la carte (« 2 KB used by bootloader ») et les tailles sketch de boards.txt (32768 − 30720 = 2048 o). Se fier à 2 Ko (page boutique 2011 vs page officielle / boards.txt).
  • Support fin de vie : plus vendue (404 de la boutique vérifié le 13-10-2026) ; documentation figée sous retired/ ; les utilisateurs Windows peuvent devoir installer manuellement l'ancien pilote VCP FTDI (page officielle).
  • Saga FTDI/pilote contrefaits : le marché des clones du Duemilanove est inondé de puces FT232R contrefaites, et les mises à jour des pilotes FTDI les ont historiquement rendues inutilisables sur Windows.
  • Débordement de millis avec l'ancien bootloader sur les cartes pré-2009 : le bootloader ATmega168 de l'ère NG/Diecimila avait un bug de débordement du timer0 affectant millis après ~93 minutes, corrigé dans le bootloader 2009 utilisé sur le Duemilanove.
  • Retour d'expérience expert expert — expert-arduino
    • Petit rappel pour les nouveaux arrivants sur cette carte mythique mais retiree du catalogue. La Duemilanove est souvent mal comprise a cause de ses deux variantes de microcontroleur. Si vous avez une ATmega168, selectionnez bien l'entrée correspondante dans l'IDE, sinon le flashage échoue a cause d… — expert-arduino
    • Merci pour le rappel. J'ai effectivement rencontre le problème de la pin 3.3V en essayant de connecter un petit module Bluetooth. La carte coupait tout des que j'activais le module. Je pensais a un defaut matériel, mais c'etait bien la limite des 50 mA depassee. Du coup, j'utilise maintenant un reg… — maker-furtif
    • Ce n'est pas la puce FTDI, c'est le comportement normal du bootloader. Quand tu ouvres le port série, la carte se reset automatiquement. Le bootloader prend la main pendant environ 0,5 seconde pour vérifier s'il faut uploader un programme. Si ton script envoit des données immediatement, ces premier… — bricoleur-78

Retours et projets de la communauté

  • Blink

    Blink — the canonical first sketch ; drives the on-board LED on pin 13 (, verified 2026-10-13). (unverified au 2026-10-13) DigitalReadSerial — button state to the Serial monitor ; exercises the documented 40 mA/pin digital I/O and pull-ups . (unverified au 20…

  • Deux CPU, un seul nom de carte : il faut choisir l'entrée de carte correspondant à la puce réelle (« according to the microcontroller on your board » — section officielle Programming). Un sketch compilé/grillé pour le mauvais CPU échoue car la vitesse de téléversement et la taille de flash diffèrent : 19200 bauds / 14 336 o (168) contre 57600 bauds / 30 720 o (328) (page officielle, boards.txt).
  • Fenêtre du bootloader ~0,5 s + premiers octets avalés : l'ouverture du port réinitialise la carte ; le bootloader intercepte les premiers octets pendant environ une demi-seconde. Les protocoles de configuration côté hôte doivent attendre ~1 s après l'ouverture du port (page officielle, « Automatic (Software) Reset »).
  • Broche 3,3 V faible et alimentée par le FTDI : max 50 mA, générée par le FT232RL — les charges 3,3 V plus lourdes nécessitent leur propre régulateur (page officielle, « Power »).
  • Pièges de marge du régulateur : sous 7 V sur la prise, le rail 5 V peut s'affaisser ; au-dessus de 12 V, le régulateur linéaire peut surchauffer et endommager la carte (page officielle, « Power »).
  • Déclenchement de la polyfuse : >500 mA sur USB ouvre le fusible réinitialisable — la carte paraît « morte » jusqu'à la disparition du défaut et un cycle d'alimentation (page officielle, « USB Overcurrent Protection »).
  • Piège d'empreinte shield : l'espace entre les broches numériques 7 et 8 est de 160 mil, pas 100 mil — les connecteurs/shields doivent en tenir compte (page officielle, « Physical Characteristics »).
  • Spec périmée dans l'ancien marketing : la page boutique archivée affirme « 0.5 KB used by bootloader » pour la version 328, en contradiction avec la page officielle de la carte (« 2 KB used by bootloader ») et les tailles sketch de boards.txt (32768 − 30720 = 2048 o). Se fier à 2 Ko (page boutique 2011 vs page officielle / boards.txt).
  • Support fin de vie : plus vendue (404 de la boutique vérifié le 13-10-2026) ; documentation figée sous retired/ ; les utilisateurs Windows peuvent devoir installer manuellement l'ancien pilote VCP FTDI (page officielle).
  • Saga FTDI/pilote contrefaits : le marché des clones du Duemilanove est inondé de puces FT232R contrefaites, et les mises à jour des pilotes FTDI les ont historiquement rendues inutilisables sur Windows.
  • Débordement de millis avec l'ancien bootloader sur les cartes pré-2009 : le bootloader ATmega168 de l'ère NG/Diecimila avait un bug de débordement du timer0 affectant millis après ~93 minutes, corrigé dans le bootloader 2009 utilisé sur le Duemilanove.
  • Faire clignoter la LED 13 d'une Duemilanove (et choisir le bon ATmega) debutant Schéma : IMG-duemilanove-debutant-1-clignoter-led-13-duemilanove.svg — Arduino Duemilanove vue de dessus, puce ATmega DIP-28 et puce FTDI FT232RL annotées, LED marquée L près de la broche 13 surlignée, câble mini-USB branché, sélecteur IDE « Duemilanove w/ ATmega328 » en encart.
  • Bouton poussoir et moniteur série sur la Duemilanove (avec ses 0,5 s de silence) debutant Schéma : IMG-duemilanove-debutant-2-bouton-poussoir-serial-ftdi.svg — bouton poussoir entre la broche 2 et GND sur une Arduino Duemilanove, résistance interne pull-up annotée 20–50 kΩ, moniteur série affichant ETAT=1 / ETAT=0, puce FTDI et LED TX clignotante.
  • Potentiomètre et variation LED : l'ADC 10 bits et le PWM 8 bits version AVR debutant Schéma : IMG-duemilanove-debutant-3-potentiometre-pwm-fade.svg — potentiomètre 10 kΩ câblé entre 5 V, A0 et GND sur une Arduino Duemilanove, LED + résistance 220 Ω sur la broche PWM 9, liste des broches PWM 3/5/6/9/10/11 surlignée, ADC 10 bits annoté.
  • Ajouter un deuxième port série avec SoftwareSerial (GPS sur broches 10/11) intermediaire Schéma : IMG-duemilanove-intermediaire-1-gps-softwareserial.svg — module GPS TTL alimenté en 5 V relié à l'Arduino Duemilanove sur broches 10 (RX) et 11 (TX) en croix, puce FTDI occupant déjà les broches 0/1, mention « un seul UART matériel, occupé par l'USB ».
  • Régler la référence de mesure avec AREF et analogReference intermediaire Schéma : IMG-duemilanove-intermediaire-2-reference-aref-mesure-precise.svg — Arduino Duemilanove avec potentiomètre alimenté en 3V3, broche AREF reliée au 3V3 via un interrupteur, fonction analogReference(EXTERNAL) annotée, comparaison de deux mesures 10 bits (réf 5 V vs réf 3,3 V).
  • Persister une calibration dans l'EEPROM de l'ATmega (512 octets ou 1 Ko) intermediaire Schéma : IMG-duemilanove-intermediaire-3-eeprom-persister-calibration.svg — Arduino Duemilanove avec puce ATmega328 dont la zone EEPROM 1 Ko est surlignée, bouton sur broche 2 pour sauvegarder, moniteur série affichant la valeur rechargée après rebranchement de l'alimentation.
  • Convertir la Duemilanove en programmateur AVR (ArduinoISP) pour graver des puces nues avance Schéma : IMG-duemilanove-avance-1-duemilanove-programmateur-avrisp.svg — Arduino Duemilanove reliée par son connecteur ICSP 2×3 à une ATmega328P sur plaque d'essai, six fils MOSI/MISO/SCK/VCC/GND/RESET étiquetés, IDE affichant le programmeur « Arduino as ISP », broche 10 en RESET du circuit cible annotée.
  • Manipulation directe des registres PORT : le bit-banging à 16 MHz avance Schéma : IMG-duemilanove-avance-2-manipulation-registres-port-avr.svg — boîtier ATmega328 vu de dessus avec les ports PORTB (broches 8 à 13) et PORTD (broches 0 à 7) surlignés, tableau de correspondance broche Arduino → bit de port (broche 13 = PORTB bit 5), oscilloscope montrant un créneau rapide sur la broche 13.
  • Resusciter une Duemilanove sans bootloader : ICSP, fusibles et ATmegaBOOT avance Schéma : IMG-duemilanove-avance-3-resusciter-bootloader-icsp-fuses.svg — Arduino Duemilanove avec la puce ATmega en plan éclaté, connecteur ICSP 2×3 relié à un programmateur USBtinyISP, terminal affichant des commandes avrdude de lecture des fusibles (low=0xFF, high=0xDA, extended=0xFD) et de réécriture du fichier ATmegaBOOT_168_atmega328.hex.

Bibliothèque de code — exemples écrits pour cette carte

  • clignotante.ino Arduino

    Le programme de vérification réflexe : la LED de la broche 13 clignote à 1 Hz. millis() remplace delay() pour garder la boucle libre. Si rien ne clignote, le téléversement ou la sélection de carte es…

  • bouton-led.ino Arduino

    Un bouton câblé vers GND allume la LED 13 pendant l'appui. Le mode INPUT_PULLUP active la résistance interne, et la fenêtre de 30 ms filtre les rebonds mécaniques du contact.

  • pwm-respiration.ino Arduino

    La LED monte puis redescend progressivement grâce à analogWrite, qui génère un PWM 8 bits sur une broche marquée ~. Le sens s'inverse aux bornes 0 et 255.

  • potentiometre-plotter.ino Arduino

    Le convertisseur 10 bits lit le curseur du potentiomètre entre 0 et 1023 ; le traceur série de l'IDE affiche la courbe en direct. Utile pour tout capteur analogique (LDR, TMP36, joystick).

  • servo-balayage.ino Arduino

    La bibliothèque Servo génère l'impulsion de commande (1 à 2 ms) et balaie l'angle de part en part. Alimenter un servo de taille moyenne par une source 5 V dédiée évite les redémarrages dus aux pics d…

  • buzzer-melodie.ino Arduino

    tone() génère un carré à la fréquence demandée sur la broche du buzzer ; deux tableaux décrivent notes (Hz) et durées (temps musicaux). Un buzzer passif (piézo sans oscillateur) est requis pour jouer…

  • scanner-i2c.ino Arduino

    Avant d'écrire un pilote, on vérifie que le module (capteur, afficheur, extendeur) répond sur le bus. Wire balaye les 127 adresses et liste celles qui acquittent — le réflexe quand un périphérique « …

  • eeprom-log.ino Arduino

    L'EEPROM du microcontrôleur garde ses données sans alimentation (100 000 écritures mini). EEPROM.put n'écrit que ce qui change, préservant la mémoire ; l'indice de reprise est relu au démarrage.

  • sommeil-batterie.ino Arduino

    En mode power-down, le 328P consomme quelques microampères contre plusieurs milliampères éveillé — la clé des projets cousus ou sur pile. Un appui sur le broche 2 (INT0) réveille le microcontrôleur.

  • commande-serie.ino Arduino

    Le moniteur série envoie des caractères que la carte interprète : le premier pas vers un pilotage à distance par terminal, Bluetooth série ou second microcontrôleur. La Duemilanove détecte le port vi…

Exemples et dépôts trouvés en ligne