Commandes par relais piloté par ordinateur
Voulant pousser plus loin mes expérimentations et renforcer la fiabilité sous LINUX, je me suis procuré une carte à relais qui me servira à piloter divers éléments externes comme mon modem Telit, par exemple.
Cette carte est munie de huit relais et est pilotée par une platine de commande USB. Ce module est composé d'un interface USB=>série de type FTDI. Enfin, elle comporte un microcontrôleur ATMEL pilotable par simples commandes sh.
Bien que n'étant pas sûr d'utiliser cette platine, je vais commencer mes essais avec. Avec ce montage autour de l'ATMEL, je n'ai pas le retour de position des relais.
Le principe au démarrage du modem gsm grâce à cette platine :
- Je mets tous les relais à off (au cas où...)
- Je temporise 1/10ème de secondes
- Je mets le relais 1 on (mise sous tension du modem)
- Je temporise 2 secondes pour laisser le temps au modem de démarrer
- Je mets le relais 2 on (Impulsion sur la mise en route du gsm)
- Je temporise 1 seconde
- Je mets le relais 2 off (fin de la temporisation)
Le gsm est en route et prêt à recevoir des commandes AT.
Les commandes en Bash dans un fichier de démarrage :
echo -e "\xFF\x00\x00" > /dev/telit sleep .1 echo -e "\xFF\x01\x01" > /dev/telit sleep 2 echo -e "\xFF\x02\x01" > /dev/telit sleep 1 echo -e "\xFF\x02\x00" > /dev/telit sleep 1
Sur la sortie relais 1 se trouve le contact d'alimentation de la platine Telit et sur la sortie relais 2, la commande impulsionnelle de mise en route du gsm.
Retour d'infos de position des relais
Je viens de découvrir qu'il est possible d'avoir la position des relais en utilisant un code bien précis.
J'ai donc orienté mes recherches autour de cette info. A savoir que je souhaite récupérer la position des relais et l'utiliser dans une page php ou autre.
J'ai créé un script basique me permettant d'envoyer la commande et de la recevoir dans un fichier. Ce résultat est en hexadécimal et transformé en clair. Je cherche comment exploiter ce fichier.
J'utilise la commande "cats" dans un premier temps que l'on peut trouver ici : Commande cats
Avec la platine à 8 relais, il faut envoyer cette commande : echo -e "\xFF\x09\x00" > /dev/relais Fichier de commande test.sh : #!/bin/bash echo -e "\xFF\x09\x00" | ./cats -b9600 /dev/relais > ./test.hex & #making file in hex format. PID=$! #Capture the pid number for a clean destroy... sleep .2 kill $PID #Killing pid of cats runtime sleep 1 hexdump ./test.hex > test.asc #Making file with standart reading.
A savoir qu'à terme, je souhaite piloter les 8 relais et afficher leur position.
Le 19/06/2010
Script de commande en php réalisé. Bien entendu, il est évolutif car la base étant fonctionnelle, le reste n'est plus que de la présentation.
Téléchargement :
commande relais

Le 20/06/2010
Améliorations diverses apportées au script pour assurer un meilleur report des infos et une solidité accrue. Ajout d'un autre petit script pour visionner le statut des différents relais avec des images.
Sur les photos du dessous, on peut voir que les relais 3 et 4 sont dans un état inconnu.
Téléchargement :
Conclusion :
Il reste tout de même un point noir : Que ce soit ce type de platine ou un autre, la seule chose de contrôlée est l'état des relais qu'est sensé ENVOYER LOGICIELLEMENT le micro-contrôleur, pas leur état REEL.
En effet, un relais de grillé ne sera donc pas vu comme tel. Un souci de câblage dans ce type de platine ne sera également pas vu. Plus de 12V : idem.
Le seul moyen de voir la position réelle des relais serait de les remplacer par des "deux RT" et de superviser l'un des contacts en envoyant leur position sur une autre platine gérant des ENTREES ANALOGIQUES.
Le cas des pannes partielles comme les photos du dessus ne sont qu'une supposition et sera fonction d'une panne logicielle non testée dans mes essais.
Il n'y a pas de commentaire sur cette page.
[Afficher commentaires/formulaire]

