IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

NRF24L01 : Pas de message reçu


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    928
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 928
    Par défaut NRF24L01 : Pas de message reçu
    Bonjour à Tous ,

    J'ai souhaitais tester une liaison avec le NRF24L01
    Emetteur : NANO + NRF24L01
    Récepteur : WEMOS + NRF24L01

    Pour ce faire je me suis inspiré d'un exemple

    EMETTEUR
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
     
    #include <SPI.h>
    #include <RF24.h>
     
    #define pinCE   7             // On associe la broche "CE" du NRF24L01 à la sortie digitale D7 de l'arduino
    #define pinCSN  8             // On associe la broche "CSN" du NRF24L01 à la sortie digitale D8 de l'arduino
    #define tunnel  "PIPE1"       // On définit un "nom de tunnel" (5 caractères), pour pouvoir communiquer d'un NRF24 à l'autre
     
    RF24 radio(pinCE, pinCSN);    // Instanciation du NRF24L01
     
    const byte adresse[6] = tunnel;               // Mise au format "byte array" du nom du tunnel
    const char message[] = "Hello World!!!";     // Message à transmettre à l'autre NRF24 (32 caractères maxi, avec cette librairie)
     
    void setup() {
      radio.begin();                      // Initialisation du module NRF24
      radio.openWritingPipe(adresse);     // Ouverture du tunnel en ÉCRITURE, avec le "nom" qu'on lui a donné
      radio.setPALevel(RF24_PA_MIN);      // Sélection d'un niveau "MINIMAL" pour communiquer (pas besoin d'une forte puissance, pour nos essais)
      radio.stopListening();              // Arrêt de l'écoute du NRF24 (signifiant qu'on va émettre, et non recevoir, ici)
    }
     
    void loop() {
      radio.write(&message, sizeof(message));     // Envoi de notre message
      delay(1000);                                // … toutes les secondes !
    }

    RECEPTEUR

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    //**********************************
    // RECEPTEUR WEMOS + NFR24L01
    //**********************************
     
    #include <SPI.h>
    #include <RF24.h>
     
    #define pinCE   2            // On associe la broche "CE" du NRF24L01 à la sortie digitale GPIO2 D4 de l'arduino
    #define pinCSN  15             // On associe la broche "CSN" du NRF24L01 à la sortie digitale GPIO15 D8 de l'arduino
    #define tunnel  "PIPE1"       // On définit le "nom de tunnel" (5 caractères) à travers lequel on va recevoir les données de l'émetteur
     
    RF24 radio(pinCE, pinCSN);    // Instanciation du NRF24L01
     
    const byte adresse[6] = tunnel;       // Mise au format "byte array" du nom du tunnel
    char message[32];                     // Avec cette librairie, on est "limité" à 32 caractères par message
     
    void setup() {
      // Initialisation du port série (pour afficher les infos reçues, sur le "Moniteur Série" de l'IDE Arduino)
      Serial.begin(9600);
      Serial.println("Récepteur NRF24L01");
      Serial.println("");
     
      // Partie NRF24
      radio.begin();                      // Initialisation du module NRF24
      radio.openReadingPipe(0, adresse);  // Ouverture du tunnel en LECTURE, avec le "nom" qu'on lui a donné
      radio.setPALevel(RF24_PA_MIN);      // Sélection d'un niveau "MINIMAL" pour communiquer (pas besoin d'une forte puissance, pour nos essais)
      radio.startListening();             // Démarrage de l'écoute du NRF24 (signifiant qu'on va recevoir, et non émettre quoi que ce soit, ici)
    }
     
    void loop() {
      // On vérifie à chaque boucle si un message est arrivé
      if (radio.available()) {
        radio.read(&message, sizeof(message));                        // Si un message vient d'arriver, on le charge dans la variable "message"
        Serial.print("Message reçu : ");
        Serial.println(message);     // … et on l'affiche sur le port série !
        delay (5000);
      }
    }
    J'obtiens ceci sans le contenu du message
    Mais je n'arrive pas à trouver mon erreur
    Images attachées Images attachées  

  2. #2
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 884
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 884
    Par défaut
    la majorité des soucis avec des RF24 proviennent généralement du montage et de l'alimentation
    testez votre circuit avec un code réputé fonctionnel. Tant que ça ne fonctionne pas, c'est qu'il faut explorer la partie hardware (vous mentionnez par exemple un WEMOS, c'est du 3.3V - est-ce que vous avez adapté la tension de votre NRF24L01?)

  3. #3
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    928
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 928
    Par défaut
    Bonjour Jay M
    c'est du 3.3V - est-ce que vous avez adapté la tension de votre NRF24L01?
    J'utilise des adaptateurs pour l’Émetteur comme pour le Récepteur
    En ce qui concerne l’Émetteur, l'envoi semble correct '
    j'obtiens bien le message "Hello World!!! ( j'ai rajouté cela)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Serial.print("Message envoyé : ");
      Serial.println(message);     // … et on l'affiche sur le port série !
      delay(1000);                                // … toutes les secondes !
    par contre pour le récepteur
    je n’obtiens rien d'autre que : "Message reçu : " ce qui prouve qu'il a rçu quelque chose , le canal n'est peut-être pas le bon


    J'ai vérifié les raccordements et aussi retiré l'adaptateur du récepteur pour voir si le pb venait de là ( en alimentant le module en 3.3v)
    j'en suis là ....

  4. #4
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 884
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 884
    Par défaut
    vous avez quoi comme type t_message?

  5. #5
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    928
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 928
    Par défaut
    vous avez quoi comme type t_message?
    A l'émission ?
    ceci
    Images attachées Images attachées  

  6. #6
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 884
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 884
    Par défaut
    trouvez un tuto avec un petit code d'exemple et validez votre montage avec leur code

  7. #7
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    928
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 928
    Par défaut
    Justement pour m'affranchir de mon propre programme
    Ce que j'ai mis en exemple vient d'un tuto
    https://passionelectronique.fr/tutorial-nrf24l01/

  8. #8
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 884
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 884
    Par défaut
    non, je voulais dire dans le code de la structure

    vous utilisez ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    struct __attribute__ ((packed)) t_message {
      char payload[32];
    } message;
    essayez de mettre 20 au lieu de 32 et testez si le if() fonctionne

  9. #9
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    928
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 928
    Par défaut
    désolé pour la réponse tardive mais j'ai du renoncer à faire fonctionner mon croquis initial

    je me suis rabattu sur celui-ci conforme aux conseils de Jay M à savoir un traitement en package plus facile à manipuler
    et qui semble fonctionner correctement
    EMETTEUR
    Arduino UNO
    NRF24L01
    DHT22

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
     
    #include <nRF24L01.h>
    #include <RF24.h>
    #include <RF24_config.h>
    #include <DHT.h>
    #include <Wire.h>
    #include <SPI.h>
    #include <Adafruit_Sensor.h>
    #include "LowPower.h"
     
    // DHT22
    #define DHTPIN 3     // DHT22 PIN
    #define DHTTYPE DHT22   // DHT 22
    DHT dht(DHTPIN, DHTTYPE); // Initialize DHT sensor for 16mhz
     
    //DHT22 Variables
    int chk;
    float dht22_hum;  //Stores humidity value
    float dht22_temp; //Stores temperature value
     
     
     
    //VBat
    const float VccMin   = 3.2;           // Niveau minimum attendu de Vcc, en Volts.
    const float VccMax   = 4.2;           // Niveau maximum attendu de Vcc, en Volts.
    const float VccCorrection = 0.99;  // Vcc mesuré par le multimètre divisé par le Vcc rapporté
    const float VccEchelle = VccMax - VccMin;  // Vcc mesuré par le multimètre divisé par le Vcc rapporté
    const byte BROCHE_CAPTEUR_VIN = A0;
    const float COEFF_PONT_DIVISEUR_VIN = 4.0;
    float bat_value;
     
     
     
    //NRF24L01
    const int pinCE = 8;
    const int pinCSN = 7;
    RF24 radio(pinCE, pinCSN);
    byte addresses[][6] = {"0"};
    const uint64_t pipe = 0xE8E8F0F0E1LL;
    struct package
    {
      float temperature ;
      float humidity;
      float bat;
    };
    typedef struct package Package;
    Package data;
     
    /// SETUP ////////////////////////////////////
    void setup()
    {
      Serial.begin(9600);
      radio.begin();
      radio.setChannel(115);
      radio.setPALevel(RF24_PA_MAX);
      radio.setDataRate( RF24_250KBPS ) ;
      radio.openWritingPipe( addresses[0]);
      delay(1000);
      dht.begin();
     
    }
     
    /// LOOP /////////////////////////////////////
    void loop()
    {
      dht22_hum = dht.readHumidity();
      dht22_temp = dht.readTemperature();
      Serial.print("--- Veranda ---\n");
      Serial.print("Temperature = ");
      Serial.print(dht22_temp);
      Serial.println(" ºC");
      Serial.print("Humidity = ");
      Serial.print(dht22_hum);
      Serial.println(" %");
      Serial.print("Bat = ");
      Serial.print(bat_value);
      Serial.println(" %");
      Serial.print("--------------------------------\n\n");
      delay(1000);
      readSensor();
      do_vcc();
      radio.write(&data, sizeof(data));
     
      ////// avant de dormir
      byte etatSPI = SPCR;
      SPCR = 0;
      digitalWrite(13,LOW);
     
      ////////////////////////////////////////////////
      for (int i = 0; i < 1 ; i++) { // 56s de sommeil (7 * 8s )// 
         LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
      } 
      ////  on remet l'état
      SPCR = etatSPI;
     
    }
     
    /** Lecture DHT22 *********************/ 
    void readSensor()
    {
      data.humidity = dht.readHumidity()+200;
      data.temperature = dht.readTemperature()+200;
      data.bat = bat_value+200;
    }
     
    //***********************************************************
    void do_vcc()
    {
        /* Mesure la tension en RAW et la référence interne à 1.1 volts */
        unsigned int raw_vin = analogRead(BROCHE_CAPTEUR_VIN)*VccCorrection;
        unsigned int raw_ref = analogReadReference();
         /* Calcul de la tension réel avec un produit en croix */
        float v = ((raw_vin * 1.1) / raw_ref) * COEFF_PONT_DIVISEUR_VIN;
        Serial.print("VCC = ");
        Serial.print(v);
        Serial.println(" Volts");
     
        float p =((v-VccMin)/(VccEchelle))*100 ;
        bat_value = round(p);
        if (bat_value>100){  // max
          bat_value = 100 ;
        } else if ( bat_value<0) {
          bat_value = 0 ;  
        }
     
        delay(1000);
    }
     
     /** Mesure la référence interne à 1.1 volts */
    unsigned int analogReadReference(void) {
     
      /* Elimine toutes charges résiduelles */
    #if defined(__AVR_ATmega328P__)
      ADMUX = 0x4F;
    #elif defined(__AVR_ATmega2560__)
      ADCSRB &= ~(1 << MUX5);
      ADMUX = 0x5F;
    #elif defined(__AVR_ATmega32U4__)
      ADCSRB &= ~(1 << MUX5);
      ADMUX = 0x5F;
    #endif
      delayMicroseconds(5);
     
      /* Sélectionne la référence interne à 1.1 volts comme point de mesure, avec comme limite haute VCC */
    #if defined(__AVR_ATmega328P__)
      ADMUX = 0x4E;
    #elif defined(__AVR_ATmega2560__)
      ADCSRB &= ~(1 << MUX5);
      ADMUX = 0x5E;
    #elif defined(__AVR_ATmega32U4__)
      ADCSRB &= ~(1 << MUX5);
      ADMUX = 0x5E;
    #endif
      delayMicroseconds(200);
     
      /* Active le convertisseur analogique -> numérique */
      ADCSRA |= (1 << ADEN);
     
      /* Lance une conversion analogique -> numérique */
      ADCSRA |= (1 << ADSC);
     
      /* Attend la fin de la conversion */
      while(ADCSRA & (1 << ADSC));
     
      /* Récupère le résultat de la conversion */
      return ADCL | (ADCH << 8);
    }

    RECEPTEUR
    WEMOS
    NRF24L01

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    #include <nRF24L01.h>
    #include <RF24.h>
    #include <RF24_config.h>
    #include <SPI.h>
     
     
    // sensors
    float previousRemoteHumidity = 0;
    float previousRemoteTemperature = 0;
    float previousRemotebat = 0;
     
    float remoteHumidity = 0.0;
    float remoteTemperature = 0.0;
    float remoteBat = 0.0;
     
    // trans package
    struct package
    {
      float temperature;
      float humidity;
      float bat;
    };
     
    // radio
    RF24 radio(4, 15);
    byte addresses[][6] = {"0"};
    typedef struct package Package;
    Package data;
     
    void setup(void) {
      // serial
      Serial.begin(115200);
     
      // radio
      startWirelessCommunication();
     
    }
     
    void loop(void) {
      checkForWirelessData();
    }
     
    void startWirelessCommunication()
    {
      radio.begin();
      radio.setChannel(115);
      radio.setPALevel(RF24_PA_MAX);
      radio.setDataRate( RF24_250KBPS ) ;
      radio.openReadingPipe(1, addresses[0]);
      radio.startListening();
      delay(100);
    }
     
    void checkForWirelessData()
    {
      if ( radio.available())
      {
        while (radio.available())
        {
           radio.read( &data, sizeof(data) );
        }
        Serial.print("\nPackage:");
        Serial.print("\n");
        Serial.println(data.temperature);
        Serial.println(data.humidity);
        Serial.println(data.bat);
      }
    }
    La prochaine étape serait de pouvoir mettre un AtTiny 85 en lieu et place du UNO
    est-ce possible ?
    et comment faire pour lire les valeurs de "data" dans
    l'expression :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    radio.read( &data, sizeof(data) );
    Images attachées Images attachées   

  10. #10
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 884
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 884
    Par défaut
    vous avez exactement le même hardware?

  11. #11
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    928
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 928
    Par défaut
    En Récepteur , j'ai un ESP8266 Wemos D1 Mini
    En Emetteur un Nano

  12. #12
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 884
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 884
    Par défaut
    La prochaine étape serait de pouvoir mettre un AtTiny 85 en lieu et place du UNO
    il y a des trucs sur internet = https://www.hackster.io/arjun/nrf24l...-3-pins-74a1f2

    et comment faire pour lire les valeurs de "data" dans l'expression :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    radio.read( &data, sizeof(data) );
    vous avez défini
    donc c'est une structure de type Package qui est défini par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    struct package
    {
      float temperature;
      float humidity;
      float bat;
    };
    donc vous accédez aux champs simplement par data.temperature, data. humidity et data.bat


    PS/ dans mon code je recommandais de mettre __attribute__ ((packed)) sur la définition des structures pour s'assurer qu'il n'y ait pas de modification par le compilateur

  13. #13
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    928
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 928
    Par défaut
    merci Jay M


    donc vous accédez aux champs simplement par data.temperature, data. humidity et data.bat
    pardon je me suis mal exprimé
    en fait , je souhaite lire la valeur brute de "data" en ASCII pour pouvoir identifier les valeurs
    pourquoi sachant que les possèdent séparément comme
    data.température etc , parce qu'actuellement j'ai mon ancien boitier qui émet des valeurs identiques sous la forme => 25UHT;200;200;200 ( voir pb évoqué ci-dessus)
    et je pensais initialement "récupérer" cette chaîne de caractères en lisant la valeur de "data" et ainsi ne pas refaire le boitier , c'est purement pratique


    merci pour le lien , pour l'instant j'essaie de faire fonctionner le montage sous MiniPro mais il est gourmand au repos env 40 mA
    je voudrais le combiner avec un TPL5110 pour économiser la batterie
    puis je vais voir avec un ATTiny 85 mais j'ai besoin d'une entrée TOR (DHT22) et ANA(Vbat)

  14. #14
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 884
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 884
    Par défaut
    la wemos parle en 3.3V.
    avez vous un lien sur votre adaptateur ? (celui du tuto c'est pour connecter généralement vers un module et alim 5V)

  15. #15
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    928
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 928
    Par défaut
    la wemos parle en 3.3V.
    avez vous un lien sur votre adaptateur ? (celui du tuto c'est pour connecter généralement vers un module et alim 5V)
    J'alimente l'adaptateur du NRF24L01 via le 5v du Wemos , celui étant alimenté avec l'USB

  16. #16
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 884
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 884
    Par défaut
    Citation Envoyé par cobra38 Voir le message
    J'alimente l'adaptateur du NRF24L01 via le 5v du Wemos , celui étant alimenté avec l'USB
    OK pour l'alim en 5V de l'adaptateur, mais vos GPIO "causent en 3.3V" alors que ce module attend des communications en 5V aussi

  17. #17
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    928
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 928
    Par défaut
    j'ai fait l'essai sans adaptateur comme préconisé ici
    https://electroniqueamateur.blogspot...ec-cartes.html
    mais j'ai le même résultat

    par contre je ne comprends pas pourquoi les pins
    ne sont pas identifiées dans le programme seuls CE et CSN sont requises par RF24

    CSN du nRF24L01 - GPIO5 (D1) de l'ESP8266
    SCK du nRF24L01 - GPIO14 (D5) de l'ESP8266
    MOSI du nRF24L01 - GPIO13 (D7) de l'ESP8266
    MISO du nRF24L01 - GPIO12 (D6) de l'ESP8266

  18. #18
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 884
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 884
    Par défaut
    Citation Envoyé par cobra38 Voir le message
    par contre je ne comprends pas pourquoi les pins ne sont pas identifiées dans le programme seuls CE et CSN sont requises par RF24
    la bibliothèque dépend de l'implémentation du SPI qui connait les pins MISO et MOSI (définie en hardware ou pour la plateforme cible choisie à la compilation )


    ---
    le problème en branchant directement l'alim à 3.3V est la capacité à fournir le burst de courant nécessaire. ça peut marcher comme ça peut "merdouiller". La NRF24L01 est assez sensible à son alimentation

  19. #19
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 884
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 884
    Par défaut
    vous avez mis sprintf() au lieu de snprintf()



    Vous ne vous servez pas de la chaîne (message) que vous créez dans la boucle de réception ?
    while (radio.available())
    {
    radio.read( &data, sizeof(data) );
    char message [50]; // assurez vous que la taille soit assez grande
    sprintf(message, sizeof(message), "25UHT;%d;%d;%d", (int) data.temperature, (int) data. humidity, (int) data.bat);
    }
    comme la variable est locale au while, vous ne pouvez pas l'utiliser en dehors

  20. #20
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    928
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 928
    Par défaut
    j'ai déclaré çà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    byte addresses[][6] = {"0"};
    typedef struct package Package;
    Package data;
    donc j'ai mis çà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    void checkForWirelessData()
    {
      if ( radio.available())
      {
        while (radio.available())
        {
          radio.read( &data, sizeof(data) );
        }
        char Package [50]; // assurez vous que la taille soit assez grande
        snprintf(Package, sizeof(Package), "25UHT;%d;%d;%d", (int) data.temperature, (int) data. humidity, (int) data.bat);
        Serial.print("\nPackage:");
        Serial.print("\n");
        Serial.println(data.temperature);
        Serial.println(data.humidity);
        Serial.println(data.bat);
      }
    }
    mais le "Package" reste vide
    Images attachées Images attachées  

Discussions similaires

  1. [FTP] Warning avec ftp_get, mais pas de message d'erreur
    Par NomUtilisateurDejaPris dans le forum Langage
    Réponses: 2
    Dernier message: 22/02/2006, 18h12
  2. Réponses: 10
    Dernier message: 13/02/2006, 08h30
  3. [EJB] [JBoss] EJB ne se déploie pas - pas de message d'erreur
    Par Sapience dans le forum Wildfly/JBoss
    Réponses: 1
    Dernier message: 10/01/2006, 16h41
  4. [Connexion] pas de message d'erreur
    Par kase74 dans le forum Connexion aux bases de données
    Réponses: 1
    Dernier message: 22/04/2005, 10h35
  5. déclencheurs qui ne se lancent pas - pb messages
    Par marie253 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 31/08/2004, 15h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo