Arduino no solo es una placa azul muy popular con la que hacer semáforos, encender leds o usado en las impresoras 3D. Arduino va mucho más allá y vamos a verlo en este capítulo.
Primer Arduino:
Ya hemos visto anteriormente qué es Arduino: https://aprendiendoarduino.wordpress.com/2018/04/02/que-es-arduino-7/
A modo de resumen los tres componentes de Arduino son:
Arduino = HW + SW + Comunidad
Arduino simplifica 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 unifica: 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/
Mitos sobre Arduino que todo el mundo cree y no son verdad: https://www.baldengineer.com/5-arduino-myths.html
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.
El hardware de Arduino usa microcontroladores generalmente Atmel AVR. 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 como el Atmel SAMD21 o los ST STM32, y también Intel.
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.
Documentación de la placa linkit one:
- Placa: http://wiki.seeed.cc/LinkIt_ONE/
- Recursos: https://docs.labs.mediatek.com/resource/linkit-one/en
- Librerías: http://labs.mediatek.com/api/linkit-one/frames.html
- Ejemplo de uso: https://docs.labs.mediatek.com/resource/linkit-one/en/tutorials/car-tracker
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
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/ para microntroladores Atmel.
El software hecho para Arduino con el IDE es portable, es decir, el mismo firmware que hemos hecho para un Arduino/Microcontrolador, sirve para otras placas Arduino u otras placas compatibles Arduino como el ESP8266.
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:
- https://aprendiendoarduino.wordpress.com/2016/12/14/comunidad-arduino-3/
- https://aprendiendoarduino.wordpress.com/2016/12/14/makerspaces-y-fablabs/
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 benefits 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.”