Club robotique de Sophia-Antipolis

Accueil > POBOTpedia > Communications > Communications sans fil > Protocole simple sur liaison 433 MHz

Protocole simple sur liaison 433 MHz

mardi 26 mars 2013, par Julien H.

Certains dispositifs de commande à distance en domotique peuvent fonctionner sur 433 MHz ou 315 MHz (bande d’onde AM).

Il est alors facile de récupérer leur puce et de la contrôler avec un minimum de code, par exemple avec un micro-contrôleur (PIC, AVR...).

Sans faire de récupération (quel dommage), on peut aussi acheter des kits d’émetteur/récepteur basés sur les puces suivantes :

 SC5262 / SC5272
 HX2262 / HX2272
 PT2262 / PT2272
 EV1527, RT1527, FP1527, HS1527...

La version que nous avons utilisée vient d’une boutique en ligne, et utilise les puces PT2262 (émetteur) et PT2272 (récepteur).

Le protocole utilisé est implémenté dans une bibliothèque pour Arduino mais peut être repris. Il fonctionne sur n’importe quelle patte GPIO pour l’émetteur et sur interruption pour le récepteur.

Le code peut être téléchargé ici : http://code.google.com/p/rc-switch/ et il est également accessible sur le PC de notre local pour ceux qui participent à nos ateliers.

L’archive contient un répertoire "RCswitch" que l’on va copier dans le "sketchbook" ou "carnet de croquis" en créant s’il n’existe pas un dossier "Libraries" : Arduino\Libraries\RCswitch

Possibilités de communication

Comme il est fait pour la domotique, il est possible d’utiliser ce qui avait été prévu pour des interrupteurs (d’où le nom "RC switch" qui signifie interrupteur radio-commandé en anglais) : switch on, switch off.

Dans l’usage que nous lui réservons (commande unidirectionnelle d’un robot), nous utiliserons simplement "send" pour envoyer et "available" (disponible) pour recevoir.

Un des atouts de ce protocole est de pouvoir envoyer directement sur un nombre de bits variable (8, 16, 24, ...).

Adaptation du protocole

Lorsqu’on teste, on s’aperçoit que les messages sont reçus plusieurs fois. Il n’y a pas de retour pour valider la réception, donc il faut trouver une solution pour éviter de lire plusieurs fois le même octet et ainsi introduire un décalage :

> received 255 / 8bit Protocol: 1
> received 255 / 8bit Protocol: 1
> received 255 / 8bit Protocol: 1
> received 309 / 16bit Protocol: 2
> received 309 / 16bit Protocol: 2
> received 309 / 16bit Protocol: 2
> received 309 / 16bit Protocol: 2
> received 309 / 16bit Protocol: 3
> received 309 / 16bit Protocol: 3

Il y a deux façons de tourner cet inconvénient en avantage :

 en changeant le "protocole" comme ci-dessus
 en utilisant le "protocole" comme une adresse

Dans les deux cas, on peut traiter la nouvelle valeur reçue ou bien l’oublier, en considérant qu’il faut attendre le changement de protocole. Tout dépend de votre programme.

Un message, un commentaire ?

modération a priori

Attention, votre message n’apparaîtra qu’après avoir été relu et approuvé.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.