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.
Qué puede hacer Arduino? https://aprendiendoarduino.wordpress.com/2016/06/26/que-puede-hacer-arduino/
Entornos de aplicación de Arduino? https://aprendiendoarduino.wordpress.com/2016/06/26/entornos-de-aplicacion-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
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ífica. Un microcontrolador incluye en su interior las tres principales unidades funcionales de una computadora: unidad central de procesamiento, memoria y periféricos de entrada/salida.
Características de un Microcontrolador:
- 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.
Placas Arduino: https://aprendiendoarduino.wordpress.com/2017/06/19/placas-arduino-2/
Un shield es una placa compatible que se puede colocar en la parte superior de los arduinos y permite extender las capacidades del arduino.
Shields Arduino: https://aprendiendoarduino.wordpress.com/2017/06/20/shields-arduino-3/
HW Compatible Arduino
Además del HW oficial de Arduino tenemos infinidad de placas compatibles con Arduino. Dentro del HW compatible con Arduino podemos distinguir tres tipos:
- Los clones o forks de las placas de Arduino que son placas basadas o copias de los Arduinos originales y con el mismo factor de forma. Usan los mismo microcontroladores que Arduino y para programarlas se hace como si fuera una placa normal Arduino. Un ejemplo Funduino https://funduino.de/ o freeduino https://www.freeduino.org/freeduino_open_designs.html
- Placas que usando los mismos microcontroladores que Arduino, pero no tienen el mismo factor de forma. Estas placas generalmente necesitan instalar el soporte para ellas en el IDE de Arduino. Por ejemplo Moteino https://lowpowerlab.com/guide/moteino/ o Teensy https://www.pjrc.com/teensy/
- Las placas que no están basadas en las placas originales de Arduino y además usan otros microcontroladores que no están soportados nativamente por Arduino. Se programan igual que Arduino, con el mismo IDE, pero debe instalarse el soporte y el toolchain (compilador, uploader, etc…) para poder usarse como un Arduino. Ejemplos de estas placas son ESP8266 https://espressif.com/en/products/hardware/esp8266ex/overview, chipkit http://chipkit.net/ o MCUs STM32 como Blue Pill http://wiki.stm32duino.com/index.php?title=Blue_Pill
Listados de placas Arduino y compatibles:
- https://en.wikipedia.org/wiki/List_of_Arduino_boards_and_compatible_systems
- http://comohacer.eu/analisis-comparativo-placas-arduino-oficiales-compatibles/
- https://github.com/arduino/Arduino/wiki/Unofficial-list-of-3rd-party-boards-support-urls
Dentro del entorno Arduino, podemos encontrar placas basadas en el microcontrolador ESP8266 con wifi integrado y pila de protocolos TCP/IP que no sigue el factor de forma de Arduino. De este microcontrolador han salido muchas placas como las wemos https://www.wemos.cc/
Placas de otros fabricantes de microcontroladores como Microchip o Mediatek con sus modelos ChipKit o LinkIt.
Y la comunidad está trabajando en dar soporte a otros microcontroladores como algunos STM32 de ST Microelectronics.
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áfica (GUI). Además incorpora las herramientas para cargar el programa ya compilado en la memoria flash 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: https://github.com/arduino/Arduino/issues y en http://forum.arduino.cc/index.php?board=2.0
En principio el IDE de arduino solo tenía soporte para las placas Arduino y los clones o forks con los mismos microcontroladores que los Arduinos oficiales. Desde la versión 1.6.2 del IDE de arduino.cc y gracias al gestor de placas, podemos añadir soporte a otros microcontroladores y placas al IDE de Arduino, como al ESP8266.
Listado de URLs para soporte de tarjetas no oficiales: https://github.com/arduino/Arduino/wiki/Unofficial-list-of-3rd-party-boards-support-urls
Además de los clásicos IDEs hay disponibles otros IDEs oficiales. Arduino.cc tiene 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, configurar 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/ que se verán a lo largo del curso.
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.
Arduino playground: http://playground.arduino.cc/
Algunos apartados importantes en playground.
- Hardware: http://playground.arduino.cc/Main/ArduinoCoreHardware
- Software: http://playground.arduino.cc/Main/DevelopmentTools
- Software en otras MCUs: http://playground.arduino.cc/Main/ArduinoOnOtherAtmelChips
- Interface con HW: http://playground.arduino.cc/Main/InterfacingWithHardware
- Librerías: http://playground.arduino.cc/Main/LibraryList
- Guías de iniciación en Español: http://playground.arduino.cc/Es/Guias
Otro lugar donde la comunidad colabora, se puede buscar información y preguntar las dudas que tengamos, es el foro Arduino: http://forum.arduino.cc/.
También existen lugares no oficiales de Arduino donde resolver nuestras dudas:
- stackexchange: http://arduino.stackexchange.com/
- stackoverflow: http://stackoverflow.com/
- stackexchange electronica: http://electronics.stackexchange.com/
Arduino en las redes sociales:
- on Twitter: @arduino
- on Google+: +Arduino
- on Facebook: official.arduino
- on YouTube: arduinoteam
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 aficionados y estudiantes de diferentes niveles la infraestructura y ambiente necesarios para desarrollar sus proyectos tecnológicos.
Hacklab: https://es.wikipedia.org/wiki/Hacklab
Mejores prácticas Hackerspaces: https://elplatt.com/new-hackerspace-design-patterns
Listado de Hackerspaces: https://hackerspaces.org/wiki/List_of_ALL_Hacker_Spaces
- URmaker: http://www.unirioja.es/urmaker/
- Hacklerspace en Zaragoza: http://www.dlabs.co/
- Factoria maker: http://factoriamaker.com/
- Bricolabs: http://bricolabs.cc/ y http://bricolabs.cc/wiki/index.php
También hay otro espacio local algo diferente que son los fablabs: es un espacio de producción de objetos físicos a escala personal o local que agrupa máquinas controladas por ordenadores.
Fablab: https://es.wikipedia.org/wiki/Fab_lab
Qué es un fablab: http://fab.cba.mit.edu/about/charter/
Este podcast explica las diferencias entre estos espacios: http://make.cesargarciasaez.com/2016/02/01/la-hora-maker-010-fablabs-makespaces-hackerspaces-y-hacklabs/
Movimiento maker: https://en.wikipedia.org/wiki/Maker_culture
Más información sobre la comunidad, makerspaces y fablabs, ver los artículos: