Yahoo refuse tous les emails du site. Si vous avez une adresse chez un autre prestataire, c'est le moment de l'utiliser ;)

En cas de soucis, n'hésitez pas à aller faire un tour sur la page de contact en bas de page.

Topic "Communiquer sans fil avec un module nRF24L01, la bibliothèque Mirf et une carte Arduino / Genuino"

Flux RSS des posts récents dans ce topic ( Flux Atom)


Photo de profil de skywodd

skywodd

Membre

Membre du staff

#174 | Signaler ce message


L'époque des communications câblées est révolue. Aujourd'hui, de plus en plus de communications se font sans fil, que ce soit pour le meilleur ou pour le pire. Dans ce tutoriel, nous allons aborder ensemble un sujet complexe : la communication entre cartes électroniques. Nous nous intéresserons à un duo de choc, aussi classique qu'efficace : le module radio nRF24L01 et la bibliothèque Arduino Mirf. En bonus, nous verrons comment fabriquer une sonnette rudimentaire, pour le plus grand bonheur des amateurs de DIY et de domotique.

Lire la suite de l'article sur le site

Derniére modification le par skywodd


Photo de profil de Anderson69s

Anderson69s

Membre

#175 | Signaler ce message


Super article 😉


Photo de profil de skywodd

skywodd

Membre

Membre du staff

#176 | Signaler ce message


Super article 😉

par Anderson69s

Merci :)


Pas de photo de profil

Crakett

Membre

#197 | Signaler ce message


Bonjour Skywodd, comme dis par Anderson69s, super article et sujet très intéressant ;) Je viens de câbler deux cartes (une pro mini 8Mhz 3,3v et une uno) et j'ai quelques soucis ainsi qu'une interrogation sur ton Bonus.

Soucis Au départ ça a fonctionné, j'avais des retours à 0,1,2 ou 3 ms, nickel et des 'Pas de ping', aurais tu une idée ?

Interrogation Ensuite j'ai voulu essayer ton 'Bonus', et la le drame : plus de retour ! J'ai regardé coté doc du module nRF24, et il est dis pour le registre de config RF_SETUP (add 6) que les 3 bit de poids fort '7.6.5' doivent être à '0'. Or tu écrit 0x26, soit le bit '5' à '1'. N'y aurait-il pas une erreur ? N'est-ce pas 0x16 qu'il faut mettre ? Soit mettre à '1' le PLL_LOCK ?

En tout cas, merci pour tous ces articles très bien écrit et détaillé.


Photo de profil de skywodd

skywodd

Membre

Membre du staff

#198 | Signaler ce message


Au départ ça a fonctionné, j'avais des retours à 0,1,2 ou 3 ms, nickel et des 'Pas de ping', aurais tu une idée ?

par Crakett

3 ms avec une vitesse par défaut de 2Mbps c'est énorme ! Et tu ne devrais jamais avoir de "Pas de ping", sauf probléme de portée ou de signal. Qu'est ce que tu utilises comme module nRF ? Sparkfun ? Ardafruit ? Chinois ? Autre ?

Tente un changement de canal radio. N'hésite pas à en tester plusieurs si besoin. Tu as peut être un réseau Wifi à proximité assez puissant pour brouiller le signal du nRF.

Ensuite j'ai voulu essayer ton 'Bonus', et la le drame : plus de retour ! J'ai regardé coté doc du module nRF24, et il est dis pour le registre de config RF_SETUP (add 6) que les 3 bit de poids fort '7.6.5' doivent être à '0'. Or tu écrit 0x26, soit le bit '5' à '1'. N'y aurait-il pas une erreur ? N'est-ce pas 0x16 qu'il faut mettre ? Soit mettre à '1' le PLL_LOCK ?

par Crakett

Extrait du datasheet :

Registre de configuration radio du nRF24L01+

Registre de configuration radio du nRF24L01+

Soit bin(0x26)= b00100110 :

N° bit

Description

Valeur

Signification

7

Emission continue

0

désactivé

6

Réservé

0

5

RF DATA RATE LOW

1

250Kbps

4

PLL LOCK

0

3

RF DATA RATE HIGH

0

250Kbps

2:1

RF POWER

11

0dBm

0

Obsolète

0

Pour moi, tout semble OK. Tu es certain d'avoir un nRF24L01+ ?


Pas de photo de profil

Crakett

Membre

#199 | Signaler ce message


Merci pour ta réponse rapide. En fait il s'agit de modèles chinois "pas cher" équipés de puce "hack" Si24R1. Ils sont resté sous tension toute la nuit et toute la journée, et depuis cet après midi, plus aucune réponse avec ping-pong !! je pense qu'ils sont mort…

J'ai tenté beaucoup de manip (canal, registre config, autre code …), jusqu'au debug du registre status (retour 0xE ou 0x1E), mais plus rien. Pas de wifi proche non plus (loin de la box dans mon bureau).

Pour le datasheet, j'avais celui de juillet 2007 version 2.0, alors que celui du fabriquant Nordic est de septembre 2008 version 1.0 … ah on trouve de tout dans internet et parfois pas la bonne information.

La solution va donc être l'achat de vrais modules. J'essaierai de revenir pour tenir informé …

[PS] rien à voir, tu n'aurais pas un soucis d'heure pour les messages postés : il est 22h42 et l'heure affiché de la dernière motif est 8h41 …

Derniére modification le par Crakett


Photo de profil de skywodd

skywodd

Membre

Membre du staff

#200 | Signaler ce message


En fait il s'agit de modèles chinois "pas cher" équipés de puce "hack" Si24R1. Ils sont resté sous tension toute la nuit et toute la journée, et depuis cet après midi, plus aucune réponse avec ping-pong !! je pense qu'ils sont mort…

par Crakett

Les clones de nRF24L01 sont pires que tout. C'est même étonnant qu'ils aient fonctionné pendant plus d'une heure !

La solution va donc être l'achat de vrais modules. J'essaierai de revenir pour tenir informé …

par Crakett

De vrais nRF24L01+, d'un vrai fabricant, avec de vrais antennes ;)

Si c'est pour un projet sérieux, prend des modules Sparkfun avec connecteur SMA et des antennes quart d'onde (petits modèles). Sinon les versions avec antenne céramique ont une portée pas trop mauvaise en intérieur.

[PS] rien à voir, tu n'aurais pas un soucis d'heure pour les messages postés : il est 22h42 et l'heure affiché de la dernière motif est 8h41 …

par Crakett

C'est ma faute ;)


Pas de photo de profil

Fred57220

Membre

#256 | Signaler ce message


Bonjour

Merci , pour le tuto.

cela fonctionne impec.

Cordialement


Pas de photo de profil

martin

Membre

#446 | Signaler ce message


Bonjour,

Je souhaite avoir des capteurs de températures qui communiquent sans fils avec mon PC afin de stocker leurs données. Pour cela, je pensais utiliser le capteur DHT22 et un arduino et utiliser une liaison sans fil avec un module (nRF24L01) et réceptionner les données sur un autre arduino et stocker ces données sur une carte SD par exemple. Cela est-il réalisable avec un arduino UNO ou faut-il un MEGA ? Existe-t-il d'autres modules de liaison sans fils (BLE, UWB) ?


Photo de profil de skywodd

skywodd

Membre

Membre du staff

#448 | Signaler ce message


Cela est-il réalisable avec un arduino UNO ou faut-il un MEGA ? Existe-t-il d'autres modules de liaison sans fils (BLE, UWB) ?

par martin

Une carte Arduino UNO est largement suffisante. Aussi bien pour l’émetteur et que le récepteur.

Pour la communication sans fil, le nRF24L01+ est pas mal. Sinon il existe le module LightBlue Bean qui est pas mal pour faire des capteurs BLE (avec une réception via un Raspberry Pi 3 par exemple).


Pas de photo de profil

Taptap

Membre

#464 | Signaler ce message


Tout d'abord, milles merci pour ces excellents tutos. Je débute dans le monde Arduino et même si j'ai des connaissances correctes en électronique, j'ai de grosses lacunes pour la partie programmation (eh oui, à l'époque où j'ai appris l'informatique, les machines s’appelaient "mini 6" "apple 2E" ou "ZX81" et les langages "FORTRAN IV", "PASCAL" ou "ASSEMBLEUR" (celui du Z80 en ce qui me concerne)). J'ai le projet de transmettre la téléinformation de mon compteur "enedis" sur mon serveur domotique (Jeedom DIY) en passant par deux UNO et deux cartes nRF24L01+ (le compteur est à une centaine de métres de la maison pas vraiment en champ libre).

J'ai donc testé les montages avec le croquis "ping pong" que j'ai téléchargé. J'arrive à obtenir une liaison sur une quarantaine de mètres avec un ping pong de 1 à 2 ms.

Pour augmenter la portée j'ai rajouté la ligne BONUS ( Mirf.configRegister(RF_SETUP, 0x26);) dans le code sur le client et sur le serveur mais alors, quelque que soit la distance (c'est le drame !) : pas de pong. Quand je commente la ligne sur les 2 croquis tout fonctionne correctement. Le serveur reçoit le premier ping mais il ne semble pas répondre. J'ai lu sur un forum qu'à pleine puissance le 3,3v des arduino pouvait être un peu juste en intensité. J'ai donc essayé d'alimenter les nRF24L01+ par une alimentation externe mais cela ne change rien.

Je précise que les modules que j'utilise sont de modules chinois mais que la puce est bien estampillée nRF24L01+:

Le texte de votre lien

Peut-être est-ce des clones quand même !!!

Merci pour vos avis


Photo de profil de skywodd

skywodd

Membre

Membre du staff

#475 | Signaler ce message


Pour augmenter la portée j'ai rajouté la ligne BONUS ( Mirf.configRegister(RF_SETUP, 0x26);) dans le code sur le client et sur le serveur mais alors, quelque que soit la distance (c'est le drame !) : pas de pong.

par Taptap

Je viens de re-tester avec des nRF24L01+ d'un fournisseur fiable (Sparkfun). Avec alimentation en USB via la carte Arduino.

Je confirme : Mirf.configRegister(RF_SETUP, 0x26); après Mirf.config(); passe bien le module en 250Kbps/0dBm. Le ping fonctionne quand les deux côtés sont programmés avec cette même valeur.

Je précise que les modules que j'utilise sont de modules chinois mais que la puce est bien estampillée nRF24L01+:

(…)

Peut-être est-ce des clones quand même !!!

par Taptap

Surement des clones ou des nRF24L01 non "+".

N.B. Ces cartes ont un ampli de puissance intégré. Légalement, je suis pas certain que se soit dans la limite de 1mW.

Si le module répond avec Mirf.configRegister(RF_SETUP, 0x07); c'est qu'il s'agit d'un nRF24L01 non "+".

Edit: J'ai ajouté une remarque dans le chapitre bonus concernant l'ancienne génération de nRF24L01.

Derniére modification le par skywodd


Pas de photo de profil

Taptap

Membre

#476 | Signaler ce message


Merci beaucoup pour ton retour. je vais faire le test avec Mirf.configRegister(RF_SETUP, 0x07) et je te tiendrai au courant.

Sur la puce il y a bien écrit nRF24L01+ mais les chinois sont très forts pour écrire n'importe quoi y compris "made in France" si on leur demande !!!

Taptap.


Pas de photo de profil

Taptap

Membre

#493 | Signaler ce message


J'ai fait le test en rajoutant la ligne Mirf.configRegister(RF_SETUP, 0x07); et ce n'est pas franchement concluant. On ne peut pas dire que ça ne fonctionne pas, mais nettement moins bien qu'en l'absence de la ligne (transmission moins stable et de moins longue portée).

Je pense que c'est mes modules qui merdent. En même temps, lors de la première utilisation, j'ai branché l'alimentation d'un des 2 à l'envers (le + sur GND et vice versa !!!); le module en question était très chaud avant que je ne me rende compte de mon erreur. Je suis même surpris qu'il transmette encore quelque chose.

Je vais donc racheter des nRF24L01 + (!) et je referai des essais.

En tous les cas, merci pour tes précieux conseils.

Taptap


Photo de profil de skywodd

skywodd

Membre

Membre du staff

#499 | Signaler ce message


Je pense que c'est mes modules qui merdent. En même temps, lors de la première utilisation, j'ai branché l'alimentation d'un des 2 à l'envers (le + sur GND et vice versa !!!); le module en question était très chaud avant que je ne me rende compte de mon erreur. Je suis même surpris qu'il transmette encore quelque chose.

par Taptap

Si le module a eu le temps de chauffer, c'est mort. C'est effectivement étonnant qu'il transmet encore.

Avec les nRF24L01, une inversion de polarité ou une surtension, c'est fatal.

Je vais donc racheter des nRF24L01 + (!) et je referai des essais.

par Taptap

Passe par un fournisseur sérieux comme Watterott par exemple. Les modules d'eBay c'est vraiment pas fiable.


Pas de photo de profil

Lolonini

Membre

#531 | Signaler ce message


Bonjour, j'ai essayé votre tuto avec les fameux ping mais rien ne se passe. J'utilise des module chinois mais lorsque je vais dans moniteur série je n'est qu'un Go ! et aucune indication de ping ou de "pas de pin". Si vous pourriez m'aidé.

Merci d'avance


Photo de profil de skywodd

skywodd

Membre

Membre du staff

#534 | Signaler ce message


j'ai essayé votre tuto avec les fameux ping mais rien ne se passe. J'utilise des module chinois mais lorsque je vais dans moniteur série je n'est qu'un Go ! et aucune indication de ping ou de "pas de pin".

par Lolonini

Mauvais câblage ? Module HS ? (essayez avec un autre module)

Si il n'y a pas de ping ou de retour sur le moniteur série, c'est que les modules ne communiquent pas entre eux ou avec la carte Arduino.

Si c'est des modules chinois, il y a aussi une forte probabilité que les modules en question soit des contrefaçon à moindre coûts. Il serait bon d'essayer avec un autre jeu de modules provenant d'un autre vendeur.


Photo de profil de PAT13530

PAT13530

Membre

#658 | Signaler ce message


bonjour .

super tuto qui fonctionne très bien depuis 2 mois .

maintenant , je voudrais recevoir les données de 2 NRF24L01 differents, mais j'ai un soucis.

je n'arrive pas a avoir des données sérieuses avec mon montage et le codes suivant :

 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
 

          //  **************  reception données potager

  Mirf.setTADDR((byte *) "principal");  // Adresse de transmission
  Mirf.setRADDR((byte *) "potager"); //  Adresse de réception

  int valeurs[6];
  if(Mirf.dataReady())
    {
      Mirf.getData((byte *) &valeurs); // Réception du paquet
   
           dht_0 = valeurs[0];
           dht_2 = valeurs[1];
       mesure_lum = valeurs[2];
       moisture1 = valeurs[3];
       moisture2 = valeurs[4];
       moisture3 = valeurs[5];
    }
    
      valeurs[0] = 0;
      valeurs[1] = 0;
      valeurs[2] = 0;
      valeurs[3] = 0;
      valeurs[4] = 0;
      valeurs[5] = 0;

    
          //  ***************** reception données plantes A1
            
  Mirf.setTADDR((byte *) "principal");  // Adresse de transmission
  Mirf.setRADDR((byte *) "plantesA1"); //  Adresse de réception
  
   //int valeurs[6];
   if(Mirf.dataReady())
   {
   Mirf.getData((byte *) &valeurs); // Réception du paquet
    
   humidAir = valeurs[0];
   humidSol = valeurs[1];
   lumiereValue = valeurs[2];
   temperature1 = valeurs[3];
   temperatureA = valeurs[4];
   finEclairage = valeurs[5];
   }   
   
   valeurs[0] = 0;
   valeurs[1] = 0;
   valeurs[2] = 0;
   valeurs[3] = 0;
   valeurs[4] = 0;
   valeurs[5] = 0;

mon code n'est sans doute pas parfaitement conforme, mais je ne trouve pas le loup !! quand je cache la partie 1, pas de soucis, a partie 2 est parfaitement lue, et inversement .. mais je laisse comme cela, toutes les données sont fausses et mélangées .

merci pour votre aide ..

patrick


Pas de photo de profil

jobonne

Membre

#713 | Signaler ce message


Bonjour,

Je n'arrive pas à faire le lien entre les bibliothèques MIRF et RF24 notamment sur un point: il me semble qu'avec MIRF on puisse faire communiquer entre eux un grand nombre de modules en jouant sur les très nombreuses adresses de réception et de transmission possibles. Cependant en lisant les documents relatifs à le bibliothèque RF24 qui est plus récente et offre semble-t-il davantage de caractéristiques, il est question de <<pipes>> qui ne permettraient de faire communiquer entre eux 6 modules au maximum. Pourrais tu apporter une précision à ce sujet. Envisages-tu un tutoriel avec RF24? Merci de pouvoir disposer de telles ressources de qualité avec ton site. Bon courage pour la suite.


Photo de profil de skywodd

skywodd

Membre

Membre du staff

#747 | Signaler ce message


Désolé pour le retard,

mon code n'est sans doute pas parfaitement conforme, mais je ne trouve pas le loup !! quand je cache la partie 1, pas de soucis, a partie 2 est parfaitement lue, et inversement .. mais je laisse comme cela, toutes les données sont fausses et mélangées .

par PAT13530

L'adresse de chaque module doit impérativement faire 5 caractéres, pas plus.

Pour le module radio : "planteA1", "planteA2", "planteAn", c'est la même choses : "plant", car seul les 5 premiers caractéres sont reconnus comme l'adresse du module.

Cependant en lisant les documents relatifs à le bibliothèque RF24 qui est plus récente et offre semble-t-il davantage de caractéristiques, il est question de <<pipes>> qui ne permettraient de faire communiquer entre eux 6 modules au maximum. Pourrais tu apporter une précision à ce sujet.

par jobonne

A tous instant t, un module ne peut être en communication qu'avec 6 autres modules. Il est possible d'avoir des réseaux de plus de 6 modules en faisant des relais. RF24Network permet de faire cela mais c'est assez complexe à mettre en place.

Envisages-tu un tutoriel avec RF24?

par jobonne

C'est prévu, avec RF24Network en bonus. Mais pour le moment, j'essaye désespérément de trouver le temps et le budget pour continuer à travailler sur le site.


Photo de profil de mneo31

mneo31

Membre

#799 | Signaler ce message


Salut, je me suis remis sur les nrf24l01+ (pour remplacer les modules 433).
J'ai un souci que je n'arrive pas a résoudre. Gros problèmes de porté et de transmission.
J'ai essayer toutes les vitesses, tout les réglages de puissance de sortie. J'ai également utiliser des shield spécifique pour les NRF24L01 (le petit shield qui comporte un régulateur 3.3 avec filtrage)
Pas d'amélioration, j'ai ajouter des capas de 10µF sur l'alim directement soudé sur les modules NRF, y a un mieux sans plus.
J'ai un signal propre à 1m en limitant la puissance de sortie (-18dBm et -12dBm marche sur 1m) -6dBm et 0dBm c'est la galère.
Quand je touche l'antenne pcb avec le doigt miracle ça marche nettement mieux ! j'arrive a porté sur 10m avec obstacles (un mur en béton et un mur en placo).
J'ai donc essayer de soudé un fil en plus de l'antenne pcb, rien de changer.
J'ai essayer des modules chinois et des Sparfunk, aucune différences !
J'ai changer les canaux , idem!
Je suis a court d'idée. J'ai contrôlé l'alimentation ( +5V ripple 2mV , +3.3V ripple 280µV). Ce n'ai donc pas l'alimentation, j'ai testé aussi avec une batterie lipo , +3.3V ripple 3mV.
J'ai également essayer avec d'autre librairie ( mirf, RF24, radiohead) pas de différence.
J'ai aussi essayer en désactivant tout mon réseau wifi 2.4Ghz. Aucun changement.
J'ai aussi essayer de modifier les réglages ACK delay de la partie hardware, rien non plus. Juste le ping qui augmente ( normal avec l'ACK ).
Je suis a court d'idée. Quand je pense que mes petits modules chinois 433MHz marchent sur 10m avec obstacles avec un bout de fil en guise d'antenne et dans tout l'appartement avec une antenne hélicoïdale, ces modules nrf me rendent fou.
NOTA: je n'ai aucun souci avec les ESP 8266 (ESP-01 , ou ESP-12) ils portent tous sur plus de 20m en intérieur, avec leur antenne PCB. (je parle des ESP car ils utilisent la même fréquences donc a première vu pas de brouillage extérieur du a un routeur ou a la box) .
Si quelqu'un a une idée, je prend.
Pour le moment je me rabat sur les ESP mais ça me complique un peu les programmes pour envoyer de simple info de capteur BMP180 et DHT11.


Merci d'avance pour les idées.

(j'ai aussi testé en extérieur, même problème)

La config deux Nano et deux modules NRF24L01+ ( j'ai aussi testé plusieurs nano, avec une mega 2560 et une uno r3) pas de changement.


Photo de profil de skywodd

skywodd

Membre

Membre du staff

#807 | Signaler ce message


Intéressant !

Les nrf24l01+ ont une portée ridiculement faible chez moi. Je pensais que c'était du aux murs en mâchefer mais c'est peut être plus compliqué que cela …

Le probléme est-il reproductible avec un code utilisant RadioHead (anciennement RF24) au lieu de Mirf ?


Photo de profil de mneo31

mneo31

Membre

#810 | Signaler ce message


Salut!
Alors pour Mirf (ping_client et ping_server) Pour RF24 (pingpair_dyn, pingpair_ack et GettingStarted) Pour RadioHead (nrf24_client et nrf24_server)
Pour l'instant , j'ai laissé courir, je me suis remis sur les esp8266 pour de la domotique (gestion d'un serre via domoticz) avec un esp12F monté sur un pcb nodemcu. ( normalement je passe bientôt sur du rasberry pi3 pour la partie serveur ) je vais replongé dans le monde linux après plus de 10ans ça va faire drôle!
Le but du RPI3 ( serveur VPN + Serveur Domoticz + Serveur FTP/Samba ), j'espère qu'il va suivre le coco! (mon netbook acer one avec un petit intel Atom N270 fait le taff sans bronché)
Bref, a long terme j'aimerai avoir.
Le RPI3 en serveur domoticz
Quelques ESP01 en capteur actionneur simple ( 4x ESP01)
Un esp12 en capteur actionneur ( sous ESPEASY pour le moment )
Une carte arduino(uno ou méga) pour communiqué entre les capteurs (attiny + nrf24 ) et le RPI3 (en wifi ou rj45, pas encore déterminé)
D'ou mon besoin de comprendre pourquoi ces foutu module nrf24 ne marche pas correctement !
Le truc de fou c'est que le simple fait de mettre le doigt sur l'antenne d'un des deux modules ( serveur ou client ) augmente considérablement la porté !
Avec les ESP c'est le contraire ! (ce qui est logique)
Donc je pense a des parasites, car , quand je baisse la puissance d'émission ça fonctionne mieux. ( en puissance max ça ne marche tout simplement pas, sauf si je touche l'antenne d'un des deux modules)
Je me disait cool, ils font de l'ack et tout le tralala. Paff, mes modules 433 chinois marche 10 fois mieux ! Et ne mange que 1 PIN de l'arduino… Sauf que pour certain actionneur, je vais avoir besoin d'un retour d'info . (qui confirme que l'action à bien eu lieu et pas de simplement collé un relais) donc je me suis dit nickel les nrf24 …… sans commentaire.
Je suis loin de cherché à faire du mesh avec eux….(pour augmenté la porté) en l'état il en faudrait un tout les 5 cm …..

J'ai encore posté un pavé…


Merci encore de l'aide (ça m'énerve quand je ne comprend/trouve pas)


Photo de profil de skywodd

skywodd

Membre

Membre du staff

#818 | Signaler ce message


Je travaille actuellement avec des RFM69HCW pour un client.

Au début, j'avais une portée de 70m en champ libre avec un simple bout de fil en guise d'antenne.
Le lendemain c'est retombé à 30m de portée. On essaye actuellement de savoir pourquoi (à mon avis c'est un soucis de batteries).

Voila le code que j'utilise pour l'initialisation du module radio :

 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
/** Hardware initialization */
void setupRadio() {
  byte syncWords[2];

  /* Compute sync words */
  syncWords[0] = 0x2d;
  syncWords[1] = 0xd4 ^ getNetworkAddress();

  /* Hard Reset the radio module */
  digitalWrite(PIN_RADIO_RST, LOW);
  pinMode(PIN_RADIO_RST, OUTPUT);
  digitalWrite(PIN_RADIO_RST, HIGH);
  delay(100);
  digitalWrite(PIN_RADIO_RST, LOW);
  delay(100);

  /* Initialize the network stack and radio */
  if (!manager.init()) {
    unrecoverableError(F("Radio initialization failed"));
  }
  manager.setTimeout(RETRY_DELAY);  
  manager.setRetries(RETRY_COUNT);

  /* Low level radio late initialization */
  radio.setFrequency(433.92); // ISM Band
  radio.setTxPower(10, true);  // Limit output power to 10dBm (Europe)
  radio.setSyncWords(syncWords, sizeof(syncWords));
  radio.setEncryptionKey((byte*) ENCRYPT_KEY);
  //radio.setModemConfig(RH_RF69::FSK_Rb55555Fd50 ); // RFM69 lib
  //radio.setModemConfig(RH_RF69::GFSK_Rb250Fd250); // 250Kbps (default)
  //radio.setModemConfig(RH_RF69::GFSK_Rb125Fd125 ); // 125Kbps
  //radio.setModemConfig(RH_RF69::GFSK_Rb38_4Fd76_8 ); // 38.4Kbps
  radio.setModemConfig(RH_RF69::GFSK_Rb19_2Fd38_4 ); // 19.2Kbps
  //radio.setModemConfig(RH_RF69::OOK_Rb1_2Bw75 ); // 1.2Kbps
}

PS getNetworkAddress() retourne juste un nombre en 1 et 4.


Photo de profil de mneo31

mneo31

Membre

#823 | Signaler ce message


Je travaille actuellement avec des RFM69HCW pour un client.

Au début, j'avais une portée de 70m en champ libre avec un simple bout de fil en guise d'antenne.
Le lendemain c'est retombé à 30m de portée. On essaye actuellement de savoir pourquoi (à mon avis c'est un soucis de batteries).

Voila le code que j'utilise pour l'initialisation du module radio :

 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
/** Hardware initialization */
void setupRadio() {
  byte syncWords[2];

  /* Compute sync words */
  syncWords[0] = 0x2d;
  syncWords[1] = 0xd4 ^ getNetworkAddress();

  /* Hard Reset the radio module */
  digitalWrite(PIN_RADIO_RST, LOW);
  pinMode(PIN_RADIO_RST, OUTPUT);
  digitalWrite(PIN_RADIO_RST, HIGH);
  delay(100);
  digitalWrite(PIN_RADIO_RST, LOW);
  delay(100);

  /* Initialize the network stack and radio */
  if (!manager.init()) {
    unrecoverableError(F("Radio initialization failed"));
  }
  manager.setTimeout(RETRY_DELAY);  
  manager.setRetries(RETRY_COUNT);

  /* Low level radio late initialization */
  radio.setFrequency(433.92); // ISM Band
  radio.setTxPower(10, true);  // Limit output power to 10dBm (Europe)
  radio.setSyncWords(syncWords, sizeof(syncWords));
  radio.setEncryptionKey((byte*) ENCRYPT_KEY);
  //radio.setModemConfig(RH_RF69::FSK_Rb55555Fd50 ); // RFM69 lib
  //radio.setModemConfig(RH_RF69::GFSK_Rb250Fd250); // 250Kbps (default)
  //radio.setModemConfig(RH_RF69::GFSK_Rb125Fd125 ); // 125Kbps
  //radio.setModemConfig(RH_RF69::GFSK_Rb38_4Fd76_8 ); // 38.4Kbps
  radio.setModemConfig(RH_RF69::GFSK_Rb19_2Fd38_4 ); // 19.2Kbps
  //radio.setModemConfig(RH_RF69::OOK_Rb1_2Bw75 ); // 1.2Kbps
}

PS getNetworkAddress() retourne juste un nombre en 1 et 4.

par skywodd

Salut, il est vrai que quand j'ai testé sur batterie les résultats était très disparates. As tu un schéma de ton montage ? (juste la partie alimentation,RFM69HCW et µC).
Moi je n'ai essayer que avec des montages "tout fait" a base de ams 1117-3.3.
Je vais essayer (quand j'aurai mon RPI3 et qu'il sera opérationnelle) de fabriqué une alimentation 3.3Volts de base ( j'entend par la un simple transistor NPN avec un Zener, quelques résistance et condensateur) Rien ne vos une bonne petite alimentation linéaire pour palier au problème de parasite lié a l'étage d'alimentation. Après selon les puissances en jeu ( que doit fournir l'alimentation ) l'ajout d'un AOP pour piloté un mosfet peut aidé. Car j'ai eu une mésaventure avec un ESP-01 et un montage a base de LM317T le régulateur c'est tout simplement mis en court circuit et je peut dire qu'un ESP-01 n'aime pas le 12V ! Étonnamment la flash SPI à survécu ! Bref je m'égare.
Si tu alimentes via une lipo en 1S un montage linéaire n'ira probablement pas ( pas assez de différence entre l'entrée et la sortie) il faut au moins 2V de différence, tu peux dans ce cas collé un booster DC-DC pour monté a 6V entre la batterie et le montage régulateur linéaire, la régulation linéaire devrai normalement lissé le bruit en sorti du DC-DC.
Je ne parle pas pour un montage définitif mais pour un proto et pour test.
J'ai déjà fait les testes pour des amplis classe A et classe AB . Résultat même avec un pré-ampli a fort gain, plus aucun bourdonnement, bien-sur les fréquences mis en jeu ne sont pas du tout les mêmes, mais pour palier aux HF une petite self entre l'alimentation et le module devrait bien aidé.
Tiens moi au courant.
Je devrai avoir mon RPI3 pour mon aniv donc le 23 de ce mois. Le temps que je le mette en fonction ne devrai pas être long ( un serveur VPN + serveur domoticz + serveur FTP + serveur samba + serveur UPNP + serveur VNC) sur le linux de base je pense trouvé tout les packets pour installer facilement. Je vais découvrir le monde du RPI donc je vais m'en tenir a ce que j'ai besoin et ce que je sais déjà faire sur un pc sous linux. Je ferais des "expériences" plus tard. Je devrai normalement avoir deux RPI3 (kit amazon avec la carte 16G le boitier, l'alimentation) . Un boitier ventilé avec radiateur. Et un boitier avec écran tactile 5 pouce. Donc celui qui sera le serveur sera dans le boitier ventilé et dans le boitier avec écran celui pour les tests et proto.
J'aurai d'ailleurs pleins de questions techniques sur certain module et programme. (notamment sur l'utilisation des ESP8266 et ESPEASY) que j'utilise sur mon projet actuel.
N'oublie le schémat de ton projet (juste la parti qui m'est utile) .
A bientôt

PS : j'ai un BAC+3 et comme formation une licence pro en électronique, électricité, gestion de projet et nouvelles technologies. J'ai également un BTS électronique. (ça remonte a un peu plus de 10ans quand même) J'aime bien également la mécanique ( auto et moto ), du moment que j'ai les outils je répares.
Il est vrai que j'aurai aimé faire mes études actuellement car de mon époque il n'y avait pas d'arduino encore moins des raspberry , on programmait en C sur des ATMEGA32 si je me souvient bien, un jolie pavé, aucune librairie à par celle de atmel. On programmait aussi des FPGA et CPLD (PAL et GAL) je n'ai jamais eu l'occasion d'en refaire depuis. Et bien sur tout un tas de montages analogique, régulateur, amplificateur, filtre etc…