Lo primero de todo necesitamos tener el siguiente hardware para hacer funcionar el ESP8266, esto ya lo comentamos en el primer artículo que realizamos:
Recordar que antes de subirle el programa deberemos subir al arduino el primer programa que realizamos en el primer artículo, y autentificarnos en la wifi por medio de los comandos que expliqué en ese artículo.
Ahora nos queda hacer la parte del programa que tiene que hacer lo siguiente:
1.- AT+RST RESETEAMOS EL MODULO ESPERAMOS ready
2.- AT+CIPSTART="TCP","184.106.153.149",80 esperamos Linked
3.- AT+CIPSEND=51 Esperamos el carácter >
4.- GET /update?api_key=NUESTRA KEY&field1=100 esperamos +IPD (100 es el Dato)
5.- AT+CIPCLOSE
Paso a describir los comandos básicos más importantes:
2.- Es un comando para conectar a la dirección ip de thingspeak, cuando conecta nos da linked.
3.- En este comando indicamos la longitud de cadena de la linea de abajo, para poder enviar correctamente el comando numero 4
4.- Enviamos el valor por get al servidor con nuestra key que nos han asignado en thingspeak, lo explico en un artículo anterior, y el field 1 es la variable dónde le decimos que valor vamos a darle
Otro dato a tener en cuenta es que en thingspeak tenemos que esperar 15 segundos entre cada vez que queramos actualizar los datos.
El programa básicamente lo que hace es enviar a nuestro servidor el dato 125, y lo intenta hasta que la subida es satisfactoria luego entra en un bucle de while y se queda ahí.
#include <SoftwareSerial.h> #include <stdlib.h> SoftwareSerial WIFI(7, 6); // RX | TX String apikey = "XXXXXXXXXXXX"; //Nuestra key de thingspeak void setup() { Serial.begin(9600); WIFI.begin(9600); WIFI.println("AT+RST"); delay(5000); } int subiraservidor() { String comando = "AT+CIPSTART=\"TCP\",\""; comando += "184.106.153.149"; // api.thingspeak.com comando += "\",80"; //puerto WIFI.println(comando); Serial.println(comando); if(WIFI.find("Error")) { Serial.println("Error al conectar con el servidor"); return 1; } String cadena = "GET /update?api_key="; cadena += apikey; cadena +="&field1="; cadena += 125; //Ponemos valor lectura del sensor(esto debería ser dinámico) cadena += "\r\n\r\n"; comando = "AT+CIPSEND="; comando += String(cadena.length()); WIFI.println(comando); if(WIFI.find(">")) { WIFI.print(cadena); Serial.println("ENVIADO"); if(WIFI.find("+IPD")){ Serial.println("Recibido confirmacion de subida."); return 0; } } else { WIFI.println("AT+CIPCLOSE"); Serial.println("Error al enviar get"); return 1; } } void loop() { while(subiraservidor()); Serial.println("PARAMOS"); while(1); }
Espero que os sea útil, nos vemos en el siguiente artículo.
No hay comentarios:
Publicar un comentario