Arduino Due

ArduinoMCU 32-bitarduino

⚡ L’essentiel en 60 secondes

L'Arduino Due, lancée officiellement le 22 octobre 2012, marque un tournant décisif dans l'histoire de la plateforme Arduino. Elle fut en effet la première carte de développement basée sur un microcontrôleur à cœur ARM 32 bits, rompant avec la tradition des puces AVR 8 bits qui équipaient les modèles précédents comme l'Uno ou le Mega. Cette transition technologique offre une puissance de calcul nettement supérieure, idéale pour les projets nécessitant une gestion rapide des données ou des algorithmes complexes. Le cœur de cette carte est le microcontrôleur AT91SAM3X8E, fabriqué par Microchip (anciennement Atmel). Ce composant intègre un processeur ARM Cortex-M3 fonctionnant à une fréquence de 84 MHz. Pour comprendre cette fréquence, il faut savoir qu'elle représente le nombre de cycles d'horloge que le processeur peut exécuter chaque seconde. À 84 millions de cycles par seconde, la Due est capable de traiter les instructions beaucoup plus vite que ses prédécesseurs, ce qui se traduit par une réactivité accrue dans les applications temps réel. En termes de mémoire, la carte dispose de 512 Ko de mémoire Flash pour stocker le programme utilisateur, soit environ trente fois plus que l'Uno, et de 96 Ko de mémoire vive SRAM, offrant une marge confortable pour manipuler des tableaux de données ou des variables volumineuses. Il est important de noter que cette carte ne possède pas de mémoire EEPROM dédiée, un type de mémoire non volatile utilisé pour conserver des données simples lors de l'extinction de l'alimentation ; les utilisateurs doivent donc recourir à des astuces logicielles ou à des composants externes pour sauvegarder des paramètrès.

Un aspect crucial et souvent source de confusion pour les débutants est le niveau de tension logique de la Due. Contrairement à la majorité des cartes Arduino classiques qui fonctionnent en 5 Volts, la Due opère en 3,3 Volts. Cela signifie que la tension maximale tolérée par ses broches d'entrée et de sortie est de 3,3 V. Appliquer une tension supérieure, comme celle d'un capteur ou d'un module conçu pour 5 V, risque d'endommager irréversiblement la carte. Bien que le format physique des connecteurs soit compatible avec les boucliers (shields) standard, une adaptation de niveau logique est souvent nécessaire pour connecter des périphériques 5 V. De plus, le courant que chaque broche peut fournir est relativement faible, limité à 9 mA ou 3 mA selon le groupe de broches, avec un total de 130 mA pour l'ensemble des sorties. Cette limitation impose l'utilisation de transistors ou de pilotes de courant pour commander des composants énergivores comme des relais ou des moteurs.

Sur le plan des interfaces analogiques, la Due se distingue par des capacités avancées. Elle intègre un convertisseur analogique-numérique (ADC) de 12 bits, offrant une précision supérieure aux 10 bits habituels des cartes AVR. Cependant, par souci de compatibilité logicielle, la fonction de lecture analogique par défaut renvoie des valeurs sur 10 bits. Pour exploiter toute la précision du matériel, il est nécessaire d'appeler une commande spécifique pour configurer la résolution sur 12 bits, permettant ainsi de distinguer des variations de tension beaucoup plus fines. À l'inverse, la carte propose deux sorties analogiques réelles, appelées DAC (convertisseur numérique-analogique), capables de générer une tension continue variable sur 12 bits. Cette fonctionnalité est unique dans la gamme classique Arduino, où les autres modèles ne disposent que de signaux PWM (modulation de largeur d'impulsion) qui nécessitent un filtrage externe pour obtenir une tension lisse. Les DAC de la Due permettent de générer directement des signaux audio ou de contrôle précis sans composants supplémentaires.

La connectivité et les communications sont également enrichies. La carte dispose de quatre ports série matériels indépendants, en plus du port série virtuel utilisé pour la communication avec l'ordinateur. Elle intègre également deux contrôleurs CAN (Controller Area Network), un protocole de communication robuste largement utilisé dans l'automobile et l'industrie. Il est toutefois essentiel de préciser que la carte ne fournit pas les transceivers physiques nécessaires pour se connecter à un bus CAN ; l'utilisateur doit ajouter ces composants externes. La gestion du USB est particulièrement intéressante avec une architecture double. D'une part, un port Micro-USB sert à la programmation et au débogage via un pont série. D'autre part, un second port USB natif, piloté directement par le microcontrôleur, permet à la Due de se comporter comme un périphérique USB complet, comme une souris ou un clavier, grâce à la bibliothèque USBHost. Cette capacité de hôte USB ouvre des perspectives créatives, comme la création de contrôleurs personnalisés lisant des périphériques standards.

L'alimentation de la carte peut se faire via le port USB ou par une prise jack d'alimentation externe acceptant une tension nominale de 7 à 12 Volts. La taille de la carte, de 101,5 sur 53,3 millimètrès, reprend le format du Mega, offrant un grand nombre de broches d'entrée/sortie : 54 numériques et 12 analogiques. Bien que la plateforme soit toujours en production et disponible à l'achat, son écosystème logiciel a évolué. Le noyau officiel est maintenu en mode maintenance, et des environnements modernes comme MicroPython ou CircuitPython ne sont pas officiellement portés sur cette architecture. Néanmoins, la Due reste une référence solide pour les projets nécessitant une grande rapidité, une mémoire importante et des interfaces analogiques de haute précision, à condition de respecter scrupuleusement les contraintes de tension de 3,3 V et de gérer la faible capacité de courant de sortie.

Forum (1 sujet) →

AttrSpecsvérifié
mcuMicrochip (ex-Atmel) AT91SAM3X8E (a.k.a. SAM3X8E), single-core ARM Cortex-M3, 84 MHz (official tech-specs; build.f_cpu=84000000L in boards.txt). Board main oscillator: 12 MHz (VARIANT_MAINOSC in variant.h). The chip datasheet is the Atmel 11057 SAM3X/SAM3A combined datasheet (PDF) (the link used by the store page).✔
gpu_radios_storagenone — bare-metal MCU board. No WiFi/BT/Ethernet, no filesystem; network or graphics need external modules/shields (board page).✔
memory512 KB flash, 96 KB SRAM, 0 KB EEPROM (official tech-specs, Wikipedia). Sketch space per the core: upload.maximum_size=524288 bytes (boards.txt).✔
digital_i_o54 pins at 3.3 V logic. Official warning: "Unlike most Arduino boards, the Arduino Due board runs at 3.3V. The maximum voltage that the I/O pins can tolerate is 3.3V. Applying voltages higher than 3.3V to any I/O pin could damage the board." (store product JSON).✔
per_pin_drive_current_much_lower_than_avr_boards9 mA (group 1) / 3 mA (group 2) per I/O pin, and 130 mA total across all I/O lines (official tech-specs).✔
pwm12 pins (digital 2–13; PWM peripheral channels + TC channels per variant.cpp). Default analogWrite is 8-bit at 1 kHz (PWM_RESOLUTION 8, PWM_FREQUENCY 1000 in variant.h); resolution/frequency are software-configurable via analogWriteResolution (wiring_analog.c).✔
analog_in12 inputs, hardware 12-bit ADC (ADC_RESOLUTION 12 in variant.h) — but analogRead defaults to 10-bit output for AVR compatibility (static int _readResolution = 10; in wiring_analog.c); use analogReadResolution(12) to get full resolution.✔
analog_out2 true DAC outputs (12-bit DACC, DACC_RESOLUTION 12 in variant.h) on pins DAC0 = digital pin 66 (PB15) and DAC1 = 67 (PB16) (variant.cpp pin table); driven through analogWrite (wiring_analog.c).✔
serial4 hardware UART/USARTs — Serial = SAM3X UART on pins 0/1 (PA8/PA9), wired to the Programming Port (ATmega16U2 bridge); Serial1 = USART0 on 18/19; Serial2 = USART1 on 16/17; Serial3 = USART3 on 14/15 (variant.cpp, variant.h). Plus SerialUSB, the CDC-ACM virtual port on the native USB (variant.h SERIAL_PORT_USBVIRTUAL).✔
i_c2 TWI controllers. Wire = TWI1 on pins 20 (SDA) / 21 (SCL) (near AREF, R3-style header); Wire1 = TWI0 on pins 70/71 (PA17/PA18), the 4-pin header near RESET (variant.h Wire Interfaces block). Note the inverted numbering: Wire→TWI1, Wire1→TWI0.✔
spiSPI0 — MISO=74 (PA25), MOSI=75 (PA26), SCK=76 (PA27), hardware NPCS0/1/2 on pins 10/4/52 (NPCS3 pin 78 is unconnected) (variant.h, variant.cpp).✔
can2 CAN controllers in the silicon; official spec: "CAN: Yes (ext. transceiver needed)" — the board has no CAN transceivers (official tech-specs, board page "CAN support"). CAN0 signals are defined in the core as pins 68/69 (CANRX0/CANTX0 = PA1/PA0) and CAN1 as 88/89 (variant.h).✔
usbMicro-USB connector for the Programming Port (16U2 serial bridge) plus a second native USB OTG port driven by the SAM3X itself (official tech-specs, board page). USB IDs: Programming Port 0x2341/0x2A03 : 0x003D, Native 0x2341/0x2A03 : 0x003E (boards.txt). Wikipedia's board table summarizes the host interface as "16U2 + native" (Wikipedia).✔
debugJTAG header on board; reset and erase buttons (features.md).✔
powerUSB or barrel-plug jack (the official feature list even suggests a 9 V battery on the barrel plug); input voltage (nominal) 7–12 V, I/O voltage 3.3 V (official tech-specs, features.md).✔
size_weight101.5 × 53.3 mm (Mega form factor footprint), 36 g (official tech-specs; Wikipedia lists 101.6 × 53.3 mm).✔
  • Fabricant : Arduino (arduino.cc / Arduino AG). La page de la carte et la fiche produit de la boutique sont des propriétés officielles d'Arduino (page de la carte, JSON produit de la boutique).
  • Année : lancée le 22 octobre 2012 (Wikipedia — Liste des cartes Arduino et systèmes compatibles). Ce fut la première carte Arduino basée sur un microcontrôleur ARM 32 bits (page de la carte).
  • Statut : Active — toujours référencée sur la boutique officielle à 52,50 € (SKU A000062, JSON produit récupéré en direct ; le bloc de prix de la page affichée n'expose pas le prix aux robots d'indexation) (JSON produit de la boutique), et Microchip liste le MCU ATSAM3X8E comme "Status: In Production" (page produit Microchip).
  • Prix de lancement :
  • Variantes : - SKU A000062 (actuel, connecteurs soudés) et ancien SKU A000056 — tous deux listés dans les métadonnées produit officielles (docs-content product.md). - Arduino Due without headers — même carte vendue avec des connecteurs à souder (lien boutique référencé dans la description du produit). - Vendue sous le nom "Genuino Due" hors des États-Unis pendant la scission de la marque en 2015–2016 ; la marque Genuino a ensuite été abandonnée (Wikipedia — Arduino). Le core conserve le VID USB Genuino 0x2A03 aux côtés du 0x2341 d'Arduino (boards.txt). - Un important marché de clones tiers existe ; le core et le firmware officiels fonctionnent dessus, mais la qualité des composants varie (voir Problems).

+ Points forts

  • Première Arduino 32 bits : Cortex-M3 à 84 MHz avec 512 KB de flash / 96 KB de SRAM — environ 30× la flash et 12× la SRAM de l'ATmega328P de l'Uno (page de la carte, tech-specs officielles).
  • Deux vraies sorties DAC 12 bits (DAC0/DAC1) — toujours uniques dans la gamme Arduino classique ; l'Uno/le Mega n'en ont aucune (page de la carte, variant.h).
  • ADC 12 bits (contre 10 bits sur les cartes AVR), utilisable de bout en bout avec analogReadResolution(12) (variant.h, wiring_analog.c).
  • Deux contrôleurs CAN sur la puce (transceiver externe requis) — la façon classique de mettre une Arduino sur un bus CAN automobile/industriel (tech-specs officielles, bibliothèque due_can).
  • Capacité de maître USB : le port natif est OTG ; la liste officielle des fonctionnalités annonce « Use the Due as USB host for peripherals such as mice », avec un tutoriel officiel d'hôte clavier et la bibliothèque USBHost (features.md, bibliothèque USBHost).
  • Architecture double USB : un Programming Port « sûr » (pont 16U2, toujours récupérable) plus un port Native capable de présenter n'importe quelle classe de périphérique USB via le stack core/USBHost (boards.txt).
  • Nombre d'E/S de classe Mega dans un format plus fin : 54 numériques + 12 analogiques + 2 DAC + 4 UART + 2 TWI + SPI + CAN, suivant le pinout shield Arduino 1.0 avec IOREF pour l'adaptation des shields 3,3 V (JSON produit de la boutique).
  • Connecteur JTAG + bouton erase pour la récupération et le débogage de bas niveau (features.md).
  • Silicium timer/PWM riche : canaux du périphérique PWM plus 9 canaux TC (timer counter) répartis sur les broches 2–13, permettant un PWM plus rapide ou à phase précise au-delà des préréglages AVR (variant.cpp).

− Points faibles

  • 3,3 V uniquement — non tolérant 5 V. La page produit officielle affiche un avertissement explicite en gras indiquant qu'appliquer plus de 3,3 V à n'importe quelle broche d'E/S peut endommager la carte ; les shields/signaux 5 V nécessitent une adaptation de niveau même si l'empreinte shield s'adapte physiquement (JSON produit de la boutique).
  • Faible courant de commande par broche. 9 mA / 3 mA par groupe de broches et 130 mA au total sur toutes les lignes d'E/S — bien loin des 20–40 mA des cartes AVR — donc LED, relais et solénoïdes nécessitent fréquemment des pilotes (tech-specs officielles).
  • analogRead renvoie silencieusement des valeurs 10 bits alors que l'ADC est 12 bits (défaut _readResolution = 10) ; beaucoup de tutoriels supposent 0–4095 et obtiennent 0–1023 tant qu'ils n'appellent pas analogReadResolution(12) (wiring_analog.c).
  • Particularités CDC du port natif. SerialUSB n'existe qu'une fois que l'hôte USB a énuméré la classe CDC ; les sketches qui se bloquent dessus sans hôte connecté, ou qui se ré-énumèrent au reset, sont un sujet de forum récurrent (sujet de forum 1183292 — CDC sur les Arduino USB natif).
  • Carte invisible sur les deux ports. Mode de défaillance classique : ni le Programming Port ni le port Native ne s'énumèrent (mauvais câble / puce de clone / bootloader briqué) ; la récupération passe par le bouton erase + SAM-BA (sujet de forum 1161811).
  • La flash doit être effacée avant toute re-programmation. Le code de boot du SAM3X exige un effacement complet de la flash quand un sketch tourne déjà ; le touch automatique à 1200 bauds s'en charge, mais quand l'état du bootloader est perdu, il faut maintenir le bouton erase et retéléverser manuellement (sujet de forum 1278587).
  • Numérotation des contrôleurs I²C source de confusion. Wire correspond à TWI1 (broches 20/21) alors que Wire1 correspond à TWI0 (le connecteur 4 broches, broches 70/71) — les références TWI0/TWI1 au niveau de la fiche technique ne correspondent pas aux noms Arduino (variant.h).
  • CAN annoncée, transceiver non embarqué. La page marketing parle de « two CAN buses », mais le tableau des specs officielles ajoute « ext. transceiver needed » — il faut ajouter un transceiver CAN 3,3 V (et vérifier que les signaux sont accessibles sur votre clone/révision) avant que quoi que ce soit n'apparaisse sur le bus (tech-specs officielles vs page de la carte).
  • Pas d'EEPROM. 0 KB d'EEPROM contre 1 KB sur l'Uno — persister des données de calibration exige des astuces d'écriture en flash ou une EEPROM externe I²C/SPI (tableau des cartes Wikipedia).
  • Plateforme vieillissante / dérive de l'écosystème. Le core SAM est en mode maintenance pendant qu'Arduino pousse les plateformes mbed/renesas ; MicroPython/CircuitPython n'ont jamais eu de port SAM3X, et Mbed (qui supportait la Due) a été arrêté en juillet 2026 (liste des ports MicroPython, annonce du sunset Mbed).
  • Retour d'expérience expert expert — expert-arduino
    • Petit retour d'experience sur la Due après plusieurs mois d'utilisation. Les specs sont solides : premier 32-bit avec ses 84 MHz et surtout les deux sorties DAC 12-bit reelles, un vrai plus pour la generation analogique propre. Par contre, attention aux pieges classiques. D'abord le 3.3V exclusif, … — expert-arduino
    • Merci pour ce resumee très clair. Je debute avec la Due pour un projet audio et je confirme le souci du courant faible, j'ai du mettre des transistors pour mes amplis. Par contre, je bloque completement sur la partie USB. Quand je branche le cable en micro-usb, ni le port Programming ni le Native n… — maker-debutant
    • Salut maker-debutant, ne panique pas, c'est un classique. Si les deux ports sont invisibles, c'est souvent un bootloader bloque ou un mauvais cable (certains cables chargeurs ne font pas de data). Essaie deja de maintenir le bouton Erase enfonce pendant que tu branches l'USB, puis relache-le pour v… — bricoleur-75

Retours et projets de la communauté

  • Marlin 3D-printer firmware on Due-based controller boards

    Marlin 3D-printer firmware on Due-based controller boards — Marlin's official board list has a whole "SAM3X8E ARM Cortex-M3 — found in the Arduino Due" family: RAMPS-FD v1/v2, RADDS, DUE3DOM / DUE3DOM Mini, RAMPS4DUE, RAMPS Duo, UltiMachine Archim 1/2, Kratos…

  • Official "Keyboard Controller" USB-host tutorial

    Official "Keyboard Controller" USB-host tutorial — use the Due as a USB host that reads a keyboard and acts on it, built on the USBHost library ; linked directly from the official Due feature page (, ). (unverified au 2026-10-13)

  • CAN-bus vehicle/industrial interfaces

    CAN-bus vehicle/industrial interfaces — with the community due_can library ("object oriented canbus library for Arduino Due compatible boards") — e.g. a Mitsubishi Outlander PHEV on-board-charger controller built on Due CAN (, ). (unverified au 2026-10-13) Cu…

  • "Build your own Due" / custom carrier boards

    "Build your own Due" / custom carrier boards — documented project for folding the Due circuitry into a custom PCB . (unverified au 2026-10-13)

  • 3,3 V uniquement — non tolérant 5 V. La page produit officielle affiche un avertissement explicite en gras indiquant qu'appliquer plus de 3,3 V à n'importe quelle broche d'E/S peut endommager la carte ; les shields/signaux 5 V nécessitent une adaptation de niveau même si l'empreinte shield s'adapte physiquement (JSON produit de la boutique).
  • Faible courant de commande par broche. 9 mA / 3 mA par groupe de broches et 130 mA au total sur toutes les lignes d'E/S — bien loin des 20–40 mA des cartes AVR — donc LED, relais et solénoïdes nécessitent fréquemment des pilotes (tech-specs officielles).
  • analogRead renvoie silencieusement des valeurs 10 bits alors que l'ADC est 12 bits (défaut _readResolution = 10) ; beaucoup de tutoriels supposent 0–4095 et obtiennent 0–1023 tant qu'ils n'appellent pas analogReadResolution(12) (wiring_analog.c).
  • Particularités CDC du port natif. SerialUSB n'existe qu'une fois que l'hôte USB a énuméré la classe CDC ; les sketches qui se bloquent dessus sans hôte connecté, ou qui se ré-énumèrent au reset, sont un sujet de forum récurrent (sujet de forum 1183292 — CDC sur les Arduino USB natif).
  • Carte invisible sur les deux ports. Mode de défaillance classique : ni le Programming Port ni le port Native ne s'énumèrent (mauvais câble / puce de clone / bootloader briqué) ; la récupération passe par le bouton erase + SAM-BA (sujet de forum 1161811).
  • La flash doit être effacée avant toute re-programmation. Le code de boot du SAM3X exige un effacement complet de la flash quand un sketch tourne déjà ; le touch automatique à 1200 bauds s'en charge, mais quand l'état du bootloader est perdu, il faut maintenir le bouton erase et retéléverser manuellement (sujet de forum 1278587).
  • Numérotation des contrôleurs I²C source de confusion. Wire correspond à TWI1 (broches 20/21) alors que Wire1 correspond à TWI0 (le connecteur 4 broches, broches 70/71) — les références TWI0/TWI1 au niveau de la fiche technique ne correspondent pas aux noms Arduino (variant.h).
  • CAN annoncée, transceiver non embarqué. La page marketing parle de « two CAN buses », mais le tableau des specs officielles ajoute « ext. transceiver needed » — il faut ajouter un transceiver CAN 3,3 V (et vérifier que les signaux sont accessibles sur votre clone/révision) avant que quoi que ce soit n'apparaisse sur le bus (tech-specs officielles vs page de la carte).
  • Pas d'EEPROM. 0 KB d'EEPROM contre 1 KB sur l'Uno — persister des données de calibration exige des astuces d'écriture en flash ou une EEPROM externe I²C/SPI (tableau des cartes Wikipedia).
  • Plateforme vieillissante / dérive de l'écosystème. Le core SAM est en mode maintenance pendant qu'Arduino pousse les plateformes mbed/renesas ; MicroPython/CircuitPython n'ont jamais eu de port SAM3X, et Mbed (qui supportait la Due) a été arrêté en juillet 2026 (liste des ports MicroPython, annonce du sunset Mbed).

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.

  • dac-onde.ino Arduino

    Contrairement aux Arduino AVR, la Due possède deux vraies sorties DAC 12 bits : la sinusoïde sort directement, sans filtre ni PWM. Sur oscilloscope, on voit une courbe propre centrée sur 1,65 V.

  • adc-12-bits.ino Arduino

    La Due convertit en 12 bits sous 3,3 V : quatre fois plus de pas qu'un AVR. Une moyenne glissante sur 16 échantillons nettoie le bruit, et la tension est rendue en volts.

  • pwm-12-bits.ino Arduino

    Les broches PWM 2-13 de la Due acceptent une résolution logicielle jusqu'à 12 bits : la montée devient parfaitement continue, sans paliers visibles. C'est l'un des rares apports pratiques du passage …

  • gps-serial1.ino Arduino

    La Due aligne quatre UART matériels : Serial1 (broches 19/18) reste libre pendant que l'USB sert au debug. Le filtre garde uniquement la trame NMEA GGA, la plus utile (heure, latitude, longitude).

  • pont-usb-serial1.ino Arduino

    Avant d'écrire un pilote, il faut voir ce que dit le module : ce pont recopie tout entre l'UART1 et l'USB, dans les deux sens — on peut donc aussi taper des commandes AT. Le grand classique de la mis…

  • 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…

  • test-can.ino Arduino

    Le SAM3X intègre deux contrôleurs CAN : la Due devient nœud bus CAN (automobile, industrie) avec un simple transceiver SN65HVD230/TJA1050. La bibliothèque due_can masque les registres. Attention au b…

  • usb-native.ino Arduino

    La Due possède deux connecteurs USB : le Programming (pont 16U2) et le Native, relié directement au SAM3X. SerialUSB crée un second port série, et le while(!SerialUSB) évite de perdre les messages d'…

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