TUTORIAL MONITOREO TEMPERATURA Y HUMEDAD POR WIFI ESP8266

Paso #1 Descripción

El sensor ESP8266 es un impresionante y económico módulo de Wifi especialmente para conectarlo a un Microcontrolador y agregar comunicación a nuestro proyecto. El módulo puede ser programado para actuar como un sistema aislado.

Ya que la transmisión de datos puede llegar a consumir una corriente considerable se recomienda utilizar una fuente externa de 3.3V en lugar de conectarlo al pin del Arduino. Sin embargo para pruebas se puede utilizar este pin por periodos cortos y evitar sobrecalentar el Arduino.

Finalmente la hoja de datos del fabricante comenta que los pines de comunicación del ESP8266 (Rx y Tx) también operan a 3.3V por lo que existe el riesgo de que tengamos problemas comunicándonos con los pines Rx y Tx del Arduino, ya que operan a 5V. Al realizar pruebas rápidas nosotros no tuvimos problemas, pero para una implementación completa se recomienda un FTDI para convertir las señales de 5V a 3.3V. O si lo prefieres existe un excelente PDF de Newark donde nos dan varias opciones para construir diferentes circuitos para lograr esto.

Si tienes cualquier duda nos puedes escribir en los comentarios abajo!

 

Paso #2 Características

  • Voltaje de operación: 3.3V
  • Corriente de máxima: 240mA
  • Corriente de operación: 70mA

Paso #3 Componentes

  • Arduino Uno
  • Módulo Wifi ESP8266
  • Paquete de cables Jumpers
  • Sensor de Temperatura y Humedad DHT11
  • Protoboard

Paso #4 Descripción del Tutorial

Tutorial está diseñado para trasmitir y registrar la temperatura y la humedad inalámbricamente hacia un servidor (ThingSpeak).

Paso #5 Pin-Out

 Pin       Name     Description
 1  VDD  Power supply 3 – 5.5 V DC
 2  DATA  Serial data output
 3  NC  Not connected
 4  GND  Ground

Paso #6 Hardware

 

Importante: Si se desea comunicar con nuestra la consola del puerto Serial de nuestra PC directamente al ESP8266 es necesario invertir las conexiones de los pines 0 y 1 (Ver comentario de abajo para mayor aclaración)

 

Paso #7 Software


/*Sensor de Temperatura y Humedad DHT11<br>Instrucciones:
Recuerda descargar la libreria DHT para poder utilizar este sensor
Conectaremos el Sensor DHT11 a 5v y el pin de señal a la entrada digital 7
*/

#include "DHT.h";
#define SSID "REDWIFI" //Nombre de la Red Wifi a la que nos conectamos
#define PASS "PASSWORD" //Contraseña de la Red Wifi
#define IP "184.106.153.149" // thingspeak.com

//Sustituir [WRITE_API_KEY] por la obtenida en thingspeak.com sin []
String GET_TEMP = "GET /update?key=[WRITE_API_KEY]&field1="; //Campo de temperatura
String GET_HUM = "GET /update?key=[WRITE_API_KEY]&field2="; //Campo de humedad

#define DHTPIN 7 //Pin al cual se conecta el Sensor DHT11
#define DHTTYPE DHT11 //Tipo del Sensor
DHT dht(DHTPIN, DHTTYPE); //Declaracion del objeto DHT

void setup()
{

pinMode(13,OUTPUT);

dht.begin(); //Se inicializa sensor DHT
Serial.begin(115200); //Se inicializa el puerto Serial para comunicarse con el Modulo Wifi ESP8266
Serial.setTimeout(3000); //Set el Timeout en 3 segundos para Serial.find()
Serial.println("AT\r"); //PROBAR CON \n\r

delay(2000);

if(Serial.find("OK")){ //Verificar si Modulo Wifi responde
if(!connectWiFi()){ //Conectarse a la red
Serial.println("NO SE PUDO CONECTAR A RED WIFI");
}
} else {
Serial.println("MODULO WIFI NO RESPONDE");
}
}

void loop(){
float h = dht.readHumidity(); // Lee la humedad
float t = dht.readTemperature(); //Lee la temperatura

char bufferTemp[8]; //Crear buffer temporal para convertir float a string
String temperatura = dtostrf(t, 8, 3, bufferTemp); //Convertir de float a String 8 = longitud de String, 3 = numero de decimales. (e.g. 1234.567)
updateTemp(temperatura); //Actualizar temperatura

digitalWrite(13,HIGH);
delay(20000); //Thingspeak nos pide un MINIMO de 15 segundos entre cada actualizacion
//Si se hace mas pronto no se captura el Dato. Esperar 20 para estar seguros

char bufferHum[8]; //Crear buffer temporal para convertir float a string
String humedad = dtostrf(h, 8, 2, bufferHum); //Convertir de float a string 8 = longitud de String, 3 = numero de decimales. (e.g. 1234.567)
updateHumedad(humedad); //Actualizar humedad
digitalWrite(13,LOW);
delay(20000); //Hacer una medicion cada 20 segundos
}

void updateTemp(String temp){

String cmd = "AT+CIPSTART=\"TCP\",\""; //Crear el comando para comenzar una conexion TCP
cmd += IP; //IP del sitio a conectarse (thingspeak.com)
cmd += "\",80"; //Puerto (80)
Serial.println(cmd); //Crear conexion
delay(2000); //Darle 2 segundos para responder

if(Serial.find("ERROR")){
return; //No se pudo conectar
}

temp.trim(); //Remover espacios e.g. "____30.00" >> "30.00"

cmd = GET_TEMP; //Crear datos a enviar
cmd += temp; //Agregar la temperatura leida
cmd += "\r\n"; //Agregar caracteres de newline y Carriage return

Serial.print("AT+CIPSEND="); //Indicar cuantos datos se enviaran por TCP
Serial.println(cmd.length()); //Tamaño de los datos a enviar por TCP

delay(2000);

if(Serial.find(">")){
Serial.print(cmd); //Enviar datos
}else{
Serial.println("AT+CIPCLOSE"); //No se pudo ejecutar, cerrar conexion TCP
}
}

void updateHumedad(String humedad){
String cmd = "AT+CIPSTART=\"TCP\",\"";
cmd += IP;
cmd += "\",80";
Serial.println(cmd);
delay(2000);

if(Serial.find("ERROR")){
return;
}

humedad.trim();

cmd = GET_HUM;
cmd += humedad;
cmd += "\r\n";
Serial.print("AT+CIPSEND=");
Serial.println(cmd.length());

delay(2000);

if(Serial.find(">")){
Serial.print(cmd);
}else{
Serial.println("AT+CIPCLOSE");
}
}

//Funcion para crear conexion Wifi. Regresa true si se conecta exitosamente, si no false.
boolean connectWiFi(){

Serial.println("AT+CWMODE=3"); //Configurar Modulo Wifi ESP8266 en Modo 3 = Station + Access Point (Trasmitir y Recibir)
delay(2000); //Darle tiempo para ejecutar comando

String cmd="AT+CWJAP=\""; //
cmd+=SSID;
cmd+="\",\"";
cmd+=PASS;
cmd+="\"";

//cmd = AT+CWJAP="SSID","PASS"

Serial.println(cmd);
delay(10000); //Darle 10 segundos para conectarse

if(Serial.find("OK")){
return true; //Conexión existosa
}else{
return false; //No se pudo conectar
}
}

Paso #8 Registro en el servidor ThingSpeak

El servidor ThinkSpeak es muy fácil de usar y gratis. Sigue estas instrucciones y empieza a registrar datos:

  1. Registrate y crea una cuenta gratis en https://thingspeak.com/
  2. Ir a Channelsà Create New Channel (puedes dejar los demás valores como están)
  3. Ir a API Keys y obtén tu KEY
  4. Prueba poniendo esto en tu navegador: http://api.thingspeak.com/update?key=[THINGSPEAK_KEY]&field1=0
  5. Checa los resultados en: http://api.thingspeak.com/channels/[CHANNEL_ID]/feed.json?key=[THINGSPEAK_KEY]
  6. Reemplaza tu API KEY en el código Arduino y estás listo para enviar datos.

 

58 thoughts to “TUTORIAL MONITOREO TEMPERATURA Y HUMEDAD POR WIFI ESP8266”

  1. Hola muy buen aporte te felicito el motivo de mi pregunta es pedirte ayuda ya que sigo todos los pasos pero me manda error ayudame porfavor de antemano gracias

    1. Que tal pudieras especificar en dónde te está apareciendo el error? qué es lo que te arroja?

      1. Al momento de cargar el codigo me muestra algo parecido a esto
        stk500_getsync(): not in sync: resp=0x00

        1. Esto indica un problema de comunicación con el Arduino. Puedes intentar lo siguiente:

          1. Desconecta y vuelva a conectar el Arduino.

          2. Revisa que tengas seleccionado el Modelo de Arduino Correcto en Tools > Board > (Arduino Uno o la que tengas)

          3. Revisa que este seleccionado el puerto correcto. Tools > Port > (COM #)

          4. Asegúrate de que no tengas nada conectado en los pines 0 y 1 del Arduino que son los del puerto Serial, si los estás utilizando, desconéctalos para cargar el programa nuevo.

          5. Instala los drivers más nuevos. https://www.arduino.cc/en/Main/Software

          Por favor indícanos si alguno de estos pasos resolvió tu problema.

          1. ok Muchas gracias ya lo hice y ahora me arroja esto

            avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00

            avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x00

            avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x00

            avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x00

            avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x00

            avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x00

            avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x00

            avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x00

            avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00

          2. Qué sistema operativo tienes?
            Qué tarjeta Arduino tienes?

            Intenta esto:
            1. Desconecta todo lo que tengas hacia el Arduino, únicamente conecta el USB a tu computadora.
            2. Presiona el boton de RESET en tu Arduino
            3. Intenta cargar el programa File > Examples > 01.Basics > BareMinimum

            Qué error te aparece?

          3. Cuando programes el Arduino desconecta el wifi de los pines 0 y 1. Asegúrate que no haya nada conectado a estos pines y con eso debe funcionar. Una vez que se suba el programa conecta el wifi.

          4. muchas gracias ya lo gráfica te lo agradesco mucho “solo otra pregunta sera posible funcione envés de red wifi utilice los datos moviles que en este caso me da telcel”

          5. Nos da mucho gusto que te haya funcionado. El Módulo ESP8266 únicamente soporta redes Wifi. La red de Telcel es GSM por lo que necesitarías una shield compatible con esa red y tener una línea activa. Por el momento ese shield no lo manejamos pero lo puedes buscar en la red como “Arduino GSM Shield”. Saludos!

  2. Excelente trabajo y primera vez que encuentro este proyecto bien explicado y a pasos… tengo un pequeño problema y espero me ayudes a resolverlo: si obtengo la grafica de temperatura pero en la grafica de humedad me pone 0 y/o nulo y veo que en el serial si envia datos por ejemplo el numero 37. Saludos y buen dia

    1. Hola buen día, gracias por tu comentario. Puedes intentar lo siguiente:

      1. Asegúrate que exista un delay de mínimo 20 segundos “delay(20000)” entre la escritura de cada dato, ya que Thingspeak no nos permite escribir datos tan seguido.

      2. Revisa que tu “WRITE_API_KEY” este correcto y que tengas “field2” en la línea:
      String GET_HUM = “GET /update?key=[WRITE_API_KEY]&field2=”; //Campo de humedad

      Eseremos que esto resuelva tu problema, si no, no dudes en contactarnos. Saludos

  3. Hola buen día, disculpa ¿se puede conectar directamente la alimentación, asi como lo muestras en el diagrama, de 3.3V y 5V al modulo wifi y al dht11, recpectivamente?

    Es que leí que podía haber problema porque el arduino no maneja mucho amperaje.

    1. Que tal. En cuanto al DHT11 no hay ningun problema, se puede conectar directamente a 5V del Arduino ya que consume muy poco amperaje.

      Para el Modulo Wifi ESSP8266 como comentas es recomendable utilizar una fuente externa de 3.3V ya que sí puede llegar a consumir mayor amperaje. Para pruebas cortas se puede conectar con el Arduino, pero ya en operación contínua se recomienda una fuente externa.

      Actualizaremos el tutorial pronto para mencionar esto. Saludos!

      1. ¿Y qué tipo de fuente me recomidas para usar con el modulo wifi?

        1. Tienes varias opciones:
          – Utilizar 2 baterías AA de 1.5V
          – Conseguir un eliminador de 3.3V de algún aparato que no uses o comprar uno (en MercadoLibre por ejemplo)
          – Utilizar un Regulador variable como el LM317
          – Utilizar un Transistor como el 2N3055
          – Utilizar un diodo Zener de 3.3V
          (Puedes ver los circuitos de estos 3 ultimos aquí http://www.simple-electronics.com/2011/09/33v-power-supply.html )

          Pronto manejaremos en nuestra tienda Eliminadores de 3.3V.
          Saludos!

          1. ¿Cree que con la salida de 3.3V de una fuente ATX se pueda? De ser así ¿ocuparía resistencias? Disculpe las molestias es que apenas comienzo en el mundo de la electrónica.

          2. Sí se puede, la puedes conectar directo sin resistencias, el módulo solamente utilizará la corriente que necesite.

            No te preocupes, al contrario nos da gusto poder ayudarte a empezar en el mundo de la electrónica, para eso estamos. Con gusto te resolvemos cualqueir duda!

  4. Hola buenas noches, disculpe tengo un problema, y es que ya tengo todo conectado pero en el monitor serie me manda el siguiente mensaje:
    AT

    MODULO WIFI NO RESPONDE
    AT+CIPSTART=”TCP”,”184.106.153.149″,80
    AT+CIPSEND=48
    AT+CIPCLOSE
    AT+CIPSTART=”TCP”,”184.106.153.149″,80
    AT+CIPSEND=47
    AT+CIPCLOSE
    AT+CIPSTART=”TCP”,”184.106.153.149″,80
    AT+CIPSEND=48
    AT+CIPCLOSE

    Y si lo dejo así se repite el ciclo. No sé que pueda ser, ya revice que los cables esten conforme al diagrama pero el módulo wifi no responde. Espero que me pueda ayudar, de ante mano muchas gracias.

    1. Si el Módulo Wifi no responde intenta lo siguiente:
      – Verifica que el Modulo Wifi tenga 3.3V (el Led Rojo debe encender)
      – Verifica que estén bien conectados los pines RX TX
      – Intenta intercambiando los pines de TX y RX
      – Asegurate que el pin CH_PD del módulo también este conectado al pin de 3.3V

      Si estás energizando el Wifi con una fuente externa, también asegúrate de conectar el GND de tu fuente con el GND de tu Arduino.

      Por favor reporta tu resultado.

      1. Tambien tengo este Warning: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
        if( Serial.find(“OK”) ){

        es normal?

        1. Es en la parte de compilación ¿verdad? Si es así no hay problema, es solo una advertencia de que la conversión es “obsoleta” entre un string y un char pero aun así puedes subir el código al arduino.

      2. Ya me funcionó, era conectar la tierra de la fuente con la tierra del arduino, más tarde te muestro en resultado.

    2. Hola Erick, como solucionaste el problema de “MODULO WIFI NO RESPONDE”? tambien me sucede

      1. Sí, ya se solucionó el problema, comencé con lo que no había hecho que era conectar la tierra de la fuente ATX con la tierra del arduino y así funcionó.

        1. Ya lo solucione Erick, gracias, el problema que tengo ahora es que cuando mando:
          AT+CIPSTART=”TCP”,”184.106.153.149″,80

          regresa ERROR, sabes que puede pasar?, gracias por tu respuesta!

          1. Pienso que lo que está pasando es que no se está conectando con la página de thingspeak, checa tu internet, que no tenga algún filtro MAC por si lo estas haciendo fuera de tu casa.

  5. Buenas, Espero tu pronta respuesta
    Me fijo en dispositivos conectados a mi router y no me sale ninguno nuevo, que me falta?
    El Modulo wifi esp8266 esta alimentado por fuente externa
    cuando escribo comandos en la consola no me da respuesta :/

    Gracias y disculpa la ignorancia

    AT

    AT+CWMODE=3
    AT+CWJAP=”Flia.Silva”,”familiasilva2016″
    AT+CIPSTART=”TCP”,”184.106.153.149″,80
    AT+CIPSEND=50
    AT+CIPCLOSE
    AT+CIPSTART=”TCP”,”184.106.153.149″,80
    AT+CIPSTART=”TCP”,”184.106.153.149″,80
    AT+CIPSEND=50
    AT+CIPCLOSE
    AT+CIPSTART=”TCP”,”184.106.153.149″,80
    AT+CIPSTART=”TCP”,”184.106.153.149″,80
    AT+CIPSEND=50
    AT+CIPCLOSE
    AT+CIPSTART=”TCP”,”184.106.153.149″,80
    AT+CIPSTART=”TCP”,”184.106.153.149″,80
    AT+CIPSEND=50
    AT+CIPCLOSE
    AT+CIPSTART=”TCP”,”184.106.153.149″,80

    1. Hola que tal!

      Puedes intentar lo siguiente:
      – Verifica 2 veces que el nombre de la red y la contraseña estén correctas (mayúsculas y minúsculas también importan).
      – Asegúrate que la fuente externa pueda proporcionar al menos 500mA, el módulo puede consumir mucha corriente sobre todo si está muy lejos de tu router.
      – Asegúrate que el voltaje de la fuente externa sea de 3.3V a 3.6V
      – Asegúrate que el pin negativo (-) de tu fuente externa esté conectado al GND de tu Arduino ( ¡No confundir con el positivo + ! )
      – Hemos encontrado que en algunos casos el módulo Wifi es más estable si se conectan también a 3.3V los pines 3 y 5 (GPIO0 y GPIO2).

      Por favor indica tus resultados. Saludos

  6. Hola buenas noches! tengo un problema, el cual es el siguiente logro cargar mi programa al arduino hago los cambios respectivos con el write api key, mi serial sale de esta forma
    AT

    AT+CWMODE=3
    AT+CWJAP=”Masarbre”,”Ligiapereira51″
    AT+CIPSTART=”TCP”,”184.106.153.149″,80
    AT+CIPSEND=50
    GET /update?key=[2DK662S1CF5L5ZB0]&field1=24.000
    AT+CIPSTART=”TCP”,”184.106.153.149″,80
    AT+CIPSEND=49
    GET /update?key=[2DK662S1CF5L5ZB0]&field2=37.00
    pero en la pagima de thingspeak no me grafica que podria ser el problema?
    gracias por la ayuda saludos

    1. Hola que tal! Por los mensajes que te arroja lo mas seguro es que sí este realizando la comunicación correctamente. Lo más probable es que tu API Key este incorrecto, verifica que la hayas ingresado bien y asegúrate que sea la WRITE API KEY y que no sea la READ Key. Saludos

  7. Buenos días tengo una duda, en las únicas partes donde se debe cambiar un poco del código es en SSDI, PASS con lo propios y en [WRITE_API_KEY] .Mi pregunta es en [WRITE_API_KEY] cuando se sustituye por el propio key api debe ir un espacio entre ese y el modulo? eje: “GET /update?key=N5UWQ4CRCYG9602I &field1=”
    o sin espacio “GET /update?key=N5UWQ4CRCYG9602I&field1=”. Ya intente con ambos y no logro ver nada en el servidor como puede verificar en que parte esta mi error?

    1. Si ves símbolos extraños en la consola del Monitor Serial, seguramente tienes que cambiar el baudrate (velocidad de transmisión). En la parte inferior derecha el valor por defecto es de 9,600 bps, este lo deberás cambiar a 115,200 para poder ver los mensajes correctamente. Saludos

  8. Excelente Tutorial, lo hice funcionar asi tal cual. Me pasa que la temperatura me actualizo dos veces nomas. Pensé que era por los decimales que la usas con 3 decimales y la humedad con dos. La puse con dos pero lo mismo.

    Que es lo que haces con el digitalWrite(13,HIGH); y el digitalWrite(13,LOW); ??? tendrá que ver?.

    Saludos, gracias

    1. Las líneas digitalWrite(13, HIGH) y digitalWrite(13, LOW) son para enceder y apagan el LED de tu Arduino respectivamente. Están ahí únicamente para poder ver con el LED que se estén enviando los datos cada 20 segundos (las puedes remover sin problema).

      En cuanto a envío de datos asegúrate que el sensor esté bien conectado, y que la WRITE_API_KEY este bien ingresada en las 2 lineas de código(12 y 13). El número de decimales es indiferente y debería de funcionar con 2 o 3. También asegúrate que el delay no sea menor a 20 segundos (20000 milisegundos)

      Saludos!

  9. Buenas tardes compañeros, necesito su ayuda urgente, espero puedan darme alguna solución. Estoy teniendo problemas ya que al programar el modulo WIFI esp 8266 desde el monitor serial, este funicona y responde bien, pero cuando lo intento desde un programa no me responde nada, lo he intentado cambiando las velocidades y con diversos tipos de programas como con ciclos while y serial print sin obtener respuesta del módulo esp8266. Muchas gracias

    1. Hola Daniela! Considera el siguiente diagrama de comunicación. Para que tu PC se comunique con el ESP8266 hay que conectar el RX(PC) con TX(ESP8266) y TX(PC) con RX(ESP8266), esto se logra mediante los pines de tu Arduino Pin RX0 y Pin TX1. Cuando quieres que tu Arduino se comunique con el ESP8266 hay que hacer lo mismo: RX(Arduino) con TX(ESP8266) y TX(Arduino) con RX(ESP8266), viendo el diagrama podemos ver que están invertidos los pines.

      En fin lo único que necesitas hacer es intercambiar los cables que tienes conectados en los pines 0 y 1 para que tu Arduino se comunique con el ESP8266. Para volver a comunicarte con tu PC inviértelos de nuevo.

      Esperamos haber aclarado la duda. Saludos!

      https://uploads.disquscdn.com/images/13bbe530d54c9956f69a6a0ce5a90ab2c55d17bb4d2067ca7e996d1bc08c7f2c.jpg

      1. Hola muchas gracias por la ayuda, pero intenté hacer las conexiones que me sugieres y me aparece “Error al subir información a la placa”… No se que pueda estar fallando, otra cosa es que cuando conecto el modulo esp8266 sin ningun codigo ni nada me aparece invalid no se si eso tiene que ver
        que no me responda cuando lo mando desde arduino.
        Muchas gracias,

        1. Hola! Recuerda que el Arduino utiliza los pines 0 y 1 para comunicarse con el puerto serial de tu PC cuando subes un programa. Por lo tanto mientras programes tu Arduino DESCONECTA cualquier cable de los pines 0 y 1, una vez que termine de programarse, vuelve a conectarlos. Esto se tiene que hacer cada vez que desees subir un programa a tu Arduino. Saludos!

  10. Tengo una duda, en materiales pones resistencia de 10k ohms pero en el esquema no la pones. Esta resistencia la usas? Si es asi se la pones al DHT11 o al ESP8266?

    1. Hola! La resistencia es un error, en realidad no es necesaria. Saludos!

  11. Hola Profesor, primero que nada agradezco este tutorial bien explicado y a nivel funcional un éxito.
    Tengo una consulta, si quiero agregar un sensor de presión barométrica BMP180 como puedo incluir las líneas de código para que los datos se incluyan en un nuevo String.??? Agradezco de antemano toda la ayuda.

    1. Hola! Una disculpa por la demora en la respuesta, se me debió perder entre los correos.

      Para agregar cualquier otro parámetro puedes seguir el mismo formato del código reemplazando las líneas para tu sensor. Las líneas que tienes que reemplazar son por ejemplo:

      GET_PRESION = “GET /update?key=[WRITE_API_KEY]&field3=”;

      float p = funcionParaMedirPresion();
      String presion= dtostrf(t, 8, 3, bufferTemp);
      updatePresion(presion);
      ….

      La función updatePresion(presion) sería prácticamente igual a las demás.

      No olvides crear otro nuevo campo (“field”) en thingspeak junto con su API_KEY para cada parámetro que desees agregar.

      Saludos!

  12. Buenas tardes, que gusto tener el placer de leer este tipo de proyectos, tan fundamentados y bien hechos, quería antes que todo agradecer por compartirlo, de hecho tengo unas dudas para ello, lo que sucede es que ya programe ya tengo mis circuitos bien hechos ya todo, pero tengo un dilema cuando programo ya compila pero da como unas advertencias: ESTO ME SALE CUANDO COMPILO NADA MAS=

    C:UserspabloDesktopPOGRAMA_TEMPERATURA_BIOPOGRAMA_TEMPERATURA_BIO.ino: In function ‘void setup()’:

    C:UserspabloDesktopPOGRAMA_TEMPERATURA_BIOPOGRAMA_TEMPERATURA_BIO.ino:33:21: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    if(Serial.find(“OK”)){ //Verificar si Modulo Wifi responde

    ^

    C:UserspabloDesktopPOGRAMA_TEMPERATURA_BIOPOGRAMA_TEMPERATURA_BIO.ino: In function ‘void updateTemp(String)’:

    C:UserspabloDesktopPOGRAMA_TEMPERATURA_BIOPOGRAMA_TEMPERATURA_BIO.ino:70:24: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    if(Serial.find(“ERROR”)){

    ^

    C:UserspabloDesktopPOGRAMA_TEMPERATURA_BIOPOGRAMA_TEMPERATURA_BIO.ino:85:20: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    if(Serial.find(“>”)){

    ^

    C:UserspabloDesktopPOGRAMA_TEMPERATURA_BIOPOGRAMA_TEMPERATURA_BIO.ino: In function ‘void updateHumedad(String)’:

    C:UserspabloDesktopPOGRAMA_TEMPERATURA_BIOPOGRAMA_TEMPERATURA_BIO.ino:99:24: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    if(Serial.find(“ERROR”)){

    ^

    C:UserspabloDesktopPOGRAMA_TEMPERATURA_BIOPOGRAMA_TEMPERATURA_BIO.ino:113:20: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    if(Serial.find(“>”)){

    ^

    C:UserspabloDesktopPOGRAMA_TEMPERATURA_BIOPOGRAMA_TEMPERATURA_BIO.ino: In function ‘boolean connectWiFi()’:

    C:UserspabloDesktopPOGRAMA_TEMPERATURA_BIOPOGRAMA_TEMPERATURA_BIO.ino:135:21: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    if(Serial.find(“OK”)){

    ^

    FINAL DE ESO LE DOY SUBIR, DESCONECTO LOS PINES QUE TENGA EN RX Y TX, Y SUBE BIEN LAS COSAS.

    Y ESTO ES LO QUE TENGO CUANDO SUBO EL PROGRAMA AL PARECER TODO BIEN;

    C:UserspabloDesktopPOGRAMA_TEMPERATURA_BIOPOGRAMA_TEMPERATURA_BIO.ino: In function ‘void setup()’:

    C:UserspabloDesktopPOGRAMA_TEMPERATURA_BIOPOGRAMA_TEMPERATURA_BIO.ino:33:21: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    if(Serial.find(“OK”)){ //Verificar si Modulo Wifi responde

    ^

    C:UserspabloDesktopPOGRAMA_TEMPERATURA_BIOPOGRAMA_TEMPERATURA_BIO.ino: In function ‘void updateTemp(String)’:

    C:UserspabloDesktopPOGRAMA_TEMPERATURA_BIOPOGRAMA_TEMPERATURA_BIO.ino:70:24: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    if(Serial.find(“ERROR”)){

    ^

    C:UserspabloDesktopPOGRAMA_TEMPERATURA_BIOPOGRAMA_TEMPERATURA_BIO.ino:85:20: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    if(Serial.find(“>”)){

    ^

    C:UserspabloDesktopPOGRAMA_TEMPERATURA_BIOPOGRAMA_TEMPERATURA_BIO.ino: In function ‘void updateHumedad(String)’:

    C:UserspabloDesktopPOGRAMA_TEMPERATURA_BIOPOGRAMA_TEMPERATURA_BIO.ino:99:24: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    if(Serial.find(“ERROR”)){

    ^

    C:UserspabloDesktopPOGRAMA_TEMPERATURA_BIOPOGRAMA_TEMPERATURA_BIO.ino:113:20: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    if(Serial.find(“>”)){

    ^

    C:UserspabloDesktopPOGRAMA_TEMPERATURA_BIOPOGRAMA_TEMPERATURA_BIO.ino: In function ‘boolean connectWiFi()’:

    C:UserspabloDesktopPOGRAMA_TEMPERATURA_BIOPOGRAMA_TEMPERATURA_BIO.ino:135:21: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    if(Serial.find(“OK”)){

    ^

    El Sketch usa 8.788 bytes (27%) del espacio de almacenamiento de programa. El máximo es 32.256 bytes.
    Las variables Globales usan 496 bytes (24%) de la memoria dinámica, dejando 1.552 bytes para las variables locales. El máximo es 2.048 bytes.

    YA LUEGO DE ESO YA CREE MI CUENTA EN THINGSPEAK, YA TENGO MIS API KEY DE LECTURA Y OTRA DE ESCRITURA, LISTO YA SUBIO Y EN LA CONSOLA ME INDICA QUE ME ESTA LEYENDO EL NOMBRE Y LA CONTRASEÑA DEL WIFI SI CONTECTA EN LA CONSOLA INDICA LO SIGUIENTE:

    AT

    AT+CWMODE=3
    AT+CWJAP=”ATAPEL_953052″,”A3B3757B907CDXDT”
    AT+CIPSTART=”TCP”,”184.106.153.149″,80
    AT+CIPSEND=48
    GET /update?key=U1RIBK3AE2JWBJ2N&field1=19.000

    PERO EN LA PAGINA WEB CON MI API KEY Y TODO NO ME SALE GRAN COSA ME SALEN COMO ERRORES

  13. ES NECESARIO CAMBIAR ALGO MAS DE LA PROGRAMACION APARTE DE LOS ESPACIOS QUE HA DEJADO PARA CONTRASEÑA WIFI Y APIKEY, ALGUNOS OTROS DATOS QUE HAYA QUE CONFIGURAR ??

    1. Hola! No es necesario hacer ningún cambio adicional. Si no funciona verifica las conexiones. (Lo mas común es confundir TX y RX, inviértelos para probar).

  14. Buenas tardes, que gusto tener el placer de leer este tipo de proyectos, tan fundamentados y bien hechos, quería antes que todo agradecer por compartirlo, de hecho tengo unas dudas para ello, lo que sucede es que ya programe ya tengo mis circuitos bien hechos ya todo, pero tengo un dilema cuando programo ya compila pero da como unas advertencias: ESTO ME SALE CUANDO COMPILO NADA MAS=
    C:UserspabloDesktopPOGRAMA_TEMPERATURA_BIOPOGRAMA_TEMPERATURA_BIO.ino: In function ‘void setup()’:
    C:UserspabloDesktopPOGRAMA_TEMPERATURA_BIOPOGRAMA_TEMPERATURA_BIO.ino:33:21: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
    if(Serial.find(“OK”)){ //Verificar si Modulo Wifi responde
    ^
    C:UserspabloDesktopPOGRAMA_TEMPERATURA_BIOPOGRAMA_TEMPERATURA_BIO.ino: In function ‘void updateTemp(String)’:
    C:UserspabloDesktopPOGRAMA_TEMPERATURA_BIOPOGRAMA_TEMPERATURA_BIO.ino:70:24: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
    if(Serial.find(“ERROR”)){
    ^
    C:UserspabloDesktopPOGRAMA_TEMPERATURA_BIOPOGRAMA_TEMPERATURA_BIO.ino:85:20: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
    if(Serial.find(“>”)){
    ^
    C:UserspabloDesktopPOGRAMA_TEMPERATURA_BIOPOGRAMA_TEMPERATURA_BIO.ino: In function ‘void updateHumedad(String)’:
    C:UserspabloDesktopPOGRAMA_TEMPERATURA_BIOPOGRAMA_TEMPERATURA_BIO.ino:99:24: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
    if(Serial.find(“ERROR”)){
    ^
    C:UserspabloDesktopPOGRAMA_TEMPERATURA_BIOPOGRAMA_TEMPERATURA_BIO.ino:113:20: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
    if(Serial.find(“>”)){
    ^
    C:UserspabloDesktopPOGRAMA_TEMPERATURA_BIOPOGRAMA_TEMPERATURA_BIO.ino: In function ‘boolean connectWiFi()’:
    C:UserspabloDesktopPOGRAMA_TEMPERATURA_BIOPOGRAMA_TEMPERATURA_BIO.ino:135:21: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
    if(Serial.find(“OK”)){
    ^
    FINAL DE ESO LE DOY SUBIR, DESCONECTO LOS PINES QUE TENGA EN RX Y TX, Y SUBE BIEN LAS COSAS.
    Y ESTO ES LO QUE TENGO CUANDO SUBO EL PROGRAMA AL PARECER TODO BIEN;
    C:UserspabloDesktopPOGRAMA_TEMPERATURA_BIOPOGRAMA_TEMPERATURA_BIO.ino: In function ‘void setup()’:
    C:UserspabloDesktopPOGRAMA_TEMPERATURA_BIOPOGRAMA_TEMPERATURA_BIO.ino:33:21: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
    if(Serial.find(“OK”)){ //Verificar si Modulo Wifi responde
    ^
    C:UserspabloDesktopPOGRAMA_TEMPERATURA_BIOPOGRAMA_TEMPERATURA_BIO.ino: In function ‘void updateTemp(String)’:
    C:UserspabloDesktopPOGRAMA_TEMPERATURA_BIOPOGRAMA_TEMPERATURA_BIO.ino:70:24: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
    if(Serial.find(“ERROR”)){
    ^
    C:UserspabloDesktopPOGRAMA_TEMPERATURA_BIOPOGRAMA_TEMPERATURA_BIO.ino:85:20: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
    if(Serial.find(“>”)){
    ^
    C:UserspabloDesktopPOGRAMA_TEMPERATURA_BIOPOGRAMA_TEMPERATURA_BIO.ino: In function ‘void updateHumedad(String)’:
    C:UserspabloDesktopPOGRAMA_TEMPERATURA_BIOPOGRAMA_TEMPERATURA_BIO.ino:99:24: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
    if(Serial.find(“ERROR”)){
    ^
    C:UserspabloDesktopPOGRAMA_TEMPERATURA_BIOPOGRAMA_TEMPERATURA_BIO.ino:113:20: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
    if(Serial.find(“>”)){
    ^
    C:UserspabloDesktopPOGRAMA_TEMPERATURA_BIOPOGRAMA_TEMPERATURA_BIO.ino: In function ‘boolean connectWiFi()’:
    C:UserspabloDesktopPOGRAMA_TEMPERATURA_BIOPOGRAMA_TEMPERATURA_BIO.ino:135:21: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
    if(Serial.find(“OK”)){
    ^
    El Sketch usa 8.788 bytes (27%) del espacio de almacenamiento de programa. El máximo es 32.256 bytes.
    Las variables Globales usan 496 bytes (24%) de la memoria dinámica, dejando 1.552 bytes para las variables locales. El máximo es 2.048 bytes.
    YA LUEGO DE ESO YA CREE MI CUENTA EN THINGSPEAK, YA TENGO MIS API KEY DE LECTURA Y OTRA DE ESCRITURA, LISTO YA SUBIO Y EN LA CONSOLA ME INDICA QUE ME ESTA LEYENDO EL NOMBRE Y LA CONTRASEÑA DEL WIFI SI CONTECTA EN LA CONSOLA INDICA LO SIGUIENTE:
    AT
    AT+CWMODE=3
    AT+CWJAP=”ATAPEL_953052″,”A3B3757B907CDXDT”
    AT+CIPSTART=”TCP”,”184.106.153.149″,80
    AT+CIPSEND=48
    GET /update?key=U1RIBK3AE2JWBJ2N&field1=19.000
    PERO EN LA PAGINA WEB CON MI API KEY Y TODO NO ME SALE GRAN COSA ME SALEN COMO ERRORES

  15. Estimado, se podría conectar este circuito con la placa de arduino directamente a la corriente con un transformador de celular USB de 5v, 2mAh? Lo demás funciona perfecto! Muchas gracias!

    1. Hola! Quizás querrás decir que es de 200mA? Un cargador de celular se puede utilizar para el proyecto pero debes energizar al wifi y al Arduino en paralelo. No debes energizar el Arduino y después utilizar los pines de 5V en el mismo para el wifi. Esto porque estaría pasando mucha corriente a través del Arduino y lo puedes dañar. Saludos!

      1. Perfecto! Pero ahora me surgió otra interrogante. No se activa solo. Los datos en Thingspeak solo empiezan a leer cuando activo el monitor serie por el pc. Existe alguna forma de hacerlo, sin pasar por esta interfaz, o sea, que al conectarlo a la corriente se conecte, y empiece a transmitir los datos? Algún comando que poner en el programa? Muchas gracias de antemano. Slds!

        1. El programa debe funcionar automáticamente sin el monitor serial así con el código que se muestra. Intenta:

          1. Probablemente estén invertidos los cables de TX y RX, intenta intercambiándolos.

          2. También a veces el módulo tarda un poco en conectarse a la red Wifi, hay que darle tiempo suficiente para que lo haga. En la función connectWifi() puedes modificar el delay en la línea 135 para que sean 20000ms en lugar de 10000ms y darle más tiempo.

          3. Si la fuente de poder en este caso el cargador de celular es de muy baja capacidad el módulo a veces batalla para conectarse, puedes intentar con uno de mayor capacidad. Recuerda que el módulo Wifi puede pedir hasta 240mA cuando necesita transmitir + lo que consume el Arduino, lo recomendable es una fuente de al menos 350mA para estar seguros.

          saludos!

  16. lo que pasa es que me sale este error
    avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
    avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00
    avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x00
    avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x00
    avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x00
    avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x00
    avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x00
    avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x00
    avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x00
    avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00
    Ha ocurrido un error mientras se enviaba el sketch

    1. Hola! Si el API Key es el mismo para los dos parámatros. Ese error indica que no hay comunicación de tu PC con tu Arduino. Lo más probable es que hayas dejado los pines del Wifi conectados a los pines 0 y 1 de tu Arduino. Asegúrate que no haya nada conectado a pines 0 y 1, luego sube tu programa al Arduino y vuelve a conectarlos. Esto lo tienes que hacer cada vez que pases el programa a tu Arduino. Saludos!

  17. Buenas tardes, primero que nada felicitaciones por tu aportacion esta muy completo, mi duda es, que datos son exclusivos para transmitir la temperatura y humedad, es decir, si yo quiero transmitir otro dato que no sea esos, que valores o que lineas es necesario cambiar? quiero transmitir un voltaje de la entrada A0 del aurduino.

Comments are closed.