Tutoriel : Démarrer avec le NRF-Shield
Introduction
Il s'agit d'un didacticiel de mise en route qui fournit au lecteur un aperçu général de la manière de faire fonctionner un projet à l'aide des modules NRF24L01+ populaires. Dans ce projet, l'utilisateur configurera deux nœuds de communication. Le nœud « émetteur » incrémente un compteur interne et le transmet au « récepteur ». Le signal du compteur n'est qu'un exemple et peut facilement être remplacé par un signal plus utile, tel qu'un signal de capteur ou autre. Le nœud récepteur attend de recevoir le signal et, une fois reçu, l'affiche sur l'écran LCD. Avant de passer à l'incrément suivant du compteur, le nœud émetteur attend d'obtenir un accusé de réception du récepteur pour s'assurer que la transmission a réussi.
Ce didacticiel est conçu pour utiliser certaines des fonctionnalités du NRF-Shield et comment elles peuvent être utilisées. Dans cet esprit, deux microcontrôleurs Arduino différents, deux versions NRF24L01+ différentes, deux configurations de broches de sélection matérielle différentes et enfin deux manières différentes d'alimenter les modules de communication RF sont utilisés. Avec toutes ces différences complémentaires, la flexibilité du NRF-Shield est explorée. L'utilisateur pourra souhaiter simplifier cet agencement à sa guise, en réduisant ces différentes différences. De plus, en termes de concepts avancés de communication RF, le script reste aussi simple que possible. Il existe de nombreux concepts avancés de communication RF qui ne sont pas abordés dans ce didacticiel.
Matériel requis
Le matériel suivant est le minimum requis pour que deux modules NRF24L01+ communiquent entre eux :
- 1 fois Bouclier de microcontrôleur PCB prototype PTSolns pour Arduino Uno (NRF-Shield Deluxe)
o Ce paquet comprend deux boucliers NRF et le matériel supplémentaire requis pour assembler les boucliers comme
utilisé dans ce tutoriel. Une soudure est nécessaire. - 2x Microcontrôleur Arduino (Uno R3, Mega, Leonardo ou Due)
o Le NRF-Shield est compatible avec tous les microcontrôleurs Arduino mentionnés. Dans ce tutoriel, un Uno et un Mega sont utilisés. - 2x émetteur-récepteur NRF24L01+ (Mini, Standard , +PA+LNA )
o Dans ce didacticiel, un NRF24L01+ de taille standard et un NRF24L01+PA+LNA sont utilisés. Cependant, n'importe lequel de ces trois émetteurs-récepteurs, comme illustré sur la figure 1, fonctionnerait pour ce didacticiel. - 1x LCD avec module « sac à dos » I2C
- 4x fils Dupont mâle-femelle
- Alimentation de table, ou équivalent
Logiciel requis
Le logiciel Arduino IDE est requis. Celui-ci peut être téléchargé librement. Une fois ce logiciel installé, l'utilisateur peut ou non devoir effectuer certaines sous-étapes pour que la configuration du logiciel soit correcte. Ces étapes sont les suivantes :
- Selon le module convertisseur série FTDI USB vers TTL utilisé, un pilote spécial, tel que le pilote CH340, devra peut-être être installé. Il s'agit d'un pilote bien documenté pour lequel de nombreux didacticiels sont disponibles. Le tutoriel que nous recommandons s'appelle « Tutoriel : Première utilisation du Nano Microcontrôleur » par PTSolns. Cependant, si de véritables microcontrôleurs Arduino sont utilisés, aucun pilote spécial ne sera requis.
- Le script présenté dans la section 5 ci-dessous nécessite que certaines bibliothèques soient installées dans le logiciel IDE. Ouvrez Outils\Gérer les bibliothèques… et recherchez et installez les éléments suivants : « LiquidCrystal_I2C », « RF24 », « SPI ».
Configuration du matériel
Dans cette section, les nœuds émetteur et récepteur sont assemblés. Comme mentionné ci-dessus, les deux nœuds sont configurés différemment sur certains aspects clés afin de mettre en évidence des fonctionnalités particulières du NRF-Shield. Cependant, l'utilisateur peut souhaiter modifier cette configuration comme bon lui semble. Le produit final, tel qu'il sera réalisé dans ce didacticiel, devrait ressembler à ce qui est montré sur la figure 2.
Les nœuds émetteur et récepteur sont abordés dans les sous-sections suivantes. Le matériel nécessaire à l'assemblage de ces cartes est inclus dans le package Deluxe, à l'exclusion des modules RF, des fils et du LCD.
Nœud expéditeur
Le nœud émetteur est illustré à la figure 3. On peut voir que le NRF24L01+ de taille standard est utilisé, avec l'Arduino Mega. L’assemblage du récepteur est simple. Un connecteur femelle 2X4 broches est soudé dans l'empreinte « NRF Interface ». Le NRF24L01+ de taille standard est connecté à cet embase femelle.
Ensuite, un connecteur mâle 1 x 15 broches est soudé le long des broches de sélection matérielle. Des capuchons de cavalier à 2 broches sont placés sur les sélections suivantes : 3V3, D9, D7 et D3. La sélection 3V3 consiste à utiliser l'alimentation 3,3 V intégrée pour alimenter le module. D7 et D9 seront utilisés dans le script correspondant. D3, la broche d'interruption, n'est pas utilisée dans ce tutoriel.
Enfin, les broches d'en-tête reliant le NRF-Shield à l'Arduino sont des embases mâles standard. Bien que le bouclier soit entièrement empilable, il n’est pas recommandé de le faire. La communication RF fonctionne mieux avec le moins d'obstruction possible à l'antenne. Notez ici qu'un embase mâle 1X15 broches a été utilisée entre les empreintes d'en-tête 1X8 broches et 1X6 broches de l'Arduino, la 9ème broche étant retirée après avoir soudé la rangée en place. CONSEIL : placez les connecteurs mâles dans l'Arduino avant de souder pour vous assurer que les rangées sont parallèles et que le blindage s'adapte bien.
Nœud récepteur
Le nœud récepteur est illustré à la figure 4. On peut voir que le NRF24L01+PA+LNA de plus grande taille est utilisé, ainsi que l'Arduino Uno R3. Il y a un peu plus d'assemblage sur ce nœud, mais il y a beaucoup de chevauchement avec le nœud expéditeur. L'utilisateur doit reproduire tous les joints de soudure effectués comme sur le nœud émetteur.
Concernant le module NRF, celui utilisé sur le nœud récepteur possède un long PCB et une grande antenne. Si le module RF ne dispose pas déjà de cela, l'utilisateur doit souder des embases mâles 1X2 broches sur le module RF de chaque côté de l'empreinte de l'antenne. Dans l'empreinte correspondante sur le NRF-Shield, l'utilisateur doit souder un connecteur femelle 1X2 broches. CONSEIL : Il est plus simple de commencer par mettre en place ces petits connecteurs, puis de les souder. Bien que l'ajout de ces embases à broches 1X2 ne soit pas obligatoire, il est fortement recommandé car ils ajoutent un support structurel pour le module RF.
Pour les broches de sélection matérielle, les éléments suivants sont définis : VR, D10, D8, D2. La sélection VR consiste à utiliser l'alimentation en tension externe pour alimenter le module. Cela nécessite que l'utilisateur installe un régulateur de tension de 3,3 V et deux condensateurs de lissage (ces composants sont inclus dans le package Deluxe). Notez que l'empreinte du régulateur de tension est conçue de telle sorte que toute permutation des broches Vin, Vout et GND soit acceptée. Ceci est utile dans le cas où l'utilisateur souhaite utiliser un régulateur différent ayant une configuration de brochage différente. C'est généralement une bonne idée d'utiliser la sélection VR avec le régulateur de tension externe lors du fonctionnement du module RF à la puissance maximale (définie dans le script), car le NRF24L01+PA+LNA peut consommer trop de courant dans certaines situations, ce qui peut entraîner communications instables. Comme pour le nœud émetteur, le nœud récepteur n'utilise pas la broche d'interruption (D2 dans ce cas).
Enfin, l'utilisateur doit souder une borne à vis à 4 broches (incluse dans le package Deluxe) sur l'empreinte I2C n°3 et connecter l'écran LCD. Notez que l'écran LCD est interfacé par l'utilisation du « sac à dos », qui permet à l'écran LCD d'être connecté uniquement par quatre fils via le bus I2C et l'alimentation. La plupart des modules LCD sont livrés avec ce sac à dos déjà installé.
Configuration du logiciel
Les scripts pour l'expéditeur et le destinataire de ce didacticiel ont été réduits au strict minimum. Il s’agit de garder le codage aussi simple que possible et de commencer le plus rapidement possible. Il est toutefois rappelé à l'utilisateur que de nombreux détails relatifs au fonctionnement des modules RF sont omis.
Les scripts de l'expéditeur et du destinataire sont décrits ci-dessous. Les parties émetteur et récepteur sont contenues dans le même script. Lors du téléchargement du côté expéditeur, décommentez simplement la ligne #define COMPILE_TX et commentez la ligne #define COMPILE_RX et vice versa lors du téléchargement du côté récepteur. Notez en outre que dans ce didacticiel, deux microcontrôleurs Arduino différents sont utilisés et que la sélection correspondante doit donc être effectuée dans le logiciel IDE.
Veuillez consulter le téléchargement suivant pour obtenir le fichier INO pour l'IDE Arduino.
Notez dans le script aux lignes 17 et 21 que les broches CE et CSN sont sélectionnées car elles correspondent à la sélection matérielle respective effectuée dans la section 4. Être capable de choisir entre différentes broches CE et CSN (ainsi que l'interruption, qui est non utilisé dans ce tutoriel) est très utile. Par exemple, si une partie différente du projet/pile utilise une broche qui aurait autrement été requise par le module RF si les broches de sélection matérielle n'avaient pas été disponibles sur la carte.
Résultats et conclusion
Une fois les scripts de l'expéditeur et du destinataire téléchargés avec succès, la communication entre les nœuds doit être établie. Pour voir les résultats, le microcontrôleur du récepteur doit être branché à l'ordinateur exécutant l'IDE Arduino via USB et le moniteur IDE ouvert (« Outils\Moniteur série »). La commande Serial.print écrira la sortie sur le moniteur IDE. Si tout réussit, le moniteur doit imprimer un nombre entier qui s'incrémente toutes les deux secondes, similaire à ce qui est affiché en 5.
De plus, l'écran LCD doit afficher le compteur incrémenté, mis à jour environ toutes les secondes. L’impression LCD est visible sur la figure 6.
Ce didacticiel a montré les fonctionnalités mises en évidence du NRF-Shield. Il s'agit notamment de :
- Possibilité d'interfacer trois tailles courantes du module RF NRF24L01+.
- Possibilité de modifier les broches matérielles, ce qui se reflète dans le script correspondant.
- Possibilité d'alimenter le module RF avec deux méthodes différentes.
- Compatibilité avec une gamme de microcontrôleurs Arduino.
Dépannage
"La RF est difficile." – D. Cornish
Voici des suggestions de dépannage. Plusieurs choses peuvent mal tourner ou empêcher le projet de fonctionner comme prévu. Cela est vrai pour tout projet électronique DYI, mais particulièrement lorsqu’il s’agit d’appareils RF.
Si le code n'est pas téléchargé
- Essayez de changer le câble USB.
- Assurez-vous que le port approprié dans l’IDE est sélectionné.
- Essayez de charger un exemple générique (par exemple « Hello World ») fourni avec l'installation de l'IDE. Assurez-vous que l’exemple générique fonctionne avant de continuer. Pour cela, déconnectez toutes les connexions LoRa, afin de pouvoir vous assurer que le programmateur et le microcontrôleur ne sont pas défectueux.
- Dans le logiciel IDE, sous Fichier\Préférences, activez « Afficher la sortie détaillée pendant : » sur « compilation » et « téléchargement ». Lisez le résultat en essayant de télécharger le script. Vous pouvez copier et coller des parties du résultat et effectuer une recherche en ligne dans les forums. Il est plus que probable que le problème ait été largement abordé en ligne.
Si le matériel ne fonctionne pas
- Assurez-vous que le nœud expéditeur a chargé le script correspondant correct en supprimant le commentaire de la ligne 7 et en commentant la ligne 8. Vice versa pour le nœud récepteur.
- À l'aide d'un multimètre sur le réglage de la tension CC, assurez-vous que VCC à GND lit les valeurs correctes.
- Coupez l’alimentation. À l'aide d'un multimètre sur le réglage de la conductivité, vérifiez toutes les connexions entre tous les composants.
- Assurez-vous que les broches de sélection matérielle pour les nœuds émetteur et récepteur sont exactement telles que définies dans les scripts correspondants.
- Tout au long du script, placez des extraits de sortie pour faciliter le débogage. Quelque chose de similaire à : Serial.println("goto x"); où x est un nombre que vous modifiez pour savoir quel code a été exclu.