bonjour à toutes et tous
voila mon petit probleme j ai deux cartes arduino qui sont connectees entre elle avec un emetteur recepteur 433mhz la carte qui a le recepteur a aussi un shield ethernet branché sur ma box et qui envoi des donnees à un serveur wamp sur mon ordi.
pour l'instant la carte emettrice n'envoi que temperature et humidité j aimerai y ajouter par la suite un capteur de niveau et un capteur de presence
mon soucis et que du coté du shield ethernet j'arrive à inscrire des donnees sur le serveur wamp mais ca me parait aléatoire j'imagine que mon programme à un soucis dans son ecriture j'aimerai voir avec vous s'il est possible de l'ameliorer.
voila donc le programmme et merci d'avance a ceux qui s'y pencheront
#include <VirtualWire.h>
#include <SPI.h>
#include <Ethernet.h>
//declaration variables
int mouvement_detecte;
int humidite;
int temperature;
unsigned long temps;
//init pour ethernet
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };//adresse mac du shield
IPAddress server(192,168,0,10); //l'adresse ip du serveur ici wamp
IPAddress ip(192, 168, 0, 32); //l'adresse ip du shield
EthernetClient client;
//init tableau de string à envoyer
char mess_recu_mvt[64];
//setup
void setup()
{
Serial.begin(9600);
pinMode(2,OUTPUT);//pin pour le ventilo
pinMode(10,OUTPUT);//pin pour la led
if (Ethernet.begin(mac)==0)
{
Serial.println("Connection impossible revoir parametre DHCP");
Ethernet.begin(mac, ip);
}
delay(1000);
Serial.println("connexion...");
if (client.connect(server, 80))
{
Serial.println("connecté");
client.println("Connection: fermee");
client.println();
}
else {
Serial.println("connection corrompu");
}
vw_set_rx_pin(3);
vw_setup(2000); // Bits par seconde
vw_rx_start();
}
//loop
void loop()
{
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
if (vw_wait_rx_max(200)) // Si un message est reçu dans les 200ms qui viennent
{
Serial.println("take_message");
if (vw_get_message(buf, &buflen))
{
Serial.println("get_message");
int i;
for (i=0;i<buflen;i++)
{
mess_recu_mvt[i] = char(buf[i]);
digitalWrite(10, true);
//sscanf(mess_recu_mvt, "%d,%d,%d",&mouvement_detecte,&temperature,&humidite);
sscanf(mess_recu_mvt, "%d,%d",&temperature,&humidite);
Serial.print("la temperature est de : " );
Serial.print(temperature);
Serial.println(" *C");
Serial.print("le taux d'humidite est de : ");
Serial.print(humidite);
Serial.println(" %");
Serial.println("on entre dans la boucle connexion au serveur");
digitalWrite(10,false);
delay(10000);
}
if ((millis()-temps)>60000)
Serial.println("temps");
{
if (client.connect(server,80))
{
Serial.println("youhou");
client.print("GET /temperature_2/add_data.php?");
client.print("temperature=");
client.print(temperature);
client.print("&humidite=");
client.print(humidite);
client.println( " HTTP/1.1");
client.println( "Host: 192.168.0.10" );
client.print(" Host: ");
client.println(server);
client.println( "Connection: close" );
client.println();
client.println();
client.stop();
Serial.println("je suis entré dans la methode get");
digitalWrite(10,false);
temps=millis();
}
if (client.connected())
{
client.stop();
}
//delay(60000);
}
}
}
memset( mess_recu_mvt, 0, sizeof( mess_recu_mvt));// pour reset le string recu
if (temperature>=20)
{
digitalWrite(2,HIGH);
}
else
{
Serial.println("temperature basse");
delay(5000);
}
// if (mouvement_detecte ==1)
// {
// // digitalWrite(10, true);
// Serial.print("attention mouvement detecte : ");
// Serial.println(mouvement_detecte);
// // digitalWrite(10, false);
// delay(3000);
//
// }
}