Accueil | Domotique | MySensors v2: augmenter la portée du nRF24L01 (matériel, configuration)

MySensors v2: augmenter la portée du nRF24L01 (matériel, configuration)

D’apparence simple sur le papier (l’écran !), la réalisation d’un objet connecté à base de nRF24L01 peut rapidement s’avérer compliqué à mettre au point si on veut transmettre des données à longue distance (plusieurs dizaines de mètre, voir centaines). Après avoir passé de nombreuses heures à tester différents matériels pour trouver les bons réglages, je vous propose cet article qui fait le bilan de quelques astuces pour réussir un projet MySensors à base de nRF24L01.

Avertissement. Cet article n’a pas pour prétention de répondre à toutes les configurations. Tous les conseils donnés dans cet article sont issus d’essais empiriques réalisés avec du matériel bon marché en provenance d’Asie accessible par tout le monde. Les résultats peuvent varier d’un matériel à l’autre, même s’il provient d’un même fabricant.

Le tutoriel a été rédigé avec la version 2.0 de la librairie MySensors, mais cela devrait aussi fonctionner avec les versions précédentes (1.4, 1.5…).

Points abordés :

  • Message d’erreur de transmission (!TSM:FAILURE)
  • Quel module radio nRF24L01 choisir ?
  • Quelle antenne choisir ?
  • Alimentation 3V3 régulée, câblage plus facile et moins (sans) de parasites
  • Impossible de présenter un noeud après un téléversement
  • Autres questions

MySensors : erreur !TSM:FAILURE

Lorsqu’on débute avec un projet MySensors, on peut rapidement être confronté à de nombreux messages difficiles à déchiffrer. Voici le message d’erreur le plus courant. Tout semble portant bien commencer

  • TSM: RADIO: OK, le branchement du module radio est correct.
  • TSP:MSG:SEND 255-255-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc:, ça commence bien
  • !TSM:FPAR:FAIL, et non
  • !TSM:FAILURE, tout est parterre !!!

Avec ce type d’erreur, ne cherchez pas du coté du câblage, de ce coté tout est bon. Il faut regarder du coté de la transmission des données qui peut être perturbée par plusieurs facteurs :

  • Une mauvaise alimentation électrique. Les modules nRF24L01 doivent être alimentés en 3,3V. La qualité du régulateur intégré aux clones d’Arduino Micro peut laisser à désirer. Non seulement, l’alimentation est instable mais en plus elle peut être source de perturbations. Dans ce cas, optez pour un adaptateur. Allez au paragraphe « Utiliser un adaptateur avec alimentation régulée ».
  • La tension d’alimentation est trop basse. Cela arrive souvent pour les projets sur batterie. Augmenter le nombre de piles ou utilisez une batterie LiPo plus puissante. « Utiliser un adaptateur avec alimentation régulée » et obligatoire dans ce cas.
  • Une antenne de mauvaise qualité. Les antennes 2dBi peuvent donner des résultats décevant. Allez au paragraphe « Quelle antenne choisir »
  • La librairie MySensors dans sa version 2 est capable d’attribuer un identifiant lorsqu’un nouveau noeud se présente. Dans la pratique ce mécanisme pose encore des problèmes. Pour le moment, le mieux est de continuer à attribuer ses propres identifiants. Allez au paragraphe « Problèmes de connexion après la mise à jour d’un noeud ».

Quel module nRF24L01 choisir ?

Le choix du module va dépendre de plusieurs critères dont voici les principaux:

  • Portée souhaitée :
    • En intérieur, quelques dizaines de mètres
    • Mixte
    • En extérieur. Le récepteur (la gateway) sera à l’intérieur
  • Configuration : dans une habitation, en extérieur, mixte
    • Mur : épaisseur, constitution (le béton armé n’aide pas vraiment) , nombre
    • Terrain plat ou relief
    • Végétation, grillage
    • Perturbation électromagnétiques : transformateur, pompes…
  •  L’application
    • Relevé de données ou commande d’actionneur simple (relai…). Un faible débit de données sera suffisant
    • Acquisition de données. Peu de données mais un fréquence élevée.

antenne nrf24l01 sma 15dbiQuelque soit l’application, le mieux est d’installer une antenne haute performance (au moins 6dBi) sur la gateway pour garantir une réception optimale des données. Equipée d’un connecteur SMA, elle viendra remplacer l’antenne 2dBi qui équipe généralement les modules asiatiques bon marché.

 

Sans antenne externe

nRF24L01

Avec antenne 2dBi

nRF24L01+PA+LNA

UsagesIntérieur

Courte distance

Extérieur, mixte

Moyenne ou longue distance

Remplacer l’antenne (6 dBi ou plus) pour augmenter la portée ou environnement difficile

Module type rflink nrf24l01nrf24l01+pa+lna antenne 2dbi
Liens commerciauxBanggood – env. 3,20€ (x3) 

AliExpress – env. 0,74€ (x1)

Amazon – env. 5,25€ (x6)

Banggood – env. 8,80€ (x3)

AliExpress  env. 1,74€ (x1)

Amazon – env. 5€ (x1)

Utiliser un adaptateur avec alimentation régulée

adaptateur cablage nRF24L01Quelque soit le module radio nRF24L01 employé (standard ou PA+LNA, longue distance), il est préférable d’utiliser un adaptateur. En effet, ces modules intègre un régulateur (abaisseur) de tension qui permet d’alimenter le module radio en 3V3 de manière stable. Le régulateur d’alimentation est de meilleure qualité que ceux qui équipent les Arduino (ou Arduino Micro). Si l’alimentation est instable ou créatrice de perturbations, la réception ou l’émission des paquets de données peut être fortement perturbée.

On trouve facilement les adapteurs chez les principaux commerçants en ligne :

nrf24l01 adpater plate

Quelle antenne choisir ?

Difficile de dire si tel ou tel module radio (en provenance d’Asie) va fonctionner. On ne sait pas très bien par qui ils sont fabriqués. Les modules standards nRF24L01 sans connecteur externe fonctionnent très bien en général. Ce sont plutôt les modules nRF24L01+PA+LNA (longue distance) qui peuvent poser problème, ou du moins le plus souvent l’antenne qui ne donne pas entière satisfaction. Dans ce cas vous pouvez la remplacer par une antenne de puissance supérieure. On obtient déjà d’excellents résultats (en intérieur, extérieur, mixte) avec une antenne 6dBi.

2-3 dBi6 dBi, 75Ω, 28cm d’antenne, 1.5m de câble15 dBi
Résultats incertainsConseilléPas encore testé
antenne nrf24l01 sma 2dbiantenne nrf24l01 sma 15dbiantenne nrf24l01 sma 15dbi
Inclus avec les modules longue portée PA+LNABanggood – environ 3,70€Banggood – environ 7,35€

dx.com – environ 12,30€

Problèmes de connexion après la mise à jour d’un noeud

Des problèmes de connexion peuvent survenir après une mise à jour du code Arduino. Voici quelques piste pour les résoudre :

  • Attribuer un identifiant à chaque noeud. Théoriquement la version 2 intègre un système d’attribution automatique d’identifiant mais dans de nombreux cas, l’attribution est très longue ou ne fonctionne pas. Pour le moment, je vous conseil donc d’attribuer à chaque noeud un identifiant en ajoutant cette ligne au début du code (avant le setup)
  •  Si le problème persiste, effacez l’EEPROM dans laquelle MySensors stocke des variables interne. Le programme se trouve dans les exemples
  • Changez d’antenne. La qualité des antennes des modules bon marché semble très variable. Remplacer l’antenne peut résoudre le problème.

Autres questions

Peut-on mélanger des antennes courtes et longue distances ?

OUI, ça fonctionne très bien. Utilisez plutôt une antenne externe (d’au moins 6 dBi) pour la gateway.

Fonctionnement sur batterie, quelle alimentation choisir ?

Tout dépend de l’Arduino utilisé. S’il fonctionne à partir de 3.3V, vous pouvez utilisez 2 ou 3 piles AA (ou AAA). Dans ce cas utilisez impérativement un adaptateur pour ne pas dépasser 3.3V et obtenir un alimentation stabilisée. Si l’alimentation est trop faible, vous aurez des coupures de transmission ou le message !TSM:FAILURE tant redouté ! Dans ce cas optez pour une batterie LiPo plus puissante par exemple.

  • gandolfi

    Bonjour,
    Quel type d’adaptateur faut il acheter si l’on branche un esp8266 ou un module radio sur un lipo ?
    On peut esperer quelle durée pour une charge ?
    Merci

    • Bonjour Gandolfi. Pour brancher une batterie LiPo sur un ESP8266, tout va dépendre de la tension de celle-ci et du module. Partons du cas le plus courant, une batterie LiPo 3.7V. On directement alimenter l’ESP mais le mieux est d’utiliser un module qui permet de recharger la batterie (via un cable usb) en même temps que l’ESP fonctionne, par exemple celui-ci http://s.click.aliexpress.com/e/M3bY7Q7. Pour la durée, il est impossible de répondre précisément à cette question. En effet, cela va dépendre de beaucoup de paramètres : la puissance de la batterie, la fréquence d’envoi des données, la mise en veille (ou pas) de l’ESP, la température (en extérieur, une batterie n’aime pas trop le froid). Disons qu’on peut espérer faire fonctionner plusieurs mois son objet en envoyant quelques mesures par heure et en mettant en veille l’ESP. C’est un projet intéressant. Je vais réfléchir comment développer un petit programme de test (code, matériel, conditions) pour permettre à chacun d’estimer la durée de vie de sa batterie. A très bientôt.

      • gandolfi

        Merci pour ta réponse.
        – Tu branches ce module en plus sur l’ESP8266 ? Il fait régulateur de tension ?
        – Peut on brancher un régulateur de tension minimaliste avec une prise femelle lipo pour rendre le montage plus petit ? Ce n’est pas trop gênant de ne pas avoir le chargeur surtout si la lipo n’a besoin d’etre chargée qu’une fois par mois par exemple.

        • Bonjour Gandolfi. Oui c’est exactement ça. Ce module s’occupe de charger la batterie LiPo ‘proprement’ et alimenter une carte ESP. En l’occurence c’est un module adapté à la Wemos D1 Mini. Il vient donc s’empiler sur les autres modules. C’est assez compact. Tu as raison, on peut aussi utiliser un simple régulateur de tension. J’aime un peu moins à cause des risques (bien isoler les broches pour éviter les court-circuits, ça chauffe fort en fonction de la tension d’alimentation…). En tout cas, n’hésite pas à partager ton expérience avec nous. A très bientôt.

          • gandolfi

            Merci. Ja vais regarder cela j’ai un wemos dans un carton. Pour l’instant grace à ton site je me fais la main sur ESP8266 version developpement board avec jeedom et easystep.

  • Philippe

    bonsoir!
    Petite question: ma gateway (Arduino nano en USB sur RPi3) a été montée avec un nRF24L01 : peut on simplement remplacer ce module par un module nRF24L01+PA+LNA (antenne 2 dBi pour l’instant) ?
    Pas de configuration spéciale à faire ? Ca va

    • Bonjour Philippe. Oui c’est possible. Si vous avez acheté un adaptateur, il suffit de faire l’échange. C’est complètement transparent.

  • Philippe

    La suite…..
    Ca va fonctionner de suite après relance du RPi3 ?
    J’ai des modules relais, un module température (votre sketch !) et un module de mesure de l’intensité lumineuse. Tout fonctionne bien, mais je souhaiterai améliorer la portée du signal !
    Merci pour votre aide !
    Philippe

    • Oui. Il NE FAUT PAS LE FAIRE, mais ça fonctionne même en échangeant l’antenne à chaud. Pour améliorer la portée du signal, j’ai essayer de consigner le maximum de mon expérience dans cet article http://www.projetsdiy.fr/mysensors-v2-materiel-configuration-augmenter-portee-nrf24l01/. Je vous conseille d’investir dans une antenne de meilleure qualité que celle livrée avec les modules nRF24L01+PA+LNA. J’ai perdu beaucoup de temps pour obtenir une transmission fiable. Maintenant j’équipe tous mes modules avec cette antenne http://bit.ly/2lE2Mex. A très bientôt

      • Philippe

        Bonsoir, merci pour votre réponse super rapide !

        Je n’aime pas également le faire à chaud…Je préfère faire le remplacement des modules une fois le RPi éteint.

        Je m’inspire effectivement de votre article. J’avais repéré cette antenne, mais pour l’instant elle n’est pas en stock ! Je vais donc tenter avec l’antenne fournie avec le module pour l’instant, a moins que vous me disiez que c’est inutile, car j’aurai trop de problème d’émission/réception….!!

        Pour répondre à votre message de ci-dessous, non je n’ai pas d’adaptateur, actuellement le + de mon module nRF24L01 est directement connecté sur le pin 3.3V de l’arduino nano avec un condo de 4.7µF entre le + et le -. Je pensais juste inter-changer les modules. Mais peut être que cette sortie 3.3V n’est pas suffisante pour le nRF24L01+PA+LNA ? Ce module ne demande t il pas plus de puissance ?

        Ne vaut il pas mieux d’utiliser la sortie 5.0V + un régulateur de tension 3.3V ? j’utilise ce modèle avec mes arduino Pro Mini :
        http://www.banggood.com/fr/4_5V-7V-to-3_3V-AMS1117-Power-Supply-Regulator-Sensor-Module-p-1038726.html?rmmds=search
        Moins pratique que le votre, mais il fonctionne très bien.

        Comme il m’en reste un, je peut l’utiliser avec le module à antenne 2dBi si vous pensez que cela sera plus efficace.

        Dès que j’ai votre retour, je test…ou pas !! 🙂
        Merci !

        • Bonsoir Philippe. De rien, dès que c’est possible, j’essai de répondre le plus vite possible pour que vous puissiez avancer sur vos projets. Pour la puissance je n’ai pas rencontré de problème particulier même avec l’antenne indiquée. J’utilise cet Arduino nano (http://bit.ly/2khf6UE) pour mes montages sans aucun problème. Je n’ai pas rencontré de problème avec la puissance. J’ai vraiment rencontré des difficultés sur ces points en particulier :
          – La qualité de l’antenne. J’ai vraiment perdu du temps sur ce point. Même à
          – En extérieur, il faut être en champ libre. Le moindre arbre, mur… fait chuter rapidement la portée.
          – L’antenne de réception doit être aussi très bien positionnée. Il faut essayer d’être le plus possible en ligne direct. Plus il y a de végétation, plus la distance chute vite. J’ai installé mon antenne sur le toit. Attention à la neige en hivers. Ca bloque la réception ‘-).
          – Il faut quelque fois laisser du temps à MySensors pour établir la connexion.
          En tout cas, n’hésitez pas à faire des essais. Voilà, j’espère avoir répondu à toutes vos questions. A très bientôt.

          • Philippe

            Merci, c’est sympa !
            Je vais donc faire des tests et je ne manquerai pas de partager les résultats ! A bientôt,
            Philippe

      • gandolfi

        bonjour,

        tu parles de cette antenne http://disq.us/url?url=http%3A%2F%2Fbit.ly%2F2lE2Mex%3AgZOn-bPoVbP1wXt1dOCSnP5AA74&cuid=4098367

        Mais je ne comprend pas car elle est en 433 MHZ et le smodules NRF24l01 sont en 2.4 ghz non ?

        • Bonjour Gandolfi. Oui tu as parfaitement raison. La désignation commerciale stipule bien 433Mhz mais ça reste une antenne. Je l’utilise sur ma gateway et mes sondes depuis plusieurs mois sans aucun problème. Il faudrait regarder de plus près pour voir s’il y a des matériaux, une géométrie… à respecter en fonction de la fréquence utilisée. Je ne suis pas spécialiste dans le domaine. Si qq’un s’y connait, je peux faire un petit billet sur le sujet

          • gandolfi

            Merci. je voulais être sur d’avoir bien compris. je vais la commander pour tester.

  • remis

    Bonjour,
    Apres quelques pratiques de mysensor V2:
    _si pas utilisation en mode PA_low , ( basse puissance) alors : ajouter un condensateur de filtrage de 100µF env sur les broches d’alim du module.
    _Dans tous les cas alimenter le module en 3V3
    _comme indiqué fixer manuellement lent l’ID : plus facile à debegguer
    _utiilser un canal de transmission autre que celui utilisé par defaut, 76 = 2476 Mhz judicieusement choisi pour ne pas tomber sur les canaux wifi des equipements à proximité . par exemple la boxe internet a laquelle on est reliée en ETH.