Tantos años escribiendo en el blog sobre Arduino y no tenía ningún artículo no podcast dedicados a Arduino UNO R3, el buque insignia de Arduino.
Junto con su hermano mayor, el Arduino MEGA 2560, son dos de las placas más populares que tiene la marca. Sobre todo si te estás iniciando con la programación y con la electrónica.
Pero este artículo no va a ser como los cientos o miles de artículos que hay en Internet, en otros blogs. Este artículo es diferente.
Por supuesto que te hablaré de sus características técnicas, faltaría más. Antes de utilizar cualquier placa o componente tienes que conocer cómo funciona.
Pero además te hablaré de la evolución que ha sufrido desde el primer prototipo hasta su versión más reciente, el Arduino UNO R3. Qué cambios ha sufrido a nivel de hardware y qué implicaciones han conllevado estos cambios.
También te voy a mostrar una alternativa DIY a Arduino que se llama SEVERINO por si quieres ir un pasito más allá y montar tu propia placa.
Por último, como no, te hablaré de cómo programar un Arduino UNO R3 a través del IDE que nos ofrece la marca.
Ponte cómodo que empezamos con este tutorial retrospectivo sobre la placa más famosa de Arduino.

Indice de contenidos
¿Qué es Arduino UNO R3 y para qué sirve?
Arduino UNO R3 es una placa de desarrollo basada en el microcontrolador ATmega328P. Es una de las más conocidas y usadas de la extensa familia de placas Arduino, siendo una mejora de un diseño anterior (Arduino Duemilanove) que mantiene el 100% de compatibilidad y muestra algunos cambios significativos en su diseño (pero de eso hablaremos más tarde).

Su nombre “UNO” (que en italiano significa lo mismo que en español), fue seleccionado para marcar el lanzamiento de la versión 1.0 del software Arduino IDE.
Su fama dentro de la familia Arduino se debe a varios factores:
- Bajo precio: es una de las placas de desarrollo más económicas del mercado.
- Compatibilidad: la posición de sus cabezales hace que sea compatible con casi todos los shield y accesorios Arduino existentes.
- Presencia en Kits de desarrollo: la mayoría de los kits de Arduino se basan en esta placa.
- Fácil de utilizar: al igual que la mayoría de las placas Arduino es extremadamente simple implementar prototipos con ella.
- Robusta: es posible utilizarla sin mucha preocupación ya que en el peor de los casos se puede remplazar el microcontrolador (en los modelos que utilizan encapsulados DIP) y listo.
Muy bien, todos estos factores son la leche pero ¿para qué sirve un Arduino UNO R3?
Nunca hay que perder el foco del objetivo que pretenden todas las placas de Arduino: programar un microcontrolador.
Dicho esto, un Arduino UNO R3 se puede utilizar para lo que quieras.
Basta escribir en Google “proyectos con Arduino UNO” para obtener cientos de resultados con los más variopintos proyectos. Desde un simple dado electrónico hasta un robot Arduino controlado por Bluetooth. El límite lo pone tu imaginación.
Sé que dicho así suena un poco a especulación, pero al final te dejo algunos enlaces a proyectos con Arduino UNO R3 para que lo compruebes por ti mismo.
Antepasados de Arduino UNO
El Arduino UNO R3 es lo que es gracias a sus antepasados. Los antecesores hicieron que poco a poco se fuera forjando y perfeccionando hasta llegar a donde está, la placa más robusta y popular de Arduino.
La evolución de las placas Arduino se divide en 2 etapas:
- Arduino Serial: primeras placas de Arduino. Utilizaban una interfaz RS232 para comunicarse con el ordenador.
- Arduino USB: Estas placas sustituyen la interfaz RS232 con un puerto USB para simplificar el proceso de grabado y comunicación con el ordenador.
Veamos ahora cada una de las placas que conforman estas etapas para apreciar el proceso de depuración y perfeccionamiento.
Arduino Serial
Las primeras placas derivadas del proyecto Arduino fueron conocidas como Arduino Serial y Arduino Serial v2.0 (una revisión mejorada de la primera) .
Fueron presentadas en sociedad en los años 2005 y 2006.

El término “Serial” se debe a que para grabar el programa se utilizaba el protocolo serie RS-232 mediante un puerto serie.
Teniendo en cuenta que los ordenadores modernos no traen ya estos puertos (también llamados puertos COM) es necesario utilizar un adaptador USB-RS232 para programar esta placa.
Como puedes comprobar, en el esquema original, su diseño es realmente simple y utiliza unos pocos componentes que son fáciles de conseguir en, prácticamente, cualquier lugar.

Inspeccionando el esquemático se pueden discernir tres bloques principales:
- La etapa de alimentación: encargada de que los componentes de la placa reciban los voltajes adecuados.
- La interfaz de programación: permite que el microcontrolador sea programado desde el ordenador.
- Microcontrolador con “sistema mínimo”: componentes indispensables para que el microcontrolador funcione correctamente.
Analicemos en detalle cada una de estas etapas:
Etapa de Alimentación

El primer elemento de esta etapa es el conector tipo Jack (a la izquierda del bloque). Este se conecta al regulador de voltaje (IC2) mediante el diodo (D1). Dicho diodo ofrece protección a toda la placa en caso de que la polaridad de la fuente sea invertida.
El regulador IC2 ofrece a su salida 5 voltios estables. Ese voltaje es utilizado por el microcontrolador y la interfaz de programación. Los condensadores que acompañan al regulador son utilizados para mejorar la estabilidad de la fuente y evitar variaciones de voltaje.
Por último se ha incluido un LED (POWERLED) con una resistencia de 220 Ohmios. Este LED indica que la placa está correctamente alimentada.
Interfaz de programación

Como interfaz de programación se utiliza un conector DE-9. Este conector debe ser conectado a un puerto serie del ordenador o a un adaptador USB-Serie si la computadora no dispone de uno.
Estos puertos implementan el protocolo RS232 que es similar al utilizado por el microcontrolador. Su principal diferencia reside en los voltajes empleados para los niveles lógicos.
En la siguiente tabla te resumo los voltajes empleados para representar los niveles lógicos en ambos casos.
Nivel Lógico | Serie TTL (Microcontrolador) | Serie RS-232 (DE-9) |
---|---|---|
1 | +5V | [-3V; -15V] |
0 | 0V | [+3V; +15V] |
Las formas de onda del protocolo TTL y RS-232(DE-9), son diferentes como se puede comprobar en esta imagen.

Esto provoca que no sea posible vincular directamente los pines del conector a los del microcontrolador, necesitando un conversor de niveles.
Esta función la realizan los transistores, diodos, condensadores y resistencias que acompañan al conector en el diagrama.
Esto no pretende ser una clase de electrónica analógica, así que no entraré en detalles sobre el funcionamiento de este convertidor. Solo te comento que su función es, básicamente, lograr una conversión de niveles como la mostrada en la figura previa.
Las etiquetas M8RXD y M8TXD representan la conexión de los pines RXD y TXD del microcontrolador con la interfaz de programación.
Microcontrolador con “sistema mínimo”
En este bloque se encuentra el eje principal de la placa: el microcontrolador. En esta placa se utiliza un ATmega8. Este cuenta con una memoria de programa de 8 KBytes, una memoria de datos de 1 KByte y 512 Bytes de memoria EEPROM.
Solo te menciono estas características ya que son las más significativas, sin embargo, te invito a echarle un vistazo a su hoja de datos y comprobar por ti mismo qué otras características posee este microcontrolador.

Analicemos ahora el circuito que lo rodea.
En primer lugar está el pin RESET. Este pin esta conectado mediante una resistencia de 10 kΩ a los 5 V de la fuente y al botón S1 (este es el botón de reinicio).
Esta configuración se debe a que cuando el pin RESET es puesto a nivel bajo el microcontrolador es reiniciado (esto ocurre al presionar el botón).
Para salir del reinicio es necesario ponerlo a 5 voltios nuevamente (gracias a la resistencia R1 esto ocurre al liberar el botón).
Los pines XTAL1 y XTAL2 están conectados al circuito oscilador formado por el cristal Q1 y los capacitores C2 y C3.
Más adelante profundizaré en este tema. De momento solo te diré que este circuito es el que permite la ejecución del programa almacenado dentro del microcontrolador (una vez este es energizado, claro está).
Cabezales de pines
Esta placa cuenta con 5 cabezales de pines:
- J1: este cabezal contiene los primeros pines digitales (D0…D7).
- J2: es el cabezal de entradas analógicas.
- J3: contiene el resto de los pines digitales (D8…D13), además, cuenta con un pin conectado a tierra (GND) y el pin de referencia analógico (AREF).
- POWER: este cabezal tiene dos pines de tierra (GND), uno de 5 voltios (5V) y otro conectado a la entrada del regulador (VIN). Este último puede ser utilizado para alimentar la placa en caso de que el conector Jack no sea empleado.
- ICSP: conector ICSP que permite programar el microcontrolador utilizando un programador externo.
Entre el pin PB5 (pin digital 13) del microcontrolador y su cabecera se ha colocado un resistor de 1KOhmio. Esto permite que un led pueda ser conectado directamente entre este pin y tierra sin necesidad de resistor externo.
Arduino USB
Utilizar un dispositivo que emplee un puerto Serie (RS-232) hoy en día puede ser complicado. Sobre todo porque actualmente es complicado encontrar ordenadores con este tipo de puertos.
Si necesitas programar una placa con puerto RS-232 tendrás que utilizar un adaptador USB-RS232.

Para complicar más el tema, y te lo cuento por experiencia personal, en ocasiones estos adaptadores no son capaces de suministrar la corriente necesaria y se dañan fácilmente.
Todos estos inconvenientes provocan el próximo salto de Arduino: la sustitución del puerto RS-232 por un puerto USB.
Teniendo en cuenta que se necesita una comunicación serie utilizando un puerto USB, se empleó un chip FTDI FT232BM. Este chip es capaz de emular un puerto Serie utilizando un puerto USB (vamos que es algo así como un adaptador).
A diferencia de la mayoría de los adaptadores USB-Serie, este chip utiliza niveles lógicos TTL para la comunicación, por lo tanto, se puede conectar directamente al microcontrolador.
Este chip es la base de la interfaz de programación de varios Arduinos USB.
Es importante destacar que actualmente este componente es considerado obsoleto.

Si inspeccionamos su hoja de datos encontramos que es muy versátil. Pero su principal finalidad es actuar como un convertidor de USB a RS232, RS422 /RS485. Además, es compatible con la mayoría de los sistemas operativos, convirtiéndolo en una muy buena opción.
El chip cuenta con 32 pines. Estos se catalogan en 6 grupos:
Grupo 1 (Interfaz USB): está compuesto por los pines USBDP y USBDM. Estos se conectan a los pines D+ y D- del puerto USB respectivamente.
Grupo 2 (Alimentación), agrupa los pines relacionados con la alimentación. Veamos los más importantes:
- VCCIO: Empleado para indicar el voltaje a utilizar por las señales de la interfaz UART. (En caso de necesitar una interfaz a 5 voltios puede ser unido a VCC)
- GND: Pines de conexión a tierra
- 3V3OUT: Ofrece un voltaje estable de 3.3 voltios (No puede suministrar más de 5 mili-amperios).
- VCC: Voltaje de Alimentación del chip (5 voltios típicamente).
Grupo 3 (Señales Misceláneas), provee pines para:
- Reinicio del chip.
- Agregar leds indicadores de transmisión y recepción de datos.
- Conectar un cristal oscilador o resonador.
- Activar el modo de prueba.
Grupo 4 (Interfaz UART): Agrupa los pines con todas las señales presentes en un conector RS-232 pero utilizando como nivel lógico alto el voltaje aplicado al pin VCCIO.
Grupo 5 (Interfaz EEPROM): Permite conectar una memoria EEPROM con información (VID, PID, Número de Serie, Descripción, etc) que se le da al ordenador en el momento de conexión USB.
Grupo 6 (Control de Alimentación): Permite conocer el modo de operación del chip.
Veamos ahora un esquema de aplicación típico para este circuito integrado.

El puerto USB se conecta mediante dos resistencias de 27 Ω a los pines USBDM y USBDP. Una resistencia pull-up (R3) es conectado entre USBDP y RSTOUT# (puede conectarse a 3V3OUT en lugar de RSTOUT#).
Todos los pines de alimentación cuentan con un condensador conectado a tierra para evitar variaciones de voltaje. Un resonador de 6 MHz es conectado a los pines XTIN y XTOUT.
En la parte inferior se muestra la conexión de la memoria EEPROM, aunque esta no es obligatoria. Tampoco es indispensable (aunque sí muy útil) el uso de los LEDs de transmisión y recepción.
En el esquema original también aparece un dispositivo extra y un conector DE-9. Pero en nuestro caso no es necesario, ya que este es utilizado para convertir a los niveles RS-232.
Como has podido comprobar, con unos pocos componentes es posible obtener un adaptador USB-Serie mucho más simple y robusto que el esquema empleado para el Arduino Serial.
Arduino USB y Arduino USB v2.0

La primera placa en explorar este cambio fue nombrada precisamente Arduino USB. Esta placa marcó varias pautas, ya que también fue la primera en ser etiquetada como Arduino en la propia placa.
El Arduino USB fue distribuido principalmente como un kit de ensamblaje. Esto quiere decir que te proporcionaban el circuito impreso y los componentes y tú te encargas de ensamblarlo todo.

Esta primera versión resultó tener un error en la conexión de los pines del puerto USB. Por suerte, este error fue detectado y corregido en su segunda versión: Arduino USB v2.0.
Arduino EXTREME

El Arduino USB v2.0 fue seguido por el Arduino EXTREME aportando algunos cambios sustanciales:
- Utiliza más componentes SMD (montaje superficial) que las placas Arduino USB previas.
- Trae cabezales de pines hembra en lugar de machos.
- Incluye los LEDs TX y RX que indican cuando hay datos siendo enviados desde el ordenador hacia la placa o viceversa.
Arduino EXTREME v2 vino después con algunas modificaciones menores como agregar un plano a tierra mayado en la PCB y se incluyó la url «www.arduino.cc» en la serigrafía de la placa.
Arduino NG

Arduino NG 240 es la siguiente placa en la lista. Su nombre significa “Nueva Generación” y trajo consigo un grupo de cambios significativos:
- Cambia el FTDI FT232BM por el FT232RL
- Incluye un LED conectado al pin digital 13.
- Sustituye el microcontrolador ATmega8 por el ATmega168, aunque el primero puede ser utilizado sin ningún inconveniente.
Analizando la hoja de datos del FT232RL vemos que al igual que el FT232BM es un chip muy versátil. Su ventaja principal radica en que necesita menos componentes externos. Esto lo puedes notar en el esquema del Arduino NG 240.

En el esquema vemos que el FT232RL prácticamente no requiere ningún componente externo. Simplemente se mantienen los LEDs de transmisión y recepción, y los condensadores en los pines de alimentación. Se ubica también un conector (denotado X3) al resto de las salidas del FT232RL (en la placa solo aparecen los PADS sin los pines soldados).
Las líneas RTS y DTR del FT232RL están conectadas al pin RESET del microcontrolador, aunque en la documentación del Arduino NG no menciona que se utilicen como control de reinicio.
Esta placa al igual que los Arduinos USB anteriores cuenta con un selector de alimentación (denotado PWR_SEL y ubicado al lado del conector USB). Este permite utilizar el puerto USB o la salida del regulador como fuente de alimentación.
Arduino Diecimila
El Arduino Diecimila fue lanzado como conmemoración de la fabricación de las 10.000 placas de Arduino. Precisamente, diecimila significa diezmil en italiano.

Arduino Diecimila trajo novedades:
- En primer lugar elimina la necesidad de reiniciar la placa manualmente, ya que permite realizarlo desde el propio ordenador.
- El regulador, que en modelos anteriores era un 7805, se cambió por uno tipo low drop (el MC33269) que redujo el consumo de la placa cuando esta era alimentada utilizando el conector Jack.
- Se agregó un fusible rearmable o polyfuse como medio de protección del puerto USB del ordenador ante posibles cortocircuitos.
- El cabezal de alimentación (POWER) fue modificado para incluir un pin con 3.3 voltios (provenientes del pin VCC30 del FT232RL) y la señal de reinicio (pin RESET).
En el esquema eléctrico del Arduino Decimilia se pueden notar estos cambios.

Arduino Duemilanove

En el 2009 es lanzada la placa Arduino Duemilanove (duemilanove significa 2009 en Italiano). Esta introdujo un grupo de mejoras importantes:
- Emplea el microcontrolador ATmega328P. Este cuenta con 32 kByte de memoria de programa y 2 kByte de memoria de datos (doblando la capacidad del ATmega168 en ambos casos). Es el microcontrolador que actualmente utiliza el Arduino UNO R3.
- Se elimina el jumper de selección de alimentación, ya que la placa automáticamente selecciona la fuente a utilizar (USB o conector Jack).
- Permite deshabilitar el auto-reinicio mediante una pista fácil de cortar, y posee un jumper soldable que permite reactivarla.

Si analizamos el esquema electrónico podrás notar que es similar a los modelos anteriores. Como diferencia visible se encuentra el subsistema de selección de fuente.
A continuación te lo muestro aislado para analizarlo detenidamente.

Los dos componentes con forma de triángulo son conocidos como amplificadores operacionales. Sin entrar en detalles te comento que un amplificador operacional cuenta con dos entradas (denotadas como + y – en el esquema) y una salida (vértice derecho del triángulo).
Estos pueden ser utilizados para una infinidad de aplicaciones entre las que destacan:
- Amplificación de señales (como su nombre lo indica)
- Comparadores analógicos
- Mezcladores de señales
- Adaptadores de impedancia
- y un largo etc.
Analicemos el primer operacional:
- El pin “-” está conectado directamente a los 3.3 voltios generados por el FT232RL.
- Por otra parte el pin “+” está conectado a un divisor resistivo (formado por los resistores R10 y R11) que polariza dicho pin con la mitad del voltaje presente en el Jack de alimentación. Eso significa que si la placa es alimentada con 7 voltios el pin “+” se polariza con 3.5V.
- Está configurado como comparador. Eso significa que si el voltaje aplicado al pin “+” es mayor que el aplicado al pin “-” la salida tendrá 5 voltios, en caso contrario será de 0 voltios.
Analicemos el segundo operacional:
- El pin “+” está conectado a la salida del primer operacional
- El pin “-” y su salida están cortocircuitados.
- Esta configuración es llamada seguidor de tensión, ya que proporciona a la salida la misma tensión que a la entrada “+”. Es utilizado para adaptar impedancias
Por último tenemos un transistor MOSFET Canal-P. Teniendo en cuenta que no es posible abarcar este componente en detalle te comento que en este caso funciona como un interruptor.
Cuando a su compuerta (marcada como GATE_CMD en el esquema) se le aplique una tensión positiva, el interruptor se abre desconectando sus otros dos pines. Por el contrario, al conectarla a 0 voltios, este se cierra permitiendo pasar la corriente entre sus otros dos pines.
Vamos, que cuando la tensión en el conector Jack es mayor a 6V la placa utiliza el regulador como fuente de energía, en caso contrario utiliza el puerto USB.
Arduino UNO R3

Finalmente tenemos al Arduino UNO, posiblemente la placa Arduino más robusta en la actualidad. Como ya te había comentado es idéntica a la Duemilanove, pero utiliza un microcontrolador ATmega8U2 (Rev1) o ATmega16U2 (Rev 2 y 3) como interfaz USB-Serie en lugar del chip FT232RL.
Es lo mismo que sucedía con el Arduino MEGA 2560.
Distribución de Pines

El Arduino UNO cuenta con 14 pines digitales de entrada/salida. Estos pueden ser utilizados para interactuar con ledes, botones, u otros dispositivos digitales. De estos pines digitales 6 pueden ser utilizados como salidas analógicas (en realidad son señales PWM).
Cuenta con 6 entradas analógicas de 10 bits de resolución denotadas A0…A5. Estas entradas son muy utilizadas junto con sensores externos para medir parámetros como temperatura, humedad, etc. En caso de no ser necesarios como entradas analógicas, estos pines pueden utilizarse también como entradas o salidas digitales.
En el sitio oficial de Arduino puedes encontrar la distribución de pines completa en formato pdf
Puerto Serie
El Arduino UNO cuenta con un puerto de comunicación serie (usualmente denotado como Serial). Este puerto utiliza los pines digitales 0 y 1 para la recepción y transmisión de datos, respectivamente. Utilizando este puerto es posible comunicarse con el ordenador o con otro dispositivo conectado a los pines 0 y 1.
Bus SPI
La placa también cuenta con un bus SPI. Los pines de este coinciden con los pines digitales 10, 11, 12 y 13 como se muestra en la figura anterior.
El bus SPI también está disponible en el conector ICSP tal y como se muestra en la siguiente figura.

Bus I2C
La placa presenta la posibilidad de comunicarse utilizando el protocolo I2C utilizando los pines SCL y SDA. Es importante notar que estos pines coinciden con los pines analógicos A4 y A5.
Componentes principales del Arduino UNO R3

En la imagen se muestra un Arduino UNO R3 con sus principales componentes señalados. A continuación te hablaré un poco de cada uno de ellos para que entiendas como funcionan en conjunto. Te recomiendo revises el esquema de Arduino UNO R3 para una mejor comprensión.
Microcontrolador ATmega328P
El ATmega328P es el cerebro del Arduino UNO R3. Si echas un vistazo a la primera página del esquema de Arduino UNO R3 podrás notar que está conectado directamente a los cabezales de pines digitales y analógicos.
Si realizas una rápida inspección a su hoja de datos podrás notar que muchas de las cualidades generales del Arduino UNO (que ya te comenté anteriormente) dependen de este microcontrolador:
- 32 kB de memoria Flash (Espacio disponible para almacenar el sketch).
- 2 kB de memoria SRAM (Es donde se almacenan las variables declaradas en el sketch).
- 1 kB de memoria EEPROM (Permite almacenar datos que se conserven aún ante un reinicio o falla en la alimentación).
- Frecuencia de CPU Máxima: 16MHz (Esto lo explico más adelante).
- Voltaje de Operación máximo: 6.0V (Aunque se recomienda no sobrepasar los 5V).
En pocas palabras y sin liarte: el ATmega328 es el cerebro de la placa (ya que graba, almacena y ejecuta el código programado). El resto de los componentes se encargan de garantizar su correcto funcionamiento, así como facilitarnos la vida.
Conector USB
El Arduino UNO R3 cuenta con un conector USB tipo B que es utilizado para dos funciones fundamentales:
- Alimentar la placa utilizando los 5 voltios proporcionados por el puerto USB del ordenador.
- Para cargar un sketch al microcontrolador utilizando la interfaz USB-Serie.
Conector Jack
Se trata de un conector de centro positivo. Es utilizado para alimentar la placa cuando no esté conectada al ordenador o se utilice una alimentación superior a los 5 volts.
La alimentación aplicada a este conector debe estar entre los 7 y 12 volts. Esto se debe al regulador de voltaje empleado (en breve hablaremos de él).
Reguladores de Voltaje
La etapa de alimentación de esta placa es similar a las anteriores, así que no voy a repetir lo ya explicado. Por otra parte, me parece que vas a encontrar interesante conocer un poco más sobre los reguladores que emplea.
Como ya te dije, los reguladores de voltaje son los encargados de garantizar el voltaje adecuado al resto de los componentes de un sistema. Analizando el esquemático del Arduino UNO R3 se puede observar que posee dos reguladores de voltaje.
El regulador LD1117S50 es el principal y el encargado de garantizar la alimentación del microcontrolador y los pines +5V presentes en los cabezales de la placa. Este toma un voltaje desde el conector jack o el pin VIN y ofrece una salida de 5V.
Revisando la hoja de datos del regulador podemos comprobar que es capaz de ofrecer hasta 800 mili-amperes de corriente. Además, cuenta con protección ante cortocircuito y/o sobrecalentamiento, que lo hacen un componente robusto y virtualmente indañable.
Inspeccionando la gráfica de Voltaje de salida vs Temperatura presente en la hoja de datos se nota que su salida es altamente estable, presentando una pequeña variación en el voltaje para todo el rango de temperaturas admisibles.

Si quieres conocer más detalles sobre este regulador te recomiendo que revises por ti mismo su hoja de datos.
El Arduino UNO R3 no utiliza el chip FT232RL, esto provoca que sea necesario agregar un segundo regulador de voltaje para obtener los 3.3 voltios. Este regulador es un LP2985-33DBVR, capaz de ofrecer a su salida (que está conectada al pin 3.3V) un voltaje de 3.3 voltios.
El pin de 3.3V es utilizado para alimentar componentes externos que requieran esta alimentación en particular. Y aunque puedas pensar que no es necesario te garantizo que te ayudará a simplificar muchas aplicaciones.

Si revisamos su hoja de datos vemos que puede ofrecer una corriente máxima de 150mA (sin embargo, se recomienda no exceder los 50mA). Esto nos indica que hay que tener mucho cuidado con lo que conectamos a este pin, ya que no está pensado para grandes consumos.
Interfaz USB-Serie de programación/comunicación
Es el encargado de establecer un puente entre el ordenador y el microcontrolador ATmega328P para permitir la programación de este último o el intercambio de datos. El Arduino UNO, a diferencia de las placas USB anteriores, utiliza un microcontrolador ATmega8U2 o ATmega16U2 para esta función.
La presencia de este microcontrolador extra en la placa le ofrece un ventaja sustanciosa, dado que se podría usar como un microcontrolador completamente funcional y no solo como un conversor USB-Serial. Eso permitiría usar ambos microcontroladores en la misma placa.
Si quieres profundizar en este tema te recomiendo le eches un ojo al proyecto HoodLoader2 o a su documentación en formato wiki donde explican como realizar este proceso paso a paso.
Cristal oscilador y Resonador cerámico (Ambos de 16MHz)
El cristal oscilador y el resonador cerámico son componentes que generan variaciones de voltaje a una frecuencia muy precisa (16MHz en este caso). Estos son utilizados por el ATmega16U2 y el ATmega328P, respectivamente, para generar sus correspondientes señales de reloj.

En ambos casos se conectan a los correspondientes pines XTAL1 y XTAL2 de los microcontroladores (como se muestra en el esquema de Arduino UNO R3), que internamente están conectados a un circuito especial llamado oscilador. Este circuito toma las variaciones de voltaje (obtenidas del cristal o resonador) para generar una onda cuadrada a su misma frecuencia.
Esa onda cuadrada es llamada señal de reloj y determina qué tan rápido el microcontrolador ejecutará las operaciones que le hemos programado. De este modo, si se utiliza un cristal de 10MHz el microcontrolador realizará 10 millones de instrucciones por segundo.

Aclarando el trabalenguas: El cristal o resonador determina la velocidad de operación del microcontrolador. En este caso, tanto el cristal como el resonador utilizados generan variaciones a una frecuencia de 16MHz por ser la máxima admisible por ambos microcontroladores.
LEDs integrados en el Arduino UNO R3
La placa cuenta con un total de 4 Ledes:
- LED ON: Este led está conectado a la salida del selector de voltaje, por lo tanto se enciende cuando la placa está siendo alimentada correctamente.
- LED Tx: Pestañea cuando el Arduino transmite información al ordenador. Esto permite comprobar de forma simple si la placa está realmente transmitiendo información.
- LED Rx: Pestañea cuando la placa recibe información del ordenador. De este modo se puede comprobar si realmente se está efectuando la comunicación.
- LED Integrado: Este led está conectado al pin digital 13 y es denotado como LED_BUILTIN. Para encenderlo/apagarlo es necesario poner este pin en un estado alto (HIGH)/bajo(LOW).
Botón de Reinicio
Este botón permite que reinicies el microcontrolador ATmega328P. Esto significa que todo el código programado será ejecutado nuevamente, tal y como si el sistema se acabara de energizar.
¿Cómo alimentar un Arduino UNO R3?
Analizando lo que te he mostrado existen tres opciones para alimentar nuestro Arduino:
- Utilizando el puerto USB.
- Utilizando el conector Jack: Esta opción requiere un voltaje entre los 7 y 12 volts.
- Utilizando los pines GND y VIN: Esta opción requiere un voltaje entre los 7 y 12 volts.
¿Dónde comprar un Arduino UNO R3?
Si tan solo te tomas la molestia de abrir tu navegador y escribir en tu buscador favorito “Arduino UNO R3 comprar” obtendrás un montón de resultados. Y es que, dudo que exista algo más fácil de comprar que un Arduino UNO (o algún clon compatible), prácticamente todas las tiendas virtuales los tienen.
Aun así siempre te pueden surgir dudas:
- ¿Es justo el precio que tienen?
- ¿Qué diferencias hay entre un original y una copia?
- Etc…
Para despejar un poco tus dudas te invito a que revises el artículo Comprar Arduino original o Arduino copia, tu eliges donde se aclaran algunas de estas cuestiones.
Veamos ahora algunos sitios donde puedes obtener tu Arduino UNO R3:
- Arduino Store es el primer lugar que me viene a la mente, no puede ser otro que la propia tienda de Arduino. Aquí te encuentras al Arduino UNO R3 con un precio de entre 19.00 y 20.00 euros (Esto sin incluir el envío) en dependencia de la versión (estándar o SMD).
- En Amazon lo encuentras por unos 20€. En dependencia de donde vivas puede resultar más económico al ahorrarte el precio del envío.
- En BricoGeek los precios son similares a los encontrados en la tienda de Arduino. Estos oscilan entre 19.00 y 22.00 euros.
- En AliExpress los precios son realmente bajos. Te lo puedes encontrar hasta en 3.00 euro. Sin embargo, es necesario tener cuidado ya que muchos de los Arduinos que aquí aparecen son copias que utilizan el chip CH340G en lugar del ATmega16U2.
Pero entonces ¿de qué depende el precio?
Pues básicamente, los Arduinos baratos son generalmente copias y los más caros son originales. Esto se debe principalmente a la calidad de los componentes, el ensamblado, etc…
Siempre que puedas utiliza un Arduino UNO R3 original. Además de estar utilizando una placa de buena calidad, estarás contribuyendo a que Arduino siga existiendo.
Cómo fabricar tu propio Arduino UNO R3
Arduino es una plataforma libre, y por tanto está totalmente aceptado que te descargues los esquemáticos y la documentación necesaria y fabriques tu propia placa.
Estoy seguro que no serás el primero.
El problema con esta opción es que seguramente no tengas todos los componentes necesarios y puede que te cueste mucho más comprarlos por separado que comprar el Arduino directamente.
Pero bueno, si aun así eres un entusiasta del mundo DIY y quieres montar tu propio Arduino déjame darte unos consejos.
A la hora de montar tu Arduino hay tres cosas que debes tener en cuenta.
#1 Microcontrolador
Tienes que tener el microcontrolador y alguna forma de grabar el bootloader en su memoria. Puedes pedir prestado un programador AVR o utilizar otro Arduino para grabar el bootloader.
#2 Circuito Impreso
Tienes que pensar en cómo vas a obtener el circuito impreso. Aquí tienes varias opciones:
En primer lugar, lo puedes realizar tú mismo utilizando la técnica de la plancha u otra similar. El problema con esta técnica es que solo podrás hacer diseños de una capa y todos los circuitos impresos de Arduino son multicapa.
Como segunda opción puedes encargarlo a alguna compañía que preste ese servicio: PCBWay y JLCPCB son buenos ejemplos. Pero esta alternativa es mucho más cara.
#3 Componentes
No todos los componentes son fáciles de obtener. En dependencia de donde vivas puede que el precio de algunos componentes sea tan elevado que tengas que desistir en tu intento.
Arduino Single-Sided Serial
Teniendo en cuenta todos los inconvenientes anteriores se deduce que reproducir uno de los diseños originales de Arduino de forma casera puede ser realmente complejo y caro.
Por lo tanto, te propongo que eches un vistazo a la placa Arduino Single-Sided Serial v3 también conocida como SEVERINO o S3V3.

Como puedes comprobar, en el esquema de la placa SEVERINO, su diseño es realmente simple y utiliza pocos componentes que son fáciles de conseguir.
Además, su diseño utiliza un PCB de una sola capa por lo tanto, puede ser realizada con técnicas caseras como la técnica de la plancha e incluso montar la placa en una PCB.

Esta placa no es más que una modificación del Arduino Serial. Los cambios más significativos son:
- Los cabezales de pines fueron modificados para hacerlos compatibles con los Arduino actuales (Aunque el cabezal POWER no tiene conectado el pin 3.3V).
- Se agregó un jumper (JP0) que permite habilitar o deshabilitar la comunicación del microcontrolador con el ordenador.
- Por otra parte el jumper JP4 permite conectar el pin 4 del puerto RS232 al pin RESET del microcontrolador permitiendo al software de Arduino reiniciarlo automáticamente. Esto evita tener que reiniciar la placa de forma manual (utilizando el botón) antes de grabar el sketch.
- Los LEDs TX y RX están conectados a las líneas de transmisión y recepción, respectivamente. Por lo tanto, estos pestañean cuando se envían o reciben datos desde el microcontrolador.
El resto de los componentes (transistores, resistencias, diodos y condensadores) son utilizados para convertir las señales RS232 a TTL igual que en el modelo original.
Cómo programar un Arduino UNO R3
De nada sirve todo lo que te he explicado si no lo pones en práctica. Te propongo realizar un contador binario utilizando cuatro LEDs.
Este pequeño proyecto te permite comprender todos los pasos necesarios para programar correctamente un Arduino UNO R3.
Requisitos:
- Es necesario tener el software Arduino IDE instalado en tu sistema. En caso de que no lo tengas y presentes dudas con respecto a su instalación puedes consultar los siguientes enlaces: Windows, macOS y Linux.
- Arduino UNO R3: como era de esperar, es necesario tener la placa donde cargar el código.
- Cable USB: el cable tiene que ser Tipo B en un extremo (Arduino) y Tipo A en el otro (Ordenador).
- 4 resistencias: todos con un valor de 1 kΩ.
- 4 LEDs: preferentemente del mismo color aunque realmente da lo mismo.
Conecta todos los componentes como se muestra en la siguiente figura.

Cada LED va conectado en serie a una resistencia y a un pin digital empezando por el pin 2.
Luego abre el IDE de Arduino. Vamos a empezar a programar.
Una vez el IDE esté abierto es necesario indicarle qué tipo de placa Arduino vamos a utilizar. Para ello, debes ir, en la barra de menús, a “Herramientas>Placa>Arduino/Genuino UNO”.

Ahora que el software está configurado es hora de escribir el código.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
/** * Contador binario 0 - 15 */ #define LED0 2 // bit 0 #define LED1 3 // bit 1 #define LED2 4 // bit 2 #define LED3 5 // bit 3 void setup(){ // Configurar los pines de los leds como salidas pinMode( LED0, OUTPUT ); pinMode( LED1, OUTPUT ); pinMode( LED2, OUTPUT ); pinMode( LED3, OUTPUT ); // Apagar todos los leds digitalWrite( LED0, LOW ); digitalWrite( LED1, LOW ); digitalWrite( LED2, LOW ); digitalWrite( LED3, LOW ); // Configurar el Serial a 9600 baudios Serial.begin(9600); while(!Serial); // Esperar por el monitor serie } /** * Actualiza el estado de los leds para mostrar el numero 'x' */ void updateNumber( int x ){ // actualizar el bit 0 if( x & 1 ) digitalWrite( LED0, HIGH ); else digitalWrite( LED0, LOW ); // actualizar el bit 1 if( x & 2 ) digitalWrite( LED1, HIGH ); else digitalWrite( LED1, LOW ); // actualizar el bit 2 if( x & 4 ) digitalWrite( LED2, HIGH ); else digitalWrite( LED2, LOW ); // actualizar el bit 3 if( x & 8 ) digitalWrite( LED3, HIGH ); else digitalWrite( LED3, LOW ); } int cnt = 0; // variable de contador void loop(){ delay(1000); // espera 1 segundo cnt++; // incrementa el contador if( cnt > 15 ) // si es mayor que 15 reinicialo cnt = 0; updateNumber(cnt); // Actualizar los leds con el nuevo valor Serial.println(cnt);// Enviar el valor por el puerto serie } |
El programa incrementa una variable (cnt) a cada segundo y la muestra tanto en los LEDs como en el monitor serie.
Una vez el código esté terminado tienes que hacer clic en el botón verificar del IDE para comprobar que no exista ningún error en él. Si se detecta algún error este debe ser corregido antes de continuar.
Si ya tienes el código sin errores es hora de cargar el programa a la placa. Pero antes de eso necesitas seleccionar el puerto al que está conectado el Arduino.
Aunque en muchas ocasiones el propio IDE determina el puerto empleado por el Arduino, en otras, es necesario especificarlo manualmente. Para esto, tienes que ir a “Herramientas>Puerto>”, una vez aquí es necesario seleccionar el puerto correspondiente al Arduino.
El nombre del puerto puede variar en dependencia del sistema:
- en Windows estará compuesto por las letra COM seguida de un número, por ejemplo: COM4.
- en Linux comienza con tty y es seguida generalmente de las palabras ACM o USB con un número de orden. Por ejemplo: ttyUSB0.

Ya solo queda cargar el código implementado a nuestro Arduino UNO R3. Para ello es necesario hacer clic en el botón cargar sketch (Flecha que apunta a la derecha).
Un mensaje como el mostrado en la siguiente figura debe aparecer indicando que el código fue cargado satisfactoriamente.

Ahora que el programa ha sido cargado comenzará el conteo. Los ledes deberían empezar a cambiar su estado y el monitor serie a recibir un valor incremental.
Conclusiones sobre Arduino UNO R3
Con este artículo has podido conocer Arduino UNO R3 desde sus raíces y de esa forma comprender como funciona e incluso cómo construir tu propia versión de Arduino UNO R3.
Para terminar y como lo prometido es deuda aquí te dejo algunos proyectos que puedes hacer con Arduino UNO que seguro, te dejan con la boca abierta:
- Robot Arduino UNO R3 con módulo Bluetooth HC-05
- Apagar y encender equipos en remoto con un Arduino UNO R3
- La nevera basada en Arduino UNO R3 que te sigue como un perrito
- Lector RFID RC522 control de acceso RFID con Arduino UNO R3
- Máquina de boxeo basada en Arduino UNO R3
- Crea una báscula con Arduino UNO R3