Archivo de la categoría: Comunidad

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

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.

Arduino no solo proporciona las placas (Hardware), sino que nos proporciona un software consistente en un entorno de desarrollo (IDE), un lenguaje de programación simplificado para el HW y el bootloader ejecutado en la placa. La principal característica del software (IDE) y del lenguaje de programación es su sencillez y facilidad de uso.

El software hecho para Arduino 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.

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.

Arduino es una tecnología que tiene una rápida curva de aprendizaje 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…

Definición de Arduino en la web oficial: https://www.arduino.cc/en/Guide/Introduction

Otras definiciones de 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 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/

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

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/

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:

Listados de placas Arduino y compatibles:

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:

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.

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.

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:

Arduino en las redes sociales:

Otro lugar de encuentro de la comunidad son diversos portales donde se publican proyectos con Arduino:

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

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:

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.fictiv.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?

Definitivamente 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 eficiencia 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:

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:

Campaña en kickstarter de un producto con otro concepto pero con el mismo objetivo: https://www.kickstarter.com/projects/brimbrothers/the-worlds-first-wearable-power-meter-for-cyclists. Más información: http://omicrono.elespanol.com/2016/02/medidor-potencia-en-zapatillas/  

Producto oficial lanzado en 2017:

El producto final 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:

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

Anuncios

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.

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:

Listados de placas Arduino y compatibles:

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.

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:

Arduino en las redes sociales:

Otro lugar de encuentro de la comunidad son diversos portales donde se publican proyectos con Arduino:

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

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:

Qué es Arduino

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


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

Definición de Arduino en la web oficial: https://www.arduino.cc/en/Guide/Introduction

Otras definiciones de Arduino:

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 HW Arduino:

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 firmware que hemos hecho para un Arduino/Microcontrolador, sirve para otras placas Arduino u otras placas compatibles Arduino como el ESP8266.

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.

La expresión local de la comunidad Arduino son los makerspaces como el UR-maker de la Universidad de La Rioja: http://www.unirioja.es/urmaker/

Para recibir información de los eventos de la comunidad maker de Logroño inscribirse en la lista de correo noticias@aprendiendoarduino.com o mandar un correo a aprendiendoarduino@gmail.com para inscribirse.

En resumen:

Arduino = HW + SW + Comunidad

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

Librerías Arduino

Las librerías son trozos de código hechos por terceros que usamos en nuestro sketch. Esto nos facilita mucho la programación y hace que nuestro programa sea más sencillo de hacer y de entender. En este curso no veremos como hacer o modificar una librería pero en este curso debemos ser capaces de buscar una librería, instalarla, aprender a usar cualquier librería y usarla en un sketch.

Las librerías son colecciones de código que facilitan la interconexión de sensores, pantallas, módulos electrónicos, etc. El entorno de arduino ya incluye algunas librerías de manera que facilita, por ejemplo, mostrar texto en pantallas LCD.

Existen infinidad de librerías desarrolladas por terceros en internet con sus correspondientes forks, que nos ayudarán a conectar prácticamente cualquier dispositivo a los Arduinos de forma muy sencilla.

En este momento hay 883 librerías oficiales de Arduino, listado: http://www.arduinolibraries.info/ y cada semana aumenta.

Programación Arduino

El lenguaje de programación de Arduino es C++. No es un C++ puro sino que es una adaptación que proveniente de avr-libc que provee de una librería de C de alta calidad para usar con GCC (compilador de C y C++) en los microcontroladores AVR de Atmel y muchas utilidades específicas para las MCU AVR de Atmel como avrdude: https://learn.sparkfun.com/tutorials/pocket-avr-programmer-hookup-guide/using-avrdude

Aunque se hable de que hay un lenguaje propio de programación de Arduino, no es cierto, la programación se hace en C++ pero Arduino ofrece unas librerías o core que facilitan la programación de los pines de entrada y salida y de los puertos de comunicación, así como otras librerías para operaciones específicas. El propio IDE ya incluye estas librerías de forma automática y no es necesario declararlas expresamente. Otra diferencia frente a C++ standard es la estructuctura del programa.

Toda la información para programar Arduino se encuentra en el reference de la web de Arduino: https://www.arduino.cc/en/Reference/HomePage

Aplicaciones Arduino

Desde los inicios de Arduino y el HW Open Source, la industria encontró una forma sencilla y barata de implementar el Internet de las cosas y la Industria 4.0. Con estas herramientas es posible realizar tareas como:

  • Machinery automation.
  • Installation Control. (Thermal, Climate conditioning, Water treatment, Chemical products, Food, etc.).
  • Industrial monitoring.
  • Data acquisition.
  • etc.

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

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 oficiales de Arduino pueden verse en:

Cabe destacar alguna placas Arduino:

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

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 sacrificar un poco el espacio, cuenta con el microcontrolador Atmega2560 con más memoria para el programa, más RAM y más pines que el resto de los modelos.
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 MKR1000https://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 wifi 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 wifi 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 oficiales, 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 oficiales con el mismo lenguaje de programación.

Placas no oficiales Arduino con soporte para el IDE de Arduino son: https://github.com/arduino/Arduino/wiki/Unofficial-list-of-3rd-party-boards-support-urls

Cabe destacar las siguientes placas no oficiales:

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 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, 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

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 oficiales de Arduino donde resolver nuestras dudas:

Otro lugar de encuentro de la comunidad son diversos portales donde se publican proyectos con Arduino:

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.

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.

Makerspaces y FabLabs

La cultura maker es una extensión basada en la tecnología de la cultura DIY (hágalo-usted-mismo). Intereses típicos de los que disfruta la cultura maker incluye actividades orientadas a la ingeniería, como la electrónica, la robótica, la impresión 3D, y el uso de herramientas CNC, así como las actividades más tradicionales, como la metalurgia, carpintería y tradicionales artes y artesanías. Enfatiza un enfoque de cortar y pegar para tecnologías estandarizadas  y anima a la reutilización de diseños publicados en los sitios web y publicaciones orientadas al maker. Hay un fuerte énfasis en el uso y el aprendizaje de habilidades prácticas y su aplicación a diseños de referencia.

La cultura Maker pone énfasis en el aprendizaje activo o learning-by-doing y de forma colaborativa. El “nosotros” es más inteligente que el “yo“. La colaboración en proyectos de gran interés personal a impulsar la necesidad de compartir las lecciones aprendidas.

La cultura Maker ha atraído el interés de los educadores preocupados por la separación de los estudiantes de los temas STEM (ciencia, tecnología, ingeniería y matemáticas) en los entornos educativos formales. Se considera que la cultura Maker tiene el potencial de contribuir a un enfoque más participativo y crear nuevos caminos hacia temas que los hagan más vivos y relevantes para los estudiantes.

Movimiento maker:

Arduino ha colaborado al auge de la cultura Maker ya sea como elemento para hacer proyectos como parte importante de las impresoras 3D.

Makerspaces

Gracias a Internet y a la globalización, los conocimientos de la cultura Maker y de la comunidad se han extendido muy rápidamente y cualquiera desde su casa con una conexión a Internet puede adquirir los conocimientos y herramientas para hacer un proyecto con Arduino o montar una impresora 3D.

Además de este espacio global, hay espacios locales para la comunidad que son los llamados makerspaces o también conocidos como hacklabs o hackerspace y 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.

MakerSpace es un espacio de aprendizaje colaborativo basado en las herramientas. Los Makespace son una combinación de equipos de fabricación, una comunidad de usuarios y mucha formación para permitir que los miembros de la comunidad se dediquen a diseñar, crear prototipos y fabricar trabajos manufacturados que no sería posible crear con los recursos disponibles si los individuos trabajan solos.

Los Makerspaces representan la democratización del diseño, la ingeniería, la fabricación y el aprendizaje. Estos son un fenómeno relativamente nuevo, pero están empezando a producir proyectos importantes.

En Estados Unidos, este movimiento surgió fuera de la comunidad académica y luego se ha ido implantando en diferentes instituciones educativas: Whale Lab del Weaton College, FabLab de la Stanford University, Thinkbox de Case Western Reserve University…; incluso se han desarrollado proyectos como Students as producer en la Lincoln University (Reino Unido).

Además del principal propósito, los makerspaces presentan las siguientes oportunidades:

  • Organizar cursos de tecnología (programación, electrónica y diseño mecánico a todos los niveles)
  • Impartir cursos enfocados a la innovación y diseño
  • Realización de actividades sociales
  • Participar en el desarrollo de proyectos grupales
  • Investigar, debatir y difundir temas relacionados con internet y las nuevas tecnologías.

Actualmente hay listados 2118 makerspaces en https://wiki.hackerspaces.org/

Más información de los makerspaces:

Mejores prácticas MakerSpaces: https://elplatt.com/new-hackerspace-design-patterns

Listado de Hackerspaces: https://hackerspaces.org/wiki/List_of_ALL_Hacker_Spaces

Fablabs

También hay otro espacio local de la comunidad Maker que son los fab labs: es un espacio de producción de objetos físicos a escala personal o local que agrupa máquinas controladas por ordenadores. Los Fab labs son unos espacios de experimentación en el campo de la producción que se integran dentro de los contextos locales donde se sitúan. Los proyectos que han sido desarrollados en los Fab labs incluyen turbinas solares e hidráulicas, ordenadores y redes de datos wireless (cliente ligero), instrumentos de análisis para la agricultura y la salud, casas personalizadas, máquinas de prototipado rápido y muchos otros.

El concepto de Fab lab aparece al principio de los años 2000 en el Center for Bits and Atoms (CBA) del Massachusetts Institute of Technology (MIT).

Fablab:

Qué es un fablab: http://fab.cba.mit.edu/about/charter/ y traducido https://talleresfablableon.wordpress.com/fab-charter/

Fablabs:

Este podcast explica las diferencias entre estos espacios: http://make.cesargarciasaez.com/2016/02/01/la-hora-maker-010-fablabs-makespaces-hackerspaces-y-hacklabs/

Diferencias entre Makerspaces, Hackerspaces, TechShop o FabLab: http://makezine.com/2013/05/22/the-difference-between-hackerspaces-makerspaces-techshops-and-fablabs/