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.

Le schéma de la carte :
schema.png

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 :
Contenu du 4066

Il contient donc 4 interrupteurs pilotables directement via des signaux logiques, la technologie CMOS du 4066 nous permet une connexion direct au Raspberry.

Connexion entre le 4066 et le 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)
>>> 

Le tout sur une plaque d'expérimentation :
final.jpg