Comme déjà mentionné dans un sujet du forums "Questions Résponses" que j'ai allègrement pollué, je me suis amusé à codé le protocole Modbus permettant à 250 STs (!) de communiquer moyennant un convertisseur RS232/RS485 (du coup moyennant 250 convertisseurs si on veut vraiment connecter 250 STs ).
Depuis je regarde régulièrement le site de mon fournisseur de cartes électroniques préféré, et j'ai vu ce week end une nouvelle carte pilotable par RS485, du coup je l'ai achetée, mais point encore reçu.
Il s'agit, si on ne se fie qu'à la description, d'un afficheur LCD pilotable entre autres par RS485, le MuIn LCD.
Je me suis lancé aussi car par défaut la vitesse de transmission est de 19200 bauds (d'autres cartes proposant par défaut des vitesses supérieures à celles du st seraient embettantes à gérer, car il faut alors se connecter à la vitesse par défaut (du genre 115200 bauds par exemple) pour lui demander de se caler sur une vitesse inférieure, du coup ingérable pour un ST).
Mais ce qui est top, c'est que cette petite carte ne fait pas "que" ça. Il s'agit en fait d'une vraie petite carte intelligente capable entre autres de gérer un afficheur lcd, mais elle propose aussi :
- un buzzer (moui bon ...)
- 6 ports entrée/sortie (ça c'est mieux déjà !)
- 5 entrées convertisseurs Analogique-Numérique (pour brancher des capteurs de tous genres)
Le seul problème de cette petite carte magique, est qu'elle ne gère pas le protocole Modbus mais un protocole apparemment "maison".
La bonne nouvelle, c'est que comparé à Modbus ce protocole est fastoche, les messages s'envoient sous la forme suivante :
'@', ADDR_TO, ADDR_FROM, N_BYTES, BYTE1, BYTE2 ... BYTEn, CRC16H, CRC16L, '#'
par rapport au modbus où on a quelque chose du style :
':', ADDR_TO, ADDR_DATA, BYTE1, BYTE2,...BYTEn, LRC, CRLF
Donc c'est pas bien différent quoi ...
Dans le cas de l'envoi de messages sur l'afficheur, pas de problème il s'agit juste d'envoyer la chaîne de caractères qui va bien, mais dans le cas où on branche un capteur à la carte (où quoi que ce soit d'autre, la limite votre imagination ...), il faut décoder la trame pour recevoir la valeur demandée.
J'ai adapté très facilement mon programme Modbus client pour décoder les trames en question, mais n'ayant pas encore reçu la bête, j'ai fini par faire un simulateur de MuIn LCD pour préparer le terrain.
La copie d'écran montre le résultat de la réception par le port série de la trame suivante :
@ &H0E &H01 &H14 T e s t s u r 2 0 c a r a c t e r 0&h0 0&h0 #
ou traduit : Dispositif numéro 1 appelle dispositif 14 (LCD) pour envoi des 20 caracteres (14 hexa) suivants "Test sur 20 caracter", fin de message