Re: Capteur pour plantes vertes - WIP - Les codes et pb d'alim

Comme promis voici mes codes :

en premier le code du capteur avec :un nRF24L01+, un dht11 (humidité air + temperature, sonde humidité sol, luminosité et une tentative de sleep mais j'en reparle a la fin.

//***********************************************************************************************************/
// Programme du capteur BambooProbe Humidité du sol, humidité de l'air, température de l'air et Luminosité
// 
// Code nRF24L01+ inspiré de http://geeklaboratories.com/408-comment-monitorer-le-climat-de-son-domicile-avec-arduino
// 
// David M - plantesvertes.net
//***********************************************************************************************************/
// La library sleep mode
#include <Sleep_n0m1.h>
Sleep sleep;
unsigned long sleepTime; //how long you want the arduino to sleep


//Inclure la librairie de pilotage du capteur DHT11
    #include <dht11.h> 
    dht11 DHT;        //Instancier un capteur de type dht11
    #define DHT11PIN 2  //Branché sur pin2 digital
//***********************************************
  
    
    #include <SPI.h> //Bibliothèque gérant les connexions SPI
    
    //Bibliothèques gérant les nRF24L01+
    #include <Mirf.h>
    #include <nRF24L01.h>
    #include <MirfHardwareSpiDriver.h>
//***********************************************
    //La dernière fois que l'on a envoyé des données via le nRF (en ms)
    long lastSend = 0;
     
    //Le delai entre chaque envois (en ms)
    int sendDelay = 5*1000;//Ici 5sec
    
    //L'identifiant de chaque sonde. Cette identifiant doit être propre à une sonde.
    int probeId = 0;
     
     
    // on declare le capteur sol
    int PinAnalogiqueHumidite=0;       //Broche Analogique de mesure d'humidité A0
    int PinNumeriqueHumidite=6;        //Broche Numérique mesure de l'humidité
    int hsol;  //Humidite su sol, mesure analogique
    int secheresse;  //0 ou 1 si seuil atteint
    
    //**************************
    
   // on declare le capteur lumière sur A1
   const int sensorLightPin = A1;
   int sensorLightValue = 0;
   int lightValue = 0;
     
     
   
   // on setup  
   
   void setup() {
        Serial.begin(9600); //on ouvre un port pour tout le monde
         sleepTime = 20000; //set sleep time in ms, max sleep time is 49.7 days
        
        
       
        
         //On inialise MIRF pour pouvoir gérer nos nRFs
        Mirf.spi = &MirfHardwareSpi;
        Mirf.init();
        Mirf.setRADDR((byte *)"prob1");//Le nom du capteur de la sonde
        Mirf.payload = 12;//La longueur des paquets qui transiteront
        Mirf.config();
        Mirf.setTADDR((byte*)"serv0");//Le nom du serveur à qui on transmet nos données
 
        Serial.println( "nRF24L01+ initialise!" );
        
        //********************
        
        pinMode(PinAnalogiqueHumidite, INPUT);       //pin A0 en entrée analogique
        pinMode(PinNumeriqueHumidite, INPUT);  //pin 6 en entrée numérique
    }  
   
   
    void loop() { //boucle principale
    
    //Si on a atteint le délai entre deux envois de données
  if(lastSend+sendDelay <= millis())
  {
    Serial.println("Sending...");
     
    //Si on est en train d'envoyer, on attend que ce soit fini
    while(Mirf.isSending()){
    }
     // on lit les données du capteur lumiere et on stock dans lightValue
     lightValue = analogRead(sensorLightPin);
     
     hsol = analogRead(PinAnalogiqueHumidite); // Lit la tension analogique du capteur sol
        secheresse = digitalRead(PinNumeriqueHumidite);
 
    //On actualise les valeurs du DHT11
    DHT.read(DHT11PIN);  

    //On crée le paquet d'une longueur de 12 octets
    byte packet[6];
     
    //L'identifiant du capteur
    packet[0] = probeId;
     
    //La température
    packet[1] = DHT.temperature;
     
    //L'humidité
    packet[2] = DHT.humidity;
    
    //Le sol
    packet[3] = (hsol/4);
    
    //la lumiere
    packet[4] = lightValue;
    
    // la secherresse
    packet[5] = secheresse;
     
    //On envoit le paquet
    Mirf.send(packet);
     
    //On affiche les données du paquet pour le debug
    Serial.print("Temp:");
    Serial.println(packet[1]);
    Serial.print("Humi:");
    Serial.println(packet[2]);
    Serial.print("hsol:");
    Serial.println(packet[3]);
    Serial.print((float)hsol);
    Serial.print("lumiere:");
    Serial.println(packet[4]);
    Serial.print("secheresse:");
    Serial.println(packet[5]);
    
     
    //On actualise la "date" du dernier envoi de données
    lastSend = millis();
  }
  delay(2000);
    sleep.pwrDownMode(); //set sleep mode
  sleep.sleepDelay(sleepTime); //sleep for: sleepTime
}