dimanche 20 janvier 2019

Communication 433 MHz entre deux STM32 Blue Pills

Avertissement:  la bibliothèque Manchester utilisée dans cet article ne fonctionne qu'avec le vieux core STM32Duino mis au point par Roger Clarke. Il ne fonctionne pas avec le core STM32 officiel de ST Microelectronics.

Je continue mon exploration des modules Blue Pill (STM32F103C8) avec une communication radio entre deux modules Blue Pill par l'entremise d'une paire émetteur récepteur 433 MHz. Remarquez que la même procédure vous permettra également d'établir une communication entre une Blue Pill et une carte Arduino.

Matériel

Il s'agit de la paire émetteur/récepteur la plus économique qui soit, facile à trouver sur les sites de vente asiatiques.  L'émetteur, de forme carrée, porte souvent la mention "FS1000A".  Il comporte trois broches: Data, Vcc et GND, ainsi qu'un connecteur permettant d'ajouter une antenne.


Le récepteur, de forme rectangulaire, comporte 4 connecteurs, mais les deux connecteurs du centre sont redondants: Data, Vcc et GND encore une fois. À l'extrémité opposée de la carte, un connecteur permet de souder une antenne.



Donc, deux Blue Pills et une paire émetteur-récepteur, pour un montant total qui ne devrait guère dépasser 5 euros.

Connexions

En principe, ces modules sont conçus pour fonctionner à une tension de 5 V, ce qui n'a rien de problématique si vous utilisez une des nombreuses broches de la Blue Pill qui tolèrent les tensions de 5 V. Cependant, je n'ai jamais eu le moindre problème à les alimenter en 3,3 V donc n'hésitez pas à procéder de cette façon si ça vous convient mieux.

Du côté émetteur les branchements sont les suivants:
  • Broche DATA du module émetteur -- Broche B13 de la Blue Pill
  • Broche VCC du module émetteur -- Broche 5 V de la Blue Pill
  • Broche GND du module émetteur -- Broche GND de la Blue Pill


C'est sensiblement la même chose du côté récepteur:
  • Une des broches DATA du module récepteur  -- Broche B13 de la Blue Pill
  • Broche VCC du module récepteur -- Broche 5 V de la Blue Pill
  • Broche GND du module récepteur -- Broche GND de la Blue Pill


De plus, afin de pouvoir utiliser le moniteur série de l'IDE Arduino pour visualiser les informations reçues par le récepteur, le montage récepteur doit pouvoir communiquer avec l'ordinateur, soit par le connecteur USB de la Blue Pill, soit par l'entremise d'un adaptateur série-USB connecté aux broches A9 et A10.


Installation de la bibliothèque

La compatibilité des bibliothèques est un irritant fréquent lorsque vous utilisez l'IDE Arduino pour programmer autre chose qu'une carte Arduino. Par exemple, la bibliothèque VirtualWire, qui aurait fait parfaitement l'affaire pour une communication entre deux cartes  Arduino Uno, ne fonctionne pas pour la Blue Pill (erreur de compilation). En principe, on devrait pouvoir utiliser RadioHead mais mes essais se sont révélés infructueux.

J'ai donc utilisé une version spéciale de la bibliothèque Manchester, que j'avais déjà utilisée pour l'ATTiny85, que quelqu'un a modifiée pour la rendre compatible avec la Blue Pill (trouvée dans cette discussion du forum STM32Duino). Notez que cette bibliothèque est également compatible avec Arduino, ATTiny et ESP8266, ce qui permet d'envisager plusieurs combinaisons intéressantes.

De plus, vous devez avoir installé dans l'IDE Arduino le vieux core STM32Duino de Roger Clarke (cette version de la bibliothèque Manchester ne fonctionne malheureusement pas avec le core officiel STM32).

Les sketches

La paire de sketches que je vous propose ici sont très similaires aux exemples "ManchesterTX_Basic" et "ManchesterRX_Basic" qui sont livrés avec la bibliothèque.

Chaque seconde, l'émetteur envoie un message (il s'agit d'un nombre entier qui augmente d'une unité à chaque transmission). Chaque fois qu'un message est émis, la LED intégrée de la Blue Pill change d'état (à quelques reprises, le non-clignotement de cette LED m'a permis de constater que j'avais oublié de replacer le jumper BOOT0 dans la position qui permet le démarrage automatique du programme).

Le transmetteur surveille l'arrivée d'un éventuel message. Lorsqu'il en reçoit un, il le retransmet par communication série (pour qu'on puisse le voir dans le moniteur série) et il change l'état de la LED intégrée de la Blue Pill.

Vous pouvez ainsi vérifier si tous les messages émis sont captés (à partir d'une certaine distance, vous en perdrez une certaine proportion).



Si vous désirez utiliser un des sketches pour une carte Arduino plutôt qu'une Blue Pill, les deux seules modifications à effectuer sont le numéro de la broche reliée au module émetteur ou récepteur, et le numéro de la broche reliée à la LED (13).

Sketch de l'émetteur:

Sketch du récepteur:



À lire aussi

Ailleurs dans ce blog, la même paire émetteur-récepteur a été utilisée afin d'établir une communication entre deux cartes Arduino,  entre un Raspberry Pi et un Arduino et entre  un ATTiny85 et un Arduino. Les modules nRF24L01 constituent aussi une option intéressante pour établir une communication sans fil entre deux microcontrôleurs.

Yves Pelletier   (TwitterFacebook)

1 commentaire:

  1. hi.
    this link
    https://www.stm32duino.com/download/file.php?id=522
    is not available anymore.
    Reupload modified library please.
    another mahchester libraries i found does not work with stm32.
    thanks.

    RépondreSupprimer