C’est un peu le calme plat côté news de ces temps-ci. Mais, il y a eu quand même pas mal de boulot de fait l’air de rien :-) .
Une grosse réorganisation à été faite du côté software. Le code tant de la télécommande que du récepteur ont été complètement réécrits, de même que le protocole de communication. J’ai développé ma propre librairie avec mes commandes d’envoi et de réception de paquets, ce qui est un peu plus propre et évite la maintenance de code similaire des deux côtés.
Du point de vue protocole de communication, j’envoie maintenant des paquets formatés de la manière suivante :
1. Un caractère de début (“<”) de de fin (“>”) de paquet bien identifiable de manière à éviter d’exécuter des commandes qui n’en seraient pas.
2. Un identifiant désignant le destinataire du message, qui sera utile dès que j’aurai 3 postes connectés, vu que je prévois pour le moment de faire du ‘multicast’ à partir du coordinateur.
3. Un identifiant de commande et un de sous commande:
a. Relay : commandes liées à l’activation de relais.
- On
- Off
- Toggle
b. Amp : commandes destinées à l’ampli
- Source change : changement d’entrée de l’ampli
- Volume : modification du volume
- Power : Allumer ou éteindre l’ampli.
c. Info : commandes de retour d’informations. Ces commandes sont envoyée du récepteur à la télécommande pour signaler l’état de l’ampli ou des relais.
4. Un caractère utilisé comme paramètre
a. Pour les commandes relais, le numéro du relais concerné.
b. Pour les commandes ampli, soit la source, le volume désiré.
Ce protocole est un peu lourd pour l’usage que j’en fait actuellement, mais il a l’avantage de me permettre d’ouvrir mon système à d’autres fonctions facilement.
Ce revamping de mon code et l’utilisation de ce nouveau protocole m’a permis d’avoir, entre autre, le volume de mon ampli sur le LCD de ma télécommande. Ce qui me permet aussi d’utiliser de manière plus naturelle le potentiomètre digital quand il est manipulé plus rapidement … je peux demander de monter ou de descendre de volume de plusieurs pas en une commande, ce qui n’était pas possible avant.
Evidemment, ça a impliqué aussi que je lise les données venant du port RS232 branché sur l’ampli. Mais il semble que je rate encore quelques données, tant du côté ampli que du côté Xbee … je ne suis pas sur que l’arduino soit vraiment l’idéal pour accéder à deux ports séries simultanément, je dois encore analyser le problème.
J’ai aussi un autre problème assez étrange … il m’arrive d’avoir mon récepteur qui semble ne plus rien faire, et je suis obligé de faire un reset pour qu’il retrouve ses esprits. Mais difficile de dire ce qui se passe exactement, vu que ça ne m’arrive qu’une fois tous les 4-5 jours … pas évident à reproduire et encore moins à analyser.
Mis à part cela, j’ai quand même avancé sur un autre plan … j’ai un prototype d’enregistreur de protocole IR qui va me permettre de reproduire des commandes provenant de n’importe quelle télécommande. Mon sketch regarde les variations de courant d’une photodiode et enregistre tous les changements d’états. Si il n’y a plus de changements pendant 2 secondes, il envoie sur le port série une définition de table reprenant le temps qu’il y a entre chaque changement d’état… dans le genre :
int command_time[12]={2648,484,488,840 …. }
Je n’ai plus qu’a copier cette ligne dans mon sketch de télécommande qui va allumer et éteindre une LED IR avec les pauses reprises dans la liste … Vu que je ne vais pas utiliser beaucoup de commandes différentes, c’est une solution tout à fait exploitable pour moi.
La prochaine étape est d’intégrer cette LED IR à mon recepteur pour qu’il allume ma Xbox …