Arduino es una plataforma de electrónica de código abierto basada en hardware y software fáciles de usar. La placa principal para Arduino es el Arduino UNO, que se conecta a una serie de diferentes shields para expandir sus posibilidades.
El Arduino UNO es una placa de microcontrolador basada en el ATmega328P, que contiene todo lo necesario para soportar el microcontrolador, incluyendo fuentes de alimentación simples a través de un cable USB, un adaptador de CA a CC o mediante batería. Para obtener una visión general oficial del Arduino UNO, consulte su documentación aquí.
El Arduino GSM Shield conecta tu Arduino a internet utilizando la red inalámbrica GPRS. Simplemente conecta este módulo a tu placa Arduino, coloca una tarjeta SIM de un operador que ofrezca cobertura GPRS y sigue unas pocas instrucciones simples para comenzar a recibir datos de sensores.
Siguiendo esta guía, podrás POST datos hacia/desde Ubidots utilizando el Arduino GSM Shield conectado a una placa Arduino en solo un par de minutos!
Requisitos
Una tarjeta SIM activa con un plan de datos
Paso a Paso
1. Configuración de Hardware
2. Configuración del Arduino IDE
3. Enviando (POST) Datos a Ubidots
4. Resumen
1. Configuración de Hardware
1. Inserta la tarjeta SIM con un plan de datos activado en el GSM Shield.
2. Coloca el GSM Shield sobre el Arduino UNO y aplica una presión suave hasta que los pines del shield y los conectores de la placa estén firmemente conectados.
NOTA: Consulta estas notas de Arduino para trabajar con un Arduino Mega, Mega ADK o Leonardo si se desea.
NOTA IMPORTANTE: Conéctate a una fuente de alimentación externa que pueda proporcionar entre 700mA y 1000mA. El módem puede consumir hasta 2A de corriente en uso máximo, lo que puede ocurrir durante la transmisión de datos. A estos niveles, el puerto USB de tu laptop o PC no podrá soportar la carga de energía.
2. Configuración del Arduino IDE
La biblioteca utilizada en el código a continuación viene preinstalada en el Arduino IDE, por lo que no necesitas hacer ninguna configuración adicional en este momento. Si es tu primera vez trabajando con Arduino, te recomendamos que eches un vistazo rápido a esta guía.
El código utilizado se basa en un ejemplo de Arduino que se puede encontrar fácilmente aquí. Te recomendamos que consultes el enlace para tener una mejor comprensión de cada sección del código y aprender cómo construir una solicitud HTTP correcta para llegar a internet. Como este es un código de terceros, el código a continuación ha sido actualizado para ajustarse a la estandarización de la estructura del código de muestra de Ubidots. Para obtener detalles adicionales sobre cómo estructurar una solicitud HTTP a Ubidots, consulta
Referencia de la API REST de Ubidots.
3. Enviando (POST) Datos a Ubidots
Usando el siguiente código de muestra, podrás publicar las lecturas ANALÓGICAS tomadas del puerto analógico A0 del Arduino UNO.
1. Ve a la sección de dispositivos de tu cuenta de Ubidots y crea un nuevo dispositivo con el nombre deseado para ajustarse a la nomenclatura de tu aplicación.
2. Con el dispositivo ya creado, crea una nueva variable cruda en el dispositivo. Esta variable recibirá los datos del pin analógico recibidos del sensor A0 de la placa Arduino UNO.
3. Para poder establecer la comunicación con la variable creada en el paso anterior, necesitarás asignar el ID de variable en el código de muestra a continuación. En este punto, si no sabes cómo obtener el ID de variable, consulta esta guía.
4. Ahora es el momento de PUBLICAR datos en Ubidots. Para publicar tu primer valor en Ubidots, abre el Arduino IDE y pega el código de muestra a continuación. Una vez que hayas pegado el código, necesitarás asignar los siguientes parámetros:
APN (Nombre del Punto de Acceso) de tu proveedor celular con nombre de usuario y contraseña.
ID de Variable de la variable que deseas obtener
/* Basado en el ejemplo "Cliente web" de Arduino Circuito: * GSM shield conectado a un Arduino * Tarjeta SIM con un plan de datos creado el 8 de marzo de 2012 por Tom Igoe - Modificado el 15 de noviembre de 2014 por Mateo Velez para Ubidots, Inc. http://arduino.cc/en/Tutorial/GSMExamplesWebClient */ // bibliotecas #include <GSM.h> // Número PIN #define PINNUMBER "" // datos APN #define GPRS_APN "GPRS_APN" // reemplaza con tu APN GPRS #define GPRS_LOGIN "login" // reemplaza con tu login GPRS #define GPRS_PASSWORD "password" // reemplaza con tu contraseña GPRS // inicializa la instancia de la biblioteca GSMClient client; GPRS gprs; GSM gsmAccess; uint16_t reset = 0; String idvariable = "variable_id_here"; // reemplaza con tu ID de Variable de Ubidots String token = "ubidots_token_here"; // reemplaza con tu token de Ubidots void setup(){ // inicializa las comunicaciones seriales y espera a que el puerto se abra: Serial.begin(9600); while (!Serial){ ; // espera a que el puerto serial se conecte. Necesario solo para Leonardo } Serial.println("Iniciando cliente web de Arduino."); // estado de conexión boolean notConnected = true; // Después de iniciar el módem con GSM.begin() // conecta el shield a la red GPRS con el APN, login y contraseña while (notConnected){ if ((gsmAccess.begin(PINNUMBER) == GSM_READY) & (gprs.attachGPRS(GPRS_APN, GPRS_LOGIN, GPRS_PASSWORD) == GPRS_READY)){ notConnected = false; }else{ Serial.println("No conectado"); delay(1000); } } } void loop(){ int value = analogRead(A0); if(save_value(value)){ } else{ reset++; if (reset == 10){ asm volatile (" jmp 0"); // reinicia la placa Arduino si la transmisión de datos falla } } // si el servidor está desconectado, detén el cliente: if (!client.available() && !client.connected()){ Serial.println(); Serial.println("desconectando."); client.stop(); // no hacer nada para siempre: } } boolean save_value(int value){ Serial.println("conectando..."); int num=0; String var = "{\"value\":"+ String(value) + "}"; num = var.length(); // si obtienes una conexión, informa a través de serial: if (client.connect("industrial.api.ubidots.com", 80)){ Serial.println("conectado"); // Realiza una solicitud HTTP: client.print("POST /api/v1.6/variables/"+idvariable+"/values HTTP/1.1\nContent-Type: application/json\nContent-Length: "+String(num)+"\nX-Auth-Token: "+token+"\nHost: industrial.api.ubidots.com\n\n"); client.println(var); client.println(); }else{ // si no obtuviste una conexión con el servidor: Serial.println("conexión fallida"); return false; } while (client.available()) { char c = client.read(); Serial.print(c); } }
2. Verifica tu código dentro del Arduino IDE. Para hacer esto, en la esquina superior izquierda de nuestro Arduino IDE verás el icono de "Marca de Verificación"; presiónalo para verificar tu código.
3. Sube el código a tu Arduino UNO + GSM Shield. Para hacer esto, elige el icono de "flecha derecha" junto al icono de "marca de verificación".
4. Para verificar la conectividad del dispositivo y los datos enviados, abre el monitor serial seleccionando el icono de "lupa" en la esquina superior derecha del Arduino IDE para ver los registros de conectividad.
5. Confirma tus datos en Ubidots. Ahora deberías ver los datos publicados en tu cuenta de Ubidots, ubicados en el dispositivo y variable asignados en tu código.
4. Resumen
Con este simple tutorial, podemos PUBLICAR datos en Ubidots con la facilidad del Arduino IDE y un Arduino UNO + GSM Shield. Si deseas enviar más de una variable a Ubidots, consulta Ubidots REST API para aprender a construir la solicitud correctamente. :)
Ahora es el momento de crear Dashboards de Ubidots para visualizar tus datos y desplegar tu solución de monitoreo conectada a internet!
Otros lectores también han encontrado útil...