Ir al contenido principal
Todas las coleccionesConecta tus dispositivos
Conectar el GOBLIN 2 a Ubidots
Conectar el GOBLIN 2 a Ubidots

Aprende a configurar el GOBLIN 2 de VERSE Technology con Ubidots.

Sergio M avatar
Escrito por Sergio M
Actualizado hace más de 2 meses

¿Qué es GOBLIN 2?

GOBLIN 2 es una tarjeta de desarrollo diseñada para ser autónoma del “Internet de las Cosas", tiene un módulo para controlar la carga de una batería Li-Po de 3.7V a 4.2V, que se puede cargar a través de una celda solar o un Micro-USB. GOBLIN 2 es compatible con Arduino y ATMEL Studio, versátil en conectividad y listo para comunicación remota.

También cuenta con un microcontrolador ATMEGA328P, 5 puertos analógicos y 10 digitales, de los cuales solo 5 funcionan como PWM, también integra conectividad para cada protocolo RS-485 y salidas de voltaje de 24V, 5V y 3.3V que son ideales para sensores industriales o sensores con señal analógica/digital.

Su diseño para el “Internet de las Cosas” se debe al SIM5320A que incorpora un enlace Dual-BAND UMTS/HSDPA a 850/1900MHz y Quad-Band GSM/GPRS/EDGE a 850/900/1800/1900mhz, por lo que puede tener conectividad con servidores web a través de cualquier red celular.

Al agregar el módulo SIM5320A, está disponible en sus salidas para ser conectado a un teclado, micrófono/altavoces y USB para explotar la red celular, al alcance de sus necesidades e innovaciones.

En esta guía aprenderás cómo configurar el GOBLIN 2 para enviar datos a Ubidots.

Si deseas leer más sobre el hardware del GOBLIN 2, por favor visita el siguiente enlace.

Requisitos

Configuración de hardware

El GOBLIN 2 tiene características increíbles, así que debes conocerlo bien para poder crear proyectos IoT increíbles en solo unos minutos.

Para comenzar, por favor ve a la "Guía rápida" del Equipo de VERSE Technology, y revisa la documentación paso a paso. ¡Es importante leerlo cuidadosamente para asegurarte de que todo esté perfecto!

Configuración de Ubidots

Primero, ve a tu cuenta de Ubidots. Si no tienes una, crea una aquí.

1.- Ve a la sección de dispositivos haciendo clic en la pestaña "Dispositivos".

2.- Crea un nuevo dispositivo, solo presiona el botón de signo más.

Una vez que el dispositivo esté creado, deberías ver algo como esto:

3.- Entra al dispositivo recién creado para agregar una nueva variable. Selecciona "Agregar variable".

Asigna un nombre a la variable, en este caso decidimos llamarla "sensor". Además, en el ícono de abajo podrás conocer el ID de la variable, lo necesitarás en el código.

4.- Además, necesitarás el TOKEN. Haz clic en tu "nombre de usuario" y selecciona Credenciales de API:

Copia y pega esto en tu código.

Configuración de Arduino

Como mencionamos antes, el GOBLIN 2 es compatible con Arduino y ATMEL Studio. En esta guía decidimos configurar el GOBLIN 2 con el IDE de Arduino.

Una de las preguntas comunes es "¿Qué placa debo usar?" ¡Muy simple! Solo selecciona el Arduino/Genuino UNO.

Te proporcionaremos un código de ejemplo para comenzar a enviar datos a Ubidots; si estás familiarizado o deseas explorar sobre ello, consulta nuestra referencia de API aquí.

Debes agregar algunos parámetros de tu cuenta de Ubidots al código, como el token y el ID de la variable, también necesitarás el APN de tu operador móvil. Ve al paso "Configuración de Ubidots" para saber dónde puedes encontrar los parámetros necesarios.

Para agregar el APN por favor ve a esta línea en el código y cámbiala por la de tu operador móvil:

NOTA: Asegúrate de la posición del "Interruptor 2", debe estar en la posición “PROGRAM” (deslizado hacia la derecha). ¡Eso es importante porque habilita el modo de programación para ATMEL-328P! Con esto, podemos comunicarnos con el microcontrolador desde la PC y cargar programas desde el IDE de Arduino.

Con el siguiente programa podrás enviar datos a la nube de Ubidots usando el ID de la variable:

#include <SoftwareSerial.h>                            SoftwareSerial SIM5320(5, 4);                      //RX, TX#define ONE_WIRE_BUS 10                            //PIN DS18B20char    BUFFER_USART;                              //BUFFER RX String  token = "PUT_YOUR_TOKEN_HERE";             //TOKEN UBIDOTSString  id    = "PUT_VARIABLE_ID_HERE";            //ID VARIABLE UBIDOTSvoid setup() {   pinMode(5, OUTPUT);                              //PIN ON SIM5320  SIM5320.begin(9600);  SIM5320_ON();                                    //ON SIM5320  delay(10000);  SETUP_SIM5320();                                 //START SIM5320}void loop() {  WEB();                                           //SEND JSON UBIDOTS  delay(15000);                                    //SAMPLE TIME}///////////////////////////////////////////////////////////////////////////ISR (USART_RX_vect){  BUFFER_USART = UDR0;                             //READ THE BUFFER RX}/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void WEB()                                  {  int LONG_JSON = 15;  int SEND = 221;      float temp = 20.0;  SIM5320.println(F("AT+CIPOPEN=0,\"TCP\",\"industrial.api.ubidots.com\",80"));  //  delay(5000);   SIM5320.print("AT+CIPSEND=0,");  //  delay(50);  SIM5320.println(SEND);  //  delay(600);///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////  SIM5320.print(F("POST /api/v1.6/variables/"));  delay(50);  SIM5320.print(id);  delay(50);  SIM5320.println(F("/values  HTTP/1.1"));  delay(50);  SIM5320.println(F("Content-Type: application/json"));  delay(50);  SIM5320.print(F("Content-Length:"));  delay(50);  SIM5320.println(LONG_JSON);  delay(50);  SIM5320.print(F("X-Auth-Token: "));  delay(50);  SIM5320.println(token);  delay(50);  SIM5320.println(F("Host: industrial.api.ubidots.com"));  delay(50);  SIM5320.println("");  ///////////////////////////////////////////////////////////////  SIM5320.print("{\"value\":");  delay(10);  SIM5320.print(temp,2);  delay(50);  SIM5320.println("}");  delay(50);  SIM5320.write(0x1A);  delay(5000);  SIM5320.println(F("AT+CIPCLOSE=0"));  delay(4000);}void SIM5320_ON()          {  digitalWrite(5, HIGH);  delay(2000);//                              digitalWrite(5, LOW);  delay(2000);}/////////////////////////////////////////////////////////////////////////////void SETUP_SIM5320(){  SIM5320.println(F("AT+CFUN=1"));                      //SIM5320 WORKING WITH ALL THE FEATURES  delay(250);  SIM5320.println(F("AT+CNMP=2"));                      //AUTOMATIC MODE  delay(250);  SIM5320.println(F("AT+CVAUXV=61"));                   //3.0V OUTPUT VOLTAGE  delay(250);    SIM5320.println(F("AT+CNBP=0xFFFFFFFF7FFFFFFF  "));   //ALL BANDS  delay(500);    SIM5320.println(F("AT+CSQ"));                         //SIGNAL LEVEL  delay(250);  SIM5320.println(F("AT+CREG?"));            delay(250);  SIM5320.println(F("AT+COPS?"));  delay(250);   SIM5320.println(F("AT+CGSOCKCONT=1,\"IP\",\"MOBILE_OPERATOR_APN\"")); // e.g. Telcel MX: internet.itelcel.com - Movistar COL: internet.movistar.com.co  delay(250);  SIM5320.println(F("AT+CNSMOD?"));                     //CURRENT NETWORK  delay(250);  SIM5320.println(F("AT+CSOCKSETPN=1"));  delay(250);  SIM5320.println(F("AT+CIPMODE=0"));  delay(250);  SIM5320.println(F("AT+CNBP?"));  delay(250);    SIM5320.println(F("AT+NETOPEN"));  delay(8000);  SIM5320.println(F("AT+IPADDR"));                       //IP  delay(500);  SIM5320.println(F("AT+CGSN"));                         //IMEI  delay(500);}


También si lo deseas, puedes usar este código de ejemplo para enviar datos a Ubidots usando la etiqueta del dispositivo y la variable:

#include <SoftwareSerial.h>#define token "PUT_YOUR_TOKEN_HERE" //TOKEN UBIDOTSSoftwareSerial SIM5320(5, 4);           // RX, TXchar BUFFER_USART;                      // BUFFER RXString devLabel = "goblin-2";           // ETIQUETA DEL DISPOSITIVO - UBIDOTSString varLabel = "humidity";           // ETIQUETA DE LA VARIABLE - UBIDOTSint sensor = A0;                        // PIN DECLARADOvoid setup() {  pinMode(5, OUTPUT);                   // PIN EN SIM5320  pinMode(sensor, INPUT);               // PIN COMO ENTRADA  SIM5320.begin(9600);  SIM5320_ON();                         // ENCENDER SIM5320  delay(10000);  SETUP_SIM5320();                      // INICIAR SIM5320}void loop() {  WEB();                                // ENVIAR JSON UBIDOTS  delay(15000);                         // TIEMPO DE MUESTRA}///////////////////////////////////////////////////////////////////////////ISR (USART_RX_vect){  BUFFER_USART = UDR0;                  // LEER EL BUFFER RX}/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void WEB(){  char buffer_tmp[8];  int LONG_JSON =13;                   // LONGITUD DEL JSON, e.i: {"humidity":}  int SEND = 225;                      // NÚMERO DE CARACTERES A ENVIAR (ENCABEZADO + JSON)  float   hum  = analogRead(sensor);    // LECTURA DEL SENSOR ANALÓGICO  dtostrf(hum, 4, 2, buffer_tmp);       // CONVERTIR FLOAT A UN ARREGLO DE CARACTERES  String  hum_s = buffer_tmp;           // CONVERTIR EL FLOAT HUM A STRING PARA PODER CALCULAR LA LONGITUD  SEND += LONG_JSON + hum_s.length();   // NÚMERO DE CARACTERES A ENVIAR (ENCABEZADO + JSON + SENSOR FLOAT (DINÁMICO))  LONG_JSON += hum_s.length();          // LONGITUD JSON CARACTERES FIJOS + DINÁMICOS DEL SENSOR ANALÓGICO  SIM5320.println(F("AT+CIPOPEN=0,\"TCP\",\"industrial.api.ubidots.com\",80"));  //  delay(5000);  SIM5320.print("AT+CIPSEND=0,");  //  delay(50);  SIM5320.println(SEND);  //  delay(600);  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////  SIM5320.print(F("POST /api/v1.6/devices/"));  delay(50);  SIM5320.print(devLabel);  delay(50);  SIM5320.println(F(" HTTP/1.1"));  delay(50);  SIM5320.println(F("Host: industrial.api.ubidots.com"));  delay(50);  SIM5320.println(F("User-Agent: GOBLIN-2/1.0"));  delay(50);  SIM5320.print(F("X-Auth-Token: "));  delay(50);  SIM5320.println(token);  delay(50);  SIM5320.println(F("Connection: close"));  delay(50);  SIM5320.println(F("Content-Type: application/json"));  delay(50);  SIM5320.print(F("Content-Length:"));  delay(50);  SIM5320.println(LONG_JSON);  delay(50);  SIM5320.println("");  ///////////////////////////////////////////////////////////////  SIM5320.print("{\"" + varLabel + "\":" + hum_s + "}\r\n\r\n");      // {"humidity":}  13 CARACTERES ESTÁTICOS  delay(50);  SIM5320.write(0x1A);  delay(6000);}void SIM5320_ON(){  digitalWrite(5, HIGH);                                              // ENCENDER EL SIM CON UN PULSO ON-OFF (USANDO EL PIN 5)  delay(2000);//  digitalWrite(5, LOW);  delay(2000);}/////////////////////////////////////////////////////////////////////////////void SETUP_SIM5320(){  SIM5320.println(F("AT+CFUN=1"));                                    // SIM5320 FUNCIONANDO CON TODAS LAS CARACTERÍSTICAS  delay(250);  SIM5320.println(F("AT+CNMP=2"));                                    // MODO AUTOMÁTICO  delay(250);  SIM5320.println(F("AT+CVAUXV=61"));                                 // VOLTAJE DE SALIDA 3.0V  delay(250);  SIM5320.println(F("AT+CNBP=0xFFFFFFFF7FFFFFFF"));                   // TODAS LAS BANDAS  delay(500);  SIM5320.println(F("AT+CSQ"));                                       // NIVEL DE SEÑAL  delay(250);  SIM5320.println(F("AT+CREG?"));  delay(250);  SIM5320.println(F("AT+COPS?"));  delay(250);  SIM5320.println(F("AT+CGSOCKCONT=1,\"IP\",\"CELLULAR_OPERATOR_APN\"")); // e.g. Telcel MX: internet.itelcel.com - Movistar COL: internet.movistar.com.co  delay(250);  SIM5320.println(F("AT+CNSMOD?"));                                   // MOSTRAR LA RED  delay(250);  SIM5320.println(F("AT+CSOCKSETPN=1"));  delay(250);  SIM5320.println(F("AT+CIPMODE=0"));  delay(250);  SIM5320.println(F("AT+CNBP?"));  delay(250);  SIM5320.println(F("AT+NETOPEN"));  delay(8000);  SIM5320.println(F("AT+IPADDR"));                                    // IP  delay(500);  SIM5320.println(F("AT+CGSN"));                                      // IMEI  delay(500);}


Una vez que el código esté cargado en el GOBLIN 2, abre el monitor serial para visualizar la respuesta de los comandos AT. Recuerda cambiar la posición del interruptor 2 a la posición “SIM_AT+” (deslizado hacia la izquierda). Esto habilita el modo de comunicación con el SIM5320A desde la PC, y se utiliza para enviar comandos AT+ directamente desde un monitor serial, como el IDE de Arduino, a la red celular.

Una vez que el led de STATUS NET esté parpadeando, deberías comenzar a recibir la respuesta en el monitor serial:

Ahora, estás recibiendo datos en tu cuenta de Ubidots:

Es tu momento de crear un increíble dashboard para visualizar tus datos. Si no sabes cómo hacerlo, echa un vistazo a este video.

Si deseas aprender más sobre el GOBLIN 2 y Ubidots, echa un vistazo a estos tutoriales en video para hacer un increíble proyecto IoT!

¿Ha quedado contestada tu pregunta?