Sensor de temperatura WiFi data logger con el módulo ESP8266 NodMCU
En un anterior articulo vimos el procedimiento para registrar la temperatura en un servidor de base de datos MySQL, por medio de la placa Arduino conectada por ethernet. Ahora, vamos a configurar un sensor de temperatura WiFi data logger con el módulo ESP8266 NodMCU.
Este es el informe gráfico que buscamos con este data logger:
Sensor de temperatura WiFi – Componentes del proyecto
Necesitamos dos componentes principales, que puedes ver en la siguiente tabla:
![]() | ![]() |
|---|---|
| Módulo ESP8266 NodMCU | Sensor de temperatura sumergible DS18B20 (waterproof) |
La verdad es que con este modelo es mucho más sencillo implementar un sensor de temperatura WiFi con registro en MySQL. No necesitamos cables UTP, ni shields adicionales y su alimentación eléctrica entra con microUSB.

Esquema de conexión
La conexión debe quedar como la siguiente simulación:

Modelo de conexión
| PINES ESP8266 | PINES SENSOR |
|---|---|
| 3V3 | VDD |
| GND | GND |
| D1 | DQ |
Programación del sensor de temperatura WiFi en la placa ESP8266 Nod MCU
Antes de proseguir a la programación, debemos instalar en Windows el driver del módulo ESP8266. Puedes descargar el instalador del driver en el siguiente link:
Después, preparamos el IDE de Arduino para trabajar con la placa ESP8266 Nod MCU. Debemos ir a Archivo -> Preferencias -> Gestor de URLs Adicionales de Tarjetas, y colocar ahí la siguiente URL:
http://arduino.esp8266.com/stable/package_esp8266com_index.json

Configuración de la placa o board
Luego, debemos ir a Herramientas -> Placa -> Gestor de tarjetas…
Se nos abrirá una ventana en la que debemos buscar la placa como ESP8266. Seleccionamos la versión 2.0.0 y le damos clic en botón Instalar:

Instalación de la board
Luego, debemos poner la librería ‘DallasTemperature’ en la carpeta de librerias:
Mi carpeta de librerías ha quedado así:
Después, seleccionamos la placa recién instalada en la ruta Herramientas -> Placa -> NodeMCU 1.0 (ESP-12E Module)

Selección de la board
Como puedes ver en la imagen, el IDE de Arduino está establecido para comunicarse con el módulo por el puerto COM37. Puedes verificar el puerto que Windows le asigna al módulo en el Administrador de dispositivos:

El puerto COM para el módulo aparecerá en el Administrador de dispositivos cuando tengas la placa ESP8266 conectado a algún puerto USB del PC
Perfecto! ahora solo es cuestión de pegar el siguiente código en el IDE de Arduino, compilamos, subimos el código a la placa, y listo:
#include <ESP8266WiFi.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS D1 //Se establece el pin D1 como bus OneWire
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire); //Se declara una variable u objeto para nuestro sensor
// Usuario y contraseña de la red WiFi a la que nos vamos a conectar
const char* ssid = "NOMBRE SSID";
const char* password = "CONTRASEÑA";
byte server[] = { 192,168,0,205 }; // ip del Hosting
WiFiClient client;
void setup(void)
{
Serial.begin(9600);
// Conectese al WiFi
WiFi.begin(ssid, password);
// Mientras no conecte al WiFi, muestre '.'
// cuando se conecte, salga del loop
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
//Muestre que ya está conectado a la red WiFi
Serial.println("");
Serial.println("WiFi connected");
// Print the IP address
Serial.println(WiFi.localIP());
sensors.begin();
}
void loop()
{
sensors.requestTemperatures(); // Enviamos este comando para obtener del sensor el valor de la temperatura
float temp = sensors.getTempCByIndex(0);
Serial.println("Temperature is: ");
Serial.println(temp); // Por qué "byIndex"? Por que podemos tener más de un sensor en el mismo bus. 0 se refiere al primer sensor del bus
delay(3000);
if (client.connect(server, 80)>0) {
//Serial.println("connected"); // Conexión con el servidor
client.print("GET http://192.168.0.205/temp_admin.php?valor=");
client.print(temp); // valor de temperatura
client.println(" HTTP/1.0");
client.println("User-Agent: Arduino 1.0");
client.println();
}
delay(600000); //Tiempo de 10 minutos entre cada registro de temperatura
client.stop();
client.flush();
}
Configuración de la base de datos MySQL y conexión PHP
Entonces, como el ESP8862 envía los datos de la temperatura a la URL http://192.168.0.205/temp_admin.php, debemos crear el archivo ‘temp_admin.php‘ del lado del servidor. Este es su código:
<?php
include("dbT.php");
$valor=$_GET['valor'];
mysqli_query("INSERT INTO temp_admin(temperature) VALUES('$valor')");
?>
A su vez el archivo ‘temp_admin.php‘ se conecta a la BD MySQL por medio del archivo ‘dbT.php‘, para que pueda hacer el registro. Este es su código:
<?php ob_start();
$con = mysqli_connect('localhost', 'usuario_de_la_bd', 'contraseña', 'La_BD') or die(mysqli_error());
?>
(Al final de este documento puedes ver la estructura de la tabla MySQL)
Finalmente tenemos la vista que genera el informe gráfico:
<?php $self = $_SERVER['PHP_SELF']; header("refresh:180; url=$self"); include("dbT.php"); include("phpgraphlib/phpgraphlib.php"); $graph=new PHPGraphLib(1140,380); $dataArray=array(); $date=strftime("%Y-%m-%d", time()); //$date="2018-02-10"; //get data from database $sql="SELECT temperature, DATE_FORMAT(fecha, '%H:%i') as hora FROM temp_admin WHERE DATE(fecha)='$date'"; $result = mysqli_query($con, $sql) or die('Query failed: ' . mysql_error()); if ($result) { while ($row = mysqli_fetch_assoc($result)) { $time=$row['hora']; $te=$row['temperature']; $temp=substr($te, 0, 2); //add to data areray $dataArray[$time]=$temp; } } $graph->addData($dataArray); $graph->setTitle('Registro diario de temperatura, Chiller Administracion - SENSOR: 192.168.0.138'); $graph->setBars(false); $graph->setLine(true); $graph->setDataPoints(true); $graph->setupYAxis(10, "#C17884"); $graph->setupXAxis(10, "#C17884"); $graph->setLineColor('#747FFE', 'green'); $graph->setDataPointColor('blue'); $graph->setDataValues(true); $graph->setDataValueColor('maroon'); $graph->setGoalLine(.0025); $graph->setGoalLineColor('red'); $graph->createGraph(); ?> Puedes ver que la vista que genera el informe gráfico hace uso de la librería 'phpgraphlib'. Esta librería recibe los datos que le pasamos desde la tabla MySQL, para graficar los datos.
Puedes descargar la librería ‘phpgraphlib’ aquí mismo.
Estructura de la tabla MySQL

Esquema de la tabla en MySQL
Nota: Por seguridad, el motor de base de datos MySQL no permite realizar operaciones desde un desarrollo con el usuario root. Debes crear un usuario (tuyo) con todos los privilegios.
Tal vez te interese saber cómo instalar una base de datos MySQL
También puedes ver el articulo sobre esta misma función pero con una placa de Arduino.
Opcional
En caso de que las librería propias del ESP8266 no te funcionen, puedes descargar estas las librerías para este proyecto. Extraelos en el subdirectorio libraries del directorio Arduino de tu pérfil:
Y listo.
Valora este artículo:







Pingback: 🥇 Sensor de temperatura data logger Arduino conectado a MySQL