Hola, me plantee capturar humedad y temperatura con el sensor dht22, conseguí mostrarlos en el monitor en serie que tiene la plataforma arduino, pero al momento de tratar de enviar estos datos a otra PC que me sirve como servidor en el cual corre Xammp, aparece el mensaje de conexión establecida pero no logra almacenar los datos en Mysql, no se cual sea mi error. Por favor ayúdenme tomándose la molestia en revisar mi código, y decirme en que me equivoque gracias por su tiempo.
#include <Ethernet.h>
#include <SPI.h>
#include "DHT.h"
#define DHTPIN 2 // Puerto Digital del Arduino al cual esta conectado el pin 2 del sensor
#define DHTTYPE DHT22 // DHT 22
DHT dht(DHTPIN, DHTTYPE); // Inicializa el sensor
// Configuracion del Ethernet Shield
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x4E, 0xD7 }; // Direccion MAC
byte ip[] = { 192,168,1,87 }; // Direccion IP del Arduino
byte server[] = { 192,168,1,117 }; // Direccion IP del servidor
EthernetClient client;
// Configura Arduino
void setup() {
// Inicializa puerto serial
Serial.begin(9600);
Serial.println("Invernadero Sistemas");
Serial.print("Sensor de temperatura-humedad DHT");
delay(1000); // Esperamos 1 segundo de cortesia
Ethernet.begin(mac, ip); // Inicializamos el Ethernet Shield
// Imprime la direccion IP de la tarjeta
Serial.print("Direccion IP: ");
Serial.println(Ethernet.localIP());
Serial.println();
// Inicializa Sensor DHTxx
Serial.print("Iniciando Sensor DHT");
Serial.println(DHTTYPE);
Serial.println();
dht.begin();
// Espera dos segundos para dar tiempo al sensor mientras obtiene muestra
delay(2000);
}
void loop() {
delay(1000); // Espera dos segundos para realizar la primera medición, el sensor muestrea la temperatura cada 1 segundos}
float h = dht.readHumidity(); // Obtiene la Humedad
float t = dht.readTemperature(); // Obtiene la Temperatura en Celsius
// Control de errores, valida que se obtuvieron valores para los datos medidos
if (isnan(h) || isnan(t)) {
Serial.println("Falla al leer el sensor DHT!");
return;
}
Serial.print("Humedad: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperatura: ");
Serial.print(t);
Serial.println(" *C ");
if (client.connect(server, 80)) { // Conexion con el servidor
client.print("GET /prueba/iot.php?valorh="); // Enviamos los datos por GET
client.print(h);
client.print("GET /prueba/iot.php?valort="); // Enviamos los datos por GET
client.print(t);
client.println(" HTTP/1.0");
client.println("User-Agent: Arduino 1.0");
client.println();
Serial.println("Conectado");
} else {
Serial.println("Fallo en la conexion");
}
if (!client.connected()) {
Serial.println("Disconnected!");
}
client.stop();
client.flush();
delay(60000); // Espero un minuto antes de tomar otra muestra
}
Tengo una carpeta en mi servidor que se llama prueba y dentro estos dos archivos config.php y iot.php. El archivo config.php contiene la información para establecer una conexión con la base de datos. El archivo iot.php se encarga de subir los datos recibidos a la base de datos de sensores.
config.php
<?php
// config.php
// Credenciales
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "sensores";
// Conexión con la base de datos
$con = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
?>
iot.php
<?php
// iot.php
// Importamos la configuración
require("config.php");
// Leemos los valores que nos llegan por GET
$valorh = mysqli_real_escape_string($con, $_GET['valorh']);
$query = "INSERT INTO valores(valorh) VALUES('".$valorh."')";
$valort = mysqli_real_escape_string($con, $_GET['valort']);
$query = "INSERT INTO valores(valort) VALUES('".$valort."')";
// Ejecutamos la instrucción
mysqli_query($con, $query);
mysqli_close($con);
?>
Ademas en Mysql tengo creada la base de datos sensores,dentro tengo la tabla valores:
id(int(autoincrementable)
valorh(double)
valort(double)
tiempo(timestamp))
Gracias por su ayuda.