Comment piloter des appareils branchés sur le secteur simplement et surtout sans risque, directement via un Raspberry (bien entendu, ça marche avec n'importe quoi d'autre, Arduino, etc...) ?
On pourrait utiliser un relais, un triac, mais ça ne me plait guère, on doit pouvoir faire plus simple et plus sécuritaire... Et si nous utilisions tout simplement des prises commutables à distance du commerce, nous n'aurions plus à nous soucier de l'aspect isolation vu que l'appareil se pilote à distance et est censé avoir passé des tests de conformité CE...
D'autant plus que ces prises télécommandées ne valent pas grand chose, il est facile de trouver un lot de 3 pour moins de 15€ comme celle ci-dessous :
Une fois les prises télécommandées en notre possession, 3 solutions s'offrent à nous :
Ouvrir les prises et les piloter directement via un signal logique: Mauvaise idée, on perd l'avantage de l'isolation- Sniffer le signal radio lors de l'appui sur une touche et le reproduire
- Piloter directement la télécommande en simulant des touches
N'ayant pas de quoi reproduire le signal sniffé sur le moment, j'ai choisi la dernière solution qui implique un démontage de la télécommande.
L'intérieur de la télécommande :
Le coeur de la carte est un HT46R01T3 de Holtek, un microcontrôleur embarquant une partie radio, avec ce dernier, nous trouvons un peu de composant passif, un quartz, des boutons et voilà, vous avez une télécommande « qui fait le job » pour 2 kopeck.
Nous avons 6 boutons, 3 boutons à gauche pour allumer la prise correspondante et 3 autres boutons à droite pour les éteindre.
Les boutons sont reliés aux broches 2, 3, 4 et 5 via les diodes (D1 à D6) correspondant aux pin PA0 à PA3 du circuit intégré, 6 boutons présents mais seulement 4 entrées utilisées sur le microcontrôleur, cette ruse est possible grâce aux diodes: 3 entrées servent à connaitre la prise sélectionnée et une autre indiquent s'il s'agit du bouton OFF.
État des broches en fonction des appuis sur les touches :
Boutons | Pin 2 | Pin 3 | Pin 4 | Pin 5 |
---|---|---|---|---|
ON1 | 1 | 1 | 0 | 0 |
OFF1 | 1 | 1 | 0 | 1 |
ON2 | 1 | 0 | 1 | 0 |
OFF2 | 1 | 0 | 1 | 1 |
ON3 | 0 | 1 | 1 | 0 |
OFF3 | 0 | 1 | 1 | 1 |
Afin de simuler des appuis sur les touches tout en gardant possible l'utilisation des boutons de la télécommande, nous allons court-circuiter brièvement les boutons, pour cela, je vais utiliser un circuit intégré très pratique, le 4066, un quadruple switch analogique dont voici le schéma :
Il contient donc 4 interrupteurs pilotables directement via des signaux logiques, la technologie CMOS du 4066 nous permet une connexion direct au Raspberry.
En rouge, on retrouve les points vus plus haut dans le schéma de la télécommande, en vert, il s'agit des liaisons avec le port GPIO (P1) du Raspberry, concernant l'alimentation, c'est assez simple, la télécommande étant alimentée avec une pile bouton de 3V, on va utiliser directement les 3V issus du Raspberry.
Un petit bout de code Python (outlet.py) et vous pouvez piloter vos télécommandes :
$ python >>> from outlet import Power_Outlet >>> po = Power_Outlet() >>> po.on(0) >>> po.off(1) >>>