Arduino Due

ArduinoMCU 32-bitarduino

⚡ Lo esencial en 60 segundos

La Arduino Due representa un hito fundamental en la historia de las plataformas de desarrollo electrónico, ya que fue la primera placa de la familia Arduino en abandonar la arquitectura de 8 bits para adoptar un microcontrolador de 32 bits basado en el núcleo ARM Cortex-M3. Lanzada oficialmente en octubre de 2012, esta tarjeta supuso un salto cualitativo significativo en cuanto a potencia de procesamiento y capacidad de memoria, permitiendo a los usuarios abordar proyectos mucho más complejos que los que podían gestionar sus predecesoras basadas en chips AVR. En su corazón late el microcontrolador ATSAM3X8E, fabricado originalmente por Atmel y actualmente en producción bajo el paraguas de Microchip. Este componente opera a una frecuencia de reloj de 84 MHz, lo que significa que puede ejecutar 84 millones de ciclos de instrucción por segundo, una velocidad muy superior a la de las placas clásicas como la Uno. Esta potencia bruta se complementa con una memoria flash de 512 KB para almacenar el código del programa y 96 KB de memoria RAM estática para el almacenamiento temporal de datos durante la ejecución. Para contextualizar esta capacidad, la memoria flash es aproximadamente treinta veces mayor y la RAM doce veces mayor que la disponible en una Arduino Uno, lo que abre la puerta a aplicaciones que requieren grandes tablas de datos, algoritmos complejos de control o interfaces gráficas básicas.

Es crucial entender que, a diferencia de la mayoría de las placas Arduino tradicionales, la Due funciona a una lógica de voltaje de 3,3 voltios. Esta característica técnica tiene implicaciones directas y críticas para el usuario: los pines de entrada y salida no toleran voltajes superiores a 3,3 V. Aplicar 5 V, que es el estándar en muchas otras placas y sensores, podría dañar irreversiblemente la tarjeta. Por lo tanto, al conectar periféricos o escudos diseñados para 5 V, es necesario utilizar conversores de nivel de voltaje o asegurarse de que los componentes sean compatibles con 3,3 V. Además, la capacidad de corriente que cada pin puede suministrar es limitada, oscilando entre 3 y 9 mA por grupo de pines, con un límite total de 130 mA para todos los pines de E/S combinados. Esto es significativamente menor que los 20-40 mA de las placas AVR, lo que significa que para controlar dispositivos que requieren más potencia, como relés, motores pequeños o tiras de LEDs brillantes, será necesario utilizar drivers externos o transistores.

En cuanto a las capacidades de entrada y salida, la Due ofrece una versatilidad notable. Dispone de 54 pines digitales, de los cuales 12 soportan modulación por ancho de pulso (PWM), una técnica que permite simular señales analógicas mediante la variación del tiempo que una señal permanece alta o baja. Aunque la resolución por defecto del PWM es de 8 bits, esta es configurable por software. En el ámbito de la entrada analógica, la placa cuenta con 12 entradas equipadas con un convertidor analógico-digital (ADC) de 12 bits. Es importante destacar que, aunque el hardware es capaz de una resolución de 12 bits (4096 niveles), la función de lectura por defecto devuelve valores de 10 bits para mantener la compatibilidad con el código antiguo; el usuario debe modificar la configuración para aprovechar la precisión total del hardware. Una de las características más distintivas y únicas dentro de la línea clásica de Arduino es la presencia de dos salidas analógicas reales mediante convertidores digital-analógico (DAC) de 12 bits. A diferencia de las placas anteriores que solo podían simular salidas analógicas mediante filtros pasivos sobre señales PWM, la Due puede generar voltajes analógicos precisos y estables directamente, lo cual es ideal para aplicaciones de audio, control de motores paso a paso o generación de formas de onda.

La arquitectura de comunicaciones es igualmente robusta. La placa integra cuatro puertos serie hardware (UART/USART), lo que permite la comunicación simultánea con múltiples dispositivos como sensores GPS, módulos de radiofrecuencia o instrumentos científicos, sin depender de emulaciones por software que consuman recursos del procesador. Además, dispone de dos controladores I2C y uno SPI para conectar sensores y memorias externas. Un aspecto interesante es la inclusión de dos controladores CAN en el chip, un protocolo estándar en la industria automotriz y la automatización industrial. Sin embargo, es vital notar que la placa no incluye los transceptores CAN físicos; el usuario debe añadir un módulo externo compatible para poder comunicarse en una red CAN. La conectividad USB es dual: un puerto micro-USB actúa como puente serie para la programación y la comunicación, mientras que un segundo puerto USB nativo permite que la Due funcione como dispositivo USB o incluso como anfitrión (host) USB, pudiendo leer teclados o ratones mediante la librería oficial USBHost.

El entorno de desarrollo sigue siendo el ecosistema Arduino IDE, utilizando el núcleo específico para la arquitectura SAM. La programación se realiza mediante un bootloader que permite la carga de código a través del puerto serie o USB. Un detalle técnico importante es que, debido a la arquitectura del microcontrolador, la memoria flash debe borrarse antes de ser reprogramada si el código anterior está en ejecución; aunque el entorno de desarrollo suele gestionar esto automáticamente mediante una señal específica, la placa cuenta con un botón físico de borrado para recuperación manual en caso de fallos. También dispone de un conector JTAG para depuración avanzada a bajo nivel. La alimentación puede realizarse a través del puerto USB o mediante una fuente externa de 7 a 12 voltios a través de un conector de barril.

A pesar de su antigüedad relativa en el mercado, la Arduino Due sigue siendo una herramienta relevante y activa, con un precio de venta actual alrededor de 52,50 euros. Su ausencia de EEPROM (memoria de solo escritura y lectura persistente) obliga a utilizar trucos de escritura en la memoria flash o memorias externas I2C/SPI para guardar datos de configuración. Aunque plataformas modernas como MicroPython no tienen soporte oficial para este chip, y el soporte de Mbed OS ha sido discontinuado, la Due mantiene una comunidad activa y es ampliamente utilizada en proyectos avanzados como controladores para impresoras 3D de alto rendimiento (firmware Marlin), interfaces de diagnóstico vehicular y sistemas de control industrial. Su combinación de potencia de cálculo, múltiples interfaces de comunicación y salidas analógicas reales la convierten en una opción sólida para quienes necesitan más músculo computacional que las placas básicas, siempre que se respeten sus limitaciones de voltaje y corriente.

Foro (1 tema) →

AttrEspecificacionesverificado
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).✔
  • Fabricante: Arduino (arduino.cc / Arduino AG). La página de la placa y la ficha del producto de la tienda son propiedades oficiales de Arduino (página de la placa, JSON del producto de la tienda).
  • Año: lanzada el 22 de octubre de 2012 (Wikipedia — Lista de placas Arduino y sistemas compatibles). Fue la primera placa Arduino basada en un microcontrolador con núcleo ARM de 32 bits (página de la placa).
  • Estado: Activa — sigue listada en la tienda oficial a 52,50 € (SKU A000062, JSON del producto obtenido en vivo; el bloque de precio de la página renderizada no expone el precio a los rastreadores) (JSON del producto de la tienda), y Microchip lista el MCU ATSAM3X8E como "Status: In Production" (página de producto de Microchip).
  • Precio de lanzamiento:
  • Variantes: - SKU A000062 (actual, cabeceras soldadas) y la antigua SKU A000056 — ambas listadas en los metadatos oficiales del producto (docs-content product.md). - Arduino Due without headers — la misma placa vendida con los conectores de pines sin soldar (enlace a la tienda referenciado en la descripción del producto). - Vendida como "Genuino Due" fuera de EE. UU. durante la división de la marca en 2015–2016; la marca Genuino se abandonó más tarde (Wikipedia — Arduino). El core conserva el VID USB de Genuino 0x2A03 junto al 0x2341 de Arduino (boards.txt). - Existe un amplio mercado de clones de terceros; el core y el firmware oficiales funcionan en ellos, pero la calidad de los componentes varía (ver Problems).

+ Puntos fuertes

  • Primer Arduino de 32 bits: Cortex-M3 a 84 MHz con 512 KB de flash / 96 KB de SRAM — aproximadamente 30× la flash y 12× la SRAM del ATmega328P del Uno (página de la placa, tech-specs oficiales).
  • Dos salidas DAC verdaderas de 12 bits (DAC0/DAC1) — sigue siendo único en la línea Arduino clásica; el Uno/Mega no tienen ninguna (página de la placa, variant.h).
  • ADC de 12 bits (frente a 10 bits en las placas AVR), aprovechable de extremo a extremo con analogReadResolution(12) (variant.h, wiring_analog.c).
  • Dos controladores CAN en el chip (se requiere transceptor externo) — la forma clásica de conectar un Arduino a un bus CAN de coche/industrial (tech-specs oficiales, librería due_can).
  • Capacidad de host USB: el puerto nativo es OTG; la lista oficial de características anuncia "Use the Due as USB host for peripherals such as mice", con un tutorial oficial de host de teclado y la librería USBHost (features.md, librería USBHost).
  • Arquitectura de doble USB: un Programming Port "seguro" (puente 16U2, siempre recuperable) más un puerto Native que puede presentar cualquier clase de dispositivo USB mediante el core/stack USBHost (boards.txt).
  • Cantidad de E/S de clase Mega en una huella más fina: 54 digitales + 12 analógicas + 2 DAC + 4 UART + 2 TWI + SPI + CAN, siguiendo el pinout de shields Arduino 1.0 con IOREF para la adaptación de shields a 3,3 V (JSON del producto de la tienda).
  • Conector JTAG + botón de erase para recuperación y depuración de bajo nivel (features.md).
  • Silicio de timer/PWM muy completo: canales del periférico PWM más 9 canales TC (timer counter) mapeados entre los pines 2–13, lo que permite PWM de mayor frecuencia o de fase precisa más allá de los presets AVR (variant.cpp).

− Puntos débiles

  • Solo 3,3 V — no tolerante a 5 V. La página oficial del producto lleva una advertencia explícita en negrita de que aplicar >3,3 V a cualquier pin de E/S puede dañar la placa; los shields/señales de 5 V necesitan nivelado aunque la huella del shield encaje (JSON del producto de la tienda).
  • Débil corriente de conducción por pin. 9 mA / 3 mA por grupo de pines y 130 mA en total entre todas las líneas de E/S — muy por debajo de los 20–40 mA de las placas AVR — por lo que LEDs/relés/solenoides frecuentemente necesitan drivers (tech-specs oficiales).
  • analogRead devuelve silenciosamente valores de 10 bits aunque el ADC sea de 12 bits (por defecto _readResolution = 10); muchos tutoriales asumen 0–4095 y obtienen 0–1023 hasta que llaman a analogReadResolution(12) (wiring_analog.c).
  • Peculiaridades del CDC del puerto nativo. SerialUSB solo existe una vez que el host USB ha enumerado la clase CDC; los sketches que se bloquean esperando sin host conectado, o que re-enumeran tras un reset, son un tema recurrente en el foro (foro tema 1183292 — CDC en Arduinos con USB nativo).
  • Placa invisible en ambos puertos. Un modo de fallo clásico: ni el Programming ni el Native puerto enumeran (cable/chip clon/bootloader bloqueado mal); la recuperación pasa por el botón de erase + SAM-BA (foro tema 1161811).
  • La flash debe borrarse antes de re-programar. El código de arranque del SAM3X requiere un borrado completo de la flash cuando ya hay un sketch en ejecución; el touch automático a 1200 baudios se encarga de esto, pero cuando se pierde el estado del bootloader hay que mantener pulsado el botón de erase y volver a subir manualmente (foro tema 1278587).
  • Numeración confusa de los controladores I²C. Wire se mapea a TWI1 (pines 20/21) mientras que Wire1 se mapea a TWI0 (el conector de 4 pines, pines 70/71) — las referencias a TWI0/TWI1 a nivel de datasheet no coinciden con los nombres de Arduino (variant.h).
  • CAN anunciado, transceptor no montado. La página de márketing dice "two CAN buses", pero la tabla de specs oficial añade "ext. transceiver needed" — hay que añadir un transceptor CAN de 3,3 V (y confirmar que las señales son accesibles en su clon/revisión) antes de que nada aparezca en el bus (tech-specs oficiales vs página de la placa).
  • Sin EEPROM. 0 KB de EEPROM frente a 1 KB en el Uno — persistir datos de calibración requiere trucos de escritura en flash o una EEPROM externa I²C/SPI (tabla de placas de Wikipedia).
  • Plataforma envejecida / deriva del ecosistema. El core SAM está en modo mantenimiento mientras Arduino impulsa las plataformas mbed/renesas; MicroPython/CircuitPython nunca tuvieron un port del SAM3X, y Mbed (que sí soportaba el Due) fue retirado en julio de 2026 (lista de ports de MicroPython, aviso de retiro de 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

Opiniones y proyectos de la comunidad

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

    Firmware de impresoras 3D Marlin en placas controladoras basadas en Due — La lista oficial de placas de Marlin incluye toda la familia "SAM3X8E ARM Cortex-M3 — found in the Arduino Due": RAMPS-FD v1/v2, RADDS, DUE3DOM / DUE3DOM Mini, RAMPS4DUE, RAMPS Duo, Ult…

  • Official "Keyboard Controller" USB-host tutorial

    Tutorial oficial de host USB "Keyboard Controller" — use el Due como host USB que lee un teclado y actúa sobre él, basado en la biblioteca USBHost; enlazado directamente desde la página oficial de características del Due (, ). (unverified au 2026-10-13)

  • CAN-bus vehicle/industrial interfaces

    Interfaces de vehículo/industriales de bus CAN — con la biblioteca comunitaria due_can ("object oriented canbus library for Arduino Due compatible boards") — p. ej. un controlador de cargador a bordo para Mitsubishi Outlander PHEV basado en CAN del Due (, ). …

  • "Build your own Due" / custom carrier boards

    "Build your own Due" / placas portadoras personalizadas — proyecto documentado para integrar la circuitería del Due en un PCB personalizado . (unverified au 2026-10-13)

  • Solo 3,3 V — no tolerante a 5 V. La página oficial del producto lleva una advertencia explícita en negrita de que aplicar >3,3 V a cualquier pin de E/S puede dañar la placa; los shields/señales de 5 V necesitan nivelado aunque la huella del shield encaje (JSON del producto de la tienda).
  • Débil corriente de conducción por pin. 9 mA / 3 mA por grupo de pines y 130 mA en total entre todas las líneas de E/S — muy por debajo de los 20–40 mA de las placas AVR — por lo que LEDs/relés/solenoides frecuentemente necesitan drivers (tech-specs oficiales).
  • analogRead devuelve silenciosamente valores de 10 bits aunque el ADC sea de 12 bits (por defecto _readResolution = 10); muchos tutoriales asumen 0–4095 y obtienen 0–1023 hasta que llaman a analogReadResolution(12) (wiring_analog.c).
  • Peculiaridades del CDC del puerto nativo. SerialUSB solo existe una vez que el host USB ha enumerado la clase CDC; los sketches que se bloquean esperando sin host conectado, o que re-enumeran tras un reset, son un tema recurrente en el foro (foro tema 1183292 — CDC en Arduinos con USB nativo).
  • Placa invisible en ambos puertos. Un modo de fallo clásico: ni el Programming ni el Native puerto enumeran (cable/chip clon/bootloader bloqueado mal); la recuperación pasa por el botón de erase + SAM-BA (foro tema 1161811).
  • La flash debe borrarse antes de re-programar. El código de arranque del SAM3X requiere un borrado completo de la flash cuando ya hay un sketch en ejecución; el touch automático a 1200 baudios se encarga de esto, pero cuando se pierde el estado del bootloader hay que mantener pulsado el botón de erase y volver a subir manualmente (foro tema 1278587).
  • Numeración confusa de los controladores I²C. Wire se mapea a TWI1 (pines 20/21) mientras que Wire1 se mapea a TWI0 (el conector de 4 pines, pines 70/71) — las referencias a TWI0/TWI1 a nivel de datasheet no coinciden con los nombres de Arduino (variant.h).
  • CAN anunciado, transceptor no montado. La página de márketing dice "two CAN buses", pero la tabla de specs oficial añade "ext. transceiver needed" — hay que añadir un transceptor CAN de 3,3 V (y confirmar que las señales son accesibles en su clon/revisión) antes de que nada aparezca en el bus (tech-specs oficiales vs página de la placa).
  • Sin EEPROM. 0 KB de EEPROM frente a 1 KB en el Uno — persistir datos de calibración requiere trucos de escritura en flash o una EEPROM externa I²C/SPI (tabla de placas de Wikipedia).
  • Plataforma envejecida / deriva del ecosistema. El core SAM está en modo mantenimiento mientras Arduino impulsa las plataformas mbed/renesas; MicroPython/CircuitPython nunca tuvieron un port del SAM3X, y Mbed (que sí soportaba el Due) fue retirado en julio de 2026 (lista de ports de MicroPython, aviso de retiro de Mbed).

Biblioteca de código — ejemplos escritos para esta placa

  • clignotante.ino Arduino

    La comprobación básica: el LED del pin 13 parpadea a 1 Hz. millis() sustituye a delay() para mantener el bucle libre. Si no parpadea, revise la subida o la selección de placa.

  • bouton-led.ino Arduino

    Un botón cableado a GND enciende el LED mientras se pulsa. INPUT_PULLUP activa la resistencia interna y la ventana de 30 ms filtra el rebote mecánico del contacto.

  • dac-onde.ino Arduino

    A diferencia de los Arduino AVR, la Due tiene dos salidas DAC reales de 12 bits: la senoide sale directa, sin filtro ni PWM. En el osciloscopio se ve una curva limpia centrada en 1,65 V.

  • adc-12-bits.ino Arduino

    La Due convierte a 12 bits bajo 3,3 V: cuatro veces más pasos que un AVR. Una media móvil de 16 muestras limpia el ruido y la tensión se devuelve en voltios.

  • pwm-12-bits.ino Arduino

    Los pines PWM 2-13 de la Due admiten resolución por software hasta 12 bits: la rampa queda perfectamente continua, sin escalones. Una de las pocas ventajas prácticas de pasar de AVR a Due.

  • gps-serial1.ino Arduino

    La Due dispone de cuatro UART por hardware: Serial1 (pines 19/18) queda libre mientras el USB sirve para depurar. El filtro guarda solo la frase NMEA GGA, la más útil (hora, latitud, longitud).

  • pont-usb-serial1.ino Arduino

    Antes de escribir un driver hay que ver qué dice el módulo: este puente copia todo entre UART1 y USB en ambos sentidos, así que también puede escribir comandos AT. El clásico del puesta a punto GSM/G…

  • servo-balayage.ino Arduino

    La biblioteca Servo genera el pulso de control (1-2 ms) y barre el ángulo de extremo a extremo. Alimentar un servo mediano desde un 5 V dedicado evita reinicios por picos de corriente.

  • test-can.ino Arduino

    El SAM3X integra dos controladores CAN: con un simple transceptor SN65HVD230/TJA1050 la Due pasa a ser nodo de bus CAN (automoción, industria). La librería due_can oculta los registros. Ojo al cablea…

  • usb-native.ino Arduino

    La Due tiene dos conectores USB: Programming (puente 16U2) y Native, conectado directamente al SAM3X. SerialUSB es un segundo puerto serie, y while(!SerialUSB) evita perder los mensajes de arranque.

Ejemplos y repositorios encontrados en línea