You are on page 1of 46

Aprendiendo Arduino

Aprendiendo a manejar Arduino en profundidad

ARCHIVO DE LA CATEGORÍA: MICROCONTROLADOR

Microcontroladores Arduino a Fondo


Un microcontrolador es un integrado capaz de ser programado desde un ordenador y seguir la secuencia programada.

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.

Por ejemplo, el microcontrolador de Arduino UNO es el ATmega328p y toda la documentación la tenemos en


http://www.microchip.com/wwwproducts/en/ATmega328p. El data sheet completo es un documento de 442 páginas que
podemos ver en http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-42735-8-bit-AVR-Microcontroller-ATmega328-
328P_Datasheet.pdf. Cuando necesitemos más información o cómo funciona este microcontrolador debemos ir a este
documento.

Como muestra de la documentación que tenemos disponible:

Página 34 tenemos el detalle de cómo se distribuye la memoria en el ATmega328p


Página 97 tiene en detalle los puertos digitales I/O y página 100 donde da el código para de nir un pines a high y low y
también como input pullup.
Página 436 tenemos los 3 encapsulados posibles para este microcontrolador
Página 316 nos muestra que este microcontrolador tiene un sensor de temperatura integrado y que es posible
habilitarlo para leer su temperatura.
Página 378 se pueden ver los consumos de Arduino y la dependencia entre la frecuencia máxima de reloj y el Vcc.
Página 428 hay un resumen de todos los registros del microcontrolador y su dirección de memoria.

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.

La importancia de conocer el ciclo de ejecución de instrucciones en un microcontrolador estriba en que en ocasiones es


necesario calcular de forma precisa el tiempo de ejecución de los bucles para actuar en tiempo real.

Cálculos de la velocidad de las operaciones en Arduino: http://forum.arduino.cc/index.php?topic=200585.0


El método para calcular estas tablas está en http://forum.arduino.cc/index.php?topic=200585.0

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:

ATmega2560 del Mega: http://www.atmel.com/devices/atmega2560.aspx


ATmega32U4 del Leonardo: http://www.atmel.com/devices/atmega32u4.aspx
ATSAMD21G18 del Zero: http://www.atmel.com/devices/ATSAMD21G18.aspx
ATSAMW25 del MKR1000: http://www.atmel.com/devices/ATSAMW25.aspx
Intel Curie del Arduino 101: http://www.intel.com/content/dam/support/us/en/documents/boardsandkits/curie/intel-
curie-module-datasheet.pdf
STM32F469BI del STAR-OTTO: http://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit-arm-
cortex-mcus/stm32f4-series/stm32f469-479/stm32f469bi.html

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

Para saber más de microcontroladores, ver estos recursos:

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.

Arquitectura de microcontroladores: http://sistdig.wikidot.com/wiki:arquitectura

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).

Diagramas de bloques de un microcontrolador PIC:


Diagrama de bloques de un microcontrolador AVR de Atmel, incluido el ATmega328p:
El sistema de reloj determina la velocidad de trabajo del microcontrolador. Con 16 MHZ se ejecuta una instrucción en 62,5
nanosegundos (1/16 Mhz), correspondiente a 1 ciclo de máquina. El microcontrolador tiene diferentes opciones de circuito
de reloj tal como lo muestra la siguiente imagen:
En un registro interno del microcontrolador se encuentran 5 opciones diferentes de reloj que son seleccionadas por medio
de un Multiplexor. De este multiplexor sale la señal de reloj, la cual pasa a través de un prescaler, este prescaler se puede
utilizar para reducir la frecuencia, reducir el consumo de energía y mejorar la estabilidad de la señal de reloj.El factor del
prescaler va de 1 a 256, en potencias de 2. En Arduino, por defecto está desactivado, por consiguiente trabaja a la
frecuencia del oscilador externo.

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.

Más información sobre la ALU del Atmega328p en la página 25 de


http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-42735-8-bit-AVR-Microcontroller-ATmega328-
328P_Datasheet.pdf  

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.

Más información: https://en.wikipedia.org/wiki/Processor_register


La memoria RAM en el ATmega328p se divide en varias partes, todos los grupos de registros se ponen a cero al apagar la
fuente de alimentación. La SRAM del 328p se distribuye de la siguiente forma:
Las primeras 32 localizaciones de la memoria son el chero de registros (Register File). Las siguientes 64 localizaciones de
memoria es la standard I/O memory y después las 160 siguientes localizaciones son la Extended I/O memory. Por último
las siguientes 2K localizaciones son la memoria interna SRAM.

Las 5 diferentes modos de direccionamiento para los datos de memoria son:

Direct – The direct addressing reaches the entire data space.


Indirect with Displacement – The Indirect with Displacement mode reaches 63 address locations from the base
address given by the Y- or Z-register.
Indirect – In the Register File, registers R26 to R31 feature the indirect addressing pointer registers.
Indirect with Pre-decrement – The address registers X, Y, and Z are decremented.
Indirect with Post-increment – The address registers X, Y, and Z are incremented.

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

Más información sobre registros y su uso en:

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.

Algunos detalles del sketch:

Con “de ned (__AVR_ATmega32U4__)” compruebo al compilar si el microcontrolador seleccionado es un ATmega32U4


(placa leonardo).
El loop solo coge el carácter enviado de las opciones del menú y lo analiza para hacer una operación u otra. Fijarse en
el uso del switch con break en múltimples líneas.
En función GetTemp(), _BV() es una macro de AVR Libc que convierte un bit en un byte desplanzado el 1 las posiciones
del bit
http://www.atmel.com/webdoc/avrlibcreferencemanual/group__avr__sfr_1ga11643f271076024c395a93800b3d9546.ht
ml y https://www.arduino.cc/en/Reference/Bitshift
La función freeRAM() me da la memoria disponible según http://playground.arduino.cc/Code/AvailableMemory
La función Information() nos da un montón de información interna del proceso de compilación (__variables__) y del
propio microcontrolador (registros).
Para imprimir en número en hexadecimal: “Serial.println(número, HEX);”
Con “asm volatile (“”);” puede ejecutar instrucciones de ensamblador desde un sketch en C++. El compilador avr-gcc se
encarga de ello.
http://www.nongnu.org/avr-libc/user-manual/inline_asm.html
https://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html
volatile: https://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html#Volatile
En la función SpeedTest() se ve cómo calcular el tiempo de ejecución de diversas operaciones.

Solución Ejercicio 05: https://github.com/jecrespo/aprendiendoarduino-


Curso_Arduino_Avanzado_2017/tree/master/Ejercicio05-showInfo

Práctica: Temperatura Interna Microcontrolador

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.

Más información: http://playground.arduino.cc/Main/InternalTemperatureSensor

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.

Solución Ejercicio 06: https://github.com/jecrespo/aprendiendoarduino-


Curso_Arduino_Avanzado_2017/tree/master/Ejercicio06-InternalTemperature

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.

Un resumen de como funciona una MCU y como agregar un programa:


http://www.electronicaestudio.com/microcontrolador.htm que es diferente a como funciona un microprocesador como los
que tenemos en nuestro ordenador o portatil.

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.

Diferencias entre el microprocesador y el microcontrolador, características al usarlos en la implementación de sistemas


digitales programables:

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.

lo que tiene (datos) y su algoritmo o programa


establecida.

Memorias Son dispositivos externos que lo complementan para su Las incluye en un solo circuito integrado.

RAM y ROM óptimo funcionamiento.

Velocidad de Rápida Lenta en comparación con la de un microprocesador

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

actualidad. mucho menor.

Interferencias Son más susceptibles a la interferencia El alto nivel de integración reduce los niveles de interferencia

electromagnética debido a su tamaño y a su cableado electromagnética


externo que lo hace más propenso al ruido.

Tiempo de El tiempo de desarrollo de un microprocesador es lento. Por el contrario, el de un microcontrolador es rápido.

desarrollo

Un buen curso sobre microcontroladores es accesible desde http://www.itescam.edu.mx/portal/asignatura.php?


clave_asig=MTF-1021&carrera=IMCT-2010-229&id_d=206. Se trata de una asignatura de microcontroladores.

Más información sobre microcontroladores: https://sites.google.com/site/electronicscience20/Micro/pic-asembler/2-


microcontroladores

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)

Web principal: http://www.raspberrypi.org/

Especi caciones técnicas: http://es.wikipedia.org/wiki/Raspberry_Pi#Especi caciones_t.C3.A9cnicas

El System-on-a-chip Broadcom BCM2835: http://www.raspberrypi.org/wp-content/uploads/2012/02/BCM2835-ARM-


Peripherals.pdf

Raspberry Pi:
GPIO:
También intel saca su alternativa a raspberry: http://www.intel.es/content/www/es/es/do-it-yourself/edison.html

Más información: https://aprendiendoarduino.wordpress.com/2016/06/25/arduino-vs-raspberry-pi-2/

Un sketch de Arduino no es un sistema operativo: https://es.wikipedia.org/wiki/Sistema_operativo. Un sistema operativo es


un programa o conjunto de programas de un sistema informático que gestiona los recursos de hardware y provee servicios
a los programas de aplicación de software, ejecutándose en modo privilegiado respecto de los restantes (aunque puede
que parte de él se ejecute en espacio de usuario)

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.

Para entender qué es el microcontrolador dentro de Arduino, leer:


https://aprendiendoarduino.wordpress.com/2015/02/25/como-conseguir-un-arduino-gratis/

¿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

También es posible convertir un ordenador en un microcontrolador http://www.instructables.com/id/HackTurn-PC-into-a-


microcontroller-for-free/?ALLSTEPS

Microcontroladores 8 bits y 32 bits

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.

El tamaño de la palabra es un aspecto importante en la arquitectura de procesadores. La mayoría de los registros de un


Microprocesador/Microcontrolador tienen el tamaño de la palabra y las operaciones que hace la ALU es manejando
operandos cuyo tamaño es el tamaño de la palabra, así como la cantidad de datos transferidos a memoria y dirección
utilizada para designar una localización de memoria a menudo ocupa una palabra.

El tamaño de palabra de un microprocesador/microcontrolador in uye principalmente en el tamaño de datos que puede


manejar y la cantidad de memoria RAM que puede usar, así como la velocidad de procesamiento.

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

Arduinos con procesadores de 8 bits:

Arduino UNO:  https://www.arduino.cc/en/Main/ArduinoBoardUno


Arduino MICRO: https://www.arduino.cc/en/Main/ArduinoBoardMicro
Arduino MEGA: https://www.arduino.cc/en/Main/ArduinoBoardMega2560

Arduinos o compatibles con procesadores de 32 bits:

Arduino Due: http://www.arduino.org/products/boards/4-arduino-boards/arduino-due


Arduino 101: https://www.arduino.cc/en/Main/ArduinoBoard101
Arduino ZERO: https://www.arduino.cc/en/Main/ArduinoBoardZero
Arduino MKR1000: https://www.arduino.cc/en/Main/ArduinoMKR1000
ESP8288: http://espressif.com/en/products/hardware/esp8266ex/overview
STM32F103C8: http://wiki.stm32duino.com/index.php?title=Blue_Pill

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/] .

Qué es Arduino y Hardware Libre


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.

Hardware Libre: http://es.wikipedia.org/wiki/Hardware_libre

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…

De nición de Arduino en la web o cial: https://www.arduino.cc/en/Guide/Introduction

Otras de niciones de Arduino:


http://en.wikipedia.org/wiki/Arduino
http://es.wikipedia.org/wiki/Arduino

Que es arduino en un minuto (video): http://learn.onemonth.com/what-is-arduino

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

Mitos sobre Arduino que todo el mundo cree y no son verdad: https://www.baldengineer.com/5-arduino-myths.html

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…

Diez razones para usar Arduino: http://www.modulo0tutoriales.com/10-razones-para-usar-arduino/


Importancia de Arduino en el mundo Hardware

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.

Enlace: http://blog. ctiv.com/posts/2016-state-of-hardware-report

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.

Otra encuesta de hackster.io que muestra la importancia de Arduino: https://blog.arduino.cc/2016/07/06/the-worlds-


largest-maker-survey-results-are-out/

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

¿Es Arduino un Juguete destinado a Makers?


De nitivamente NO, Arduino es una herramienta de prototipado accesible y barata que puede ser usada por
profesionales para desarrollar aplicaciones profesionales.

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.

Presentación en el Eurobike del 2014:

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/

Colaboración con el Centro Tecnológico del Calzado de La Rioja (CTCR)

http://esmtb.com/27772/john-luck-se-une-al-centro-tecnologico-del-calzado-de-la-rioja/

Elementos montados que se ven en la imagen:

Arduino Pro Mini, 9.95$: https://www.sparkfun.com/products/11113


Módulo bluetooth, 34.95$: https://www.sparkfun.com/products/12580
El sensor piezo, 1,5$: https://www.sparkfun.com/products/10293, posiblemente no sea este puesto que sería
necesario un sensor con mucha más sensibilidad.
El resto  de elementos posiblemente sean para adaptar la señal del sensor piezo eléctrico, cargador de batería, etc…
Campaña en kickstarter de un producto con otro concepto pero con el mismo objetivo:
https://www.kickstarter.com/projects/brimbrothers/the-worlds- rst-wearable-power-meter-for-cyclists. Más información:
http://omicrono.elespanol.com/2016/02/medidor-potencia-en-zapatillas/  

Producto o cial lanzado en 2017:

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

Lenguaje de programación Pbasic: http://en.wikipedia.org/wiki/PBASIC

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

Placas de desarrollo con Basic Stamp: https://www.parallax.com/catalog/microcontrollers/basic-stamp/boards

Ejemplo de domotica con basic stamp: http://www.aprenderobotica.com/m/group/discussion?id=4310109%3ATopic%3A947

Interesante comparación entre Basic stamp y arduino: http://todbot.com/blog/2006/09/25/arduino-the-basic-stamp-killer/

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/

IoT Manifesto: https://create.arduino.cc/iot/manifesto/

“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:

Sensores: Los sensores son el primer eslabón de la cadena de IoT


https://aprendiendoarduino.wordpress.com/2016/07/02/sensores-arduino/
Actuadores: https://aprendiendoarduino.wordpress.com/2016/07/02/actuadores-y-perifericos-de-salida-2/
Periféricos: https://aprendiendoarduino.wordpress.com/2016/07/02/actuadores-y-perifericos-de-salida-2/

El elemento HW programable capaz de interactuar con estos dispositivos es el microcontrolador o el microprocesador.


El HW libre por excelencia es Arduino como microcontrolador y Raspberry Pi como microprocesador, con menor potencia
física pero mayor potencia de cálculo.

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/

Y muchas más que aparecen cada día.

No solo para prototipos, PLC basado en Arduino: https://www.industrialshields.com/


Esta entrada se publicó en Actuadores, Arduino, ESP8266, Hardware, Microcontrolador, Sensores y está etiquetada con
Actuadores, Arduino, ESP8266, Hardware, Microcontroladores, Sensores en 31 marzo, 2017
[https://aprendiendoarduino.wordpress.com/2017/03/31/hw-iot/] .

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.

Hardware Libre: http://es.wikipedia.org/wiki/Hardware_libre


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.

¿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:

Velocidad del reloj u oscilador


Tamaño de palabra
Memoria: SRAM, Flash, EEPROM, ROM, etc..
I/O Digitales
Entradas Analógicas
Salidas analógicas (PWM)
DAC (Digital to Analog Converter)
ADC (Analog to Digital Converter)
Buses
UART
Otras comunicaciones.
Arduino dispone de una amplia variedad de placas y shields para usar dependiendo de nuestras necesidades.

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:

Productos Arduino: https://www.arduino.cc/en/Main/Products


Productos Genuino: https://www.arduino.cc/en/Main/GenuinoProducts
Placas Arduino.org: http://www.arduino.org/products/boards
Shields Arduino.org: http://www.arduino.org/products/shields

Cabe destacar alguna placas Arduino:

Arduino Uno – http://arduino.cc/en/Main/ArduinoBoardUno

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

Arduino MKR1000 – https://www.arduino.cc/en/Main/ArduinoMKR1000


Versión para IoT con procesador Atmel ARM Cortex M0+ de 32bits ATSAMW25 que es el mismo procesador que
Genuino Zero pero con wi integrado, chip de cifrado y antena integrada.
Arduino Yun – http://www.arduino.org/products/boards/4-arduino-boards/arduino-yun
Con MCU Atmel AVR de 8 bits ATmega32U4 y procesador MIPS Qualcomm Atheros AR9331 a 400 MHz con wi
integrado y SO linux Linino basado en OpenWRT y ethernet. Su principal característica es la capacidad de comunicar la
MCU con el SO linux mediante un puerto serie interno.
Placas Compatibles Arduino

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

Cabe destacar las siguientes placas no o ciales:

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  

Chipkit: http://chipkit.net/ placas basadas en el microcontrolador PIC32. Soporte IDE


https://github.com/chipKIT32/chipKIT-core/raw/master/package_chipkit_index.json
Moteino: https://lowpowerlab.com/moteino/.
Soporte IDE https://lowpowerlab.github.io/MoteinoCore/package_LowPowerLab_index.json
Windows 10 IoT Core: https://developer.microsoft.com/es-es/windows/iot.
Soporte IDE ttps://github.com/ms-iot/iot-
utilities/raw/master/IotCoreAppDeployment/ArduinoIde/package_iotcore_ide-1.6.6_index.json

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.

Todos lo cambios en la versiones pueden verse en: https://www.arduino.cc/en/Main/ReleaseNotes

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

La dirección para descargarse el IDE de Arduino es: https://www.arduino.cc/en/Main/Software

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).

También existen otros IDEs alternativos como Atmel Studio http://www.atmel.com/Microsite/atmel-studio

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.

También existen lugares no o ciales de Arduino donde resolver nuestras dudas:

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.

Las diferencias principales entre una Raspberry Pi y un Arduino son:

Número de entradas y salidas disponibles y sus capacidades de corriente y voltaje.


La programación, Arduino se usa para programación en tiempo real, en Raspberry Pi se usa para programación
intensiva con gran cantidad de datos.
Como se ejecuta la aplicación del usuario

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

You might also like