lundi 6 février 2017

Communication par nRF24L01 entre deux MSP430 Launchpads

Puisque ma dernière utilisation d'un MSP430 Launchpad date de bien longtemps, et que ma dernière utilisation d'un module émetteur-récepteur nRF24L01 date d'encore plus longtemps encore, ce petit tuto portera sur la communication entre deux MSP430 Launchpads au moyen de modules nRF24L01, en utilisant l'IDE Energia.

Matériel:

Il vous faut deux cartes MSP430 Launchpad et deux modules nRF24L01.  Lors des tests décrits ici, chaque Launchpad était branché par USB à son propre ordinateur (qui se trouvaient dans la même maison, mais pas sur le même étage).

La bibliothèque Enrf24

La bibliothèque Enrf24, developpée par Spirilis, est d'une étonnante simplicité d'utilisation.  Notre première étape consiste donc à télécharger et installer cette bibliothèque.

Branchements du module nRF24L01 au MSP430 Launchpad

Je connais deux modèles différents de modules nRF24L01:  les modules verts, comportant 10 connecteurs clairement identifiés, et les modules noirs, comportant 8 connecteurs qui ne sont pas du tout identifiés!

La photo ci-contre devrait vous aider à identifer correctement les connections, surtout si vous utilisez le modèle noir.

Les modules nRF24L01 communiquent par le protocole SPI, à un niveau logique de 3,3 V, tout comme les cartes Launchpad.  Nous n'aurons donc pas à nous préoccuper de convertir le niveau logique comme nous l'aurions fait avec une carte Arduino fonctionnant sous 5 V:  un problème de moins.

Notez que le schéma ci-dessous est pour le modèle d'entrée de gamme MSP-EXP430G2.  Si vous utilisez une autre carte de la famille Launchpad, il se peut que les pins réservées à la communication SPI soient différentes (je sais que les pins MOSI et MISO sont parfois inversées).  Dans le doute, vous pouvez vous référer aux schémas de brochage publiés sur le site d'Energia.

Les connexions sont les suivantes:

GND du nRF24L01 --- GND du Launchpad
Vcc du nRF24L01 --- Vcc du Launchpad
SCK du nRF24L01 --- P1.5 du Launchpad
MOSI du nRF24L01 --- P1.7 du Launchpad
MISO du nRF24L01 --- P1.6 du Launchpad
CE du nRF24L01 --- P2.0 du Launchpad*
CSN du nRF24L01 --- P2.1 du Launchpad*
IRQ du nRF24L01 --- P2.2 du Launchpad*

* Nous spécifions les pins CE, CSN et IRQ dans le sketch.  Il est donc possible de les brancher ailleurs à la condition de modifier le sketch en conséquence.

Les connexions sont identiques pour les deux Launchpad, peu importe qu'il s'agisse de l'émetteur ou du récepteur (notez bien que chaque module nRF24L01 peut à la fois envoyer et recevoir des données).



Une première paire de sketches

Dans ce premier exemple, notre Launchpad émetteur va émettre des nombres entier croissant au rythme de 1 par seconde, alors que le Launchpad émetteur va afficher ce qu'il reçoit dans le moniteur série.

Cette paire de sketch est particulièrement utile pour effectuer un premier test.  D'une part, il ne nécessite aucun composant supplémentaire dans notre circuit et, d'autre part, puisque chaque message est numéroté, nous aurons la preuve que tous les messages émis sont bel et bien reçus.

Sketch de l'émetteur:


Sketch du récepteur:


Si tout fonctionne correctement, vous devriez voir une liste de messages numérotés en ordre croissant dans le moniteur série d'Energia (associé au récepteur).



Un deuxième exemple

Dans ce deuxième exemple, un bouton relié au Launchpad émetteur permettra de contrôler l'état de deux LEDs branchées au Launchpad récepteur.

Le Launchpad émetteur est donc muni d'un bouton poussoir associé à une résistance de tirage (pull-down) de 10 kΩ.  (J'ai aussi ajouté un condensateur de 100 nF en parallèle avec le bouton afin d'atténuer les rebonds; il est optionnel).  Le bouton est branché à la broche P1.0.

Le Launchpad récepteur, quant à lui, est relié à deux LEDs associées à une résistance de protection.  Au début, j'avais envisagé d'utiliser simplement les deux LEDs intégrées à la carte, mais l'une d'entre elles est associée à la pin P1.6, qui est déjà utilisée par notre module nRF24L01.  Une première LED est branchée à la broche P1.0, alors que l'autre est branchée à la broche 1.4.

Circuit de l'émetteur



Circuit du récepteur



Sketch de l'émetteur


Sketch du récepteur


Lorsqu'on appuie sur le bouton une première fois, le message "1" est envoyé et une des LEDs branchée au récepteur s'allume.

Un deuxième appuie sur le bouton (message "2"):  c'est l'autre LED qui s'allume.

Troisième appui sur le bouotn (message "3"):  les deux LEDs sont allumées.

Quatrième appui sur le bouton (message "4"): les deux LEDs sont éteintes.


(Source d'inspiration:  une discussion concernant la bibliothèque Enrf24, sur le forum 43oh.)


Yves Pelletier   (TwitterFacebook)

Aucun commentaire:

Enregistrer un commentaire