Problème sketch DHT11

Demande et retour de test
lucien
Messages : 131
Inscription : 15 Novembre 2013, 13:15
Localisation : Saint-Nazaire

Problème sketch DHT11

Messagepar lucien » 07 Mars 2015, 15:13

Bonjour

Quelqu'un a-t-il réussi a faire fonctinner ce sketch :
http://wiki.ydle.fr/doku.php?id=ydle:no ... uino_dht11

sa compile bien mais ca n'envoie pas de trame

le sketch " test_emetteur" lui fonctionne

merci de vos retour

Bon week-end
Lucien

fets13
Messages : 100
Inscription : 30 Novembre 2013, 22:49
Localisation : 83

Re: Problème sketch DHT11

Messagepar fets13 » 07 Mars 2015, 19:35

Hello,
Le seul truc que je vois c'est que ton dht11 est mal branché (ou il ne marche pas) et donc dht.read(DHT_PIN) doit renvoyer autre chose que DHTLIB_OK (=0) ;
Pour être sûr, tu pourrais rajouter une ligne de debug dans le else que if, du style :
Serial.println("DHT11 KO");

Je viens de regarder le fichier dht11.cpp et les codes d'erreur retour de read sont :
- DHTLIB_ERROR_CHECKSUM = -1
- DHTLIB_ERROR_TIMEOUT = -2

Tiens nous au jus

lucien
Messages : 131
Inscription : 15 Novembre 2013, 13:15
Localisation : Saint-Nazaire

Re: Problème sketch DHT11

Messagepar lucien » 09 Mars 2015, 11:13

Bonjour

fets13 a écrit :Hello,
Le seul truc que je vois c'est que ton dht11 est mal branché (ou il ne marche pas) et donc dht.read(DHT_PIN) doit renvoyer autre chose que DHTLIB_OK (=0) ;
Pour être sûr, tu pourrais rajouter une ligne de debug dans le else que if, du style :
Serial.println("DHT11 KO");

Je viens de regarder le fichier dht11.cpp et les codes d'erreur retour de read sont :
- DHTLIB_ERROR_CHECKSUM = -1
- DHTLIB_ERROR_TIMEOUT = -2

Tiens nous au jus


j'ai rajouté un else dans le programme mais je n'ai aucune info dans le terminal serial

Code : Tout sélectionner

void loop()
{
   y.receive();
   if(y.initialized()){
      cur_time = millis();
      if(cur_time - last_send >= DELAY_SEND){
         last_send = cur_time;
         // code de récupération des informations venant du capteurs
         if(dht.read(DHT_PIN) == DHTLIB_OK){
           
          // Création de la frame qui va être envoyée
            Frame_t frame;
            // On y insère les différentes valeurs dont nous avons besoin
 
            /** Nous demandons un accusé réception.
            * La bibliothèque va s'occuper seule de l'acquittement
            * Si aucun acquittement n'est reçu au bout d'une seconde
            * elle procédera à un nouvel envois. Si au bout de 3 envois successifs
            * aucun acquittement n'est reçu, nous considérons la trame comme perdue.
            */
            y.dataToFrame(&frame, YDLE_TYPE_STATE_ACK);
 
            /** Nous ajoutons nos valeurs que nous avons récupérées auprès du capteur
            */
            y.addData(&frame, YDLE_DATA_DEGREEC, dht.temperature);
            y.addData(&frame, YDLE_DATA_HUMIDITY, dht.humidity);
            /** Nous procédons à l'envoi de la trame.
            *
            */
            y.send(&frame);
         }
         else{
         Serial.println("DHT11 KO");
         }
         
      }


bon le else est peut-être mal codé ??

lucien

fets13
Messages : 100
Inscription : 30 Novembre 2013, 22:49
Localisation : 83

Re: Problème sketch DHT11

Messagepar fets13 » 09 Mars 2015, 13:11

Non, le else est good.
Tu n'aurais pas un problème d'init de ton node ? Tu lui as bien programmé son ident ?
sinon il faut mettre un else au "if(initialized()) "

Tu utilises un arduino ou un atmega328 ? Si atmega, l'as-tu déjà utilisé auparavant ?

lucien
Messages : 131
Inscription : 15 Novembre 2013, 13:15
Localisation : Saint-Nazaire

Re: Problème sketch DHT11

Messagepar lucien » 09 Mars 2015, 23:12

bon j'ai testé mon capteur avec ce programme

Code : Tout sélectionner

#include <dht11.h> // charger la librairie

dht11 DHT11; // Créer le capteur

#define DHT11PIN 9 // Définir la pin utilisée

void setup()
{
  // Initialiser la liaison série
  Serial.begin(115200);
}

void loop()
{
  Serial.print(" --- Nouvelle lecture --- ");

  int chk = DHT11.read(DHT11PIN); // Lecture du capteur

  Serial.print("Etat du capteur: ");

  switch (chk) // Est-ce que le capteur fonctionne?
  {
    case DHTLIB_OK:
                Serial.println("OK");
                break;
    case DHTLIB_ERROR_CHECKSUM:
                Serial.println("Checksum erreur");
                break;
    case DHTLIB_ERROR_TIMEOUT:
                Serial.println("Time out erreur");
                break;
    default:
                Serial.println("Erreur inconnue");
                break;
  }

  Serial.print("Humidite (%): "); // Humidité
  Serial.println((float)DHT11.humidity, 2);

  Serial.print("Temperature (°C): "); // Température
  Serial.println((float)DHT11.temperature, 2);

  delay(1000); // Pause avant prochaine lecture

}


mon capteur est HS ce me renvoie " Time out erreur "
j'aurai du commencé par là
Merci de ton aide fets

fets13
Messages : 100
Inscription : 30 Novembre 2013, 22:49
Localisation : 83

Re: Problème sketch DHT11

Messagepar fets13 » 10 Mars 2015, 12:27

;)

lucien
Messages : 131
Inscription : 15 Novembre 2013, 13:15
Localisation : Saint-Nazaire

Re: Problème sketch DHT11

Messagepar lucien » 10 Mars 2015, 14:53

Bonjour fets

bon jai le même problème avec un DS18B20 que le dht11 sauf que le DS198B20 lui fonctionne le l'ai testé
dans le fichier Ydle.cpp de la lib ydle j'ai été obligé de modifier cette ligne pour que ca complile

Code : Tout sélectionner

const PROGMEM prog_uchar _atm_crc8_table[256] = {
// par la ligne
const PROGMEM uint8_t _atm_crc8_table[256] = {


par contre peux-tu m'expliquer cette partie du code car je crois que c'est là que ca coince

Code : Tout sélectionner

void setup()
{
   Serial.begin(9600);
   Serial.println("init complete");
 
   y.init_timer();
 
   cur_time = millis();
   last_send = cur_time;
}
 
void loop()
{
   y.receive();
   if(y.initialized()){
      cur_time = millis();
      if(cur_time - last_send >= DELAY_SEND){
         last_send = cur_time;
         // code de récupération des informations venant du capteurs


mon init ce fait bien dans le terminal je n'ai que " init complete "
Merci

fets13
Messages : 100
Inscription : 30 Novembre 2013, 22:49
Localisation : 83

Re: Problème sketch DHT11

Messagepar fets13 » 12 Mars 2015, 14:13

Hello,
le code de la loop;
receive () : pour traitement des messages complets reçus par ailleurs (timer)
if (initiallized()) // pour tester si le node a été initialisé. A mon avis, c'est de là que vient ton problème.
Pour info, un node est initialisé quand il connait son adresse et celle du master. Pour cela il faut avoir fait un LINK à un moment donné. c'est pour cela que je t'avais posé cette question "Tu n'aurais pas un problème d'init de ton node ? Tu lui as bien programmé son ident ? "

Le code ensuite c'est pour attendre un certain temps avant d'émettre une nouvelle trame.
Donc en bref, tant que ton node n'est pas initialisé, il ne fait rien qu'attendre de recevoir un message de LINK de la part du hub/master.

Voila, j'espère avoir été clair

lucien
Messages : 131
Inscription : 15 Novembre 2013, 13:15
Localisation : Saint-Nazaire

Re: Problème sketch DHT11

Messagepar lucien » 17 Mars 2015, 13:47

Bon ben j'arrive pas

fets13 a écrit :Pour info, un node est initialisé quand il connait son adresse et celle du master. Pour cela il faut avoir fait un LINK à un moment donné. c'est pour cela que je t'avais posé cette question "Tu n'aurais pas un problème d'init de ton node ? Tu lui as bien programmé son ident ? "


sur le hub je fais LINK le node avec l'étoile ( cest comme çà qu'il faut programmé son ident ?? ), mais il ne recoit rien, dans la console j'ai cette sortie :

[13:36:30] master.cpp:186: Program start
[13:36:30] protocolRF.cpp:111: Init protocolRF TX: 0
[13:36:30] protocolRF.cpp:112: Init protocolRF RX: 1
[13:36:30] webServer.cpp:433: HTTP Server started on port 8888
[13:36:30] protocolRF.cpp:863: Enter in thread listen
[13:36:30] IhmCommunicationThread.cpp:30: Start Communication thread
[13:37:10] NodeRequestHandler.cpp:64: enter in NodeLink
[13:37:10] protocolRF.cpp:261: Send ACK
[13:37:15] protocolRF.cpp:1104: Ack not receive from receptor: 0
[13:37:15] protocolRF.cpp:261: Send ACK
[13:37:20] protocolRF.cpp:1104: Ack not receive from receptor: 0
[13:37:20] protocolRF.cpp:261: Send ACK
[13:37:25] protocolRF.cpp:1104: Ack not receive from receptor: 0
[13:37:25] protocolRF.cpp:1108: ACK never received.


j'ai mis une led sur la sortie de l’émetteur du node pour voir si l'émission se fait bien et je n'ai aucun clignotement
donc je n'envoie aucune trame, donc normal que j'ai cette sortie dans le hub

merci pour le retiour

Lucien

fets13
Messages : 100
Inscription : 30 Novembre 2013, 22:49
Localisation : 83

Re: Problème sketch DHT11

Messagepar fets13 » 21 Mars 2015, 10:16

Avec un peu de retard!!!
lucien a écrit :sur le hub je fais LINK le node avec l'étoile ( cest comme çà qu'il faut programmé son ident ?? ), mais il ne recoit rien

Je crois que c'est comme ça (ça fait un moment que je n'ai pas récupéré le Hub), mais il faut au préalable avoir exécuter le sketch ResetEEProm sur ton arduino, sinon l'ident risque de ne pas être pris en compte.


Revenir vers « Tests »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité

cron