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 pero por medio del módulo ESP8266 NodMCU.

Componentes del proyecto


Necesitamos dos componentes principales, que puedes ver en la siguiente tabla:

ESP8266 NodMCUESP8266 NodMCU
Módulo ESP8266 NodMCUSensor 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:

sensor de temperatura WiFi

Modelo de conexión

PINES ESP8266PINES SENSOR
3V3VDD
GNDGND
D1DQ

Programación del sensor de temperatura WiFi en la placa ESP8266 Nod MCU


Antes de proseguir a la programación, debemos instalar el Windows el driver del módulo ESP8266. Puedes descargar el instalador del driver en el siguiente link:

CH341SER.zip

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

sensor de temperatura WiFi

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. Luego, le damos clic en botón Instalar

Instalación de la board

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


Para los registros en la BD MySQL del sensor de temperatura debemos tener del lado del servidor un script PHP llamado temp_admin.php, con el siguiente código:

<?php
include("dbT.php");
$valor=$_GET['valor'];
mysql_query("INSERT INTO temp_admin(temperature) VALUES('$valor')");

?>

Para el módulo del informe gráfico podemos usar el archivo temperatura.php, con el siguiente código:

<?php
$self = $_SERVER['PHP_SELF'];
header("refresh:180; url=$self");

include("db_temp.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 = mysql_query($sql) or die('Query failed: ' . mysql_error());

if ($result) {
 while ($row = mysql_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();
?>

El siguiente código es del archivo db_temp.php que hace la conexión a la base de datos:

<?php

ob_start();
define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', 'contraseña de root de MySQL');
define('DB_DATABASE', 'temperatura');
$connection = mysql_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD) or die(mysql_error());
$database = mysql_select_db(DB_DATABASE) or die(mysql_error());

?>

Tenemos la estructura de la tabla:

Esquema de la tabla en MySQL

También puedes ver el articulo sobre esta misma función pero con una placa de Arduino.

Descarga las librerías para este proyecto. Extraelos en el subdirectorio libraries del directorio Arduino de tu pérfil:

ESP8266WiFi.zip

OneWire-master.zip

Y listo.

 

Data logger de temperatura con WiFi Overall rating: ☆☆☆☆☆ 0 based on 0 reviews
5 1

 

Su nombre
Email
Titulo
Valoración
Opinión

 

Comparte esto en
Publicado en Tecnología.