Professional Documents
Culture Documents
Como vimos anteriormente, Arduino es una plataforma para programar de forma sencilla algunos microcontroladores de la
familia AVR de Atmel http://es.wikipedia.org/wiki/AVR y también microcontroladores Atmel ARM Cortex-M0+ o Intel
http://www.intel.com/content/dam/support/us/en/documents/boardsandkits/curie/intel-curie-module-datasheet.pdf, y un
hardware con ese MCU donde acceder físicamente a sus puertos.
Pero también Arduino y su entorno de programación se está convirtiendo en un estándar de facto para la programación de
cualquier tipo de placas de desarrollo y prototipado, es decir, de otro tipo de microcontroladores no incluidos en los
productos de Arduino. Gracias a la comunidad es posible programar otros microcontroladores de ST microelectronics o los
ESP8266 y ESP32 de espressif http://espressif.com/ que podemos comprar con placas como la nodeMCU
http://nodemcu.com/index_en.html o la bluepill http://wiki.stm32duino.com/index.php?title=Blue_Pill.
Puesto que Arduino es una plataforma open source disponemos de toda la documentación de los microcontroladores
usados.
Cuando el microcontrolador ejecuta una instrucción que de nimos en el sketch, internamente hace muchas operaciones y
cada una de esas operaciones se ejecuta en un ciclo de reloj. Para el ATmega 328p que tiene una frecuencia de 16 MHz, es
decir, cada ciclo tarda 0,0000000625 segundos = 0,0625 microsegundos = 62,5 nanosegundos
Así se ejecutaría una instrucción, en cada ciclo de reloj se ejecuta cada subinstrucción.
Diferencia entre los microcontroladores de 8 bits, 16, y 32 bits, es tamaño de palabra que manejan e in uye en los registros
y direccionamiento de memoria: http://es.wikipedia.org/wiki/Palabra_(inform%C3%A1tica)
Este mismo análisis hecho con el ATmega328P, podemos hacerlo con otros microcontroladores:
Dentro de los microcontroladores, la tendencia es a usar MCUs de 32 bits con arquitectura ARM. La arquitectura ARM es el
conjunto de instrucciones de 32 y 64 bits más ampliamente utilizado en unidades producidas. Concebida originalmente por
Acorn Computers para su uso en ordenadores personales, los primeros productos basados en ARM eran los Acorn
Archimedes, lanzados en 1987.
La relativa simplicidad de los procesadores ARM los hace ideales para aplicaciones de baja potencia. Como resultado, se
han convertido en dominante en el mercado de la electrónica móvil e integrada, encarnados en microprocesadores y
microcontroladores pequeños, de bajo consumo y relativamente bajo costo. En 2005, alrededor del 98% de los más de mil
millones de teléfonos móviles vendidos utilizaban al menos un procesador ARM. Desde 2009, los procesadores ARM son
aproximadamente el 90% de todos los procesadores RISC de 32 bits integrados.
La arquitectura ARM es licenciable. Esto signi ca que el negocio principal de ARM Holdings es la venta de núcleos IP, estas
licencias se utilizan para crear microcontroladores y CPUs basados en este núcleo. ARM Cortex M es un grupo de
procesadores RISC de 32 bits licenciados por ARM Holdings. La web o cial es
http://www.arm.com/products/processors/cortex-m. Además existen otras familias de ARM:
https://en.wikipedia.org/wiki/List_of_ARM_microarchitectures
Más información:
https://es.wikipedia.org/wiki/Arquitectura_ARM
https://en.wikipedia.org/wiki/ARM_architecture
https://en.wikipedia.org/wiki/ARM_Cortex-M
http://learn.mikroe.com/ebooks/microcontroladorespicc/
http://learn.mikroe.com/ebooks/piccprogramming/
http://web.ing.puc.cl/~mtorrest/downloads/pic/tutorial_pic.pdf
http://www.monogra as.com/trabajos103/introduccion-microcontroladores/introduccion-microcontroladores.shtml
Manual PIC http://www.unioviedo.es/ate/alberto/manualPic.pdf
AVR vs PIC:
http://hackaday.com/2016/06/28/avr-vs-pic-round-223- ght/
https://hackaday.io/project/11796-avr-vs-pic-the-case-of-the-candle
Esquema lógico de Arduino
El funcionamiento interno de un microcontrolador se puede explicar con un diagrama de bloques o esquema lógico, donde
se ven en cada bloque cada unidad interna del microcontrolador y cómo se comunica con el restos de unidades.
Diagrama de bloques simpli cado de un microcontrolador. Se compone de tres bloques fundamentales: la CPU ( central
Processing Unit), memoria (RAM y ROM) y las entrada y salidas. Los bloques se conectan entre sí mediante grupos de líneas
eléctricas denominadas buses o pistas. Los buses pueden ser de direcciones (si transportan direcciones de memoria o
entrada y salida), de datos (si transportan datos o instrucciones) o de control (si transportan señales de control diversas). La
CPU es el cerebro central del microprocesador y actúa bajo control del programa almacenado en la memoria. La CPU se
ocupa básicamente de traer las instrucciones del programa desde la memoria, interpretarlas y hacer que se ejecuten. La
CPU también incluye los circuitos para realizar operaciones aritméticas y lógicas elementales con los datos binarios, en la
denominada Unidad Aritmética y Lógica (ALU: Aritmetic and Logic Unit).
La señal de reloj es distribuida por la unidad de control a los diferentes bloques existentes: la CPU, las memorias, los
módulos de entrada/salida, los contadores/timers, el SPI y la USART, al igual que el conversor Análogo Digital ADC.
El microcontrolador ATmega328 tiene tres timers (timer 0, timer 1, timer 2) que también se pueden usar como contadores.
Los timers 0 y 2 son de 8 bits y el timer 1 de 16. Estos timers tienen un módulo de preescalado para su propia señal de reloj
que puede provenir de su sistema de reloj interno o por pines externos (modo contador).
Son módulos que funcionan en paralelo a la CPU y de forma independiente a ella. El funcionamiento básico consiste en
aumentar el valor del registro del contador al ritmo que marca su señal de reloj.
Usando el reloj interno o un cristal externo puede ser utilizado para medir tiempos puesto que utiliza una señal periódica,
precisa y de frecuencia conocida; mientras que si la señal viene de un pin externo puede contar eventos que se produzcan
en el exterior y que se re ejen en cambios de nivel de tensión de los pines.
Estos contadores también forman parte del generador de señales PWM y permiten con gurar tanto la frecuencia como el
ciclo de trabajo.
Registros de memoria
Todos los microcontroladores tienen un conjunto de instrucciones que suele ser un conjunto pequeño al tratarse de
arquitectura RISC. La CPU cuenta con ese número de instrucciones que sabe ejecutar.
El conjunto de instrucciones para los microcontroladores Atmel de 8 bits es: http://www.atmel.com/Images/Atmel-0856-
AVR-Instruction-Set-Manual.pdf
En el caso del ATmega328p, tiene una arquitectura RISC con 131 instrucciones, la mayoría de ellas ejecutadas en un solo
ciclo de reloj.
Los registros son unas zonas concretas de la memoria RAM accesibles directamente desde la CPU o desde otros elementos
del microcontrolador que permite hacer operaciones directamente y de forma más rápida.
Trabajar con registros de memoria puede ser difícil si sólo se escribe un programa en lenguaje ensamblador. Al utilizar el
lenguaje de programación de alto nivel como es C basta con escribir el nombre del registro y su dirección de memoria, a
partir de esa información, el compilador selecciona el registro necesario. Las instrucciones apropiadas para la selección del
registro serán incorporadas en el código durante el proceso de la compilación.
Los 32 registros de propósito general, los 64 I/O Registers, los 160 Extended I/O Registers y los 2K bytes de SRAM interna en
el dispositivo son todos accesibles mediante estos modos de direccionamiento.
Los registros de propósito general se utilizan para almacenar los datos temporales y los resultados creados durante el
funcionamiento de la ALU. Los 32 General Purpose Working Registers están directamente conectados a la ALU, permitiendo
ser accedidos dos registros de forma independiente en una sola instrucción ejecutada en un ciclo de reloj.
Seis de los 32 registros de propósito general pueden ser usados como 3 punteros de registros de 16-bit de acceso indirecto
para direccionamiento del espacio de datos, habilitando cálculos e cientes de direcciones. Uno de estos punteros de
dirección puede ser usado como un puntero de dirección para búsqueda en las memoria Flash del microcontrolador. Estos
registros con funciones añadidas con los registros de 16-bit X-, Y- y Z-. Más información en la página 28 de
http://www.atmel.com/Images/Atmel-42735-8-bit-AVR-Microcontroller-ATmega328-328P_datasheet.pdf
Para más información ver página 35 de http://www.atmel.com/Images/Atmel-42735-8-bit-AVR-Microcontroller-ATmega328-
328P_datasheet.pdf
Los I/O registers localizados en las direcciones 0x20 a 0xFF, a diferencia de los registros de propósito general, su propósito
es predeterminado durante el proceso de fabricación y no se pueden cambiar. Como los bits están conectados a los
circuitos particulares en el chip (convertidor A/D, módulo de comunicación serial, etc), cualquier cambio de su contenido
afecta directamente al funcionamiento del microcontrolador o de alguno de los circuitos. Esta es la forma en que a bajo
nivel se interactúa por ejemplo con los pines del microcontrolador.
Un resumen de todos los registros I/O del ATmega328p se puede ver en la página 428 de
http://www.atmel.com/Images/Atmel-42735-8-bit-AVR-Microcontroller-ATmega328-328P_datasheet.pdf
Registros para:
ATmega328p: https://www.safaribooksonline.com/library/view/arduino-microcontroller-
processing/9781627052535/xhtml/appendixa.html
ATmega2580: https://www.safaribooksonline.com/library/view/arduino-microcontroller-
processing/9781627052535/xhtml/appendixc.html
http://courses.cs.washington.edu/courses/csep567/10wi/lectures/Lecture6.pdf
http://www.instructables.com/id/Microcontroller-Register-Manipulation/?ALLSTEPS
https://en.wikipedia.org/wiki/Special_function_register
http://www.atmel.com/images/avr_3_04.pdf
http://learn.mikroe.com/ebooks/microcontroladorespicc/chapter/principales-registros-sfr/
http://www.monogra as.com/trabajos14/micros/micros.shtml
http://www.unioviedo.es/ate/alberto/manualPic.pdf
Práctica: Registros Arduino
Veamos algunos valores de los registros de Arduino con el sketch ShowInfo de http://playground.arduino.cc/Main/ShowInfo
Este sketch dispone de un menú que nos permite hacer varias operaciones, pulsar opción i (Show Information) y t (Timer
Register Dump) para ver datos de los registros.
Este sketch es bastante complejo pero puede servir como plantilla cuando queramos acceder desde un sketch a un registro
concreto.
La mayoría de los nuevos chips AVR (utilizados en el Arduino) tiene un sensor de temperatura interno. No suele utilizarse,
ya que no es exacta. Sin embargo, hay varias situaciones en las que se puede utilizar este sensor.
La temperatura interna es la temperatura dentro del chip, al igual que la temperatura de la CPU de un ordenador. Si el
Arduino no está durmiendo, esta temperatura aumentará. Si los pines de salida se utilizan para dar corriente (por ejemplo
encender leds) la temperatura interna aumenta más. Esta temperatura no puede usarse para medir la temperatura
ambiente.
En situaciones con altas temperaturas una lectura de temperatura calibrada podría evitar daños. La mayoría de los chips
AVR más recientes tienen un rango de temperatura de hasta 85 grados Celsius. Esta funcionalidad podría utilizarse para
apagarse a 80 grados Celsius.
Ejecutar el sketch leer y entender lo que hace y probarlo. Comparar con otros Arduinos y calibrar.
Ver en la página 306 y 316 de la documentación del microcontrolador: http://www.atmel.com/Images/Atmel-42735-8-bit-
AVR-Microcontroller-ATmega328-328P_datasheet.pdf
La función GetTemp() es la que calcula la temperatura. Para ello con gura la referencia interna del conversor analógico
digital y lo habilita. Luego lee el dato del ADC mediante el registro ADCW y hace el cálculo para obtener la temperatura.
Como el o set puede variar de una MCU a otra, para calibrar, lo mejor es leer la temperatura de una placa fría y comparar
con la temperatura exterior.
Anuncios
Casa-Chalet en Venta en S…
Teito en Somiedo, propiedad
reformada, orientación noroeste,
suelo de cerámico y madera. Vi…
29.000 €
Contactar
Casa-Chalet en Venta en L…
SI QUIERES VIVIR EN PLENA
NATURALEZA CON LAS
MEJORES VISTAS Y EN UN E…
30.000 €
Contactar
Ads by fotocasa.es
Casa-Chalet en Venta en S…
Teito en Somiedo, propiedad
reformada, orientación noroeste,
suelo de cerámico y madera. Vi…
29.000 €
Contactar
Casa-Chalet en Venta en G…
Venta de finca de 2200 metros
con cabaña de madera que
dispone de baño , dormitorio, p…
30.000 €
Contactar
Ads by fotocasa.es
Esta entrada se publicó en Arduino, Avanzado, Curso Avanzado 2017, Microcontrolador, Práctica y está etiquetada con
Arduino, arquitectura microcontrolador, Avanzado, Curso Avanzado 2017, Microcontroladores, Práctica, registros en 3
septiembre, 2017 [https://aprendiendoarduino.wordpress.com/2017/09/03/microcontroladores-arduino-a-fondo/] .
Microcontrolador vs Microprocesador
Diferencia principal entre un microcontrolador (Arduino) y un microprocesador (Raspberry Pi) son las capacidades de
entradas y salidas, así como el rendimiento de la CPU.
Analogía: Arduino es un Autómata programable, Raspberry Pi es un Ordenador, así que a la hora de decidirse que utilizar
para un proyecto pensar que usaríamos un autómata o un Ordenador.
Para programación en tiempo real el HW a utilizar es el Arduino, para programación intensiva con gran cantidad de datos
usaríamos una Raspberry Pi o un PC.
En un proyecto grande la elección es usar ambos, cada uno en la tarea que mejor hace. 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á co de usuario, envío de correos, etc… lo dejaremos para un ordenador o una raspberry pi o
similar.
CPU
Memorias RAM y ROM
Velocidad de Operación
Tamaño
Costes
Interferencias (ruido)
Tiempo de desarrollo
El uso de una u otra tecnología depende del n que se espera, pues debido a sus características propias, los
microcontroladores y los microprocesadores pueden adquirir variados y diferentes espacios de implementación, por
ejemplo, los microprocesadores se han desarrollado fundamentalmente orientados al mercado de los ordenadores
personales y las estaciones de trabajo, pues allí se requiere una elevada potencia de cálculo, el manejo de gran cantidad de
memoria y una gran velocidad de procesamiento. Mientras que los microcontroladores están concebidos
fundamentalmente para ser utilizados en aplicaciones puntuales, es decir, aplicaciones donde el microcontrolador debe
realizar un pequeño número de tareas, al menor costo posible. En estas aplicaciones el microcontrolador ejecuta un
programa almacenado permanentemente en su memoria, el cual trabaja con algunos datos almacenados temporalmente e
interactúa con el exterior a través de las líneas de entrada y salida de que dispone.
Microprocesadores Microcontroladores
CPU El microprocesador tiene mucha más potencia de Es una de sus partes principales, la cual se encarga de dirigir
cálculo, por lo cual solamente realiza sus funciones con sus operaciones.
Memorias Son dispositivos externos que lo complementan para su Las incluye en un solo circuito integrado.
Operación
Tamaño La con guración mínima básica de un Microprocesador El Microcontrolador incluye todo estos elementos en un solo
está constituida por un Microprocesador, una memoria Circuito Integrado por lo que implica una gran ventaja en
RAM, una memoria ROM, un decodi cador de varios factores, como por ejemplo, la disminución en el
direcciones, lo cual lo convierte en un circuito bastante tamaño del circuito impreso por la reducción de los circuitos
engorroso. externos.
Costos Para el Microprocesador, el costo es muy alto en la El costo para un sistema basado en Microcontrolador es
Interferencias Son más susceptibles a la interferencia El alto nivel de integración reduce los niveles de interferencia
desarrollo
Raspberry Pi es un ordenador de placa reducida o (placa única) (SBC) de bajo coste, desarrollado en Reino Unido por la
Fundación Raspberry Pi. El diseño incluye un System-on-a-chip Broadcom BCM2837, que contiene un procesador central
(CPU) ARM1176JZF-S a 1.2 GHz quad-core ARMv8, un procesador grá co (GPU) VideoCore IV, y 1GB de memoria RAM.
Los sistemas operativos soportados son distribuciones Linux para arquitectura ARM, Raspbian (derivada de Debian), RISC
OS 5, Arch Linux ARM (derivado de Arch Linux) y Pidora (derivado de Fedora)
Raspberry Pi:
GPIO:
También intel saca su alternativa a raspberry: http://www.intel.es/content/www/es/es/do-it-yourself/edison.html
Se puede decir que el sketch de Arduino es la aplicación que gestiona directamente los recursos de HW sin necesidad de un
SO o un kernel intermedio.
En el caso de raspberry Pi, el programa o sketch se ejecuta como una aplicación sobre un sistema operativo y para
interaccionar con el HW necesita de la interacción con el sistema operativo.
¿Podría convertir un arduino en un ordenador? ¿Cómo? ¿Es práctico?. Arduino como un ordenador:
Salida TV:
https://code.google.com/p/arduino-tvout/
http://playground.arduino.cc/Main/TVout
https://code.google.com/archive/p/arduino-tvout/wikis/FunctionalDescription.wiki
http://www.instructables.com/id/TV-Out-with-Arduino/
Pantalla tactil: http://tienda.bricogeek.com/shields-arduino/521-arduino-tft-touch-shield-v20.html
Teclado: http://playground.arduino.cc/code/Keypad,http://abedulengenharia.blogspot.com.es/2011/07/arduino-y-
teclado-3×4.html
Separar los procesos en diferentes MCUs, mejor con chips especí cos, pero se puede hacer usando varios
microcontroladores, uno ejecuta el SO, otros acceso a disco (controladora), otro muestra datos por pantalla (tarjeta
grá ca), tarjeta de sonido, etc…
Disco Duro, leer y escribir cheros. Acceso a una tarjeta SD. El sketch compilado se podría guardar en una tarjeta SD y
un bootloader adecuado podría leer de la tarjeta SD y cargarlo en la memoria de programa para ejecutarlo. Ver
ejemplo http://baldwisdom.com/bootdrive/
Sistema Operativo: un sketch diseñado para interaccionar con el HW y poder correr aplicaciones sobre el. Ver
http://antipastohw.blogspot.com.es/2009/11/4-operating-systems-for-arduino.html
A principios de 1970 TI produjo el primero de los microcontroladores el TMS 1000. Aunque Intel hizo anteriormente el
microcontrolador de 4 bits Intel 4004, necesitaba de una circuitería externa para funcionar, por lo que el TMS 1000 es
considerado el primer microcontrolador completo en un chip.
También los valores que pueden tomar las variables dependen del tamaño de la
palabra. http://es.wikipedia.org/wiki/Palabra_%28inform%C3%A1tica%29
Esta entrada se publicó en Arduino, Curso Avanzado 2017, Hardware, Microcontrolador, microprocesador y está etiquetada
con Arduino, Curso Avanzado 2017, Hardware, Microcontroladores, Microprocesadores en 11 agosto, 2017
[https://aprendiendoarduino.wordpress.com/2017/08/11/microcontrolador-vs-microprocesador-3/] .
Arduino es una plataforma abierta que facilita la programación de un microcontrolador. Los microcontroladores nos
rodean en nuestra vida diaria, usan los sensores para escuchar el mundo físico y los actuadores para interactuar con el
mundo físico. Los microcontroladores leen sobre los sensores y escriben sobre los actuadores.
En palabras de David Cuartielles: “Actualmente todo lo que nos rodea en la vida es digital (entendido como hacer
operaciones matemáticas complejas y comunicar con otros dispositivos), cualquier cosa lleva un microchip, desde
el microondas a un coche. Arduino lleva uno de esos microchips y te permite aprender a manejar como funciona el
mundo en el que vivimos hoy en día y cómo interactúa el hombre con el mundo digital. Arduino es la puerta hacia
tomar control de cómo funcionan las cosas actualmente y en el futuro. Así que encender el ordenador y empezar a
programar.”
El hardware de Arduino 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,
Atmega1280, ATmega8 por su sencillez, pero se está ampliando a microcontroladores Atmel con arquitectura ARM y
también Intel.
Por otro lado Arduino nos proporciona un software consistente en un entorno de desarrollo (IDE) que implementa el
lenguaje de programación de arduino y el bootloader ejecutado en la placa. La principal característica del software de
programación y del lenguaje de programación es su sencillez y facilidad de uso.
El software hecho para Arduino es portable, es decir, el mismo rmware que hemos hecho para un
Arduino/Microcontrolador, sirve para otras placas Arduino u otras placas compatibles Arduino como el ESP8266.
Arduino promete ser una forma sencilla de realizar proyectos interactivos para cualquier persona. Para alguien que quiere
hacer un proyecto, el proceso pasa por 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. 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, conectándose a dispositivos e
interactuar tanto con el hardware como con el software. Nos sirve tanto para controlar un elemento, pongamos por
ejemplo un motor que nos suba o baje una persiana basada en la luz existente es una habitación, 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 o mostrar por un display lo tecleado.
Con Arduino es posible automatizar cualquier cosa para hacer agentes autónomos (si queréis llamarles Robots también).
Controlar luces y dispositivos, o cualquier otra cosa que se pueda imaginar, es posible optar por una solución basada en
Arduino. Especialmente en desarrollos de dispositivos conectados a Internet, Arduino es una solución muy buena.
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
Primer Arduino:
Arduino simpli ca el trabajo con microcontroladores y ofrece las siguientes ventajas: barato, multiplataforma, entorno de
programación sencillo, software libre y extensible mediante librerías en C++, hardware libre y extensible.
Al trabajar con Arduino, se manejan conceptos de diferentes tecnologías que a priori no tienen nada que ver entre ellos
pero que los uni ca: electronica digital y analogica, 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…
Arduino y por extensión el hardware libre se ha convertido en un elemento importante no solo en el mundo maker sino
también el la industria de fabricación de hardware.
Este enlace hace un estudio del estado de la industria del hardware en 2016. Más empresas están desarrollando productos
innovadores y tenemos disponibles mejores herramientas para el prototipado y fabricación. El acceso a esas herramientas
y el conocimiento alrededor de ellas es cada vez más universal. De estas herramientas destaca Arduino, Raspberry Pi y las
impresoras 3D.
Cabe destacar de este estudio que el 56% de las empresas usan Arduino como herramienta eléctrica de prototipado y el
91% de las empresas usan impresoras 3D como herramienta mecanica de prototipado.
Arduino también se está utilizando ampliamente en la docencia y en la investigación. Pero Arduino empezó como
herramienta sencilla para artistas y usarlo en sus obras de arte, ejemplo de uso de Arduino en el Arte
https://vimeo.com/149774067
Poner un Arduino en un producto comercial no es recomendable, pero sí usarlo como una herramienta de desarrollo y
prototipado.
Además Arduino puede ser una herramienta para desplegar aplicaciones, hacer desarrollos internos o como sistema de
monitorización dentro de una empresa de una forma sencilla y económica. Instalar un sistema con Arduino con decenas de
sondas de consumo a lo largo de una empresa para detectar puntos de exceso consumo eléctrico y como elemento de
e ciencia energética, es sencillo y económico usando por ejemplo un proyecto open source como
https://openenergymonitor.org/
Veamos un ejemplo de una empresa riojana. Zapatillas de ciclismo John Luck con medidor de potencia de pedalada.
http://www.ciclismoafondo.es/material/Noticias-material/articulo/Luck-zapatillas-ciclismo-medidor-de-potencia
http://cyclingtips.com.au/2014/09/the-best-of-eurobike-2014-helmets-and-shoes/
http://esmtb.com/27772/john-luck-se-une-al-centro-tecnologico-del-calzado-de-la-rioja/
http://luck-bike.es/es/content/25-potenciometro-luck
Noticia: http://www.planetatriatlon.com/medidores-potencia-la-suela-tus-zapatillas-la-venta-2017/
El producto nal ya no es un Arduino lógicamente, pero Arduino ha sido usado para el desarrollo de un producto comercial.
Antes de Arduino
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.
Ejemplos:
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
Una plataforma muy extendida para aprender a programar microcontroladores era Basic Stamp.
Tabla de comparación de los microcontroladres Basic
Stamp: https://www.parallax.com/sites/default/ les/downloads/BASICStampComparisonChart-0114.pdf
Guia de incio muy intersante de parallax para inicio con Basic Stamp: http://www.rambal.com/descargas/libros/WAM-v3.0-
Spanish-v1.0.pdf
Filosofía Arduino
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/
“We believe that the best way to grow this environment is to develop open source platforms and protocols to propose as an
alternative to the myriad of proprietary hardware and software platforms each one of the big players are developing.
We believe in creating tools that make these technologies understandable to the most diverse set of people as possible, this is the
only way to make sure innovation bene ts most of humanity.
We propose that connected devices should be: Open, Sustainable and Fair.”
“We foresee a world with billions of connected smart objects. These smart objects will be composed and orchestrated, thus making
the Internet of Things a reality. The IoT will be the eyes, noses, arms, legs, hands of a new, extended, cyber body. The nervous
system of such a body will be the Internet, allowing the interaction with a distributed intelligence made of hardware processors and
human minds, behaviors, software procedures, and services, shared in the Cloud.”
Esta entrada se publicó en Arduino, Curso Iniciación 2017, Microcontrolador y está etiquetada con Arduino, Curso Iniciación
2017, Microcontroladores en 19 junio, 2017 [https://aprendiendoarduino.wordpress.com/2017/06/19/que-es-arduino-y-
hardware-libre-2/] .
HW IoT
Esta conferencia sobre IoT con Arduino fue expuesta el 1 de abril de 2017 con motivo del Arduino Day. Puedes ver el video
de la conferencia completa en http://www.innovarioja.tv/index.php/video/ver/1661
Dispositivos Hardware, son los dispositivos que van a medir y los que van a interactuar con el exterior.
El primer elemento, el que está más cerca de las “cosas” es el HW que se encarga de medir e interactuar con las “cosas” y
procesar esos datos:
Dentro del HW libre no solo debemos quedarnos con Arduino, sino que existen otros dispositivos compatibles que se
programar igual que Arduino:
Arduino: https://www.arduino.cc/
ESP8266, HW low cost con wi : https://espressif.com/en/products/hardware/esp8266ex/overview
ESP32, el sucesor del ESP8266: https://espressif.com/en/products/hardware/esp32/overview
Moteino: https://lowpowerlab.com/guide/moteino/
Artik de Samsung https://www.artik.io/
Particle: https://www.particle.io/, productos: https://store.particle.io/
Waspmote de Libellium: http://www.libelium.com/products/waspmote/
Onion https://onion.io/ y https://onion.io/omega
La MCU con conexión inalámbrica sub 1 GHz de TI: http://www.ti.com/product/cc1310
Riotboard: http://riotboard.org/
Geothings: http://geothings.io/
Sensor ambiental: http://www.iotsens.com/sensors_en/environmental-sensor/
ARM Mbed: https://developer.mbed.org/platforms/
Qué es Arduino
Arduino es una plataforma de hardware libre, basada en una placa con un microcontrolador y un entorno de
desarrollo, diseñada para facilitar el uso de la electrónica en proyectos multidisciplinares.
¿Para qué sirve Arduino? Arduino se puede utilizar para desarrollar elementos autónomos, conectándose a dispositivos e
interactuar tanto con el hardware como con el software. Nos sirve tanto para controlar un elemento, pongamos por
ejemplo un motor que nos suba o baje una persiana basada en la luz existente es una habitación, 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 pasar por un display lo tecleado.
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
HW Arduino
El HW de Arduino es básicamente una placa con un microcontrolador. 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í ca. 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:
Las shields son placas de circuitos modulares que se montan unas encima de otras para dar funcionalidad extra a un
Arduino. Esta Shields son apilables.
Las shields se pueden comunicar con el arduino bien por algunos de los pines digitales o analógicos o bien por algún bus
como el SPI, I2C o puerto serie, así como usar algunos pines como interrupción. Además estas shields se alimenta
generalmente a través del Arduino mediante los pines de 5V y GND.
Cada Shield de Arduino debe tener el mismo factor de forma que el estándar de Arduino con un espaciado de pines
concreto para que solo haya una forma posible de encajarlo.
Las placas y shields o ciales de Arduino pueden verse en:
Es la placa estándar y posiblemente la más conocida y documentada. Salió a la luz en septiembre de 2010 sustituyendo
su predecesor Duemilanove con varias mejoras de hardware que consisten básicamente en el uso de un USB HID
propio en lugar de utilizar un conversor FTDI para la conexión USB. Es 100% compatible con los modelos Duemilanove
y Diecimila. Viene con un Atmega328 con 32Kbytes de ROM para el programa.
Esquematico: http://arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf
Microcontrolador: http://www.atmel.com/devices/atmega328p.aspx
Planos del Arduino UNO: https://www.arduino.cc/en/Main/ArduinoBoardUno#documentation
Arduino Mega – http://arduino.cc/en/Main/ArduinoBoardMega2560
Es con mucha diferencia el más potente y el que más pines i/o tiene, apto para trabajos ya algo más complejos aunque
tengamos que sacri car 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.
Esquematico: http://www.arduino.cc/en/uploads/Main/arduino-mega2560_R3-sch.pdf
Microcontrolador: http://www.atmel.com/devices/atmega2560.aspx
Planos del Arduino MEGA: http://www.arduino.cc/en/Main/ArduinoBoardMega2560
El HW Arduino no solo se queda en las placas o ciales, sino que en los últimos años han aparecido muchas placas de
prototipado basadas en los mismos o diferentes microcontroladores que bien por acuerdos con Arduino, por los propios
fabricante de los microcontroladores o por la propia comunidad de usuarios, estas placas tienen soporte del IDE de Arduino
y es posible programarlas como el resto de Arduinos o ciales con el mismo lenguaje de programación.
Placas no o ciales Arduino con soporte para el IDE de Arduino son: https://github.com/arduino/Arduino/wiki/Uno cial-list-
of-3rd-party-boards-support-urls
ESP8266
Web o cial ESP8266: http://www.espressif.com/en/products/hardware/esp8266ex/overview
ESP8266 datasheet: https://www.espressif.com/sites/default/ les/0a-esp8266ex_datasheet_en_1.pdf
Soporte para el IDE de Arduino: http://arduino.esp8266.com/stable/package_esp8266com_index.json
ESP32:
Web o cial: http://www.espressif.com/en/products/hardware/esp32/overview
Datasheet: http://www.espressif.com/sites/default/ les/documentation/esp32_datasheet_en_0.pdf
Soporte para el IDE Arduino en version beta: https://github.com/espressif/arduino-esp32
SW Arduino
El software de Arduino es un IDE, entorno de desarrollo integrado (siglas en inglés de Integrated Development
Environment). Es un programa informático compuesto por un conjunto de herramientas de programación.
El IDE de Arduino es un entorno de programación que ha sido empaquetado como un programa de aplicación; es decir,
consiste en un editor de código, un compilador, un depurador y un constructor de interfaz grá ca (GUI). Además incorpora
las herramientas para cargar el programa ya compilado en la memoria ash del hardware.
Es destacable desde la aparición de la versión 1.6.2 la incorporación de la gestión de librerías y la gestión de placas muy
mejoradas respecto a la versión anterior y los avisos de actualización de versiones de librerías y cores.
Código fuente del IDE de Arduino está disponible en: https://github.com/arduino/Arduino/ y las instrucciones para
construir el IDE desde código fuente pueden verse en: https://github.com/arduino/Arduino/wiki/Building-Arduino
Podemos también ver los problemas/bugs detectados de la versión actual y hacer un seguimiento de ellos en:
https://github.com/arduino/Arduino/issues
Además del IDE instalado en local, hay disponible un IDE on-line dentro del entorno Arduino Create
https://create.arduino.cc/ que es una plataforma on-line integrada que permite escribir código, acceder a contenido,
con gurar placas y compartir proyectos, muy enfocado al Internet de las Cosas (IoT).
Comunidad Arduino
Un factor del éxito de Arduino ha sido la comunidad que está apoyando este proyecto y que día a día publica nuevo
contenido, divulga y responde a las dudas.
En Internet hay disponible todo tipo de cursos, tutoriales, herramientas de consulta, proyectos, etc… que ayudan a que se
pueda usar Arduino con facilidad.
El primer sitio donde empezar para trabajar con Arduino es http://www.arduino.cc/ y el segundo sitio el playground de
Arduino http://playground.arduino.cc/
Arduino playground es un wiki donde todos los usuarios de Arduino pueden contribuir. Es el lugar donde publicar y
compartir código, diagrama de circuitos, tutoriales, trucos, cursos, etc.. y sobretodo el lugar donde buscar cuando tengamos
dudas, un problema, una librería adecuada para nuestro proyecto, etc… Esa la base de datos de conocimiento por
excelencia de Arduino.
stackexchange: http://arduino.stackexchange.com/
stackover ow: http://stackover ow.com/
stackexchange electronica: http://electronics.stackexchange.com/
Otro lugar de encuentro de la comunidad son diversos portales donde se publican proyectos con Arduino:
Hackster: https://www.hackster.io/
Hackaday: http://hackaday.com/ y https://hackaday.io/
Instructables: http://www.instructables.com/
Arduino project hub: https://create.arduino.cc/projecthub
OpenHardware: https://www.openhardware.io/
Make: http://makezine.com/projects/
Makehouseof: http://www.makeuseof.com/service/diy-projects/
Por último, también hay espacios locales para la comunidad, son los llamados hacklabs hackerspace, makerspace, etc.. que
aunque hay ciertas diferencias entre unos y otros, se trata de un sitio físico donde gente con intereses en ciencia, nuevas
tecnologías, y artes digitales o electrónicas se puede conocer, socializar y colaborar. Puede ser visto como un laboratorio de
comunidad abierta, un espacio donde gente de diversos trasfondos puede unirse. Pone al alcance de a cionados y
estudiantes de diferentes niveles la infraestructura y ambiente necesarios para desarrollar sus proyectos tecnológicos.
Un ejemplo de ello es el URmaker: http://www.unirioja.es/urmaker/
Arduino vs Raspberry Pi
Desde hace tiempo han irrumpido en el mercado distintas soluciones de placas PC también llamadas “Single Board
Computer” (SBC), como Raspberry Pi, Beaglebone, etc…
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 funcionalidades diferentes.
Raspberry Pi:
Arduino:
Analogía: Arduino es un Autómata programable y Raspberry Pi es un Ordenador, así que a la hora de decidirse que utilizar
para un proyecto deberíamos pensar si usar un autómata o un ordenador.
Comparativa:
Conexiones Raspberry Pi:
Conexiones Arduino:
IMPORTANTE: Todos los pines de Raspberry Pi tienen un nivel lógico de 3.3V incluido puerto serie, bus I2C y SPI. Los 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.
Esta entrada se publicó en Arduino, Charla, Comunidad, Hardware, Microcontrolador, Software y está etiquetada con
Arduino, Charla, Comunidad, Hardware, Microcontroladores, Raspberry Pi, Software en 21 enero, 2017
[https://aprendiendoarduino.wordpress.com/2017/01/21/que-es-arduino-3/] .
Entradas antiguas