Go Down

Topic: Problème récurent avec le module NRF24L01 (Read 3928 times) previous topic - next topic

Darkjeje

Aug 11, 2018, 03:50 pm Last Edit: Aug 11, 2018, 03:51 pm by Darkjeje
Bonjour à tous,

Cela fait maintenant plusieurs mois que j'essaye en vain de réaliser mon projet.
Je souhaiterai créer un thermomètre avec le module DHT22, envoyer les données (Température et humidité) à intervalle régulier à mon Raspberry Pi via les modules NRF24L01, puis mettre en sommeil le tout pendant un temps défini (15 mn) avant un nouveau relevé de température.

J'ai donc commencé par lire la température avec le DHT22, réussi !
J'ai ensuite réussi à faire fonctionner la liaison entre mon arduino et mon raspberry Pi en python et à enregistrer l'info dans ma base de donnée.
Puis j'ai testé la mise en sommeil du bousin avec watchdog, ce qui semblait fonctionner. Je n'ai par contre pas pu tester l'économie d'énergie correspondante.

Je devais ensuite tester de faire fonctionner le DHT22, le module NRF24L01 sans l'arduino uno, mais seulement avec la puce atmega afin d'économiser de l'énergie.

Le problème qui s'est déjà produit une première fois, c'est qu'en déconnectant les modules DHT22/NRF24L01 afin d'intégrer le bootloader à ma deuxième puce Atmega, je n'ai pas réussi.

J'ai remonter le tout comme avant, mais je n'arrive plus à faire fonctionner la liaison Uno/Rasp.
En effet, mon script uno édite dans le moniteur, la configuration du module NRF24L01 et celle-ci n'est plus comme avant tout est à zéro :

Code: [Select]
Localisation du fichier dans le Raspberry :/home/pi/rf24libs/RF24/examples_linux/pingpair_dyn2.py/
STATUS = 0x00 RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=0 TX_FULL=0
RX_ADDR_P0-1 = 0xfafafafa7a 0x0000000000
RX_ADDR_P2-5 = 0x00 0x00 0x00 0x00
TX_ADDR = 0x0000000000
RX_PW_P0-6 = 0x00 0x00 0x00 0x00 0x00 0x00
EN_AA = 0x00
EN_RXADDR = 0x00
RF_CH = 0x00
RF_SETUP = 0x00
CONFIG = 0x00
DYNPD/FEATURE = 0x00 0x00
Data Rate = 1MBPS
Model = nRF24L01
CRC Length = Disabled
PA Power = PA_MIN


Alors que je devrais de mémoire avoir comme sur le Rasp :
Code: [Select]
pi@raspberrypi:~/rf24libs/RF24/examples_linux $ sudo python  pingpair_dyn2.py
pyRF24/examples/pingpair_dyn/
================ SPI Configuration ================
CSN Pin          = CE0 (PI Hardware Driven)
CE Pin           = Custom GPIO25
Clock Speed      = 8 Mhz
================ NRF Configuration ================
STATUS           = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
RX_ADDR_P0-1     = 0xf0f0f0f0d2 0xf0f0f0f0e1
RX_ADDR_P2-5     = 0xc3 0xc4 0xc5 0xc6
TX_ADDR          = 0xf0f0f0f0d2
RX_PW_P0-6       = 0x20 0x20 0x00 0x00 0x00 0x00
EN_AA            = 0x3f
EN_RXADDR        = 0x02
RF_CH            = 0x4c
RF_SETUP         = 0x21
CONFIG           = 0x0e
DYNPD/FEATURE    = 0x3f 0x04
Data Rate        = 250KBPS
Model            = nRF24L01+
CRC Length       = 16 bits
PA Power         = PA_MIN
 ************ Role Setup ***********


Voici mon code Arduino :

Code: [Select]
// Import des librairies
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#include <printf.h>
#include "DHT.h"
#include <avr/sleep.h>
#include <avr/wdt.h>

//#define DHTPIN 2 // entrée capteur dht22
#define DHTTYPE DHT22
#define DHT22_POWER 3 //alimentation du capteur DHT22
#define PIN_PILE 1 // entrée analogique

float txbuffer[3] = {0, 0, 0}; // l'indice 0 du tableau représente le N° du themometre ici le 1
//variable température
float temperature;
float humidite;
//variables tension
const float coeff_division = 2.0; // constante pont diviseur
float real_bat = 0;
unsigned int raw_bat;

// Interruption du watchdog
ISR (WDT_vect)
{
   wdt_disable();  // Désactiver watchdog
}  // Fin de WDT_vect


// On définit les variables relatives au DHT22 dont celle que l'on va envoyer
DHT dht(3, DHT22); // On definit la sonde sur le pin 3
char numeroDetecteur [] = "AA"; // On definit l'identifiant du thermomètre
char send_payload[16]= ""; // La variable envoyée aura une longueur maximum de 16 bytes
char floatBuf1[10];
char floatBuf2[10];

// On définit les variables relatives au module radio
RF24 radio(9,10); // Configurer la radio nRF24L01 sur le bus SPI plus les broches 9 et 10
const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL }; // Adresses de tuyau radio pour les 2 nœuds à communiquer.
int payload_size; // On définit la taille de l'envoi comme une valeur numérique
const int max_payload_size = 32;
char receive_payload[max_payload_size+1]; // +1 pour laisser de la place à un caractère NULL final

// Script de lecture de la température et d'envoi / réception par le module radio
void DHT22_NRF24L01 ()
{
  // lecture de la sonde
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  
  // Convertion float en string
  dtostrf(h, 6, 2, floatBuf1);  
  dtostrf(t, 6, 2, floatBuf2);

  /* Mesure de la tension brute */
  raw_bat = analogRead(PIN_PILE);
  /* Calcul de la tension réel */
  real_bat = ((raw_bat * (3.3 / 1024)) * coeff_division);
  txbuffer[3] = real_bat ;
  
  sprintf(send_payload, "%s%s%s", numeroDetecteur, floatBuf2, floatBuf1); // Ecriture du buffer en string
  payload_size = strlen(send_payload); // Compte la longueur de la variable envoyée
  radio.powerUp(); //alimente le module nrf24l01+
  radio.stopListening(); // D'abord, arrêtez d'écouter pour pouvoir parler.

  // Prenez le temps et envoyez-le. Cela bloquera jusqu'à complète
  //Serial.print(F("Longueur envoyée : "));
  //Serial.println(payload_size);
  radio.write( send_payload, payload_size );
  radio.powerDown(); //arrêt de l'alimentation du module nrf24l01+
  
  //communication avec le port serie de l'arduino.
    //Serial.print("Temp. de : ");
    //Serial.print(t);
    //Serial.print("°C et Hum. de : ");
    //Serial.println(h);
    //Serial.print("%\t ");
  Serial.println(send_payload);
  delay(100); // 20 secondes
}

void mywatchdogenable ()
{
  // Désactiver ADC
  //ADCSRA = 0;  

  // Effacer divers drapeaux "reset"
  MCUSR = 0;    
  // Autoriser les modifications, désactiver la réinitialisation
  WDTCSR = bit (WDCE) | bit (WDE);
  // Régler le mode d'interruption et un intervalle
  WDTCSR = bit (WDIE) | bit (WDP3) | bit (WDP0);    // Régler WDIE, et 8 secondes de retard
  wdt_reset();  // pat the dog
  
  set_sleep_mode (SLEEP_MODE_PWR_DOWN);  
  noInterrupts ();           // Séquence temporisée suit
  sleep_enable();
 
  // Désactiver l'activation de la désactivation dans le logiciel
  MCUCR = bit (BODS) | bit (BODSE);
  MCUCR = bit (BODS);
  interrupts ();             // Garantit la prochaine instruction exécutée
  sleep_cpu ();
  sleep_disable();
}



void setup ()
{
  dht.begin();  // On initie la sonde
  Serial.begin(9600); // On init la com serie de l'arduino
  Serial.println(F("Localisation du fichier dans le Raspberry :/home/pi/rf24libs/RF24/examples_linux/pingpair_dyn2.py/"));

  // Setup et configurer le module radio
  radio.begin();
  radio.setDataRate (RF24_250KBPS);
  radio.setPALevel (RF24_PA_MIN);
  printf_begin();
  radio.enableDynamicPayloads(); // Activer les charges utiles dynamiques
  radio.setRetries(5,15); // En option, augmenter le délai entre les tentatives et # de tentatives

  // Cette simple esquisse ouvre deux tuyaux pour que ces deux nœuds puissent communiquer d'avant en arrière.
  radio.openWritingPipe(pipes[0]); // Ouvrez 'notre' tuyau pour écrire
  //radio.openReadingPipe(1,pipes[1]); // Ouvrez l'autre tuyau pour la lecture, en position #1 (on peut avoir jusqu'à 5 tuyaux ouverts pour la lecture)
  //radio.startListening();// Commence à écouter
  radio.printDetails(); // Afficher la configuration de l'unité RF pour le débogage
  //DHT22_NRF24L01 ();
  }

void loop ()
{
  DHT22_NRF24L01 ();

for (int i=0; i < 10; i++) //mise en veille pendant ~~ 5mn secondes (35)
mywatchdogenable();
}


J'ai testé différent module NRF24L01, tester les câbles avec un multimètre.
Je ne comprends pas d'où vient le problème et je suis assez perdu.
Je ne sais pas d'où vient le problème et j'en suis à vouloir abandonné le projet car je passe mon temps à revenir sur quelque chose qui fonctionnait avant, sans comprendre pourquoi ça plante.
Est ce les modules, la bibliothèque, le code,... ???

Si l'un de vous pouvait m'aider à comprendre et refaire fonctionner le tout, j'en serai très heureux !

Merci à tous de m'avoir lu.

Jérémy

hbachetti

#1
Aug 11, 2018, 05:10 pm Last Edit: Aug 11, 2018, 05:25 pm by hbachetti
Salut

Quote
Puis j'ai testé la mise en sommeil du bousin avec watchdog, ce qui semblait fonctionner. Je n'ai par contre pas pu tester l'économie d'énergie correspondante.
Sur une UNO : 10mA au lieu de 20mA.
Sur une MINI : 2µA au lieu de 10mA. Juste énorme.

Si tu veux faire fonctionner un thermomètre en basse conso sur une batterie 200mAH comme CELUI-CI afin de le rendre autonome et indépendant du secteur, la UNO n'est vraiment pas adaptée.

J'aimerais savoir comment tu as connecté le NRF24L01 à la UNO. Directement ou à travers des convertisseurs de niveau 3.3V / 5V ?

Ton serveur sur RASPBERRY PI, c'est un truc perso ?

@+
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

hbachetti

Quote
Je devais ensuite tester de faire fonctionner le DHT22, le module NRF24L01 sans l'arduino uno, mais seulement avec la puce atmega afin d'économiser de l'énergie.
Avec un ARDUINO MINI, tu te fatiguera moins.

@+
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

Darkjeje

#3
Aug 12, 2018, 02:17 pm Last Edit: Aug 13, 2018, 08:25 pm by Darkjeje
Salut

Sur une UNO : 10mA au lieu de 20mA.
Sur une MINI : 2µA au lieu de 10mA. Juste énorme.

Si tu veux faire fonctionner un thermomètre en basse conso sur une batterie 200mAH comme CELUI-CI afin de le rendre autonome et indépendant du secteur, la UNO n'est vraiment pas adaptée.

Merci hbachetti pour ton retour !
En fait je suis partie sur le uno car j'ai aussi acheté un nano, mais je n'arrive pas à téléverser de croquis dessus. Je ne sais pas si c'est la carte, le vieux câble USB qui fait que cela plante. Lorsque je clique sur "Récupérer les informations de la carte", j'ai les infos suivantes :
BN: Carte inconnue
VID: 1A86
PID: 7523
SN: Envoyez un croquis pour l'obtenir

Mais c'est sûr que si je pouvais utiliser directement le nano cela serait plus pratique.


J'aimerais savoir comment tu as connecté le NRF24L01 à la UNO. Directement ou à travers des convertisseurs de niveau 3.3V / 5V ?

La première fois j'étais en direct mais je ne sais plus si j'étais sur le 3.3v ou le 5v. Et quand j'ai démonté puis remonter le tout, voyant que cela ne fonctionnait plus, j'ai décider de racheter des modules NRF24L01 pensant les avoir grillés et je suis passé via l'adaptateur. Mais finalement les premiers modules n'avaient pas grillé et j'ai réussi à tout refaire fonctionner en repartant de zéro grâce aux exemples. Puis ça a replanté en démontant de nouveau le tout, ce que j'indiquais dans mon 1er post, mais je comprends pas pourquoi cela me fait ça.


Ton serveur sur RASPBERRY PI, c'est un truc perso ?
Oui je suis locataire dans un appart équipé de la domotique Bticino, donc je me suis créé un site web php/myadmin pour stocker tout ce qui passe par cette domotique. Je n'utilise pas DOMOTICZ ou autre jeedom qui ne sont que moyennement compatible avec ma domotique.

Ayant la temperature de chaque pièce, il me manque la température extérieure pour savoir quand ouvrir/fermer les fenêtres en été/hiver, en fonction de la température et du taux d'humidité,...
Et puis cela préparera ma futur domotique fait maison quand je quitterai cette appart. ;)

68tjs

#4
Aug 12, 2018, 04:34 pm Last Edit: Aug 12, 2018, 04:36 pm by 68tjs
Nano.
Tes ennuis indiquent que tu es sous windaube, sous Linux cela aurait fonctionner du premier coup :) .

Tout se passe dans l'interface USB vers UART (liaison série).
Ta nano est un clone qui, au lieu d'utiliser le coûteux FTDIxxxx, utilise un CH340 (ou CH341) qui est entièrement compatible.

Il se trouve que Gravitech le créateur de la nano en accord avec Arduino n'avait prévu que le FTDI qui alors était déjà utilisé par Arduino pour les prédécesseurs de la UNO.
L'IDE ne contient que le pilote logiciel pour le FTDI, il te faut installer toi même celui pour le CH340/CH341.

Comme j'ai Linux je ne sais pas où le trouver mais dans le bandeau supérieur de cette page il y a une loupe qui est le moteur de recherche du forum. Tu clique dessus et tu entre CH340 et tu trouvera toutes les informations dont tu as besoin.
Et c'est valable pour n'importe quel sujet, pouvoir profiter de l'expérience des autres est un plus.
Les Shadocks : L'ignorance ne s'apprend pas.

hbachetti

#5
Aug 12, 2018, 05:11 pm Last Edit: Aug 12, 2018, 05:11 pm by hbachetti
Quote
je suis passé via l'adaptateur
De quel adaptateur parles-tu ?

Quote
j'ai aussi acheté un nano, mais je n'arrive pas à téléverser de croquis dessus
Si tu n'as pas de problème avec une UNO et des problèmes avec une NANO, Il est possible que tu doives choisir dans Tools / Type de carte / Arduino Nano et dans Tools / Processeur / ATmega328p (OldBootloader).

Quote from: 68tjs
Ta nano est un clone qui, au lieu d'utiliser le coûteux FTDIxxxx, utilise un CH340 (ou CH341) qui est entièrement compatible.
Possible aussi. Darkjeje, tu devrais donner plus de précisions. "Cela plante" n'est pas suffisant.


Quote
Mais c'est sûr que si je pouvais utiliser directement le nano cela serait plus pratique.
Plus pratique, c'est certain, et moins consommateur, 20mA au lieu de 40.

Mais, je ne parlais pas de NANO mais de MINI, si possible PRO MINI 8MHz 3.3V, qui sera encore moins consommatrice.

Quote
Puis ça a replanté en démontant de nouveau le tout, ce que j'indiquais dans mon 1er post, mais je comprends pas pourquoi cela me fait ça.
J'ai déjà eu des problèmes avec de la communication NANO / NRF24L01.
Cela provient des niveaux de tension sur le bus SPI. Le NRF24L01 est tolérant au 5V sur son bus SPI mais la NANO ou UNO reçoit des signaux 3.3V de la part du NRF24L01 et en fonction de sa tension d'alimentation, cela peut convenir ou pas.

J'ai sur mon bureau actuellement une horloge digitale montée avec une NANO et un NRF24L01, branché sur un hub USB.
La tension sur le 5V de la NANO est de 4.98V et le montage fonctionne parfaitement bien.
par contre avec un chargeur USB donnant 5.3V cela ne marchait pas du tout.
Il suffit que la tension d'alimentation de l'ATmega soit juste à la limite pour obtenir un fonctionnement erratique.

Je te propose de mesurer la tension sur le 5V de ta UNO.

Sincèrement je pense que tu obtiendrais de meilleurs résultats avec une PRO MINI 8MHz 3.3V. Un ATmega328p et un NRF24L01 alimenté par la même tension 3.3V auraient plus de chances de se comprendre.
De plus tu pourrait dans ce cas, passer de l'alimentation secteur à l'alimentation par batterie, comme ICI.
Un thermomètre devrait être situé idéalement à 1m50 du sol, et non pas à proximité d'une prise secteur, souvent au ras du plancher.

@+
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

hbachetti

Je viens de réaliser une maquette avec un NANO et un NRF24L01 câblés en direct comme CECI.

La broche VCC du NRF24L01 est connectée sur le 3.3V de la NANO.

J'essaie de faire varier la tension d'alimentation de la NANO entre 4.5V et 6V. Cela communique toujours sans problème.
Cela met mes propres convictions par terre ...

Tu dois avoir un problème de câblage.

@+
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

Darkjeje

Nano.
Tes ennuis indiquent que tu es sous windaube, sous Linux cela aurait fonctionner du premier coup :) .
Je n'en doute pas une seconde ;)

Ta nano est un clone qui, au lieu d'utiliser le coûteux FTDIxxxx, utilise un CH340 (ou CH341) qui est entièrement compatible.
C'est possible, je vais regarder ça dès que possible, mais la priorité c'est de comprendre pourquoi cela ne fonctionne plus avec le uno.


De quel adaptateur parles-tu ?
Je parle de celui-là qui permettrait une stabilisation de la tension si j'ai bien compris. https://picclick.fr/Socket-Adapter-Plate-Board-for-8-Pin-NRF24L01-123010965209.html


Si tu n'as pas de problème avec une UNO et des problèmes avec une NANO, Il est possible que tu doives choisir dans Tools / Type de carte / Arduino Nano et dans Tools / Processeur / ATmega328p (OldBootloader).

Possible aussi. Darkjeje, tu devrais donner plus de précisions. "Cela plante" n'est pas suffisant.
J'ai en effet essayé avec Nano ATmega328p et Nano ATmega328p (OldBootloader) et voici le message d'erreur pour ATmega328p :
Code: [Select]

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xda
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0xda
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0xda
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0xda
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0xda
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0xda
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0xda
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0xda
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0xda
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0xda
Problème de téléversement vers la carte. Voir http://www.arduino.cc/en/Guide/Troubleshooting#upload pour suggestions.



Pour ATmega328p (OldBootloader) j'ai cela :
Code: [Select]

avrdude: stk500_paged_load(): (a) protocol error, expect=0x10, resp=0x00
avrdude: stk500_cmd(): programmer is out of sync
avr_read(): error reading address 0x0000
   read operation not supported for memory "flash"
avrdude: failed to read all of flash memory, rc=-2
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x00
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x00


Ah par contre avec le croquis semble avoir été téléchargé car j'ai bien le test de la tension fourni (script d'exemple de calcul de la tension téléchargé).

Faudrait donc que j'essaye mon script de DHT22/NRF24L01 malgré le message d'erreur pour voir si ça fonctionne.

Je viens de réaliser une maquette avec un NANO et un NRF24L01 câblés en direct comme CECI.

La broche VCC du NRF24L01 est connectée sur le 3.3V de la NANO.

J'essaie de faire varier la tension d'alimentation de la NANO entre 4.5V et 6V. Cela communique toujours sans problème.
Cela met mes propres convictions par terre ...

Tu dois avoir un problème de câblage.

@+

C'est ce que je me demande car quand je teste les câbles avec le ohmmètre, tous bip bien, sauf le vcc qui quelque soit le module nrf24l01 ne bip pas clairement.
De plus, sur certain croquis lorsque je bouge les fils de connection j'ai l'impression qu'il fait la mesure de la température, bon sans envoyer les données pour autant.

Je vais regarder pour acheter le mini sur tes conseils.
Mais je veux avant comprendre pourquoi ça ne fonctionne plus avec le uno.
Car revenir à chaque fois en arrière ne me donne pas envie d'investir encore dans l'arduino.

Est-ce que le défaut d'une des connexions pourrait être la cause que tout soit à 0 :

Code: [Select]
RX_ADDR_P0-1 = 0x0000000000 0x0000000000
RX_ADDR_P2-5 = 0x00 0x00 0x00 0x00
TX_ADDR = 0x0000000000
RX_PW_P0-6 = 0x00 0x00 0x00 0x00 0x00 0x00
EN_AA = 0x00
EN_RXADDR = 0x00
RF_CH = 0x00
RF_SETUP = 0x00
CONFIG = 0x00


Je vais retester mes connectiques et je vous dirai ce qu'il en est.
Merci en tout cas pour les conseils et le temps consacré !!!

Jérémy

hbachetti

Quote
Je parle de celui-là qui permettrait une stabilisation de la tension si j'ai bien compris. https://picclick.fr/Socket-Adapter-Plate-Board-for-8-Pin-NRF24L01-123010965209.html
Stabilisation mais surtout abaissement à 3.3V. Car pour le NRF24L01 5V c'est la mort assurée.

Quote
De plus, sur certain croquis lorsque je bouge les fils de connection j'ai l'impression qu'il fait la mesure de la température, bon sans envoyer les données pour autant.
Quote
sauf le vcc qui quelque soit le module nrf24l01 ne bip pas clairement.
Même en changeant le fil ?
Essaie d'ajouter un condensateur de 100nF entre VCC et GND le plus près possible du NRF24L01.

Certaines breadboards sont de très mauvaise qualité. Exemple CELLE-CI.

Quote
Est-ce que le défaut d'une des connexions pourrait être la cause que tout soit à 0 :
Bien sûr, mais tant que tu ne montre pas ton code, difficile à dire.
Il faut aussi savoir quelle librairie tu utilises.

@+
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

hbachetti

#9
Aug 13, 2018, 09:57 am Last Edit: Aug 13, 2018, 09:57 am by hbachetti
Je suppose que tu utilises la libriairie RF24 et que les informations sont sorties sur la console à l'aide de radio.printDetails().

Un truc sympa dans le dernière version :
Code: [Select]

  radio.begin();
  Serial.print("Radio connected: ");
  Serial.println(radio.isChipConnected() ? "YES" : "NO !!!");


Si cela affiche "NO !!!" c'est que tu as un vrai problème de SPI.

Cette méthode isChipConnected n'existait pas dans ma version de 2016 (oui je sais j'ai honte, mais c'est vrai que je n'utilise pas cette librairie)

@+
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

Darkjeje

Même en changeant le fil ?
Essaie d'ajouter un condensateur de 100nF entre VCC et GND le plus près possible du NRF24L01.
Oui même en changeant le fil. Mais je vais retester et tester aussi la technique du condensateur mais il me semblait que cela aidait surtout pour la porté et qualité du signal.



Bien sûr, mais tant que tu ne montre pas ton code, difficile à dire.
Il faut aussi savoir quelle librairie tu utilises.
Tu as mon code dans le premier post tout en bas  ; )
J'utilise la RF24, mais j'en ai installé plusieur donc peut-être ai-je merdouillé quelque part.

Oui le retour est bien fourni par printdetails().
Je vais rajouter le bout de code que tu m'as indiqué au dessus, je ne connaissais pas.

Je vais rajouter le bout de code que tu m'as indiqué au dessus, je ne connaissais pas.

Merci encore !!!

Darkjeje

Un truc sympa dans le dernière version :
Code: [Select]

  radio.begin();
  Serial.print("Radio connected: ");
  Serial.println(radio.isChipConnected() ? "YES" : "NO !!!");


Si cela affiche "NO !!!" c'est que tu as un vrai problème de SPI.
Bon ben j'obtiens NO,... :(

hbachetti

#12
Aug 13, 2018, 09:52 pm Last Edit: Aug 13, 2018, 09:59 pm by hbachetti
Ma conviction est que si ce problème arrive après un démontage / remontage, c'est forcément un problème hardware.
Par exemple si tu instancies comme ceci :
Code: [Select]

RF24 radio(9,10);

Es-tu sûr que tes pins 9 et 10 sont reliées à CE et CS du NRF24L01?

Donne quand même des nouvelles si tu trouves la solution.

@+
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

Darkjeje

Oui c'est bien relié comme il faut.

J'ai téléversé dans le uno, dans le nano, avec 2 modules NRF24L01 différent l'un sur le 5v avec adaptateur, l'autre directement sur le 3,3v.
Pour les deux j'ai le même défaut. Tout est à zéro, pas de connection pour le NRF24L01.

Je vais essayer de supprimer toutes les bibliothèques et réinstaller que la RF24 de tmrh20 pour voir.

Je testerai aussi si je peux en alimentant le module wifi sans passer par l'arduino au cas où il y aurait une mauvaise alimentation,...

Que puis je tester de plus ?

hameau

Salut,

Concernant la mise en veille d'une carte arduino Uno ou Nano, c'est pas le Top, le mieux est de passer sur Arduino Pro .

Je mesure la T° Ext avec une sonde 18DSB20, transmission sans fils avec module 433, le tout gérer avec une Arduino Pro 5V à 16 Mhz, j'ai juste retirer la LED qui consomme energie pour rien et avec cette configuration je suis à 0.2 mA en veille au lieu de 6 mA sur une nano.

Sur la carte Uno ou nano, il y a convertisseur USB - serie qui consomme energie, dans le cas d'une alimentation par piles, le mieux de de restreindre au maxi la consommation, donc retirer ce qui n'est pas utile.




Go Up