Código Fuente:
#include <ESP8266WiFi.h> //-------------------VARIABLES GLOBALES-------------------------- int contconexion = 0; const char *ssid = "----"; const char *password = "----"; unsigned long previousMillis = 0; const char* server = "184.106.153.149"; String apiKey ="1Q2DYZ62GG1CE03K"; //----Función para Enviar Datos a Thingspeak---- void enviarTempTS(float temp) { WiFiClient client; if (client.connect(server, 80)) { // usar 184.106.153.149 ó api.thingspeak.com Serial.println("WiFi Client connected "); String postStr = apiKey; postStr += "&field1="; postStr += String(temp); postStr += "\r\n\r\n"; client.print("POST /update HTTP/1.1\n"); client.print("Host: api.thingspeak.com\n"); client.print("Connection: close\n"); client.print("X-THINGSPEAKAPIKEY: " + apiKey + "\n"); client.print("Content-Type: application/x-www-form-urlencoded\n"); client.print("Content-Length: "); client.print(postStr.length()); client.print("\n\n"); client.print(postStr); delay(1000); } client.stop(); } //------------------------------------------------------------------------- void setup() { // Inicia Serial Serial.begin(115200); Serial.println(""); // Conexión WIFI WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED and contconexion <50) { //Cuenta hasta 50 si no se puede conectar lo cancela ++contconexion; delay(500); Serial.print("."); } if (contconexion <50) { //para usar con ip fija IPAddress ip(192,168,1,156); IPAddress gateway(192,168,1,1); IPAddress subnet(255,255,255,0); WiFi.config(ip, gateway, subnet); Serial.println(""); Serial.println("WiFi conectado"); Serial.println(WiFi.localIP()); } else { Serial.println(""); Serial.println("Error de conexion"); } } //--------------------------LOOP-------------------------------- void loop() { unsigned long currentMillis = millis(); if (currentMillis - previousMillis >= 5000) { //envia la temperatura cada 5 segundos previousMillis = currentMillis; int analog = analogRead(17); float temp = analog*0.322265625; enviarTempTS(temp); } }
Hola Alejandro Alomar, he estado viendo sus tutoriales, soy neófito en todo esto de Arduino y NodeMCU, pero con sus explicaciones tan fáciles de asimilar he comprendido DEMASIADO sobre NodeMCu, solo una pregunta, he seguido este video al pie de la letra (al giual el código - copiar y pegar) pero en thigspeak no me sale como si estubiera leyendo temperatura,es decir los grados centigrados del sensor, simplemente son lecturas desde 1 en adelante... si es tan amable me podria explicar que falta para que salga como esta el suyo... GRACIAS...
ResponderEliminarSe nota que copiaste y pegaste, jaja, porque se actualizaron los datos en mi página. Lo que comentás probablemente sea un problema de hardware. Primero agregale una línea para que te imprima la temperatura por la terminal serial así descartamos otras cosas. Después de enviarTempTS(temp); poné: Serial.println (temp);
EliminarHola Ale, muchas gracias por compartir tus tutoriales como estudiante de ingeniería informática me han sido de mucha ayuda. Te hago una pregunta como podría hacer para exportar los datos que se muestran en ThingSpeak a una app Android? Es decir como puedo recibir los datos en Android Studio para a partir de éstos realizar acciones en mi app. Gracias desde ya!
ResponderEliminarThingSpeak te da un iframe para ver los datos de la página (tal cual lo tengo hecho en esta entrada del blog), a lo mejor podés hacer un WebView en Android Studio y de ahí tomar los datos. Saludos.
EliminarHola que tal, soy muy nuevo en eso del esp8266 (NodeMCU) segui tus pasos tal cual, solo que en vez de mandar el valor de la temperatura mando un valor fijo solo para comprobar si hay conexion a thingspeak, en el monitor serial si se ve cada 6 segundos el valor que mando pero en la grafica no me aparece nada. Me podrias apoyar? Gracias.
ResponderEliminarGRACIAS POR EL APORTE: SALUDOS DESDE LIMA
ResponderEliminarme gustaria saber si podria explicarme como enviar datos almacenados en thinkspeak hacia mi correo
ResponderEliminargracias, soy Brasileiro.. estudante de ENGENHARIA MECÂNICA... parabéns... very good
ResponderEliminarExcelente.
ResponderEliminar