Subido por Alejandra Diaz Tejada

OPCIONES ADQUISICION

Anuncio
#include <Ethernet.h>
#include <SPI.h>
////////////////////////////////////////////////////////////////////////
//CONFIGURE
////////////////////////////////////////////////////////////////////////
byte server[] = { 192,168,1,10 }; //ip Address of the server you will connect to
String location = "http://192.168.1.10/cargaDatosEnArduino.php HTTP/1.0";
// if need to change the MAC address (Very Rare)
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
////////////////////////////////////////////////////////////////////////
EthernetClient client;
char inString[32]; // string for incoming serial data
int stringPos = 0; // string index counter
boolean startRead = false; // is reading?
void setup(){
Ethernet.begin(mac);
Serial.begin(9600);
}
void loop(){
String pageValue = connectAndRead(); //connect to the server and read the
output
Serial.println(pageValue); //print out the findings.
delay(3000); //wait 3 seconds before connecting again
}
String connectAndRead(){
//connect to the server
Serial.println("connecting...");
//port 80 is typical of a www page
if (client.connect(server, 80)) {
Serial.println("connected");
client.print("GET ");
client.println(location);
client.println();
//Connected - Read the page
return readPage(); //go and read the output
}else{
return "connection failed";
}
}
String readPage(){
//read the page, and capture & return everything between '<' and '>'
stringPos = 0;
memset( &inString, 0, 32 ); //clear inString memory
while(true){
if (client.available()) {
char c = client.read();
if (c == '<' ) { //'<' is our begining character
startRead = true; //Ready to start reading the part
}else if(startRead){
if(c != '>'){ //'>' is our ending character
inString[stringPos] = c;
stringPos ++;
}else{
//got what we need here! We can disconnect now
startRead = false;
client.stop();
client.flush();
Serial.println("disconnecting.");
return inString;
}
}
}
}
}
////////////////////////////////////////////////////////////////////////////////
<?php
$username="usuario";
$password="pass";
$database="domo";
mysql_connect("192.168.1.10",$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
$query="SELECT * FROM actuadores";
$result=mysql_query($query);
$num=mysql_numrows($result);
mysql_close();
$i=0;
$LuzPrincipal=mysql_result($result,$i,"LuzPrincipal");
$LuzMesa=mysql_result($result,$i,"LuzMesa");
$Persiana=mysql_result($result,$i,"Persiana");
$Store=mysql_result($result,$i,"Store");
$Clima=mysql_result($result,$i,"Clima");
$Ventilacion=mysql_result($result,$i,"Ventilacion");
echo '<'.",".$LuzPrincipal.",".$LuzMesa.",".$Persiana.",".$Store.",".$Clima.",".
$Ventilacion.'>'
?>
////////////////////////////////////////////////////////////////////////////////
COMENTARIOS
Primero hace la consulta con los datos que quiero que pasen al arduino, los guardo en
variables y luego simplemente hace un echo uniendo todas las variables, separándolas por
comas para luego en el código del Arduino poder guardarlas en variables diferentes (cosa que
aún está por hacer).
////////////////////////////////////////////////// ////////////////////// ///
CONFIGURE
///////////////////////// ///////////////////////////////////////////////
servidor de bytes [ ] = {174,123,231,247}; // dirección IP del servidor al que se conectará
// La ubicación a la que ir en el servidor
// asegúrese de mantener HTTP / 1.0 al final, esto le indica qué tipo de archivo es
String location = “/ ~ bildr / examples / ethernet / HTTP / 1.0”;
// si es necesario cambiar la dirección MAC (muy rara)
byte mac [] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
////////////////////////////////////////////////// ////////////////////////
Cliente de cliente de Ethernet;
char inString [32]; // cadena para los datos seriales entrantes
int stringPos = 0; // string index counter
boolean startRead = false; // ¿está leyendo?
Void setup () {
Ethernet.begin (mac);
Serial.begin (9600);
}
void loop () {
String pageValue = connectAndRead (); // conectarse al servidor y leer la salida
Serial.println (pageValue); // imprimir los resultados.
delay (5000); // espera 5 segundos antes de volver a conectarte
}
String connectAndRead () {
// connect to the server
Serial.println ("conectando ...");
// el puerto 80 es típico de una página www
si (client.connect (server, 80)) {
Serial.println ("conectado");
client.print ("GET");
client.println (ubicación);
client.println ();
// Conectado - Leer la página
return readPage (); // ve y lee la salida
} else {
return "conexión fallida";
}
}
String readPage () {
// lee la página y captura y devuelve todo entre '<' y '>'
stringPos = 0;
memset (& inString, 0, 32); // borrar la memoria en la cadena
while (verdadero) {
if (client.available ()) {
char c = client.read ();
si (c == '<') {// '<' es nuestro carácter inicial startRead = true; // Listo para comenzar a leer la
parte} else if (startRead) {if (c! = '>') {// '>' es nuestro carácter final
inString [stringPos] = c;
stringPos ++;
} else {
// tengo lo que necesitamos aquí! Podemos desconectar ahora
startRead = false;
client.stop ();
client.flush ();
Serial.println ("desconectar");
retorno enString;
}
}
}
}
}
[/código]
El ejemplo de archivo php. Esto solo crea una cadena alfa-numérica aleatoria como <1Hc2f>
[code lang = "php”]
'
// Entonces, si la salida era <1kjhghk5> - el arduino leería 1kjhghk5
// Solo genera una cadena alfanumérica aleatoria
$ what_the_arduino_reads = '1'.base_convert (rand (10000,9999999), 10, 36);
echo '<'. $ what_the_arduino_reads. '>';
?>
[/ código]
CODIGOS IMPORTANTES
Importación de librerias y definición de modulo Ethernet
//*************** IMPORTACION DE LIBRERIAS
#include <Ethernet.h>
#include <EthernetClient.h>
#include <EthernetServer.h>
#include <SPI.h>
//*************** DEFINICION DE MODULO ETHERNET
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x4E, 0xD7 }; //Define Dirección Mac de Arduino
IPAddress ip(192,168,1,15); //Define dirección IP fija de Arduino
EthernetClient client; //Define Instancia para Cliente Ethernet
char server[]="192.168.1.11"; //Dirección de servidor PHP
Metodo para enviar datos de Temperatura al servidor PHP
//*************** METODO PARA ENVIAR DATOS DE TEMPERATURA
void envioWeb(float tem, String id){//Parametros requeridos Temperatura e ID de sensor
Serial.println("Enviando datos al servidor PHP");
if(client.connect(server,80)){//Conecta al servidor en el puerto 80
Serial.println("GOOD CONECT!");
client.print("GET /domotica/WsArdTemp.php?id="); //Envia petición GET con parametro 'id' del
sensor
client.print(id);//envia valor del parametro id
client.print("&tempe=");//anexa 2do parametro 'tempe'
client.print(tem);//envia el valor del parametro tempe
client.println(" HTTP/1.1");//envia el standar de petición HTTP
client.print("Host: ");//Envia parametro de HOST
client.println(server);//Envia la dirección del Servidor WEB
client.println("User-Agent: Arduino-Ethernet");//dato extra de arduino
client.println("Connection: close");//Cierra la conexión
client.println();
client.stop();//Detiene el CLiente Ethernet
}else{
Serial.println("conexion fallida");
}
}
Método para leer temperatura de los sensores LM35
//***************** METODO PARA LEER TEMPERATURA
float leerTemp(int pin){//Parametro requerido PIN ANALOGO
t=0.0;
temp=0.0;
st=0.0;
for(int i=0;i<15;i++){ //LECtura de 15 datos para fiabilidad
temp+=analogRead(pin);
}
st=temp/15;//Promedio de datos recogidos
t=(5.0*st*100.0)/1024.0;//Conversión a sistema Decimal
return t;//Retorna dato
}
Método de conexión al servidor PHP
//******************* METODO DE CONEXION A SERVIDOR PHP
String conectPhp(){
Serial.println("conectando...");
if (client.connect(server, 80)) {//Conecta al servidor PHP en el puerto 80
Serial.println("connected");
client.print("GET "); //Define metodo de recepción de datos
client.println(location); //Indica la localidad del Script PHP
client.println();
return leerPhp(); //Metodo de lectura de Servidor PHP
}else{return "conexión fallida luces"; }
}//Finaliza metodo para conectar a Servidor PHP
Método para leer los datos del Script php de nuestro Servidor PHP
//******************* METODO PARA LEER DATOS DE SERVIDOR PHP
String leerPhp(){
stringPos = 0; //Reinicia indice
memset( &inString, 0, 32 ); //Limpia Memoria
while(true){
//*********************** COMIENZA LECTURA DEL SERVIDOR PHP
if (client.available()) {
char c = client.read(); //Lee lo que imprime el Servidor PHP en la dirección:
"http://192.168.1.15/domotica/leds.php";
if (c == '<' ) { //Si el caracter leido es el de inicio '<' (ver impresión de variable en servidor php)
startRead = true; //inicia el periodo de lectura del servidor PHP
}else if(startRead){
if(c != '>'){ //Si el caracter es diferente el caracter de finalización '>' (ver impresión de variable
en servidor php)
if(c!=','){//No tomar en cuenta las comas
inString[stringPos] = c; //Asigna valor al espacio de la matriz
stringPos ++; //Aumenta indice para matriz
}
}else{
//*********************** DESCONECTA DEL SERVIDOR PHP
startRead = false;
client.stop();
client.flush();
Serial.println("disconnecting.");
//*********************** INICIA MODULO DE MANEJO DE LEDS
for(int i=0;i<=6;i+=2){
stled=inString[i]-48;
pnled=inString[i+1]-48;
staled=bitRead(PIND,pnled);
Serial.println("Imprime valores de st,sta y pn");
Serial.print(stled);
Serial.print(staled);
Serial.println(pnled);
if(stled!=staled && pnled>0){
if(stled==1){digitalWrite(pnled,HIGH);}
else{digitalWrite(pnled,LOW);}
}
}//fin FOR
//*********************** FIN MODULO DE MANEJO DE LEDS
return inString;
}//fin else c != '>'
}//fin else if(startRead)
}//fin if (client.available())
}//Fin While
}//Fin Metodo
Descargar