Arduino MKRFOX1200

La apuesta de Arduino por sigfox se llama Arduino MKRFOX1200: https://store.arduino.cc/arduino-mkrfox1200 que se presentó en el Arduino Day de 2017.

Esta placa lleva un microcontrolador Atmel SAMD21 de 32 bits como el resto de la familia MKR de Arduino y un módulo Sigfox ATA8520 también de Atmel.

Microcontrolador: http://www.atmel.com/Images/Atmel-42181-SAM-D21_Summary.pdf

Módulo sgifox: http://www.atmel.com/Images/Atmel-9372-Smart-RF-ATA8520_Datasheet.pdf

Características técnicas:

Microcontroller SAMD21 Cortex-M0+ 32bit low power ARM MCU
Board Power Supply (USB/VIN) 5V
Supported Batteries 2x AA or AAA
Circuit Operating Voltage 3.3V
Digital I/O Pins 8
PWM Pins 12 (0, 1, 2, 3, 4, 5, 6, 7, 8, 10, A3 – or 18 -, A4 -or 19)
UART 1
SPI 1
I2C 1
Analog Input Pins 7 (ADC 8/10/12 bit)
Analog Output Pins 1 (DAC 10 bit)
External Interrupts 8 (0, 1, 4, 5, 6, 7, 8, A1 -or 16-, A2 – or 17)
DC Current per I/O Pin 7 mA
Flash Memory 256 KB
SRAM 32 KB
EEPROM no
Clock Speed 32.768 kHz (RTC), 48 MHz
LED_BUILTIN 6
Full-Speed USB Device and embedded Host
LED_BUILTIN 6
Antenna power 2dB
Carrier frequency 868 MHz

IMPORTANTE: Los Arduinos con microcontrolador que integra interfaz USB como los leonardo o los SAMD21 usan Serial como el interfaz para comunicación USB y Serial1 es el puerto UART que disponen, que en el caso de los leonardo son los pines 0 y 1 y en el caso de los SAMD21 son los pines 13 y 14.

Esquematico de la placa: https://www.arduino.cc/en/uploads/Main/MKRFox1200-schematic.pdf

Es una placa perfecta para IoT para usar en una red celular y de bajo consumo. Ideal para proyectos donde hay movilidad. Al comprar este dispositivo obtienes una suscripción gratuita de dos años (con hasta 140 mensajes diarios) a Sigfox y acceso gratuito al servicio de geolocalización que permite hacer un seguimiento del HW sin un módulo GPS. El plan se activará automáticamente después de que se haya enviado el cuarto mensaje.

Covertura de sigfox: https://www.sigfox.com/en/coverage. La frecuencia de Sigfox es 868 MHz.

Pasado los dos años de subscripción, aunque a día de hoy no hay posibilidad de obtener una suscripción de sigfox para desarrolladores o makers, sigfox ha asegurado que se creará un plan de suscripción antes que caduquen las primeras suscripciones en abril de 2019.

La alimentación de esta placa puede ser a 5V mediante el USB o usando dos pilas AA o AAA a través de bornero, conmutando automáticamente entre las dos fuentes. Mediante el Vin también es posible alimentarlo a una fuente regulada de 5V.

La placa está diseñada para alimentarse a 3V a través del bornero, por lo tanto no es posible alimentarlo mediante una batería Li-Po o Li-Ion

Una de las principales características de esta placa es el bajo consumo, puede funcionar con dos pilas AA de 1.5V durante 6 meses con un uso normal.

El microntrolador SAMD21 se puede poner en modo sleep gracias a la librería Low Power https://github.com/arduino-libraries/ArduinoLowPower. En este caso es interesante el uso del bajo consumo que deja dormida la placa y en este modo no aparece el USB. Para despertarla hacer doble click en el botón de reset.

Al igual que el resto de Arduinos con MCU SAMD21 funciona a 3.3V y los pines no son tolerante a voltajes de 5V.

Primeros pasos con MKRFOX1200

Web oficial de Arduino MKRFOX1200:

Getting started: https://www.arduino.cc/en/Guide/MKRFox1200

Getting started SigFox: http://makers.sigfox.com/getting-started/

Librería SigFox: https://www.arduino.cc/en/Reference/SigFox

Tutorial MUY bueno de Luis Del Valle: https://programarfacil.com/blog/arduino-blog/arduino-mkrfox1200-sigfox-lpwan/

Configuración Inicial MKRFOX1200

La placa MKRFOX1200 se programa con el IDE de Arduino, pero para poder hacerlo es necesario instalar el soporte para las placas con microcontrolador SAMD. Para ello hay que ir al gestor de placas e instalar “Arduino SAMD Boards (32-bits ARM Cortex-M0+)” o simplemente buscar MKRFOX en el buscador del gestor de tarjetas.

Luego seleccionar desde el menú Herramientas seleccionar la placa MKRFOX1200.

Para poder usar el MKRFOX1200 con la red de Sigfox es necesario registrarlo, para ello debe usarse el siguiente tutorial llamado primera configuración: https://www.arduino.cc/en/Tutorial/SigFoxFirstConfiguration

Para ejecutar el ejemplo FirstConfiguration, para ello habrá que instalar las librerias Arduino:

Los datos de nuestro modem Sigfox para registrarlo son ID y PAC. Luego hay que registrarlo en la web: https://backend.sigfox.com/activate y seguir las instrucciones de la web que es muy sencilla:

  • Poner placa y país, en España Cellnex es la empresa que tienes Sigfox.
  • Crear una cuenta o sino entrar en la que tienes.

Una vez registrado tarda unos minutos en aparecer los datos y asignará el dispositivo a tu usuario y aparecerá dentro del panel de control en la opción del menú ASSOCIATED DEVICE.

Con esto ya podemos empezar a mandar datos al backend de Sigfox.

Manejo MKRFOX1200 y Sigfox

Para empezar a usar el Arduino MKRFOX1200 y Sigfox, al igual que con cualquier otro dispositivo o librería de Arduino, lo mejor es revisar los ejemplos que vienen al instalar el soporte para esta placa: https://github.com/arduino-libraries/SigFox/tree/master/examples

Para poder acceder a los ejemplos seguir: Archivo – Ejemplos – Arduino Sigfox for MKR1200

El primer ejemplo es FirstConfiguration que ya hemos visto: https://github.com/arduino-libraries/SigFox/blob/master/examples/FirstConfiguration/FirstConfiguration.ino

Después de registrar el MKRFOX1200, para probar el funcionamiento de la placa puede usarse el ejemplo Sigfox Event Trigger donde se manda un mensaje de alarma de dos fuentes diferntes conectadas los pines de interrupción 0 y 1: https://www.arduino.cc/en/Tutorial/SigFoxEventTrigger

Más información: https://www.arduino.cc/en/Tutorial/SigFoxEventTrigger

Podría usarse para conectar un sensor de puerta y uno de ventana y cada vez que se abra mande un mensaje. Luego para que mande un correo o SMS habrá que configurar el callback en el backend de Sigfox.

Otros ejemplo son:

Otros ejemplo de monitores de condiciones atmosféricas:

Librería Sigfox

Arduino, además de ofrecernos un HW con Sigfox a buen precio, nos da una librería muy fácil de usar y más aun a quienes están acostumbrados a la programación de Arduino.

SigFox – Esta librería permite el uso de transceiver de Sigfox ATAB8520E en las placas Arduino MKRFOX1200.

Librería: https://www.arduino.cc/en/Reference/SigFox

  • begin() – Inicializa el módulo Sigfox
  • beginPacket() – Comienza el proceso de mandar un paquete
  • write() – Manda datos binarios al backend de Sigfox
  • print() – Manda caracteres al backend de Sigfox
  • endPacket() – Finaliza el proceso de enviar paquetes iniciado con beginPacket()
  • parsePacket() – Comprueba la presencia de un paquete Sigfox antes de leer.
  • SigVersion() – Devuelve la versión de firmware del módulo
  • ID() – Devuelve el Sigfox ID del módulo que es único
  • PAC() – Devuelve el PAC del módulo, que es la clave secreta correspondiente al ID. El PAC no es transferible y debe regenerarse al cambiar de dueño el módulo.
  • reset() – resetea el módulo de sigfox
  • internalTemperature() – Devuelve la temperatura del sensor interno
  • debug() – Habilita el debug y deshabilita las funciones de ahorro de energía.
  • noDebug() – Deshabilita el debug
  • available() – Devuelve el número de bytes disponibles para leer.
  • read() – Lee los datos entrantes de Sigfox.

Callbacks

Un callback se puede traducir como una llamada de vuelta, devolución de llamada o una retrollamada. Es una de las configuraciones más importantes de un DEVICE TYPE ya que nos permite añadir, modificar o eliminar Callbacks. Los callbacks van asociados a los DEVICE TYPE y no a los DEVICES.

Sirve para enviar todos los datos que recibimos desde este DEVICE TYPE a otro sitio. El caso típico es poder llamar a alguna plataforma del IoT. Si por ejemplo queremos hacer una gráfica de las temperaturas, en el backend de SigFox no podemos hacer esto. Por eso existen las Callbacks para reenviar todos esos datos a una plataforma que permita gestionar esa información y dar un aspecto visual más atractivo.

Sigfox hace que sea fácil recoger los datos enviados por los dispositivos del servicio en la nube mediante el uso de callbacks. Las callbacks son un servicio que permite a Sigfox enviar un evento a un servidor externo después de recibir el evento. Por ejemplo, un dispositivo podría enviar un mensaje Sigfox al ocurrir un evento (una ventana abierta), es posible recibir una notificación una vez que se haya producido este evento. Esta sería la idea de usar un callback. El servidor Sigfox transmitirá el mensaje a través de una solicitud POST / GET a su propio servidor o enviar un correo electrónico. Además de definir su propio servidor y sus datos, Sigfox también le permite transferir sus datos con de forma simplificada como AWS IoT y Microsoft Azure.

Para configurar un callback personalizado, debe estar el dispositivo y cuenta registrados y configurado un dispositivo con un tipo de dispositivo y grupo.

Navega a la pestaña ‘Tipo de dispositivo’ en la barra de navegación. Luego, busca el Tipo de dispositivo de tu dispositivo y haz clic en el botón de filtro. Seleccione el ‘Nombre’ del dispositivo dentro de la entrada de búsqueda. Lo llevarán a la página ‘Información’. Desde aquí puede ver todos los datos sobre el dispositivo que configuró. Ahora navegue a ‘callback’ en el lado izquierdo de la página. Si esta es la primera vez que configura una callback, la página debe estar vacía. Haga clic en el botón ‘Nuevo’ en la esquina superior derecha y se le mostrará una lista de los diferentes tipos de devoluciones de llamadas

Haga clic en el elemento ‘Callbacks personalizados’. Ahora tendrá una página similar a la siguiente, con varias opciones de configuración diferentes.

Los campos a rellenar son:

  • Custom Payload Config. Este campo permite especificar cómo desea que Sigfox decodifique el mensaje de su dispositivo.
  • Body: Este es el contenido principal del mensaje. Se puede especificar cualquier dato personalizado dentro de la carga útil. Puede ver todas las variables disponibles en la sección Sintaxis de URL.

Más información: http://makers.sigfox.com/getting-started/

Estas callbacks transfieren todos los datos recibidos desde los dispositivos asociados a este DEVICE TYPE a una infraestructura externa. Para obtener más información, consulte la documentación. Callback documentation: https://backend.sigfox.com/apidocs/callback

Callback para mandar un correo:

Callback para mandar los datos a una web/base de datos externa:

Esta es la llamada a la API: https://www.aprendiendoarduino.com/servicios/SMS/saveSMS.php?telefono=6359871xx&mensaje=alarm_bike_{device}_lat_ {lat}_long_{lng}&pin=xxxx