El Autonomo es una placa compacta compatible con Arduino que utiliza el microcontrolador Atmel Cortex M0+ de 32 bits. Fue diseñado para ser autónomo (autosuficiente) al permitir que sea alimentado por un panel solar.
Esta guía explica cómo enviar datos a Ubidots desde el SODAQ Autonomo a través de GPRS.
Requisitos
Configuración
Descarga el Arduino IDE aquí
En el Arduino IDE ve a Archivo -> Preferencias -> URLs adicionales del gestor de placas y agrega esta línea allí “http://downloads.sodaq.net/package_sodaq_index.json”.
Abre el Gestor de Placas a través de Herramientas -> Placa -> Gestor de Placas y busca las placas “SODAQ”, luego selecciona las placas “SODAQ SAMD” para el Autonomo.
Descarga la biblioteca ubidots-sodaq-gprsbee aquí
Ve al Arduino IDE, haz clic en Sketch -> Incluir Biblioteca -> Agregar Biblioteca .ZIP
Selecciona el archivo .ZIP descargado y luego haz clic en “Aceptar” o “Elegir”
Cierra el Arduino IDE y ábrelo nuevamente.
La biblioteca SODAQGPRSbee crea una nueva Fuente de Datos de Ubidots llamada “SODAQGPRSbee”. Allí la biblioteca guardará tus variables
Enviar un valor a Ubidots
Para enviar un valor a Ubidots, carga este código en el Autonomo. Por favor, no olvides cambiar tu TOKEN, APN, USER_APN y PASS_APN.
#include <SODAQGPRSbee.h>// Pon aquí tu APN de SIM#define APN "Your_APN"// Pon aquí tu USUARIO de APN de SIM#define USER "Your_USER_APN"// Pon aquí tu CONTRASEÑA de APN de SIM#define PASSWORD "Your_PASSWORD_APN"Ubidots Client;void setup(){ // El código no comenzará a menos que el monitor serial esté abierto o pasen 10 seg // en caso de que quieras operar el Autonomo con una fuente de alimentación externa while ((!SerialUSB) && (millis() < 10000)) ; SerialUSB.begin(115200); Serial1.begin(115200); Client.setOnBee(BEE_VCC, BEEDTR, BEECTS); while(!Client.setApn(APN, USER, PASSWORD));}void loop() { float value = analogRead(A0); Client.add("Temperature",value); Client.sendAll(); delay(1000);}
Enviar múltiples valores a Ubidots
Para enviar múltiples valores a Ubidots, carga este código en el Autonomo. Por favor, no olvides cambiar tu TOKEN, APN, USER_APN y PASS_APN.
#include <SODAQGPRSbee.h>// Pon aquí tu APN de SIM#define APN "Your_APN"// Pon aquí tu USUARIO de APN de SIM#define USER "Your_USER_APN"// Pon aquí tu CONTRASEÑA de APN de SIM#define PASSWORD "Your_PASSWORD_APN"Ubidots Client;void setup(){ // El código no comenzará a menos que el monitor serial esté abierto o pasen 10 seg // en caso de que quieras operar el Autonomo con una fuente de alimentación externa while ((!SerialUSB) && (millis() < 10000)) ; SerialUSB.begin(115200); Serial1.begin(115200); Client.setOnBee(BEE_VCC, BEEDTR, BEECTS); while(!Client.setApn(APN, USER, PASSWORD));}void loop() { float value0 = analogRead(A0); float value1 = analogRead(A1); float value2 = analogRead(A2); float value3 = analogRead(A3); Client.add("Temperature",value0); Client.add("Speed",value1); Client.add("Heat Index",value2); Client.add("Humidity",value3); Client.sendAll(); delay(1000);}
Enviar múltiples valores con geoposición
La biblioteca tiene una función para agregar información extra dentro de una variable. En el siguiente ejemplo, el código enviará un valor de Temperatura y dentro de la variable se guardará información extra: latitud y longitud. Por favor, no olvides cambiar tu TOKEN, APN, USER_APN y PASS_APN.
Ubidots tiene un widget para mostrar la posición en un mapa. Para mostrar la posición, este widget necesita recibir la latitud y longitud en un formato específico. El formato es “lat” para latitud y “lng” para longitud.
#include <SODAQGPRSbee.h>// Pon aquí tu APN de SIM#define APN "Your_APN"// Pon aquí tu USUARIO de APN de SIM#define USER "Your_USER_APN"// Pon aquí tu CONTRASEÑA de APN de SIM#define PASSWORD "Your_PASSWORD_APN"Ubidots Client;void setup(){ // El código no comenzará a menos que el monitor serial esté abierto o pasen 10 seg // en caso de que quieras operar el Autonomo con una fuente de alimentación externa while ((!SerialUSB) && (millis() < 10000)) ; SerialUSB.begin(115200); Serial1.begin(115200); Client.setOnBee(BEE_VCC, BEEDTR, BEECTS); while(!Client.setApn(APN, USER, PASSWORD));}void loop() { float value1 = analogRead(A0); float value2 = analogRead(A1); float value3 = analogRead(A2); char context[25]; char context_2[25]; char context_3[45]; // Enviar latitud y longitud a Ubidots para verlo en un widget de mapa sprintf(context, "lat=1.2343$lng=132.1233"); // Puedes enviar múltiples pares clave:valor a una variable; solo agrega un símbolo "$" entre cada par: sprintf(context_3, "Name_Of_Context=Value_Of_Context$Name_Of_Context_2=Value_Of_Context_2$Name_Of_Context_3=Value_Of_Context_3"); ubidots.add("Temperature", value1, context); // Cambia por el nombre de tu variable ubidots.add("Temperature in my house", value3, context_3); ubidots.sendAll(); delay(5000);}