Programación en Arduino IDE
Desde el año 2015 ha habido varios cambios en la organización de Arduino como empresa que es interesante conocer por las consecuencias que puede tener en el desarrollo de las placas Arduino y en el software.
Arduino LLC fue la compañía creada por Massimo Banzi, David Cuartielles, David Mellis, Tom Igoe and Gianluca Martino en 2009 y era 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.
A principios de 2015 se produjo una división dentro de Arduino y desde entonces han aparecido bastante cambios para los usuarios de Arduino, la primera es que ha aparecido una nueva marca llamada “Genuino” asociada a arduino.cc y una nueva web oficial de Arduino www.arduino.org.
El 1 de octubre de 2016 durante el World Maker Faire de New York, Massimo Banzi and Federico Musto anunciaron las empresas Arduino LLC (arduino.cc) y ArduinoSRL (arduino.org) han firmado un acuerdo, cerrando las disputas iniciadas a principio de 2015. Anunciaron que el recién creado “Arduino Holding” será el punto único para la distribución de los productos Arduino actuales y futuros y continuará sacando al mercado nuevas innovaciones. Además, anunciaron la futura formación de la “Fundación Arduino” sin ánimo de lucro, que será la responsable de mantener el IDE Arduino open source y continuará fomentando el movimiento open source, pero que no se ha hecho realidad.
En el verano de 2017 donde se comunicó que BCMI, la empresa fundada por Massimo Banzi, David Cuartielles, David Mellis and Tom Igoe, co-fundadores de Arduino ha adquirido el 100% de Arduino AG, la corporación que tenía todas las marcas registradas de Arduino. En el Comunicado Massimo Banzi dice que de esta forma se renueva el compromiso con el HW y SW open source con un crecimiento sostenible de la empresa. Su visión es permitir a cualquier innovar con la electrónica durante mucho tiempo y democratizar el IoT para los individuos, educadores, profesionales y negocios.

Enlaces con las noticias por orden cronológico:
- http://hackaday.com/2015/02/25/arduino-v-arduino/
- http://hackaday.com/2015/03/12/arduino-v-arduino-part-ii/
- http://makezine.com/2015/03/06/arduino-vs-arduino/
- https://blog.arduino.cc/2015/05/22/the-state-of-arduino-a-new-sister-brand-announced/
- http://hackaday.com/2016/01/04/new-products-and-new-directions-an-interview-with-federico-musto-of-arduino-srl/
- https://blog.arduino.cc/2016/10/01/two-arduinos-become-one-2/
- https://blog.arduino.cc/2017/07/28/a-new-era-for-arduino-begins-today/
A partir de la Nueva era Arduino
Adquisión de Arduino AG (empresa que tenía la marca Arduino en propiedad): https://blog.arduino.cc/2017/07/28/a-new-era-for-arduino-begins-today/
Nuevas placas Arduino IoT MKR WAN 1300 y MKR GSM 1400 en la Maker Faire New York 2017: https://blog.arduino.cc/2017/09/25/introducing-the-arduino-mkr-wan-1300-and-mkr-gsm-1400/

Asociación entre Arduino y ARM: https://blog.arduino.cc/2017/10/05/arduino-announces-arm-partnership/
Beta Arduino IDE: https://blog.arduino.cc/2017/10/11/be-among-the-first-to-try-arduino-ide-1-9-beta/
Soporte placas linux desde Arduino Create: https://blog.arduino.cc/2017/11/03/linux-support-comes-to-arduino-create/. Esto permite programar placas linux como si se trataran de Arduinos y que múltiples programas Arduino puedan ejecutarse en una placa y comunicarse entre ellos. Y pueden programarse remotamente,
De momento solo para placas Intel como ntel® NUC, Dell Wyse®, Gigabyte™ GB-BXT y las placas UP2 http://www.up-board.org/upsquared/
Nueva Arduino Reference: https://blog.arduino.cc/2017/12/14/new-search-engine-arduino-reference/. Cambio de aspecto https://www.arduino.cc/reference/en/, más rápida y ahora se puede colaborar en la documentación a través de https://github.com/arduino/reference-en y con un reference en español https://github.com/arduino/reference-es
Usar Arduino para programar dispositivos IoT Linux: https://blog.arduino.cc/2018/03/13/you-can-now-use-arduino-to-program-linux-iot-devices/. Se amplían los dispositivos soportados por Arduino Create para el desarrollo de IoT. Desde https://create.arduino.cc/getting-started es posible gestionar y programar muchas de las placas más populares basadas en Linux, incluyendo Raspberry Pi y BeagleBone
Arduino Yun rev 2, completamente open source y resolviendo algunos problemas de seguridad de la versión 1: https://blog.arduino.cc/2018/03/29/arduino-yun-rev-2-is-here/
Nuevas placas en Arduino Day 2018: https://blog.arduino.cc/2018/05/12/the-mkr-family-gets-bigger-with-two-new-iot-boards/
MKR Wifi 1010 https://store.arduino.cc/arduino-mkr-wifi-1010, es una evolución de la placa MKR Wifi 1000 con menor consumo, equipada con un ESP32 y in firmware Wifi open source.
MKR NB 1500 https://store.arduino.cc/arduino-mkr-nb-1500, con conectividad de bajo consumo NB-IoT (narrowband IoT) que trabaja sobre redes LTE que usen NB-IoT, para España Vodafone.
Arduino engineering kit: https://blog.arduino.cc/2018/05/12/arduino-goes-to-college-with-the-new-arduino-engineering-kit/
Placas presentadas en el Maker Faire Bay Area 2018: https://blog.arduino.cc/2018/05/17/say-hello-to-the-next-generation-of-arduino-boards/
MKR Vidor 4000 https://store.arduino.cc/arduino-vidor-4000, primer Arduino basado en un chip FPGA, con WiFi y crypto chip para conexiones seguras.
Arduino UNO Wifi Rev2 https://store.arduino.cc/arduino-uno-wiFi-rev2 con un nuevo microcontrolador ATmega4809 https://www.microchip.com/wwwproducts/en/ATMEGA4809, un módulo WiFi u-blox Nina W102 y IMU integrada.

En la novedades sobre Arduinos no oficiales se han añadido nuevas placas al soporte del IDE Arduino: https://github.com/arduino/arduino/wiki/unofficial-list-of-3rd-party-boards-support-urls
Aunque los reyes de los procesadores no oficiales soportados por Arduino son el ESP8266 y el ESP32:
- https://www.espressif.com/en/products/hardware/esp8266ex/overview
- https://www.espressif.com/en/products/hardware/esp32/overview
Anuncios
Primeros Pasos Programación Arduino
Deja un comentario
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.
Toda la información para programar Arduino se encuentra en el reference de la web de Arduino: https://www.arduino.cc/en/Reference/HomePage. Este es el core o API de Arduino.
Un manual sencillo de entender para la programación es el “arduino programming notebook” de brian w. Evans. Puedes consultarlo o descargarlo desde:
- http://playground.arduino.cc/uploads/Main/arduino_notebook_v1-1.pdf
- Y su traducción: http://www.ardumania.es/wp-content/uploads/2011/10/Arduino_programing_notebook_ES.pdf
Cuando compilamos y cargamos el programa en Arduino esto es lo que ocurre:

Además de la programación tradicional de Arduino, existen varios proyectos para programar Arduino de forma visual añadiendo bloques al estilo de scratch, blockly o similar.

Vamos a introducir la programación y electrónica con Arduino utilizando los lenguajes de programación por bloques y lenguajes de programación en modo texto:
- Lenguajes de programación por bloques:
- Lenguajes de programación en modo texto
Proyectos de programación visual:
- Ardublock: http://blog.ardublock.com/
- Sistema de bq: http://bitbloq.bq.com/
- S4A es una modificación de Scratch que permite programar la plataforma de hardware libre Arduino de una forma sencilla. Proporciona bloques nuevos para tratar con sensores y actuadores conectados a una placa Arduino.
- Visuino (de pago): https://www.visuino.com/
- Visualino: http://www.visualino.net/
- mBlock: http://www.mblock.cc/
- Y muchos más…
Plataformas para que los niños aprendan a programar en Arduino y Scratch: http://www.ticbeat.com/educacion/plataformas-para-que-los-ninos-aprendan-a-programar-en-arduino-y-scratch/
Papers sobre la enseñanza de programación con bloques:
- https://www.researchgate.net/profile/David_Weintrop/publication/281241552_Using_Commutative_Assessments_to_Compare_Conceptual_Understanding_in_Blocks-based_and_Text-based_Programs/links/55dc96aa08ae9d659494f734.pdf
- http://www4.ncsu.edu/~twprice/website/files/ICER%202015.pdf
- https://kar.kent.ac.uk/50383/1/position.pdf
Independientemente del sistema operativo que utilicemos y del método de programación, la primera vez que conectamos una tarjeta de Arduino a nuestro equipo, observaremos que será necesario instalar los drivers de la misma. Para instalar el IDE de Arduino seguir las instrucciones de https://aprendiendoarduino.wordpress.com/2018/04/03/instalacion-software-arduino-2/
Primer Sketch con Arduino
Para comprobar su correcto funcionamiento conectamos la tarjeta al ordenador a través del cable USB y automáticamente el ordenador la reconocerá. Además, al instalar Arduino IDE, los drivers de la tarjeta quedan instalados en el PC.
Para comprobar que todo funciona correctamente ejecutar el ejemplo blink en el IDE Arduino que consiste en hacer parpadear el led integrado que lleva Arduino u otro led conectado a un pin digital a través de una resistencia.
NOTA: en caso de usar un led, no olvidar poner una resistencia con un valor entre 220 ohms y 1K ohms
Este es el esquema a usar:

Conexiones internas de la protoboard son así:

Cómo usar una protoboard o breadboard:
- https://learn.sparkfun.com/tutorials/how-to-use-a-breadboard
- https://core-electronics.com.au/tutorials/how-to-use-breadboards.html
Pasos a seguir:
- Abrir la aplicación Arduino
- Abrir el ejemplo blink

- Leer el programar y entender lo que está haciendo
- Seleccionar la placa y el puerto adecuado


- Cargar el programa pulsando el botón “subir”. El programa se compila y luego se verá parpadeando los leds Tx y Rx de Arduino, indicando que se está cargando el fichero binario (.hex) en la flash del Arduino. Cuando aparezca el mensaje “subido” habremos acabado.
- Unos segundos después veremos el LED parpadeando.
Más información:
- Introducción a Arduino: https://github.com/ElCableAmarillo/Introduccion-a-Arduino
Entender Arduino
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.

Un shield es una placa compatible que se puede colocar en la parte superior de los arduinos y permite extender las capacidades del arduino.

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