Go Down

Topic: Arduino + Base de Datos (Read 1 time) previous topic - next topic

Sergio_94

Buenas a todos, ya me ayudaron hace algunas semanas con alguna duda que tuve de mi proyecto y he conseguido seguir adelante gracias a ello. Mi proyecto consistía en leer los datos de un acelerómetro MMA7361 con un Arduino Mega y a partir de ahí guardar los datos en una tarjeta SD, representarlos en una pantalla LCD...

Lo que me falta para acabar el proyecto es guardar los datos en una BD. Con todo lo que he buscado en Google y en este foro creo que la idea la tengo más o menos clara. Tengo que hacer que cuando le pase a mi Arduino el programa cargue un php del tipo:

Code: [Select]
<?php
# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
 
$fecha date('Y-m-d H:i:s'); // Captura la hora y fecha
 
$x=$_GET['x'];
 
$y=$_GET['y'];
 
$z=$_GET['z'];
$conexion mysql_connect('localhost','usuario de la base','contraseña')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db('Nombre de la base')or die ('Error al seleccionar la Base de Datos: '.mysql_error());
$sql="INSERT INTO Tabla(ejeX, ejeY, ejeZ, fecha ) values('".$x."','".$y."','".$z."','".$fecha ."')";
$res=mysql_query($sql,$conexion);
?>


Y en el Arduino algo del tipo (ajustándolo a mi programa):

Code: [Select]

#include <Ethernet.h>
#include <SPI.h>
#include "DHT.h"
#define DHTPIN 7
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);

// Configuracion del Ethernet Shield
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFF, 0xEE}; // Direccion MAC
byte ip[] = { 192, 168, 1, 177 }; // Direccion IP del Arduino
byte server[] = { 192, 168, 1, 150 }; // ip del Hosting
IPAddress dnServer(8, 8, 8, 8);
// the router's gateway address:
IPAddress gateway(192, 168, 1, 254);
// the subnet:
IPAddress subnet(255, 255, 255, 0);
EthernetClient client;
String readString = String(30);
int analog_pin = 0;

void setup(void) {
  Ethernet.begin(mac, ip, dnServer, gateway, subnet); // Inicializamos el Ethernet Shield
  dht.begin();
  delay(1000); // Esperamos 1 segundo de cortesía
  Serial.begin(9600);

}

void loop(void) {
  int h = dht.readHumidity();// Lee la humedad
  int t = dht.readTemperature();//Lee la temperatura

  if (client.connect(server, 80) > 0) {
    Serial.println("connected");  // Conexión con el servidor

    client.print("GET http://192.168.1.150/APIs/CONSOLA/insercionDatos.php?ID_APARTAMENTO=1&TEMP_ACTUAL="); // Enviamos los datos por GET de temperatura a nuestro archivo php que esta en nuestro hosting
    client.print(t); // valor de temperatura
    client.print("&HUME_ACTUAL=");
    client.print(h);
    client.print("&PERSONAS_ACTUALES=0");
    client.println(" HTTP/1.0");
    client.println("User-Agent: Arduino 1.0");
    client.println();
  }
  client.stop();
  client.flush();
  delay(60000); // E
}


La duda que tengo como subo el php para que que me introduzca los datos al conectar el Arduino. No se muy bien como hacer para que funcione todo junto...

Y la otra duda que tengo es que base de datos usar. He estado mirando el tema de amazon web services  y otros servicios similares por Internet pero no se cual será mejor en este caso.

Un saludo y muchas gracias a todos¡¡

msoffredi

Buen día. Para que el PHP te funcione deberás contratar algun servicio como el que mencionaste (AWS o Amazon Web Services) que soporte PHP y asi te funcionará. Es posible que debas cambiar unas cosas en tu codigo ya que la librería que usaste está deprecada o ya no se usa en PHP y es posible que el proveedor del servicio ya no la soporte. Sin embargo, existe una nueva llamada mysqli que es similar y está soportada y tiene funciones similares que reemplazan a las que usaste.

Habiendo dicho esto, la base de datos debe ser MySQL (ya que eso es lo que estas usando en el codigo) que es una base de datos muy comun y simple de usar.

Finalmente, deberas construir la tabla antes de usarla (para insertar valores), algo que no es muy complicado pero es necesario para que todo funcione.

Sauerte con ese proyecto!
--------------------
Marcelo
arduinohobby.com

Sergio_94

Buenos días, ya me he creado una base de datos en phpMyAdmin. Lo que no tengo muy claro es qué tengo que poner en 'localhost' de mi programa para conectar con la base de datos.
Gracias por contestar.

Go Up