05-03-2021, 22:10 
		
	
	
		Saludos.
Os voy a mostrar como desde un sensor de humedad y temperatura DHT11 conectado a la placa Arduino se puede enviar vía wifi a un servidor web los datos de humedad y temperatura y almacenarlos en una base de datos en los intervalos de tiempos que deseemos.
Materiales utilizados:
![[Imagen: WIFI-HLK-RM04.jpg]](http://chujalt.com/1/imagenes/WIFI-HLK-RM04.jpg) 
![[Imagen: dht11.jpg]](http://chujalt.com/1/imagenes/dht11.jpg)
Conexiones:
Software necesario:
Código para Arduino:
intro.php:
conex.php:
Base de datos Mysql:
Consideraciones previas: Al módulo Wifi HLK-RM04 le he asignado una ip fija en mi red, la 192.168.1.254 y el puerto 8080.
Explicación cómo funciona:
La placa Arduino recoge los datos de humedad y temperatura que le proporciona el sensor y crea una sencilla página html con un formulario con estos datos que mediante javascript se autoejecuta.
En el navegador de nuestro PC ponemos la dirección 192.168.1.254:8080, entonces se inicia la comunicación con el módulo wifi y nos es enviada la página web mencionada anteriormente.
Como el formulario enviado se autoejecuta, nos envía a la página intro.php, donde se introducen los datos recibidos en la base de datos y comienza una cuenta atrás de 60 segundos y volver a la dirección 192.168.1.254:8080 y así tener un bucle e ir almacenando los datos cada 60 segundos. Por supuesto esta cantidad de segundos se pueden variar y poner el tiempo que queramos.
Bueno, espero que le sirva a alguien.
Saludos.
	
	
	
	
	
Os voy a mostrar como desde un sensor de humedad y temperatura DHT11 conectado a la placa Arduino se puede enviar vía wifi a un servidor web los datos de humedad y temperatura y almacenarlos en una base de datos en los intervalos de tiempos que deseemos.
Materiales utilizados:
- Una placa Arduino (yo he utilizado la Uno).
 
- Un módulo wifi HLK-RM04.
 
- Un sensor de temperatura DHT11.
 
- 7 cables Dupont.
 
![[Imagen: WIFI-HLK-RM04.jpg]](http://chujalt.com/1/imagenes/WIFI-HLK-RM04.jpg)
![[Imagen: dht11.jpg]](http://chujalt.com/1/imagenes/dht11.jpg)
Conexiones:
- Pin RX del módulo HLK-RM04 a pin TX de Arduino.
 
- Pin TX del módulo HLK-RM04 a pin RX de Arduino.
 
- Pin 5V del módulo HLK-RM04 a pin 5V de Arduino.
 
- Pin GND del módulo HLK-RM04 a pin GND de Arduino.
 
- Pin datos del DHT11 a pin 2 de Arduino.
 
- Pin VCC del DHT11  a pin 3,5V de Arduino.
 
- Pin GND del DHT11 a pin GND de Arduino.
 
Software necesario:
- El código para la placa Arduino.
 
- Dos páginas web php, una para conectar a la base de datos y otra para introducir los datos en ésta.
 
- Una base de datos Mysql.
 
Código para Arduino:
Código:
#include "DHT.h"
#define DHTPIN 2     
#define DHTTYPE DHT11  
DHT dht(DHTPIN, DHTTYPE);
void setup() {                
  Serial.begin(57600);
  dht.begin(); 
}
void loop() {
  boolean has_request = false;
  int h = dht.readHumidity(); int t = dht.readTemperature();
  if (Serial.available()) {
    while(Serial.available()) {char c = Serial.read();}
    has_request = true;
  }
  if (has_request) {
    Serial.println("HTTP/1.1 200 OK");
    Serial.println("Content-Type: text/html");
    Serial.println("Connection: close");     
    String sr = "<!DOCTYPE HTML>\n";
    sr += "<html>\n";
    sr += "Humedad: "; 
    sr += h; 
    sr += (" %\t");
    sr += "<br />\n";
    sr += "Temperatura: "; 
    sr += t; 
    sr += (" ºC ");
    sr += "<br />\n";
sr += "<form name=\"formulario\" action=\"http://localhost/arduino/wifi/temperatura/intro.php\" method=\"post\">";
sr += "  <input type=\"hidden\" name=\"humedad\" value=\"";
sr += h;
sr += "\" />";
sr += "  <br/>";
sr += "  <input type=\"hidden\" name=\"temperatura\" value=\"";
sr += t;
sr += "\" />";
sr += "  <br/>";
sr += "</form>";
sr += "<script>";
sr += "document.formulario.submit();"; 
sr += "</script>";
    sr += "</html>";
    Serial.print("Content-Length: ");
    Serial.print(sr.length());
    Serial.print("\r\n\r\n");
    Serial.print(sr);
    has_request = false;
  }
}intro.php:
Código PHP:
<!DOCTYPE html>
<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="content-type">
    <title></title>
<script language="JavaScript">
 
    var totalTiempo=60;
    var url="http://192.168.1.254:8080";
 
    function updateReloj()
    {
        document.getElementById('CuentaAtras').innerHTML = "Se volverán a tomar datos en "+totalTiempo+" segundos";
 
        if(totalTiempo==0)
        {
            window.location=url;
        }else{
            totalTiempo-=1;
            setTimeout("updateReloj()",1000);
        }
    }
 
    window.onload=updateReloj;
 
    </script>
  </head>
  <body>
<?
$humedad = $_POST['humedad'];
$temperatura = $_POST['temperatura'];
if (!isset($humedad)){ 
echo "Datos no recibidos. Error";
}
else 
{
include("conex.php");
 if(mysql_query("INSERT INTO datos (humedad, temperatura) 
  VALUES ('$humedad', '$temperatura')"))
 {
echo "<p align='center'><b><font color='#000000' face='Arial, Helvetica, sans-serif' size='3'>Los datos han sido introducidos correctamente:<br>
Humedad: $humedad<br>
Temperatura: $temperatura<br>
</p>";
echo "<h2 id='CuentaAtras' align='center'></h2>";
}
else
 {
 echo "<p align='center'><b><font color='#000000' face='Arial, Helvetica, sans-serif' size='5'>Ha habido problemas. Vuelva a intentarlo</b></p>";
 }
 }
?>
  </body>
</html> 
conex.php:
Código PHP:
<?
 $link = mysql_connect("localhost" ,"usuario","contraseña") or die("no se da conectado");
mysql_select_db("hutem",$link) or die("no se da seleccionado");
?>Base de datos Mysql:
- Nombre base de datos: hutem
 
- Nombre de tabla: datos
 
- 4 campos: id, humedad, temperatura, fecha (con la propiedad timestamp, para saber cuando se introdujeron los datos)
 
Consideraciones previas: Al módulo Wifi HLK-RM04 le he asignado una ip fija en mi red, la 192.168.1.254 y el puerto 8080.
Explicación cómo funciona:
La placa Arduino recoge los datos de humedad y temperatura que le proporciona el sensor y crea una sencilla página html con un formulario con estos datos que mediante javascript se autoejecuta.
En el navegador de nuestro PC ponemos la dirección 192.168.1.254:8080, entonces se inicia la comunicación con el módulo wifi y nos es enviada la página web mencionada anteriormente.
Como el formulario enviado se autoejecuta, nos envía a la página intro.php, donde se introducen los datos recibidos en la base de datos y comienza una cuenta atrás de 60 segundos y volver a la dirección 192.168.1.254:8080 y así tener un bucle e ir almacenando los datos cada 60 segundos. Por supuesto esta cantidad de segundos se pueden variar y poner el tiempo que queramos.
Bueno, espero que le sirva a alguien.
Saludos.


