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 !!!
TSM:INIT
TSM:RADIO:OK
TSM:FPAR
TSP:MSG:SEND 255-255-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc:
TSM:FPAR
TSP:MSG:SEND 255-255-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc:
TSM:FPAR
TSP:MSG:SEND 255-255-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc:
TSM:FPAR
TSP:MSG:SEND 255-255-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc:
!TSM:FPAR:FAIL
!TSM:FAILURE
TSM:PDT

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

Usages Inté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 nrf24l01 nrf24l01+pa+lna antenne 2dbi
Liens commerciaux Banggood – 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 dBi 6 dBi, 75Ω, 28cm d’antenne, 1.5m de câble 15 dBi
Résultats incertains Conseillé Pas encore testé
antenne nrf24l01 sma 2dbi antenne nrf24l01 sma 15dbi antenne nrf24l01 sma 15dbi
 Inclus avec les modules à antenne externe Banggood – environ 3,70€ Banggood – environ 7,35€

http://www.banggood.com/2_4G-Wifi-Router-Antenna-15dbi-RP-SMA-High-Gain-Antenna-p-84801.html?rmmds=detail-bottom-alsobought

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)
#define MY_NODE_ID xx
  •  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.