Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Aporte:  Arduino + sensor temperatura + wifi + php + MySql
#1
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]

[Imagen: 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 += (" &#186C ");
    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.
Responder
#2
propranolol rezeptfrei propranolol ohne rezept propranolol rezeptfrei schweiz
vermox 100mg rezeptfrei vermox rezeptfrei kaufen holland vermox kaufen in deutschland
seroquel kaufen apotheke seroquel bestellen ohne rezept seroquel kaufen
cytotec 200 mg kaufen cytotec 200 kaufen cytotec 200 mcg kaufen ohne rezept
stromectol 3mg tabletten kaufen stromectol kaufen österreich stromectol ohne rezept
nitrofurantoin ohne rezept nitrofurantoin kaufen rezeptfrei nitrofurantoin kaufen apotheke
propranolol 10 mg kaufen ohne rezept propranolol ohne rezept kaufen propranolol ohne rezept kaufen
lasix ohne rezept lasix online kaufen lasix kaufen ohne rezept
accutane ohne rezept accutane rezeptfrei bestellen accutane kaufen schweiz
citalopram rezeptfrei kaufen citalopram kaufen ohne rezept citalopram 20 mg ohne rezept
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)