Archivo de la etiqueta: Arduino Cloud

Arduino en IoT

Arduino se ha convertido una figura destacada e incluso uno de los impulsores del IoT y no por casualidad, sino que  por sus características es un HW con gran capacidad para usar en proyectos de IoT.

Características de Arduino para IoT

  • Barato y rápido prototipado.
  • HW libre y por lo tanto es modificable para que consuma menos y para hacer un HW final de características industriales.
  • Disponibilidad de HW de comunicaciones de todo tipo para conectar con Arduino. Nuevas tecnologías de comunicación llegan antes que para elementos comerciales
  • Librerías y SW público para su reutilización o adaptación.
  • Flexibilidad en la programación.
  • Apoyo de la comunidad.

No en vano cuando se busca IoT (Internet de las cosas) enseguida aparece Arduino. Arduino sirve para recoger datos no solo del entorno sino de máquinas o elementos externos y comunicarnos con Internet, mediante su consumo eléctrico, contactos de alertas externas, su temperatura, su posición, etc…

Arduino nos permite de una forma sencilla y barata poder conectar entre sí elementos cotidianos para manejarlos y añadir sensores a cualquier elemento y en cualquier ubicación.

Qué es Arduino: https://aprendiendoarduino.wordpress.com/2018/04/02/que-es-arduino-7/ 

Hardware Arduino:

Hardware Arduino IoT

La familia de Arduino MKR son una serie de placas con un factor de forma diferente al de Arduino mucho más pequeño y basados todos en el microcontrolador de 32 bits de Atmel SAMD21. Estas placas están pensadas principalmente para IoT.

MKR Family: https://store.arduino.cc/arduino-genuino/arduino-genuino-mkr-family 

Arduino MKRZero

Producto: https://store.arduino.cc/arduino-mkrzero

Primero modelo de la familia MKR y heredero del Arduino Zero.

Arduino MKR1000 WIFI

Producto: https://store.arduino.cc/arduino-mkr1000 

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.

El ATSAMW25 está compuesto por tres principales bloques:

  • SAMD21 Cortex-M0+ 32bit low power ARM MCU
  • WINC1500 low power 2.4GHz IEEE® 802.11 b/g/n Wi-Fi (mismo que el wifi 101 shield)
  • ECC508 CryptoAuthentication

Arduino MKR WiFi 1010

Producto: https://store.arduino.cc/arduino-mkr-wifi-1010 

El MKR WIFI 1010 es una mejora significativa del MKR 1000 WIFI. Está equipado con un módulo ESP32 fabricado por U-BLOX. Esta placa tiene como objetivo acelerar y simplificar la creación de prototipos de aplicaciones de IO basadas en WiFi gracias a la flexibilidad del módulo ESP32 y su bajo consumo de energía.

La placa tienes estos 3 bloques principales:

  • SAMD21 Cortex-M0+ 32bit Low Power ARM MCU;
  • U-BLOX NINA-W10 Series Low Power 2.4GHz IEEE® 802.11 b/g/n Wi-Fi; and Bluetooth
  • ECC508 Crypto Authentication

Actualización firmware bluetooth para Arduino MKR WiFi 1010: http://forum.arduino.cc/index.php?topic=579306.0 

La librería para controlar el bluetooth es:

Arduino MKR FOX 1200

Producto: https://store.arduino.cc/arduino-mkrfox1200 

Arduino anunciado en abril de 2017. En una placa de desarrollo pensada para el IoT con conectividad Sigfox. Comparte muchas características con otras placas de la familia MKR como em microcontrolador SAM D21 32-bit Cortex-M0+.

Incluye un módulo ATA8520 con conectividad sigfox de amplia cobertura y bajo consumo capaz de funcionar durante 6 meses con dos pilas AA. También incluye una suscripción por dos años a la red Sigfox: http://www.sigfox.com/en 

Web: https://blog.arduino.cc/2017/04/18/introducing-the-arduino-mkrfox1200/ 

Más información sobre el Arduino MKRFOX1200 en el artículo: https://www.aprendiendoarduino.com/2018/03/05/arduino-mkrfox1200/ 

Arduino MKR WAN 1300

Producto: https://store.arduino.cc/mkr-wan-1300 

Presentado el 25 de septiembre de 2017 en la maker faire de NY: https://blog.arduino.cc/2017/09/25/introducing-the-arduino-mkr-wan-1300-and-mkr-gsm-1400/ 

Arduino + LoRa: 

Arduino MKR WAN1310

Nueva placa evolución de la MKRWAN 1300: https://store.arduino.cc/mkr-wan-1310

Esta placa mejora el consumo de la anterior y dispone de mayor memoria flash para poder hacer data logging y OTA

Esta tarjeta de código abierto se puede conectar a:

  • Arduino Create
  • Tu propia red LoRa usando el Arduino Pro Gateway para LoRa 
  • Infraestructura LoRaWAN existente como The Things Network 
  • O incluso otras tarjetas que utilizan el modo de conectividad directa

Presentación de la placa: https://blog.arduino.cc/2019/10/10/new-mkr-wan-1310-for-lora-connectivity-comes-with-2mbyte-flash-and-extended-battery-life/

Proyectos: https://create.arduino.cc/projecthub/products/arduino-mkr-wan-1310

Arduino MKR GSM 1400

Producto: https://store.arduino.cc/mkr-gsm-1400 

Presentado el 25 de septiembre de 2017 en la maker faire de NY: https://blog.arduino.cc/2017/09/25/introducing-the-arduino-mkr-wan-1300-and-mkr-gsm-1400/ 

Arduino + GSM:

Arduino MKR NB 1500

Producto: https://store.arduino.cc/arduino-mkr-nb-1500

El nuevo estándar Narrow Band IoT, con el ecosistema Arduino fácil de usar. Totalmente compatible con las clases Narrow Band IoT NB y las redes LTE CAT M1.

Arduino MKR Vidor 4000

Producto: https://store.arduino.cc/arduino-vidor-4000

El MKR VIDOR 4000 es altamente configurable y potente, y puede realizar procesamiento digital de audio y video de alta velocidad.

El MKR VIDOR 4000 puede configurarlo de la manera que desee; esencialmente puede crear su propia tarjeta controladora.

Viene cargado de hardware y potencial:

  • un SRAM de 8 MB
  • un chip Flash QSPI de 2 MB – 1 MB asignado para aplicaciones de usuario
  • un conector Micro HDMI
  • un conector para cámara MIPI
  • Wifi & BLE alimentado por U-BLOX NINA Serie W10.

También incluye la clásica interfaz MKR en la que todos los pines son accionados tanto por SAMD21 como por FPGA.

Además, tiene un conector Mini PCI Express con hasta 25 pines programables por el usuario. 

La FPGA contiene 16K Logic Elements, 504 KB de RAM embebida y 56 multiplicadores de 18×18 bit HW para DSP de alta velocidad. Cada pin puede conmutar a más de 150 MHz y puede ser configurado para funciones tales como UARTs, (Q)SPI, PWM de alta resolución/alta frecuencia, codificador de cuadratura, I2C, I2S, Sigma Delta DAC, etc.

La FPGA integrada también se puede utilizar para operaciones DSP de alta velocidad para el procesamiento de audio y vídeo. Esta tarjeta también incluye un Microchip SAMD21. La comunicación entre la FPGA y el SAMD21 es directa.

Accesorios para Arduinos MKR

Y los IoT Bundles:

Nuevos Arduino Nano

En la Maker Faire Bay Area del año 2019, supone un nuevo concepto de placas de pequeño tamaño, económicas y de bajo consumo.

Presentación de las placas: https://blog.arduino.cc/2019/05/17/whats-new-at-maker-faire-bay-area-2019/

Se trata de 4 modelos:

El nuevo microcontrolador ATmega4809 soliciona las limitaciones de las tarjetas antiguas basadas en ATmega328P, puede añadir un segundo puerto serie de hardware, más periféricos y memoria significa que puede abordar proyectos más ambiciosos. Utiliza un chip USB de calidad para que la gente no tenga problemas de conexión o de drivers. El procesador separado que maneja la interfaz USB también permite implementar diferentes clases de USB, como el Dispositivo de Interfaz Humana (HID), en lugar del clásico CDC/UART. 

La nueva arquitectura de fuente de alimentación basada en un convertidor DC-DC de alta eficiencia permite alimentar la tarjeta hasta 21V y accionar periféricos de salida hasta 950mA sin sobrecalentamiento.

Arduino Cloud

Arduino no solo se queda con el HW sino esta preparando un cloud para IoT que pueda usar cualquiera.

Web: https://www.arduino.cc/en/IoT/HomePage 

Arduino IoT Cloud permite conectar dispositivos a Internet y a otros dispositivos. Esta herramienta hace que la creación de objetos conectados sea rápida, sencilla y segura.

Aun es una versión beta y solo se puede usar con unos pocos modelos de Arduino, pero puede ser interesante en el futuro.

Actualmente, las tarjetas MKR1000, MKR WiFi 1010 y MKR GSM 1400 son compatibles. En el futuro, el MKR Vidor 4000 y Arduino Uno WiFi Rev2 también serán soportados.

Arduino IoT Cloud es una plataforma de aplicación de Internet of Things fácil de usar. Hace que sea muy sencillo para cualquiera desarrollar y gestionar aplicaciones de IoT, lo que les permite centrarse en la resolución de problemas reales en su negocio o en la vida cotidiana.

Web: https://create.arduino.cc/iot/things

Más información sobre Arduino IoT Cloud: https://www.arduino.cc/en/IoT/HomePage

Presentación del Arduino IoT Cloud:

Getting started con Arduino Cloud:

Proyectos con IoT cloud: https://create.arduino.cc/projecthub/products/arduino-cloud

Mejoras en Arduino IoT Cloud:

Librería Arduino IoT Cloud: https://github.com/arduino-libraries/ArduinoIoTCloud

FAQ: https://www.arduino.cc/en/Create/FAQ

Configuración Arduino

Puesta en marcha y comprobación del entorno de programación de Arduino para utilizar en el curso.

Instalación del IDE y blink para comprobar que funciona:

Programación Arduino

Librerías

Mandar Datos a un Servidor con Arduino

Vamos a conectar Arduino a un servidor para que mande datos y los muestre en una gráfica.

En este caso vamos a mandar cada 5000 ms el valor del potenciómetro, probar a mover el potenciómetro y ver cómo cambian los datos. 

También puede sustituirse el potenciómetro por un LDR que nos muestre los datos de luminosidad:

Los datos de mostrarán en esta web: https://www.aprendiendoarduino.com/servicios/datos/index.html

Las gráficas se pueden ver en esta dirección: https://www.aprendiendoarduino.com/servicios/datos/graficas.html

El código en el servidor para recoger datos y mostrar está en: https://github.com/jecrespo/aprendiendoarduino-servicios/tree/master/datos

Cargar este firmware en Arduino: https://github.com/jecrespo/Curso-IoT-Open-Source/blob/master/data_logger_temperatura_DHCP/data_logger_temperatura_DHCP.ino

En el código sustituir “X” por el número de Arduino usado y “YY” por el número de Arduino en formato con dos dígitos, es decir, 01, 03, 11, 16, etc…

Ver los datos en:

IDE Arduino y Configuración

Entorno de programación

El entorno de desarrollo integrado también 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 lenguajes.

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.

El IDE de Arduino va a ser la herramienta de trabajo durante el curso y habrá que conocer su funcionamiento.

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 el código antiguo. Guía de como migrar de versiones anteriores a la 1.0: http://www.engblaze.com/changes-in-the-arduino-1-0-release/

La última versión del IDE de Arduino es la 1.8.9. Los grandes cambios en el IDE Arduino se han producido desde la actualización de la versión 0.22 a la 1.0 y posteriormente la actualización de la versión 1.0.6 a la 1.6.0 que han supuesto importantes mejoras en el IDE de Arduino.

También está disponible la versión 1.9.0 en beta para probar las novedades del IDE.

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

Conozcamos el IDE, nuestro entorno de trabajo:

IMPORTANTE: Para conocer el entorno de programación a fondo ver: http://arduino.cc/en/Guide/Environment

Es importante conocer cada uno de los menús y opciones que tiene, pero los más importantes por ahora son:

  • Botones de Verificar y Subir
  • Botón Monitor Serie
  • Consola de Error
  • Menú herramientas Placa y Puerto
  • Menú de pestañas
  • Puerto y placa seleccionada
  • Menú preferencias
  • Proyecto/Sketch

Configuración inicial del IDE

Después de la instalación, lo primero es configurar el IDE para facilitar la edición de nuestros programas, que nos muestre toda la información de compilación y subida de programas a Arduino y que nos muestre por pantalla todos los warnings del compilador. Cuanta más información tengamos, más fácil será localizar un problema.

Para ello, entrar en el menú Archivo → preferencias y activar:

  • Números de Línea
  • Mostrar salida detallada en la compilación y al subir un sketch
  • Configurar la ruta de nuestro workspace
  • Advertencia del compilador: Todos
  • Asociar extensión .ino a nuestro IDE
  • Habilitar plegado de código
  • Verificar el código después de subir

Desde esta pantalla configuramos donde se guardan las preferencias, 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.

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

NOTA: Guardar en el directorio de “Localización de Proyecto” la carpeta con las prácticas, de esta manera estarán disponibles directamente desde el IDE de Arduino.

Cargar un Programa en Arduino

El IDE de Arduino contiene un editor de texto para escribir nuestro sketch, una consola de error y un área con los menús y los botones que realizan las funciones más comunes como son abrir sketch, guardar sketch, compilar y cargar programa.

A la hora de cargar un programa en Arduino, debemos seleccionar siempre el modelo de la placa conectada y el puerto al que está conectado.

Una vez seleccionada la placa y el puerto ya podemos pulsar sobre el botón subir y comenzará el proceso de compilación y carga del programa a la placa Arduino.

Cuando cargamos un programa en Arduino, estamos usando el bootloader de Arduino, que es un pequeño programa cargado en el microcontrolador que permite subir el código sin usar hardware adicional. El bootloader está activo unos segundos cuando se resetea la placa, después comienza el programa que tenga cargado el Arduino en su memoria Flash. El led integrado en la placa (pin 13) parpadea cuando el bootloader se ejecuta.

Práctica: Probar a cargar el programa blink en Arduino y comprobar que parpadea el led integrado en la placa. De esta forma comprobamos que hemos instalado todo correctamente.

Gestor de Tarjetas

El gestor de tarjetas está disponible desde el menú herramientas → Placa → Gestor de tarjetas, nos muestra el soporte a qué tipo de placas tenemos y permite instalar otro tipo de placas. Estas placas se refieren a la familia de tarjetas no a los modelos de Arduino soportados, eso se debe configurar desde otro fichero.

Por defecto tenemos instalado el soporte a las placas Arduino AVR que son la mayoría, pero nos permite instalar el soporte para los Arduino con MCU ARM de 32 bits como el Arduino MKR1000 o las Intel como el Arduino 101.

En este enlace explica como instalar nuevos cores: https://www.arduino.cc/en/Guide/Cores

Cuando tengamos algún problema, la primera opción es recurrir a la guía de Troubleshooting: http://arduino.cc/en/Guide/Troubleshooting

Gestor de Librerías

El gestor de librerías accesible desde menú > Programa > Incluir Librería > Gestionar Librerías

Este gestor nos permite instalar, desinstalar y actualizar las librerías que tenemos disponibles en el IDE.

Monitor serie

El monitor serie es una de las partes más importantes del IDE de Arduino porque es nuestra ventana para la comunicación entre Arduino y el ordenador, que se hace a través del cable USB.

Para realizar la conexión mediante puerto serie únicamente es necesario conectar nuestra placa Arduino empleando el mismo puerto que empleamos para programarlo. A continuación abrimos el IDE Standard de Arduino y hacemos click en el “Monitor Serial” como se indica en la imagen.

El monitor serie muestra los datos enviados por el Arduino a través del puerto serie también nos permite mandar datos al Arduino mediante el puerto serie.

El monitor de puerto serie es una pequeña utilidad integrada dentro de IDE Standard que nos permite enviar y recibir fácilmente información a través del puerto serie. Su uso es muy sencillo, y dispone de dos zonas, una que muestra los datos recibidos, y otra para enviarlos. Estas zonas se muestran en la siguiente imagen.

Hay disponibles alternativas al monitor serie que en algunas circunstancias podemos necesitar puesto que el incluido en el IDE de Arduino es bastante sencillo, pero generalmente suficiente.

Una buena alternativa muy completa es el btaru terminal: https://sites.google.com/site/terminalbpp/

Arduino Serial Plotter. Desde la versión 1.6.6 del IDE de Arduino disponemos de la herramienta Arduino Serial Plotter que nos permite hacer gráficas de los datos mandados por puerto serie.

Práctica: Cargar el programa “AnalogReadSerial” dentro de los ejemplos, apartado 01.Basics y ver lo que saca por el monitor serie y por el Serial Plotter.

Beta IDE Arduino

Está disponible la versión Beta 1.9 del IDE de Arduino para su descarga en https://www.arduino.cc/en/Main/Software en la zona de Beta Builds.

Alguna de las novedades de la versión beta pueden verse en: https://blog.arduino.cc/2017/10/11/be-among-the-first-to-try-arduino-ide-1-9-beta/

Algunas de las novedades interesantes son:

Novedades en el IDE Arduino

Software Release Notes: https://www.arduino.cc/en/Main/ReleaseNotes

Arduino Command Line Interface: https://blog.arduino.cc/2018/08/24/announcing-the-arduino-command-line-interface-cli/, interfaz de comandos en linea que permite usar las herramientas de Arduino en Makefiles. Permitiría de una forma sencilla instalar dependencias de un proyecto con: arduino-cli lib install “WiFi101” “WiFi101OTA”

Esto también permitirá integrar el soporte de Arduino a otros IDEs.

Getting started guide de Arduino-cli: https://github.com/arduino/arduino-cli#getting-started

Arduino Device Manager: https://create.arduino.cc/devices/  

Arduino Cloud

Arduino IoT Cloud permite conectar dispositivos a Internet y a otros dispositivos. Esta herramienta hace que la creación de objetos conectados sea rápida, sencilla y segura.

Aun es una versión beta y solo se puede usar con unos pocos modelos de Arduino, pero puede ser interesante en el futuro.

Actualmente, las tarjetas MKR1000, MKR WiFi 1010 y MKR GSM 1400 son compatibles. En el futuro, el MKR Vidor 4000 y Arduino Uno WiFi Rev2 también serán soportados.

Arduino IoT Cloud es una plataforma de aplicación de Internet of Things fácil de usar. Hace que sea muy sencillo para cualquiera desarrollar y gestionar aplicaciones de IoT, lo que les permite centrarse en la resolución de problemas reales en su negocio o en la vida cotidiana.

Web: https://create.arduino.cc/iot/things

Más información sobre Arduino IoT Cloud: https://www.arduino.cc/en/IoT/HomePage

Presentación del Arduino IoT Cloud:

Getting started con Arduino Cloud:

Proyectos con IoT cloud: https://create.arduino.cc/projecthub/products/arduino-cloud

Mejoras en Arduino IoT Cloud:

Librería Arduino IoT Cloud: https://github.com/arduino-libraries/ArduinoIoTCloud

FAQ: https://www.arduino.cc/en/Create/FAQ

IDE Online

Arduino.cc ha sacado un IDE on-line llamado Arduino Web Editor que puede usarse en lugar del IDE que acabamos de ver. Este IDE on-line está dentro del proyecto Arduino Create accesible desde https://create.arduino.cc/ y incluye varios apartados.

Para usar este IDE es necesario instalar un plugin y mediante este wizard online es posible instalarlo: https://create.arduino.cc/getting-started/plugin

También es importante señalar que es necesario crearse una cuenta de arduino.cc para poder usar este IDE on-line.

Getting started con Arduino Web Editor: https://create.arduino.cc/projecthub/Arduino_Genuino/getting-started-with-the-arduino-web-editor-4b3e4a

FAQ: https://www.arduino.cc/en/Create/FAQ

En estas publicaciones del blog de arduino.cc habla de Arduino Create:

Con Arduino Web Editor es posible escribir y cargar sketchs a cualquier placa Arduino directamente desde el navegador, guardar todos los sketches en el Arduino Cloud y acceder a ellos desde cualquier dispositivo.

El nuevo IDE de Arduino Web está siempre actualizado, incluyendo las últimas librerías y cores de las placas sin tener que instalar nada. Las placas conectadas al ordenador aparecen automáticamente en un desplegable.

Los ejemplos están disponible con los esquemáticos de conexión y también permite subir tus sketches con el esquemático y diagrama eléctrico, de forma que está todo en un mismo lugar.

Para poder usarlo es necesario descargar un plug-in en función del sistema operativo (Windows/Linux/Mac OS).  El código fuente y los binarios de este plugin están en: https://github.com/arduino/arduino-create-agent

Este plugin (agente) detecta automáticamente los puertos USB de nuestro ordenador y detecta cualquier placa Arduino conectada, si estamos cargando un sketch o si estamos usando el monitor serie.

Este plugin está basado en el serial-port-json-server de johnlauer: https://github.com/johnlauer/serial-port-json-server que permite comunicarte con el puerto serie de un ordenador desde un navegador. Esto permite hacer aplicaciones web que se pueden comunicar con el puerto serie local. Más información y ejemplo en: http://chilipeppr.com/

Esto no es una sustitución del IDE tradicional, sino un complemento para quien no quiera instalarse el IDE. Arduino.cc ha mostrado su intención de dar siempre a la comunidad un IDE off-line, aunque actualmente están fomentado el uso del IDE online.