E-mail :
Mot de passe :
Se souvenir des mes identifiants
2010-03-15 01:39 | Anonymous | Connexion / Inscription
 

La Crosse Technology WS2300

Cette page présente le protocole utilisé par les stations météorologiques WS2300 de Lacrosse Technology.

Protocole

RS-232

Les stations météorologiques du type WS2300 communiquent via le port RS-232 :

  • Vitesse de transmission : 2400 bits/s
  • Taille des données : 8 bits
  • Parité : Aucune
  • Bits de stop : 1 bit
  • Broche RTS : état haut
  • Broche DTR : état bas

Les broches RTS et DTR sont utilisées pour communiquer avec la station.

Résumé général du protocole

  • Initialisation de la communication
  • Envoi de l'adresse
  • Envoi de la commande (lecture ou écriture)
  • Lecture de la réponse (si commande de lecture envoyée)

Résumé des commandes

Les échanges avec la station via le port RS-232 s'effectue sous forme d'octets. Cependant l'adressage s'effectue quant à lui par quartet (demi octet ou encore nibble).



Initialisation


Important :

Avant d'envoyer toute commande ou bien lorsqu'une erreur de communication s'est produite, il faut effectuer une initialisation.


L'initialisation consiste à envoyer l'octet 0x06 à la station. Tant que la station né répond pas 0x02, continuer de renvoyer 0x06.
Une temporisation de plus ou moins 100 ms entre chaque tentative est conseillée.

Envoi de l'adresse

Les stations météorologiques du type WS2300 possèdent un bus mémoire de largeur 2 octets. A la place d'implémenter un protocole plus ou moins complexe, la récupération d'informations depuis les stations WS2300 s'effectue en envoyant directement l'adresse où l'on souhaite effectuer une opération de lecture ou d'écriture.
Sachant que l'adressage s'effectue par quartet (nibble), il faut donc envoyer 4 octets à la station tout en lui indiquant que nous sommes en mode adressage. Voici la commande générale pour envoyer un quartet d'adressage :
0x82 + (nibble * 4)
| |
| |-> Quartet de l'adresse à envoyer
|-> Nous indiquons à la station que nous sommes en mode adressage

Prenons un exemple, nous souhaitons envoyer l'adresse 0x0373 (température extérieure) :
  • Envoyer 0x82 + (0 * 4)
  • Envoyer 0x82 + (3 * 4)
  • Envoyer 0x82 + (7 * 4)
  • Envoyer 0x82 + (3 * 4)

A chaque octet d'adressage envoyé, la station répond par un accusé. Notre exemple précédent aurais retourné les accusés suivants :
Accusé octet 1 : 0x00
Accusé octet 2 : 0x13
Accusé octet 3 : 0x27
Accusé octet 4 : 0x33

Les octets d'accusation sont donc de la forme :
octet_accusé = rang * 0x10 + nibble


Important :

Si vous constatez que l'accusé est erroné, vous devez immédiatement effectuer une initialisation. En effet cela indique une mauvaise adresse et pourrait être dommageable pour la station.




Commande de lecture

Toujours suite à notre exemple, nous souhaitons lire 2 octets depuis la station à l'adresse 0x0373 (température extérieure).
Pour se faire nous devons envoyer la commande de lecture générale suivante :
0xC2 + (nb_octets * 4)
| |
| |-> Nombre d'octets à lire depuis la précédente adresse envoyée. Nb octets <= 15 (0x0F)
|-> Nous indiquons à la station que nous sommes en mode lecture

Dans notre exemple, cela donne :
0xC2 + (2 * 4)

A cette commande de lecture, la station répond :
0x3n
|
|-> Nombre d'octets demandés

Dans notre cas, la station répond :
0x32

Si la réponse attendue n'est pas celle renvoyée par la station, recommencé immédiatement les étapes suivantes :
  • Initialisation
  • Envoi de l'adresse
  • Envoi de la commande de lecture

Si la réponse de la station est correcte, nous pouvons lire à présent les octets demandés. Les octets sont immédiatement envoyés après la réponse de la station. Ils sont suivis par un seul octet de checksum (vérification).

Dans notre exemple la station pourrait répondre :
0x50 0x52 0xA2
| | |
| | |-> Octet de checksum : 0x50 + 0x52 = 0xA2
| |-> Second octet de la température extérieure
|-> Premier octet de la température extérieure

Si le checksum est incorrect, recommencer les étapes suivantes :
  • Initialisation
  • Envoi de l'adresse
  • Envoi de la commande de lecture
  • Lecture des données

Si le checksum est correct, peut alors commencer le décodage des données. Le décodage des données peut se trouver ici : WS2300 Data

Fonera Weather Station WS2300

Connect your WS2300 Weather Station to your Fonera 2.0g and share your data on the Internet! Use your WS2300 Weather Station for Home Automation Applications.

Lire la suite »
 
Fil des commentaires
Pas de commentaire pour le moment.
Vous devez être connecté pour pouvoir laisser un commentaire sur cet article.
 
Suivez-nous! (RSS)
Aide & Support

Vous avez une question ou rencontrez un problème, consultez notre FAQ :

Foire Aux Questions (FAQ) »
Nous contacter

Vous souhaitez nous contacter ? Vous pouvez utiliser notre formulaire :

Formulaire de contact »