Archivo de la categoría: Arduino.cc

Entorno de Programación de Arduino (IDE)

IDE – entorno de desarrollo integrado, llamado IDE (sigla en inglés de integrated development environment), es un programa informático compuesto por un conjunto de herramientas de programación. Puede dedicarse en exclusiva a un solo lenguaje de programación o bien puede utilizarse para varios.

Un IDE es un entorno de programación que ha sido empaquetado como un programa de aplicación, es decir, que consiste en un editor de código, un compilador, un depurador y un constructor de interfaz gráfica (GUI). Además en el caso de Arduino incorpora las herramientas para cargar el programa ya compilado en la memoria flash del hardware a través del puerto serie.

Los programas de arduino están compuestos por un solo fichero con extensión “ino”, aunque es posible organizarlo en varios ficheros. El fichero principal siempre debe estar en una carpeta con el mismo nombre que el fichero.

Anteriormente a la versión 1.x de Arduino se usaba la extensión “pde”. Cuando se pasó a la versión 1.x hubo grandes cambios, que deben tenerse en cuenta si se usa código antiguo.

La última versión del IDE de Arduino es la 1.6.8. Los grandes cambio del IDE Arduino se produjo en el cambio de la versión 0.22 a la 1.0 y posteriormente en el cambio de la versión 1.0.6 a la 1.6.0 con grandes mejoras en el IDE de Arduino.

El el caso de la versión 1.6.0 los cambios han sido principalmente internos más que en el aspecto de la herramienta. También 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 versiones anteriores y 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

Una guía de como migrar de versiones anteriores a la 1.0: http://www.engblaze.com/changes-in-the-arduino-1-0-release/

El IDE de Arduino va a ser nuestra herramienta de trabajo a partir de este momento.

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 ver los problemas detectados de la version actual y hacer un seguimiento de ellos: https://github.com/arduino/Arduino/issues y en http://forum.arduino.cc/index.php?board=2.0
Con la división de Arduino, no solo se ha producido una división en las placas sino también en los IDEs. Más información en: https://aprendiendoarduino.wordpress.com/2016/03/19/arduino-cc-y-arduino-org-los-dos-arduinos/

Shields Arduino

Las shields son placas de circuitos modulares que se montan unas encima de otras para dar funcionalidad extra a Arduino. Los 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 standard de Arduino con un espaciado de pines concreto para que solo haya una forma posible de encajarlo.

 

Debemos tener en cuenta que cuando instalemos un shield, habrá que leer su documentación que nos dirá si inhabilita algunas de los pines I/O o si usa un bus y que requisitos tiene para su utilización, así como el software o librería que necesita para su uso. Generalmente las shields tienene un ejemplo o una librería para su uso.

En algunos casos los shiels pueden tener el pineado que no permita apilar más.

Veamos algunos de los shields más importantes de Arduino:

Ethernet Shield: http://arduino.cc/en/Main/ArduinoEthernetShield

La placa Arduino se comunica con el módulo W5100 y la micro-SD utilizando el bus SPI (mediante el conector ICSP). Esto se encuentra en los pines digitales 11, 12 y 13 en el modelo UNO y en los pines 50, 51 y 52 del modelo MEGA. En ambas placas, el pin 10 es utilizado para seleccionar el W5100 y el pin 4 para la micro-SD. Estos pines no pueden ser utilizados para otros fines mientras la Ethernet Shield esté conectada. El en MEGA, el pin SS (53) no es utilizado pero debe dejarse como salida para que el bus SPI funcione correctamente.

Usa la librería ethernet: http://www.arduino.cc/en/Reference/Ethernet

Arduino Wifi Shield: http://arduino.cc/en/Main/ArduinoWiFiShield

Permite conectar un Arduino a Internet mediante Wifi y hace uso de la librería WiFi Library http://arduino.cc/en/Reference/WiFi

También dispone de un slot para una tarjeta micro SD.

Este shield se comunica con Arduino a través del bus SPI mediante los pines ICSP y usa los pines 4 y 10 al igual que la Shield Ethernet. También hace uso del pin 7 que no puedes ser usado.

Debe tenerse en cuenta que dado que la tarjeta SD y la wifi usan el mismo bus SPI, no pueden trabajar simultáneamente, debe tenerse este aspecto en cuenta durante la programación si usamos ambos periféricos. Esta tarjeta también dispone de un interfaz en placa para actualizaciones de firmware y diagnósticos.

Este shield ya está descatalogado y ha sido sustituido por el Arduino WiFi Shield 101

Arduino WiFi Shield 101: https://www.arduino.cc/en/Main/ArduinoWiFiShield101

Este nuevo shield es una mejora de la anterior wifi shield desarrollado junto con Atmel que usa el módulo WINC1500 y también añade funciones de cifrado hardware gracias al chip de cifrado ATECC508A diseñado para el mercado de IoT. Los pines 5 y 7 son usados por este shield.

Usa una nueva librería llamada WiFi101 https://www.arduino.cc/en/Reference/WiFi101 que también usan otros Arduinos con wifi integrado como el MKR1000. Esta librería es muy compleja y ocupa más del 60% de la memoria disponible en el Arduino UNO, dejando poco espacio para los sketches. Si se van a realizar programas complejos, este shield es recomendable usarlo con Arduino Zero, 101 o Mega.

Arduino GSM Shield:

Conecta Arduino a Internet mediante GPRS, usando una tarjeta SIM. También permite enviar y recibir mensajes (SMSs) y llamadas de voz.

Telefónica presentó la nueva versión del proyecto Arduino GSM/GPRS Shield, un dispositivo que incorpora conexión GPRS/GSM a una placa base de hardware libre, dando como resultado un dispositivo de bajo coste conectado gracias a la tecnología machine to machine (M2M) de Telefónica. ¿El fin? Abrir nuevas posibilidades para que el llamado internet de las cosas pueda prosperar de forma sencilla y económica con la colaboración de Arduino.

Como cualquier otro elemento de Arduino, está disponible la documentación de HW y SW y es open source. Usa los pines 2 y 3 (software serial) y el pin 7 (reset), pero hay una serie de condicionantes para su uso con los Arduinos Mega, Yun y Leonardo debido a que los pines que se usan para comunicar deben tener implementada interrupción en el pin 2.

Para su uso es necesaria la librería GSM Library: http://arduino.cc/en/Reference/GSM

En este caso por el consumo de esta shield, se hace necesario alimentar a Arduino mediante una fuente externa y no desde el USB ya que no es capaz de proporcionar suficiente energía.

También es posible hacer llamadas de voz haciendo unas pequeñas modificaciones, añadiendo un micrófono y un altavoz.

Arduino Motor Shield: http://arduino.cc/en/Main/ArduinoMotorShieldR3

Permite manejar dos motores DC, controlando su dirección y velocidad. Está basado en un chip de doble puente H L298:

Para manejar un motor DC se puede usar otro integrado de puente H el L293 (http://www.ti.com/lit/ds/symlink/l293.pdf) como en el proyecto 2 de https://aprendiendoarduino.wordpress.com/2015/04/16/tema-5-taller-de-proyectos-con-arduino/, pero este shield nos facilita mucho su uso.

Este shield usa dos canales y cada canal usa 4 pines, en total nos ocupa 8 pines del Arduino

Un módulo con el mismo puente H pero sin formato shield: http://tienda.bricogeek.com/motores/285-controlador-de-motores-doble-puente-h-l298.html

Por otra parte, arduino.org ha lanzado otras shields y nuevas versiones de las ethernet y GSM. Todas las shields de arduino.org en http://www.arduino.org/products/shields

Además existen múltiples shields no oficiales de Arduino que nos permiten ampliar las capacidades de la placa Arduino. Unos ejemplos:

EmonTx Shield: http://openenergymonitor.org/emon/emontxshield/smt

Un shield para medir corriente eléctrica bajo el proyecto open energy monitor: http://openenergymonitor.org/emon/

Posee 4 entradas para conectar 4 toroidales abiertos y una entrada para conectar el sensor de voltaje mediante un transformador AC-AC, también tiene la posibilidad de montar un transmisor RF.

Grove Shield: http://www.seeedstudio.com/depot/Grove-Base-Shield-p-754.html

Un Shield para el sistema grove que facilita la conexión de sensores y actuadores.

Relay Shield: http://www.seeedstudio.com/depot/relay-shield-v20-p-1376.html?cPath=132_134

Este shield proporciona 4 relés para manejar dispositivos que no pueden controlarse directamente con las I/O de Arduino. Dispone de unos indicadores de uso de los relés.

En este caso se usan 4 pines digitales para usar cada uno de los relés.

Más información y ejemplos en: http://www.seeedstudio.com/wiki/Relay_Shield_V2.0

Shield Relay Driver de 8 canales: http://www.freetronics.com.au/collections/shields/products/relay8-8-channel-relay-driver-shield#.VQxwlo5k6t8

Este shield permite manejar hasta 8 relés (que no están en el shield) usando solo dos pines de I/O del Arduino. Se comunica con Arduino usando el bus I2C, de forma que aplilando varias de estas shields podemos manejar 16, 24 y más relés.

Guía de uso: http://www.freetronics.com.au/pages/relay8-8-channel-relay-driver-shield-quickstart-guide#.VQyBVI5k6t8

GPS Shield: http://www.adafruit.com/products/1272

Con un slot para micro SD donde guardar logs. No es compatible con Arduino Mega ni Due, RTC incluido.

Conexión por puerto serie o conexión directa.

Más información en: https://learn.adafruit.com/adafruit-ultimate-gps-logger-shield

Xbee Shield: https://www.sparkfun.com/products/12847 y http://www.seeedstudio.com/depot/xbee-shield-v20-p-1375.html

Para comunicación inalámbrica mediante Xbee. Conexión a UART de la MCU o a cualquier otro puerto por software serial.

Más información: http://www.seeedstudio.com/wiki/XBee_Shield_V2.0

TFT Shield:  http://www.electan.com/arduino-shield-tft-tactil-color-240×320-p-3187.html

Pantalla táctil resistiva con un slot para micro SD integrado. Comunicación a Arduino a través de bus SPI.

Bluetooth Shield: http://www.seeedstudio.com/depot/Bluetooth-Shield-p-866.html

Comunicación inalámbrica por bluetooth. Conecta con la UART del Arduino o software serial con selector de puerto serie..

Terminal Shield: http://www.freetronics.com.au/collections/shields/products/terminal-shield-for-arduino#.VQxwn45k6t8

Shield con borneros y placa de prototipado que nos permite conectar fácilmente cualquier sensor o actuador a un Arduino.

Además de los Shield, también tenemos disponibles módulos independientes para conectar directamente a Arduino:

Otras Shields Interesantes:

Existen muchísimos shields que seguro que alguno es capaz de cubrir las necesidades de nuestro proyecto. En cada web de los fabricantes tenemos variedad donde elegir.

Un listado completo donde encontrar cualquier tipo de shield: http://shieldlist.org/

Para aprender más sobre los shields: https://learn.sparkfun.com/tutorials/arduino-shields

Y por supuesto tenemos kits de robótica:

También hay Shields para Raspberry Pi:

Grove Pi tiene un “Arduino”: http://www.dexterindustries.com/GrovePi/engineering/port-description/

Arduino.cc y Arduino.org. Los dos Arduinos

A principios de 2015 se produjo una división dentro de Arduino y desde entonces han aparecido bastante cambios para los usuarios de Arduino, principalmente que ha aparecido una nueva marca llamada “Genuino” y una nueva web oficial de Arduino www.arduino.org. Pero no solo es que haya dos páginas web oficiales de Arduino, sino que ahora hay dos entornos de programación y han aparecido nuevos modelos de placas Arduino pero fabricadas por diferentes empresas.

En este momento hay dos páginas oficiales de Arduino: www.arduino.cc y www.arduino.org, la primera es la que nació originalmente y la segunda es la que se creó a raiz del la división entre el equipo creador de Arduino y la empresa que fabricaba el Hardware en Italia.

Cada una de estas webs tienen placas Arduino diferentes, IDEs diferentes y marcas diferentes con la aparición de Genuino en Europa. Esto puede causar cierta confusión a los usuarios de Arduino y vamos a aclararlo en este post.

Un poco de Historia

Arduino LLC fue la compañía creada por Massimo Banzi, David Cuartielles, David Mellis, Tom Igoe and Gianluca Martino en 2009 y es la propietaria de la marca Arduino. Las placas Arduino eran fabricadas por una spinoff llamada Smart Projects Srl creada por Gianluca Martino. En noviembre de 2014 cambiaron el nombre de la empresa que manufactura las placas Arduino de Smart Projects Srl a Arduino Srl y registraron el dominio arduino.org, esto fue el inicio de la división que se produjo poco después.

Hasta principios de 2015 la web oficial de Arduino era www.arduino.cc mantenida por los creadores de Arduino y todo su equipo. En febrero de 2015 se hizo público la ruptura entre los fundadores de Arduino y el fabricante de las placas de Arduino liderado por Gianluca Martino, comenzando este una nueva dirección del proyecto Arduino.

Más información en estos enlaces:

Otros enlaces muy interesantes que explican la historia de la separación de Arduino y el origen de Arduino con Wiring y su creador Hernando Barragán:

En mayo de 2015 Massimo Banzi anunció la nueva marca de Arduino y el nuevo desarrollo de Arduino en la Maker Faire Bay Area 2015. Ver: https://blog.arduino.cc/2015/05/22/the-state-of-arduino-a-new-sister-brand-announced/

A partir de esta ruptura, durante 2015 se vieron muchos cambios en ambas páginas web, mejoras notables en el IDE oficial de Arduino de www.arduino.cc y la aparición de dos nuevos IDEs de Arduino desde www.arduino.org, uno como un fork del original y otro un nuevo desarrollo de arduino.org llamado Arduino Studio escrito de nuevo completamente en javascript y basado en Brackets, pero que aun está en versión alpha.

Podemos resumir que ahora mismo hay dos empresas: Arduino LLC con Massimo Banzi y los demás co-fundadores de Arduino y Arduino SRL con Gianluca Martino y Federico Musto, este último no perteneciente al equipo original e incorporado posteriormente.

Las marcas Arduino

Puesto que las placas Arduino son open source, cualquiera puede hacer una placa Arduino compatible o incluso una copia exacta, sin embargo el nombre, la marca Arduino y el logotipo están protegidos: https://www.arduino.cc/en/Trademark/HomePage.

Ahora mismo en europa la marca y el logo arduino es usado por arduino.org y en USA es usado por arduino.cc. Por este motivo en europa arduino.cc ha sacado una nueva marca llamada GENUINO y un nuevo logo.

Genuino es una marca de arduino.cc creada por los fundadores de Arduino y usada para las placas y productos vendidos fuera de Estados Unidos.

Más información en: https://www.arduino.cc/en/Main/GenuinoBrand

Por lo tanto cuando vemos una placa genuino, se trata de una placa Arduino. Se puede decir que Arduino y Genuino son lo mismo pero por temas legales debe tener un nombre/marca diferente.

Las dos webs a fondo

www.arduino.cc es el sitio original de Arduino de los creadores de Arduino y www.arduino.org es un “fork” creado por la empresa que fabricaba las placas Arduino. Ambas páginas tratan sobre Arduino pero fabrican placas diferentes, nos ofrecen IDEs diferentes y contiene información de cada uno de sus productos.

Arduino.cc

Como hemos dicho es la web original de Arduino y la que conocen bien todos los que han trabajado con Arduino. Los elementos más importantes de esta web son:

La web de arduino.cc ha evolucionado mucho en los meses posteriores a la división de Arduino. Ha cambiado la imagen y han actualizado y añadido los contenidos. Se pueden ver las novedades en la entrada del blog de arduino.cc: https://blog.arduino.cc/2015/09/11/keeping-the-arduino-website-in-motion/

Arduino.org

Web oficial de la marca Arduino fuera de USA. Los elementos más importantes de esta web son:

El Hardware Arduino

La división de Arduino en dos partes ha provocado que haya dos tipos de placas con marcas diferentes como hemos visto. En la página arduino.org se encuentra disponibles productos que en el arduino.cc no están y viceversa.

arduino.cc tiene un acuerdos con adafruit y seeedstudio para manufacturar sus placas y también tiene nuevos acuerdos para usar MCUs de Intel además de los de Atmel, como el arduino 101 con chip intel curie.

Anuncios de los acuerdos de arduino.cc

Las placas oficiales para Europa de genuino son:

Para el mercado europeo no ofrece actualmente shields, pero pueden verse todas las placas y shields de Arduino en: https://www.arduino.cc/en/Main/Products

En cada uno de los enlaces tenemos amplia información de cada placa y todo tipo de documentación sobre ellas, que es imprescindible leer antes de comenzar a usarlas.

arduino.org es fabricante de sus placas en Italia y se habló de conversaciones para fabricar con Panasonic y Bosch para expandir por el mundo la fabricación de placas Arduino y reducir su coste según http://readwrite.com/2015/03/18/arduino-open-source-schism/

Las placas de arduino.org disponibles son:

Las shields oficiales de arduino.org están en http://www.arduino.org/products/shields donde también han aparecido novedades como la segunda versión del Ethernet Shield y del GSM Shield

Los IDEs de Arduino

Por supuesto Arduino no es solo Hardware, sino también el software que nos facilita programar el microcontrolador. Esta división en el hardware también se ha visto reflejada en la división de software apareciendo nuevos IDEs de arduino.cc y arduino.org.

Una consecuencia de esta división es que las placas de arduino.org pueden no funcionar con el IDE original de arduino.cc y al contrario. Pero si solo queremos usar un IDE o nos gusta uno más que otro, siempre se pueden hacer pequeñas modificaciones en el IDE para poder usar las placas de un arduino en el IDE del otro arduino.

El listado de placas soportadas por cada IDE difiere un poco:

Placas IDE arduino.cc Placas IDE arduino.org
 2016-03-19 (20)

2016-03-19 (21)

 2016-03-19 (19)

Lo más probable es que haya problemas con los Arduinos nuevos que vayan saliendo, pero con los arduinos anteriores a la división de Arduino seguirán siendo soportados en ambos IDEs.

También es posible que cada uno de los IDEs de arduino.cc y arduino.org tengan versiones diferentes de las librerías que tienen incluidas, esto nos puede traer problemas al usar un sketch en un IDE o en otro y habrá que tenerlo en cuenta.

Puede que nos aparezcan avisos de placas no certificadas al usar un IDE diferente del fabricante de la placa como el que se añadió en: https://github.com/arduino/Arduino/commit/39d1dfc9995e75e858fa238c7c8881ee2d7679c6

Esto se debe a que arduino.cc y arduino.org tienen su propio identificador de USB (vendor ID) y lo detectan los IDEs. También puede pasar con falsificaciones o clones de placas arduino. El vendor ID para arduino.cc es 0x2341 y por ejemplo para el Arduno UNO el product ID es 0x0001. El vendor ID para arduino.org es 0x2A03 que pertenece a la empresa Dog Hunter AG.

IDE Arduino.cc: Es el IDE original de Arduino pero que desde la aparición de la versión 1.6.2 hay grandes mejoras que incluyen la gestión de librerías y gestión de placas muy mejoradas respecto a la versión anterior y avisos de actualización de versiones de librerías y cores.

Arduino Create de Arduino.cc: Es un IDE online que actualmente está accesible  de forma privada en modo beta testing desde https://create-staging.arduino.cc/.

Un IDE online te permite tener siempre la versión actualizada del propio IDE, librerías y cores de las MCUs, así como guardar online los sketches en la nube.

Más información de Arduino Create:

Para usarlo es necesario usar un agente e instalarlo en el ordenador. Código fuente del agente: https://github.com/arduino/arduino-create-agent

IDE Arduino.org: Se trata de un fork del IDE de arduino.cc que a su vez deriva de Wiring http://wiring.org.co/. Este IDE no dispone de la gestión mejorada de librerías y placas.

Ambos IDEs son actualmente muy similares a simple vista, pero en el interior hay varias diferencias.

2016-03-19 (17)

Más información en: http://labs.arduino.org/Arduino%20IDE

IMPORTANTE: la versión del IDE de arduino.org es actualmente la 1.7.8, puede llevar a error y pensar que es una versión superior al IDE de arduino.cc que va por la version 1.6.8, pero no es cierto, se trata de un IDE difrente, es más, el IDE de arduino.org está menos evolucionado que el IDE de arduino.cc.

Ver Issue: https://github.com/arduino-org/Arduino/issues/2

IMPORTANTE: si ya tienes instalado el IDE de arduino.cc, el instalador del IDE de arduino.org trata de desinstalarlo como si fuera una versión anterior, cuando realmente es un IDE diferente. Por este motivo es mejor hacer una instalación manual del IDE de arduino.org en lugar de usar el instalador.

Las preferencias y la ruta donde se guardan los sketches y librerías en los dos IDEs difiere y su configuración es importante si vamos a tener en nuestro ordenador conviviendo ambos IDEs y queremos que compartan librerías y sketches.

Para el IDE de arduino.cc, desde la pantalla de preferencias del IDE configuramos la ruta donde se guardan los sketches y librerías, de forma que al instalar una actualización mantenemos todos los datos o si instalamos varios IDEs van a compartir estos datos.

2016-03-19 (7)

  • Las preferencias se guardan en: C:\Users\nombre_usuario\AppData\Local\Arduino15, así como el listado de librerías y placas disponibles desde el gestor de librerías y tarjetas.
  • Los sketches y librerías se guardan en C:\Users\nombre_usuario\Documentos\Arduino

Para el IDE de arduino.org las preferencias son:

2016-03-19 (14)

  • Las preferencias se guardan en: C:\Users\nombre_usuario\AppData\Roaming\Arduino15\preferences.txt, cuya ruta es diferente al IDE de arduino.cc y por lo tanto no comparten preferencias.
  • Los sketches y librerías se guardan en C:\Users\nombre_usuario\Documentos\Arduino, que lo comparte con el IDE de arduino.cc por lo que disponemos de los mismo sketches y librerías en ambos IDEs, pero podemos cambiar esta configuración para separar ambos IDEs.

Arduino Studio de Arduino.org: Es un nuevo entorno de desarrollo open source, se encuentra en version Alpha. Es un nuevo IDE totalmente diferente al IDE original y creado desde cero. Está escrito en Javascript y basado en Brackets: http://brackets.io/  

De momento es una versión en prueba, pero habrá que seguir su evolución. Su filosofía es: “Just one editor for all the environments”

Esta imagen define la estrategia de arduino.org en cuanto a los IDEs:

Además de los entornos de programación que nos ofrecen arduino.cc y arduino.org, tenemos otro apartado de software difreneciado que es el Sistema Operativo basado en Linux que corre dentro de los Arduinos con procesador MIPS Qualcomm Atheros como el Yun o el Tian.

arduino.cc distribuye para los Arduino Yun el openwrt-yun en su version 1.5.3.

Para descargarlo: https://www.arduino.cc/en/Main/Software

Instrucciones para instalarlo: https://www.arduino.cc/en/Tutorial/YunSysupgrade

La librería usada para comunicar el microcontrolador con linux se llama Bridge:

arduino.org usa LininOS que es una distribución Linux basada en OpenWRT e integrado con LininoIO. LininoOS es usado por Arduino Yun, Yun Mini, Tian e Industrial 101

LininoIO es un framework capaz de integrar las capacidades de un microcontrolador dentro de un entorno Linux. Es posible escribir una aplicación en Python, Node.js, etc… usando LininiOS para controlar completamente la MCU y los dispositivos conectados.

La librería usada para comunicar el microcontrolador con linux se llama Arduino Ciao. Simplifica la interacción entre el microcontrolador y LininoOS permitiendo su conexión la mayoría de protocolos y servicios de terceros.

Más información: http://labs.arduino.org/Ciao

Ciao se divide en dos partes:

Cómo funciona Ciao:

La librería Ciao aún está en desarrollo. El reference de la librería está en:

Guía de inicio con Ciao: http://labs.arduino.org/Ciao+setup

Más información sobre linino: http://www.linino.org/

Placa linino: http://www.linino.org/product/linino-one/