Arduino
Arduino
Arduino es una plataforma de hardware flexible y código libre (sin licencias y con diseños
compartidos), compuesta por una placa base con puertos de entrada/salida y microcontroladores de la
familia RISC (AVR ATMEL). Su entorno de desarrollo permite la programación electrónica de
dispositivos electrónicos caseros, desde domótica hasta diversos juguetes como coches teledirigidos
o incluso robots caseros. La descarga del software es gratuita y compatible con sistemas Windows,
Linux y Mac.
Además de los montajes de pequeños ingenios electrónicos caseros, Arduino resulta ideal como
introducción a la programación general, la domótica y la robótica. La creación de prototipos en una
placa base (Arduino UNO) no requiere soldaduras de componentes como (resistencias, transistores,
condensadores, microcontroladores, LEDs, etc). Interacción de dispositivos electrónicos con el
mundo real a través del control de sensores. Control remoto, a través de redes inalámbricas e
Internet.
Si consigues una placa ensamblada podrás probar multitud de ingenios con solo conectarla mediante
USB al PC o teléfono Android y opcionalmente conectar algún sensor ya que existen multitud
de código fuente abierto y librerías (p.e. para el manejo de circuitos accesorios como EEPROM,
GSM, Wi-fi o Servo) compartido por la usuarios y fabricantes. No necesitas conocimientos
avanzados de electrónica ni programación sólo a nivel de configuración. Arduino dispone de un
entorno integrado de programación IDE.
Apartados importantes a la hora de acometer nuevos proyectos con Arduino son el presupuesto y
tiempo necesario de estudio y desarrollo. Para ello es conveniente desarrollar una pequeña memoria
con el tipo de proyecto que nos gustaría crear, con nuestra programación de tareas, documentación y
planos, nivel de complejidad, conocimientos necesarios para llevarlo a cabo y la inversión estimada.
Resulta de ayuda disponer de conocimientos previos de programación en C, C para Android, html,
etc y de electrónica o de informática.
Microcontroladores
Un microcontrolador (abreviado µC, UC o MCU) es un circuito integrado programable, capaz de
ejecutar las órdenes grabadas en su memoria. Está compuesto de varios bloques funcionales, los
cuales cumplen una tarea específica. Un microcontrolador incluye en su interior las tres principales
unidades funcionales de una computadora: unidad central de procesamiento, memoria y periféricos
de entrada/salida.
Características de un Microcontrolador:
Existen MCUs genéricas y otros de propósito especial como los DSP, para aplicaciones de voz y
video, por ejemplo.
Microcontroladores AVR
Los microcontroladores AVR son una familia de microcontroladores RISC del fabricante
estadounidense Atmel. La arquitectura de los AVR fue concebida por dos estudiantes en el
Norwegian Institute of Technology.
Las placas Arduino usan principalmente microcontroladores de la gama AVR de Atmel, pero
también de otras gamas de Atmel y de Intel.
RISC es una filosofía de diseño de CPU para computadora que está a favor de conjuntos de
instrucciones pequeñas y simples que toman menor tiempo para ejecutarse. El tipo de procesador
más comúnmente utilizado en equipos de escritorio, el x86, está basado en CISC en lugar de RISC,
aunque las versiones más nuevas traducen instrucciones basadas en CISC x86 a instrucciones más
simples basadas en RISC para uso interno antes de su ejecución.
Sistema embebido:
Un sistema embebido es un sistema diseñado para realizar una o algunas pocas funciones dedicadas,
frecuentemente en un sistema de computación en tiempo real. Al contrario de lo que ocurre con los
ordenadores de propósito general que están diseñados para cubrir un amplio rango de necesidades,
los sistemas embebidos se diseñan para cubrir necesidades específicas. En un sistema embebido la
mayoría de los componentes se encuentran incluidos en la placa base (la tarjeta de vídeo, audio,
módem, etc.). Algunos ejemplos de sistemas embebidos podrían ser dispositivos como un termostato,
un sistema de control de acceso, la electrónica que controla una máquina expendedora o el sistema
de control de una fotocopiadora entre otras múltiples aplicaciones. El firmware es la programación o
software que ejecuta y es lo que vamos a aprender a programar.
Microcontroladores ARM de Atmel
Los nuevos Arduinos ya no son microcontroladores Atmel AVR de 8-bit como hasta ahora eran casi
todos, sino que ha apostado por la nueva gama de Atmel con arquitectura ARM y en especialmente
por la serie SMART SAM D ARM® Cortex®-M0+
Arduino con el lanzamiento del Arduino 101 también ha dado el salto a las MCUs de Intel, en
concreto con las MCU Intel Curie. Y Arduino no solo se queda en los microcontroladores, sino que
con el Arduino Yun y Arduino Yun Shield entra dentro de los sistemas con linux embebido en un
microprocesador al estilo de una Raspberry Pi pero con una filosofía diferente.
La compra de ARM por casi 30000 millones de euros demuestra el interés del mercado por estos
dispositivos que marcarán el futuro tecnológico:
http://economia.elpais.com/economia/2016/07/18/actualidad/1468824631_822455.html
Otros Microcontroladores
http://es.wikipedia.org/wiki/Microcontrolador#Familias_de_microcontroladores
http://es.wikipedia.org/wiki/Anexo:Microcontroladores_comunes
http://www.microchip.com/design-centers/microcontrollers
PICs de 8 bits: http://www.microchip.com/design-centers/8-bit
MPLAB: entorno de desarrollo para los PIC: http://www.microchip.com/mplab/mplab-x-ide
Un enlace muy interesante con mucha información sobre microcontroladores para ampliar
conocimientos: http://www.mikroe.com/chapters/view/79/capitulo-1-el-mundo-de-los-
microcontroladores/
Esta entrada se publicó en Arduino, Atmel, Microcontrolador y está etiquetada con Arduino, ARM,
AVR, Microchip, Microcontroladores, RISC, Sistema embebido en 26 junio, 2016.
HARDWARE
El microprocesador ATmega328
• 32 kbytes de memoria Flash
• 1 kbyte de memoria RAM
• 16 MHz • Entradas y salidas
• 13 pins para entradas/salidas digitales (programables)
• 5 pins para entradas analógicas
• 6 pins para salidas analógicas (salidas PWM)
• Completamente autónomo: Una vez programado no necesita estar conectado al PC
ESPECIFICACIONES TECNICAS
Microcontrolador ATmega328
Voltaje de operación 5V
Voltaje de entrada (recomendado) 7-12 V
Voltaje de entrada (limite) 6-20 V
Digital I/O Pins 14 (con 6 salidas PWM)
Entradas analógicas Pins 6
DC corriente I/O Pin 40 mA
DC corriente 3.3V Pin 50 mA
Memoria Flash 32 KB (2 KB para el bootloader)
SRAM 1 KB
EEPROM 512 byte
Velocidad de reloj 16 MHz
Las Entradas analógicas son de 10 bits, por lo que entregan valores entre 0 y 1023. El rango de
voltaje está dado entre 0 y 5 volts, pero utilizando el pin AREF, este rango se puede variar a algún
otro deseado.
TARJETA ARDUINO
La tarjeta Arduino, contiene para interacción con el usuario trece entradas/salidas digitales, seis
entradas analógicas y un puerto serial que permite realizar comunicación con periférico, además de
un puerto serial una conexión USB, en la figura podemos observar la localización de las entradas
analógicas y digitales como los pines de alimentación. También tiene un pulsador para resetear
cualquier fallo que exista en los procesos que se vayan a realiza con la tarjeta Arduino.
TARJETAS DE PLATAFORMA ARDUINO DISPONIBLES
Según la aplicación que se quiera procesar, hay disponibles otras tarjetas con diferentes prestaciones.
Características:
Microcontrolador: ATmega1280
Tensión de alimentación: 5V
Tensión de entrada recomendada: 7-12V
Límite de entrada: 6-20V
Pines digitales: 54 (14 con PWM)
Entradas analógicas: 16
Corriente máxima por pin: 40 mA
Corriente máxima para el pin 3.3V: 50 mA
Memoria flash: 128 KB (4 KB usado por el bootloader)
SRAM: 8 KB
EEPROM: 4 KB
Velocidad de reloj: 16 MHz
Más información:
http://store.arduino.cc
Diferentes Arduinos para diferentes necesidades
Primer Arduino:
Arduino dispone de una amplia variedad de placas y shields para usar dependiendo de nuestras
necesidades o el proyecto que queramos hacer.
Un shield es una placa compatible que se puede colocar en la parte superior de los arduinos y permite
extender las capacidades del arduino. De estas hablaremos en más adelante.
Familia de MCU Arduino:
Arduino Uno
Esquemático: http://arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf
Microcontrolador: http://www.atmel.com/devices/atmega328p.aspx
Arduino Mega
Es un Arduino más potente y el que más pines i/o tiene, apto para trabajos algo más complejos,
aunque tengamos que sacrificar un poco el espacio, cuenta con el microcontrolador Atmega2560 con
más memoria para el programa, más RAM y más pines que el resto de los modelos.
Esquemático: http://www.arduino.cc/en/uploads/Main/arduino-mega2560_R3-sch.pdf
Microcontrolador: http://www.atmel.com/devices/atmega2560.aspx
Incorpora un puerto ethernet, está basado en el Arduino Uno y nos permite conectarnos a una red o a
Internet mediante su puerto ethernet.
Microcontrolador: http://www.atmel.com/devices/sam3x8e.aspx
La diferencia de este arduino con el resto es que trae un único MCU ATmega32u4 que tiene
integrado la comunicación USB, lo que elimina la necesidad de un segundo procesador. Esto tiene
otras implicaciones en el compartimento del arduino al conectarlo al ordenador, lo que no lo hace
apto para iniciarse con él.
Microcontrolador: http://www.atmel.com/devices/atmega32u4.aspx
Versión miniaturizada de la placa Arduino UNO basado en el ATMega328. Mide tan sólo 30x18mm
y permite ahorrar espacio en los proyectos que lo requieran. Las funcionalidades son las misma que
Arduino UNO. Necesita un programador para conectarlo al ordenador:
http://arduino.cc/en/Main/USBSerial
Diseñado para dispositivos “wearables” y e-textiles. Para coser con hilo conductor e instalarlo sobre
prendas.
Existe la creencia popular que Arduino es una Raspberry Pi pero con menos capacidades.
Obviamente si comparamos los valores de memoria RAM, frecuencia de CPU y capacidad de
almacenamiento, podemos creer que así es, pero se trata de dos placas con capacidades diferentes.
Estas diferencias se deben a que Arduino tiene un microcontrolador (MCU) y Raspberry Pi tiene un
microprocesador. Un microcontrolador es un HW optimizado no para capacidad de cálculo sino para
interactuar con el exterior, con sensores y actuadores.
A la hora de elegir uno u otro para hacer un proyecto, debemos usar cada uno en la tarea que mejor
sabe hacer. Por ejemplo, la recolección de datos, supervisión del entorno, envío de alarmas, accionar
motores, etc. lo dejaremos para el arduino, el tratamiento de los datos recogidos, el interfaz gráfico
de usuario, envío de correos, etc… lo dejaremos para una una raspberry pi o un ordenador.
Un ejemplo de que Raspberry Pi no es la mejor opción para algunos proyectos es por ejemplo para
manejar un neopixel, estos dispositivos requieren una señal de datos con unas especificaciones de
tiempo muy concretas para funcionar. Puesto que Raspberry Pi usa un sistema operativo multitarea
Linux, no dispone de un control de tiempo real sobre los pines.
Aun así, es posible hacer usar neopixel con Raspberry Pi pero de una forma un poco más complicada
que con un Arduino.
Para acabar de entenderlo, este video explica perfectamente la diferencia entre un Arduino y una
Raspberry Pi: https://www.youtube.com/watch?v=7vhvnaWUZjE
IMPORTANTE: Todos los pines de Raspberry Pi tienen un nivel lógico de 3.3V incluido puerto
serie, bus I2C y SPI. Lo pines de Raspberry Pi no soportan entradas de 5V. Para Arduino UNO el
nivel lógico es de 5V.
Cada pin de Raspberry Pi soporta un máximo de 16mA hasta un total de 51mA para toda la placa.
Arduino Uno soporta un máximo de 40mA por pin (20mA recomendado) y hasta 300mA en total
para la placa.
Para finalizar dejo unos enlaces interesantes sobre la diferencia entre Arduino y Raspberry Pi:
http://www.digitaltrends.com/computing/arduino-vs-raspberry-pi/
http://readwrite.com/2014/05/07/arduino-vs-raspberry-pi-projects-diy-platform
http://randomnerdtutorials.com/arduino-vs-raspberry-pi-vs-beaglebone-vs-pcduino/
http://www.instructables.com/id/Arduino-Vs-Raspberry-Pi-Which-Is-Better-For-
You/?ALLSTEPS
http://www.xataka.com/makers/raspberry-pi-frente-a-arduino-quien-se-adapta-mejor-a-mi-
proyecto-maker
El hardware consiste en una placa con un microcontrolador generalmente Atmel AVR, puertos de
comunicación y puertos de entrada/salida. Los microcontroladores más usados en las plataformas
Arduino son el Atmega168, Atmega328, Atmega2560, ATmega8 por su sencillez, pero se está
ampliando a microcontroladores Atmel de Arquitectura ARM e Intel.
Por otro lado, Arduino nos proporciona un software consistente en un entorno de desarrollo (IDE)
para la programación de arduino y un bootloader cargado en el microcontrolador para facilitar el uso
de Arduino. La principal característica del software y del lenguaje de programación de Arduino es su
sencillez y facilidad de uso.
Arduino promete ser una forma sencilla de realizar proyectos interactivos para cualquier persona.
Para alguien que quiere hacer un proyecto, el proceso pasa por comprar una placa Arduino,
descargarnos e instalar el IDE, buscar un poco por internet y simplemente hacer “corta y pega” del
código que nos interese y cargarlo en nuestro HW mediante el IDE. Luego hacer los cableados
correspondientes con los periféricos y ya tenemos interaccionando el software con el Hardware.
Todo ello con una inversión económica mínima: el coste del Arduino y los periféricos.
¿Para qué sirve Arduino? Arduino se puede utilizar para desarrollar elementos autónomos, o bien
conectarse a otros dispositivos o para interactuar tanto con el hardware como con el software en un
ordenador, móvil, etc… Nos sirve tanto para controlar un elemento, pongamos por ejemplo un motor
que nos suba o baje una persiana basada en la luz que haya, gracias a un sensor de luz conectado al
Arduino, o bien para leer la información de una fuente, como puede ser un teclado, y convertir la
información en una acción como puede ser encender una luz y sacar por un display lo tecleado.
Con Arduino es posible automatizar cualquier cosa, hacer agentes autónomos (si queréis llamarles
Robots también), controlar luces y dispositivos, o mil cosas que queramos fabricar, podemos optar
por una solución basada en Arduino.
Arduino es una tecnología que tiene una rápida curva de entrada con básicos conocimientos de
programación y electrónica, que permite desarrollar proyectos en el ámbito de las Smart Cities, el
Internet de las cosas, dispositivos wearables, salud, ocio, educación, robótica, etc…
Hay otro factor importante en el éxito de Arduino, es la comunidad que apoya todo este desarrollo,
comparte conocimiento, elabora librerías para facilitar el uso de Arduino y publica sus proyectos
para que puedan ser replicados, mejorados o ser base para otro proyecto relacionado.
En resumen:
Arduino = HW + SW + Comunidad
Al trabajar con Arduino, se manejan conceptos de diferentes tecnologías que a priori no tienen nada
que ver entre ellos: electrónica digital y analógica, electricidad, programación, microcontroladores,
tratamiento de señales, protocolos de comunicación, arquitectura de procesadores, mecánica,
motores, diseño de placas electrónicas etc…
Antes de Arduino: Eran necesarios los programadores para cada MCU, lenguaje de programación
ensamblador usando las instrucciones propias de la MCU y materiales caros.
MAS INFORMACION:
El programa de muestras de Atmel permite obtener muestras gratuitas de productos de Atmel. Más
información en: https://aprendiendoarduino.wordpress.com/2015/02/25/como-conseguir-un-arduino-
gratis/
Atmel Studio, el IDE proporcionado por Atmel para programar sus MCUs:
http://www.atmel.com/tools/ATMELSTUDIO.aspx
Reference Guide para AVR MCUs, un poco antiguo pero muy interesante para saber la gama de
MCUs de Atmel y donde situarlos: http://www.atmel.com/Images/doc4064.pdf
http://www.mikroe.com/ready/avr/
http://www.mikroe.com/avr/development-boards/
Programador: http://www.mikroe.com/mikroprog/avr/
http://www.foroselectronica.es/f77/vendo-programador-mp-2000-alecop-2894.html
http://www.ditecom.com/programadores/programadores_Uprog.shtml
http://micro2verano2012.blogspot.com.es/2012/01/computadora-basica-motorola-6800-
v10.html
Por último, para entender bien lo que es Arduino, es recomendable ver el documental de Arduino
de unos 30 minutos de duración. Arduino the Documentary:
http://blog.arduino.cc/2011/01/07/arduino-the-documentary-now-online/
Prof. Italiano
Marzo 2018