RF24L01 et STM8S

RF24L01 et STM8S

RF24L01 et STM8S

Deux RF24L01 et STM8S

Introduction

On trouve très facilement sur ebay ou ailleurs des modules sans fil 2.4 GHz utilisant des puces Nordic RF24L01, et ce à deux ou trois dollars. Amusons nous à en faire marcher deux avec deux STM8S.

On utilisera pour cela des kits de développement de chez STM: le STM8SVLDISCOVERY. Ce dernier comprend un microcontrolleur STM8S003K3 ainsi qu’un programmateur USB. Bref, tout ce qu’il faut pour faire marcher tout le délire sans soudure et (preque) sans peine.

Prise en main du module sans fil

Des trames SPI entre un STM8S et un RF42L01.

Des trames SPI entre un STM8S et un RF24L01.

On interagit avec le module RF24L01 en utilisant une liaison SPI standard (CS/CLK/MISO/MOSI). Un GPIO (CE) permet de changer de mode entre les mode STANDBY et les modes de réception/émission actifs. Un autre GPIO (IRQ) permet de savoir quand quelque chose d’important vient de se passer (paquet reçu, paquet envoyé, paquet envoyé non reçu à l’autre bout).

Le module fonctionne avec des paquets de 1 à 32 octet. Il se débrouille pour qu’ils soient ré-assemblés correctement à la réception, et/ou réémis en cas de problème. Un CRC permet de savoir si les données reçues sont correctes.Plein d’options et de gadgets sont possibles. Consultez la datasheet pour avoir des étoiles dans les yeux.

Le module n’est pas full duplex, donc il faut faire alterner les modules entre les modes émissions et réception.

Connectique

RF24L01_module_pineout

Le module s’interface généralement comme suit (ce qui correspond d’ailleurs à l’application note de la datasheet).

Pin Signal Qu’est ce que?
1 (carré) GND La masse
2 VCC 3.3V
3 CE Envoie les données ou active la réception
4 CSN Sélectionne le module en SPI
5 SCK Horloge SPI
6 MOSI Données du maitre
7 MISO Données du module
8 IRQ Flag d’interruption du module

Nous avons relié les deux parties de la façon suivante:

Côté STM8S Côté 24L01
PC3 CE
PC4 CSN
PC7 MISO
PC6 MOSI
PC5 SCK
PC2 IRQ

 Exemple de code

Le code d’exemple que nous avons réalisé ici se contente d’envoyer deux int de 32 bit du maitre vers l’esclave. L’esclave effectue les 4 opérations mathématiques de base avec puis renvoie les résultats.

Cet exemple permet de s’assurer que les octets envoyés/reçu sont bien réassemblés correctement dans une structure C, et que ces paquets sont bien les bons (on ne se retrouve pas avec le paquet précédant alors qu’on voulait le dernier parce que ce dernier est coincé dans une FIFO quelque part dans un coupleur).

L’exemple a été réalisé avec IAR workbench for STM 1.40.1.

Le code est disponible sur GitHub ici.

License: MIT.

Tests de portée

Nous avons testé la portée du module. Nous avons constaté une portée d’une centaine de mètres en extérieur. La portée intérieur est évidemment bien moindre, mais le contraire aurait été étonnant.

Conclusion: ces modules ont un excellent raport qualité prix.

Leave a Reply

Your email address will not be published. Required fields are marked *


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>