DigitalSpirit / Blog

Piloter des prises électriques via un Raspberry

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 :

blister.jpg

Une fois les prises télécommandées en notre possession, 3 solutions s'offrent à nous :

  1. Ouvrir les prises et les piloter directement via un signal logique : Mauvaise idée, on perd l'avantage de l'isolation
  2. Sniffer le signal radio lors de l'appui sur une touche et le reproduire
  3. 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 :
Recto de la carte électronique Verso de la carte électronique

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

Ouvrir l'article

Modification d'un régulateur de température STC-1000

3€ en brocante pour un régulateur de température, je n'allais pas passé à côté d'une telle affaire, ça me sera parfaitement utile pour faire quelques test avec le plateau chauffant de l'Ultimaker...

STC-1000

Ce régulateur acheté neuf reste tout de même assez abordable, il est disponible sur un grand site d'enchère en ligne aux alentours de 20€ sous les marques Elitech ou encore Lerway.

Il permet de commander un système de chauffe et un système de refroidissement à l'aide de 2 relais qui s'activent en fonction de la mesure du capteur de température fourni (de type CTN, résistance à coefficient de température négatif), sa plage de température va de -50°C à 99°C avec une précision d'environ 1°C, il permet de commuter des charges de 220V sous 10A, plus que suffisant pour l'utilité que j'en aurai.

Très pratique, on peut lui spécifier la différence de température entre la consigne et la valeur lue à partir de laquelle il faut commuter mais également le décalage entre la grandeur mesurée et la valeur effective, exemple, je veux m'assurer que le milieu de mon lit chauffant est à 60°C, bien sûr, je ne peux pas mettre mon capteur au milieu, du coup, je le mets au bord et je règle la différence entre les 2 températures.

Mais pour mon utilisation, il à tout de même un petit défaut, il est alimenté directement par du 220V, ça ne m'arrange pas vraiment car j'ai ajouté une alimentation de 12V sur Ultimaker pour le lit chauffant, je ne souhaite pas multiplier encore le nombre de prise 220V.

Un démontage rapide nous montre les entrailles de la bête, un simple transformateur 220V / 10V (en bordeau) apparait :
STC-1000

Dessoudage du transformateur :
STC-1000 STC-1000

On remplace le transformateur par 2 diodes, (2 1N4003 ont été utilisées), les 2 diodes ont pour fonction principale de faire chuter la tension de 12V aux environs de 10V (12V - 0.6 x 2), elles ne sont pas tout à fait indispensable, on pourrait les remplacer par de simples ponts, l'électronique en aval du transformateur (lui même ne générant pas un 10V précis) à une certaine tolérance.

STC-1000

Test et remontage, des fois que l'on prête l'appareil à quelqu'un ou qu'on le ressorte après des années d'inutilisation, on n'oublie pas d'indiquer clairement que le régulateur attend maintenant 12V et non plus 220V, sinon boum le régulateur...
STC-1000

Et voilà, un lit chauffant piloté par un STC-1000...
STC-1000 avec l'Ultimaker

Le manuel de l'engin.

Ouvrir l'article

Hacking d'un écran à Led de DealExtreme

Led matrix

Je reviens à la charge avec un joujou récupéré sur le site http://www.dealextreme.com/ avec, cette fois ci, non pas un régulateur à découpage pas chèr mais un afficheur à led pas chér (~ 8€) vendu sous l'appelation « Programmable Scrolling LED Name/Message/Advertising Tag Card Badge », intéressant, la description de l'article nous apprend également qu'il possède une connection USB, chouette, je le vois parfaitement bien sur la face avant de mon serveur pour indiquer des infos comme la charge du système, l'espace disque restant, etc...

Omar m'a hacker

Malheureusement, déception : la connectique USB est propriétaire et bien évidemment, le cable n'est pas fourni, l'envie m'est alors rapidement venue d'ouvrir la bête pour y souder un connecteur standard et là, ce fût la seconde mauvaise surprise, la prise n'est reliée à ... rien. Alors, bien évidemment, on peut programmer cet écran à l'aide des boutons situés sur son dos mais ce n'est franchement pas pratique pour en faire quelque chose d'automatisé...

L'écran est piloté par un unique micro-controleur d'Atmel, un AtMega88, de la même famille que les Arduino, il est donc assez aisé de développer un micro-logiciel libre.

J'ai donc fait une petite séance de reverse engineering, ingénierie inverse en bon français afin de comprendre comment fonctionnait cet écran et j'ai ensuite développer un micro-logiciel de remplacement permettant de piloter l'écran facilement directement avec une interface série.

Dans la vidéo ci-dessous, l'écran est simplement relié à l'ordi par le biais d'un convertisseur série / USB 3V, on y voit un des 2 modes de pilotage de l'écran en action qui permet à l'aide de menu de venir le paramétrer simplement, un autre mode est aussi disponible et est parfaitement adapté à la commande automatisée par le biais de script bash ou autre...

Vous trouverez TOUT en détail sur le fonctionnement de cet écran sur le lien suivant LedMatrix hacking sur le wiki, voici le sommaire de cette page :

LedMatrix hacking
    Introduction
    Ouverture du boitier
    Comment ça marche ?
        Vue globale
        Le coeur
        Interface de programmation
        L'interface USB
        La gestion des boutons
        La matrice de LED
        Accès à la mémoire EEPROM externe
    Ajoutons une connection série
        Vous voulez piloter le montage directement depuis un module USB          
        Si vous possédez déjà une connection série RS232
    Le micro-logiciel libre
        Mode interactif
        Mode non interactif

Cet article est également paru sur :

Logo Made in fr

Ouvrir l'article

EeePc avec bluetooth intégré

J'ai fait l'acquisition il y a quelques temps d'un EeePc, excellente machine, très réactive, très bon prix bien sûr mais malheureusement, quelques défauts viennent tout de même gâcher tout ça, oui, on ne peut pas tout avoir :

  • La résolution de l'écran est vraiment trop faible
  • L'autonomie n'est pas vraiment extraordinaire, on en attend plus d'une telle machine
  • Pas de Bluetooth

Autant, pour une réduction des coût, je veux bien comprendre le choix de l'écran et de la batterie mais pour le Bluetooth, j'ai du mal, quand on voit les quantités produites, l'ajout d'une telle puce n'aurait sûrement pas mis à mal la marge faite, le marketing doit être sur le coup...

Heureusement, il est assez simple de remédier à ce manque en le faisant nous même, l'opération à donc consister à ajouter une clef Bluetooth dans l'EeePc.

Clef bluetooth ouverte La clef Usb bien calée dans l'écran L'EeePc ouvert

Voici la page sur le wiki qui comporte toutes les explications sur l'ajout d'une clef Usb Bluetooth Belkin F8T012xx1 dans l'EeePc : Projets / EeePc / Bluetooth

Ouvrir l'article