Bonjour
Depuis deux jours, j'essaye sans succès de jouer avec des petits modules 433 Mhz standards.
J'ai une uno avec un émetteur, une autre avec un récepteur.
Il existe deux bibliothèques de référence : virtualWire et RCSwitch
Mais ni l'une ni l'autre ne fonctionne avec les exemples de base : la uno émettrice envoie un simple signal mais la uno côté réception ne décode rien.
En analysant plus en détail, je tombe sur un truc que je n'arrive pas à expliquer :
Lorsque je branche un oscillo (Hantec 6022BE) sur la sortie DATA du récepteur 433 Mhz, j'observe bien les trames attendues. Le signal a l'air propre : niveau bas à 0V, niveau haut à 3,6V, pas de parasites apparents sur la restitution (filtres ?). Visuellement, on le décode très bien.
Mais lorsque je relie cette sortie DATA à une pin de l'arduino, le signal lu a l'air parasité à haute fréquence (je branche soit l'oscillo, soit l'arduino, mais pas les deux simultanément).
virtualWire est basée sur une interruption du timer, pour lire la pin par un digitalRead à fréquence constante
RCSwitch est basée sur une interruption liée à la pin (CHANGE), sans utiliser digitalRead()
Ces deux bibliothèques ont des traitements assez complexes d'analyse du signal, pour assurer une synchronisation temporelle et filtrer les parasites, mais visiblement ni l'une ni l'autre n'arrive à retomber sur ses pieds.
J'ai développé plusieurs petits programmes sans utiliser ces libs, pour voir ce qui se passe sur la pin.
Certains basés sur des lectures en rafale (environ 500.000 digitalRead par seconde), d'autres basés sur des interruptions.
Le résultat est sans appel : il y a plein de variations à haute fréquence sur la lecture arduino.
Et même dans le cas d'une interruption CHANGE, dans laquelle j'effectue immédiatement un digitalRead(), il arrive que deux interruptions successives lisent la même valeur, comme si la tension changeait entre le déclenchement de l'interruption et le digitalRead().
Et même lorsque l'émetteur n'émet rien du tout, et que la sortie DATA du récepteur est a priori stable à 0V (d'après l'oscillo).
J'ai remplacé les uno, les modules 433 Mhz (j'en ai deux jeux issus de la même commande), les 3 fils, ... sans effet.
Ce qui me perturbe, c'est la différence d'observation de la sortie DATA du récepteur, selon que j'utilise un oscillo ou une arduino.
Une idée de ce qui pourrait expliquer ce phénomène ?