[RESOLU] test emetteur recepteur 433 mhz et envoi donnees sur serveur

Bonjour à toutes et tous

novice en arduino je fais des petits tests avec deux cartes arduino uno une avec un capteur de température dht11, détecteur de mvt et emetteur 433mhz + des leds qui m'indiquent des etats et de l'autre coté une carte Mega avec une ethernet shield un ventilo le recepteur 433 mhz et une led pour m'indiquer un etat. mon ethernet shield envoi les données sur un wampserver afin de pouvoir lire les donnees sur une page php et de les inscrire sur une base de donnees mysql voila donc pour la description.

pour la partie pratique c'est une autre histoire :o

mon programme du coté mega me pose des problemes sur le serveur wamp par exemple j'ai 0 d'afficher pour la temperature et l'humidité alors que mes donnees sont bien envoyées mon ventilo demarre bien plus tard j'ai tout les ingredients mais mon plat et indigeste :disappointed_relieved: je ne vois pas ou j'ai un pb sur mon code si parmi vous il y a un oeil attentif à ce que j'ai fait je suis preneur voila donc le code dans un premier temps je mets le code pour la partie captage des donnees et emission et dans la deuxieme partie je mets réception des données et envoi sur serveur

merci et à bientôt j’espère.

partie 1

#include "DHT.h"

#include <VirtualWire.h>

#define DHTPIN 2 //pin data du dht11
#define DHTTYPE DHT11 //on utilise le capteur dht11 

//variable et initalisation  pour dht11

DHT dht(DHTPIN, DHTTYPE);


//variable pour capteur PIR
//temps pour calibrer le capteur
int calibrationTime = 30;        
//temps pour le capteur  allumé apres avoir dit qu'il ne detectait plus aucun mouvement
long temps;
long unsigned int lowIn; 
long unsigned int pause = 5000;  
boolean lockLow = true;
boolean takeLowTime;  
int pirPin = 7;    //capteur PIR sur pin 7  
int ledPin = 8;    //led pour indiquer presence pin8
int txPin=3;

// variable 433mhz

int mouvement_detecte;
char MessageMvt[64];


//SETUP

  void setup(){
    Serial.begin(9600);
    pinMode(pirPin, INPUT);
    pinMode(ledPin, OUTPUT);
    digitalWrite(pirPin, LOW);
    pinMode(txPin, OUTPUT);
    digitalWrite(txPin,LOW);
    temps=millis();
    dht.begin();
     vw_set_tx_pin(12);
     vw_setup(2000);     // Bits par seconde
    //laisser le temps au cateur de se calibrer
    Serial.print("calibrating sensor ");
      for(int i = 0; i < calibrationTime; i++){
        Serial.print(".");
        delay(1000);
        }
      Serial.println(" done");
      Serial.println("SENSOR ACTIVE");
      delay(50);
    }


//LOOP
  
  void loop(){
        delay(2000);
       if ((millis() - temps) >150000)
       {
                 
        int humidite = dht.readHumidity();
        int temperature = dht.readTemperature();
        digitalWrite(txPin, true);
        Serial.print("temperature : ");
        Serial.println(temperature);
        Serial.print("humidite: ");
        Serial.println(humidite);
      


        sprintf(MessageMvt,"%d,%d",temperature,humidite);
        vw_send((uint8_t *)MessageMvt, strlen(MessageMvt));
        vw_wait_tx(); // On attend la fin de la transmission
        temps=millis();
        digitalWrite(txPin, false);
       }
        
        //bloc capteur mvt
        if(digitalRead(pirPin) == HIGH){
         digitalWrite(txPin, true); // flash pour voir que ca transmet la led est sur la pin3
         digitalWrite(ledPin, HIGH);   //allumé la led si mouvement
         mouvement_detecte=1;
         sprintf(MessageMvt,"%d",mouvement_detecte);
        vw_send((uint8_t *)MessageMvt, strlen(MessageMvt));
        vw_wait_tx(); // On attend la fin de la transmission
         digitalWrite(txPin, false);
         delay(1000);  // et on se repose un peu...
         if(lockLow){  
           //etre sur d'attendre un changement d'etat avant qu'un autre mouvement ne soit detecté
           lockLow = false;            
           Serial.println("---");
           Serial.print("motion detected at ");
           Serial.print(millis()/1000);
           Serial.println(" sec");
           Serial.println(mouvement_detecte); 
           delay(50);
           }         
           takeLowTime = true;
           }
         if(digitalRead(pirPin) == LOW){       
         digitalWrite(ledPin, LOW);  
         if(takeLowTime){
          lowIn = millis();          
          takeLowTime = false;      
          }
          if(!lockLow && millis() - lowIn > pause)
          {  
             lockLow = true;                        
             Serial.print("motion ended at ");      
             Serial.print((millis() - pause)/1000);
             Serial.println(" sec");
             mouvement_detecte=0;
             delay(50);
             }
         }
  
  
  }

et en deuxieme partie

#include <VirtualWire.h>
#include <SPI.h>
#include <Ethernet.h>

//declaration variables 
int mouvement_detecte;
int humidite;
int temperature;


//init pour ethernet
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress server(192,168,0,10); 
IPAddress ip(192, 168, 0, 32);
EthernetClient client;

//init tableau de string à envoyer
char mess_recu_mvt[12];

//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_get_message(buf, &buflen)) 
    {
      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);
        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(1000);
          }
       //envoi des temperature tout les 1/4 d'heures au serveur 
       
        if (client.connect(server,80))
        {
         Serial.println("youhou");
         client.print("GET /temperature_2/add_data.php?");
         client.print("temp=");
         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");
           delay(15000);
          }
          if (client.connected())
          {
            client.stop();
            }

       
        
        
        if (temperature>=20) 
        {
          digitalWrite(2,HIGH);
        }
        else
        {
          Serial.println("temperature basse");
        }
        if (mouvement_detecte ==1)
        {
          digitalWrite(10, true);
          Serial.print("attention mouvement detecte : ");
          Serial.println(mouvement_detecte);
          digitalWrite(10, false);  
          delay(3000);
          
        }
   


memset( mess_recu_mvt, 0, sizeof( mess_recu_mvt));// pour reset le string recu

}

encore merci :wink:

bonjour à toutes et tous

bon toujours pas d'oeil attentif 8) bien dommage je n'arrive pas à avancé comme je voudrais mais bon.

j'ai viré la partie detection de mvt pour le moment du coup j'ai juste l'humidité qui s'affiche sur ma page php mais pas la temperature j'ai aussi enlever la fonction millis dans la partie emetteur donc petite amelioration mais mon code et quand meme un peu bancale je vais essayer de reprendre tout ca mais une aide exterieure serait la bienvenue

merci encore

a+

salut

sujet résolu je m’étais trompé sur le nom d'une variable temp au lieu de température cela fonctionne le voila donc après quelques modifs ça pourra toujours aider certains

#include <VirtualWire.h>
#include <SPI.h>
#include <Ethernet.h>

//declaration variables 
int mouvement_detecte;
int humidite;
int temperature;


//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);
                    }
             } 
       
        }
    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); 
          }
    if (client.connected())
          {
            client.stop();
           }  
   delay(600000);
   if (temperature>=20) 
       {
          digitalWrite(2,HIGH);
        }
        else
        {
          Serial.println("temperature basse");
        }
//        if (mouvement_detecte ==1)
//        {
//         // digitalWrite(10, true);
//          Serial.print("attention mouvement detecte : ");
//          Serial.println(mouvement_detecte);
//         // digitalWrite(10, false);  
//          delay(3000);
//          
//        }
   


memset( mess_recu_mvt, 0, sizeof( mess_recu_mvt));// pour reset le string recu

}

la partie mvt detecté et pour le moment desactivé :grinning:

a+