This page is at least 11 years old !
Présentation

EPAR est un système de télégestion de l'éclairage public créé par BH Technologies au début des années 90, il est encore utilisé aujourd'hui dans de nombreuses communes Françaises. Une version plus récente, commercialisée à partir de 2000 nommée Xylos a elle, interessé un ami.
Ce système m'est interessant car il est de grande envergure, relativement répandu, mystérieux compte tenu du peu de documentation technique accessible au public, et possède un potentiel à connerie conséquent. L'objectif est de "reverse-engineerer" le système afin de construire un émetteur/scanner portable pour piloter l'éclairage de n'importe quel quartier équipé avec ce système.
L'ensemble du système installé dans une ville, appelé le parc, consiste en un émetteur radio piloté par une horloge ou un interrupteur crépusculaire. Les récepteurs sont sous forme de petits boîtiers pour rail DIN, qui pilotent des relais de puissance et qui sont eux, reliés au circuit d'éclairage du quartier. Ces boîtiers sont généralement trouvés dans des armoires que l'on peut croiser sur les trottoirs ou près des postes de transformation.
[Scruffy] a pu mettre la main sur un de ces
récepteurs "ECPR LH500" (même pas volé !).
Le récepteur possède deux interrupteurs permettant de choisir
la zone (4 combinaisons possibles), un interrupteur
de test qui force les sorties, une LED secteur (alimentation 230V), une
(ou deux) LED(s) "sortie activée" et une LED "champ".
Les 4 zones possibles sont appelées A, B, C et TP (Test Parc). Dans notre cas, le récepteur était réglé
d'origine sur TP.
Deux modèles de ce récepteur existent: à une ou deux
sorties. Notre version n'en a qu'une.
Lorsque le récepteur est à portée de l'émetteur la LED "champ" s'allume, indiquant qu'une porteuse à une fréquence précise doit être continuellement émise.
Analyse: Reprise du schéma
Ce fut long !
![]() |
![]() |
(Cliquer pour voir en grande taille)
Points test: TP1: Masse. TP2: Oscillateur local 1 (42.0875MHz). TP3:
Signal numérique.
TP4: RSSI (force du signal reçu). TP5: Signal démodulé.
Analyse: Généralités

Notre récepteur ne possédait qu'un relais, mais tous les composants nécessaires pour en faire fonctionner un deuxième étaient présents. J'ai donc ajouté une résistance à la place de la bobine du relais absent et une LED sur la face avant pour simuler la version à deux sorties.
Les deux cartes sont soudées ensembles via une paire
de connecteurs. Sur la photo, le connecteur de droite (6 broches)
fait la liaison pour l'alimentation et la commande des relais, celui
de gauche (3 broches) fait la liaison avec la prise coaxiale pour
l'antenne (que [Scruffy] a aussi pu obtenir).
Une étiquette est d'ailleurs collée sur cette antenne,
où il est inscrit "31.3875 MHz". Intéressant
!
D'après le peu de documentation fournie sur le net, l'émission se ferait par "sauts de fréquence" dans les environs de 32MHz, ce qui concorde avec l'étiquette de l'antenne. Certaines autres documentations parlent de modulation de phase, mais étant donnée la date d'invention du système, la modulation FSK est plus probable.
La documentation parle aussi d'une répétition
des messages à intervalles variables. La commande des récepteurs
serait répétée toutes les 30 minutes, avec
des intervalles plus courtes lorsque le message change (5, puis 15
minutes). Attendre de recevoir un message n'imposerait donc pas
de devoir attendre une demie journée.
Pour chaque commune, en plus d'une fréquence précise, un code numérique serait aussi
attribué en usine pour éviter d'éventuels
conflits géographiques (et peut être aussi pour éviter que les services de voirie ne s'échangent les récepteurs de ville en ville...).
Analyse: Logique

Ce codeur/décodeur possède une particularité
qui m'a d'abord fait froncer les sourcils: il est uniquement prévu
pour décoder 12 bits d'adresse fixes, aucuns bits
de données (variables).
Comment le récepteur peut donc recevoir des messages pour deux relais tels que "relais
1 off", "relais 2 on" ? C'est là que les choses
se compliquent un peu.
La réponse se trouve en suivant les lignes
d'adresse: on découvre que les 8 premières sont
fixes et codés "en dur" par des soudures sur
le circuit imprimé (sur la photo, à droite: A1 à
A8). Ce code est celui dont la documentation parlait, dans notre
cas, c'est "11011100" (0xDC).
Les deux bits suivants (A9 et A10) sont directement reliés
aux interrupteurs permettant de choisir la zone:
"TP": 11, "A": 10,
"B": 01, et "C": 00. On sait donc que les zones sont simplement codées sur 2 bits.
Le bit A11 est connecté à la sortie d'une bascule D, et le bit A12 à deux switchs analogiques contenus dans un 4066. Ceci fournit déjà un élément de réponse: les deux derniers bits peuvent être variables et sont probablement utilisés pour commander les relais.
On sait donc maintenant que les 8 premiers bits vont toujours être les mêmes (du moins, pour une ville donnée). Que les bits A9 et A10 vont certainement l'être aussi (en fonction du découpage de la ville en zones, par exemple pour certains quartiers, pour piloter les fontaines, etc...), et que les deux derniers bits vont changer.
En observant la partie logique de plus près grâce
au schéma, on découvre comment ils se sont débrouillés
pour que le récepteur soit capable de réagir à des messages différents.
Avec 2 bits variables, on peut croire que le récepteur est en mesure
de recevoir 4 messages différents. En réalité, ils
vont par paires et 2 sont ignorés a la fois, selon l'état précèdent des relais.
Pour comprendre, imaginons une suite d'événements en commençant par la première mise sous tension du récepteur, la journée.
- Un circuit (C15, R27) produit une impulsion "power-on reset" sur les bascules U1:A et U1:B, qui force les deux relais à être ouverts. Ceci se produit uniquement quand le récepteur est installé ou après une coupure de courant de longue durée.
- Via le switch U5:B, le bit A12 (qui est en temps normal tiré à +10V par les pull-ups internes du UM3750) est fixé à l'inverse de l'état du relais R2, c'est à dire 1.
- Dès que la transmission radio commence, une partie du circuit radio fournit une impulsion sur SET, qui fixe la sortie de la bascule U2:B à 1: le bit A11 est donc à 1 aussi.
- Le récepteur s'attend donc à recevoir le message 0011101111 11 (il fonctionne LSB en premier), tout autre message est simplement ignoré.
- Si l'UM3750 reçoit 4 fois ce message, il active sa sortie, qui démarre un oscillateur lent constitué de U6:C et U6:D et inverse l'état du relais actuel (R2) grâce à U1:A, qui est donc maintenant fermé: les lampadaires du relais R2 s'allument !
- Au bout d'un certain moment, l'oscillateur précédemment démarré fait changer le relais actuel grâce à U2:B: Le bit A11 passe désormais à 0, et le bit A12 devient de manière identique, l'inverse de l'état du relais R1: c'est à dire 1. Le récepteur s'attend donc maintenant au message 00111011 11 01.
- Si l'UM3750 reçoit 4 fois ce message, il active sa sortie a nouveau, inverse l'état du relais actuel (R1) grâce à U1:B, qui est donc maintenant fermé: les lampadaires du relais R1 s'allument !
- Dans les deux cas précédents, le récepteur continue de s'attendre au message quoi qu'il arrive. Si le message n'est pas reçu, rien ne se passe. Il y a donc bien 4 messages possibles, mais qui vont par paires (relais fermés ou ouverts).
Pour résumer, l'émetteur fonctionne par
paires de commandes. La première doit toujours concerner le relais
R2 (bit A11 à 1), et
la seconde toujours le relais R1 (bit A11
à 0).
Si la commande est une répétition et que le bit
A12 (le bit d'état du relais) est le même, la
commande est ignorée.
Confirmation de l'analyse logique
Pour confirmer ces informations devinées, rien ne vaut une comparaison entre ce qu'on a prévu et la réalité.
Afin de pouvoir enregistrer le signal radio reçu pendant de longues périodes, j'ai câblé l'entrée du UM3750 au reset d'un oscillateur à NE555 produisant un signal carré afin qu'il puisse être enregistré dans Audacity via la carte son de mon PC (les cartes son possèdent un condensateur en entrée, il faut donc un signal alternatif). Dans les enregistrements suivants, les bursts à 3kHz représentent donc un signal bas, et les "creux" un signal haut.
En temps normal, lorsqu'il n'y a pas de transmission, le signal radio est amplifié au point de générer du bruit. Dès que la transmission démarre, on entend tout de suite la différence et les codes s'enchaîner.
(Attention, ça gueule fort !)
En faisant bien attention, on peut même entendre le bit A11 changer exactement au milieu de cet échantillon.
Un message est constitué d'une suite de 52 mots, organisés en 2 groupes de 26 avec le bit A11 qui passe de 1 à 0, comme prévu: les 26 premiers mots concernent le relais R2, les 26 derniers concernent le relais R1.Une trame complète ressemble à ceci:
L'oscillateur lent précédemment cité créé
une sorte de "fenêtre" avec le bit A11
passant de 1 à 0 sur le signal radio décodé.
De cette manière le décodage est fait à coup sur,
même sans synchronisation car les deux codes de la séquence
de 52 mots (qui dure 6.8 secondes) sont forcément testés
entre ces fenêtres.
La seule restriction est de devoir transmettre avec A11
à 1 en premier, puis à 0.
Vus de plus près, les messages transmis sont bien comme décrits dans la documentation du UM3750: un bit de start à "1" suivi des 12 bits d'adresse:
La journée
Premiers 26 messages:
|
Derniers 26 messages:
|
![]() |
![]() |
On a donc ici, le code ville (00111011), l'état
des deux interrupteurs (11, "TP"),
relais adressé R2, état
0 (ouvert).
|
Ici on a également le
code ville, l'état des deux interrupteurs (11,
"TP"), relais adressé
R1 cette fois ci, état
0 (ouvert).
|
La nuit
La nuit, ou selon la luminosité, les messages suivants sont transmis:
Premiers 26 messages:
|
Derniers 26 messages:
|
![]() |
![]() |
Le code ville,
l'état des deux interrupteurs (11,
"TP"), relais adressé
R2, état 1
(fermé: allumage des lampadaires !).
|
Ici on a également le
code ville, l'état des deux interrupteurs (11,
"TP"), relais adressé
R1, état 0 (ouvert,
le relais R1 étant inutilisé où j'habite).
|
Voici un relevé des messages reçus ("nuit"
indique un relais fermé, "jour" indique un relais ouvert):
|
|
|
Comme l'indiquait bien la documentation, les message son répétés. Après un changement d'état (passage du jour à la nuit ou inversement), le message est répété deux fois après 6 minutes, puis après 13 minutes, puis toujours après 26 minutes (avec quelques sauts ?) jusqu'au prochain changement.
Les composants R10 et C12 permettant de fixer la fréquence
du UM3750 sont sous son ventre et je n'ai pas pu les lire. D'après
les chronogrames, sa fréquence serait dans les environ de 17.5Khz.
Tu = 1.825ms (largeur de l'impulsion de start, la largeur d'un bit vaut
3Tu).
D'après la documentation, Tu=(1/f)*32. Soit f =
1/(Tu/32) = 17.5Khz en moyenne.
Note: les deux bascules D pilotant les transistors des relais ont leur état maintenu hors tension par la charge du condensateur C13. Pour éviter que les relais se ré-enclenchent automatiquement, il faut court-circuiter ce condensateur pour réinitialiser les bascules à la prochaine mise sous tension.
Injection d'un signal imité
En imitant le signal reçu avec un microcontroleur,
j'ai pu faire fermer et ouvrir le relais R2 comme le feraient les messages
originaux, et également confirmer que le message
00111011 11 01
faisait bien fait fermer le relais R1 qui aurait pu être implanté.
On connaît donc parfaitement le format et la séquence des messages
à transmettre pour piloter le récepteur.
Analyse: Radio
La partie radio est un récepteur à double conversion basé sur un MC3372. Ce circuit comporte un mélangeur, un ampli IF, un démodulateur et un ampli de filtre BF. La fonction squelch n'est pas utilisée.
La LED "champ" s'allume lorsqu'un signal assez puissant est détecté dans une bande de 10kHz autour de la fréquence centrale (c-à-d que le récepteur est à portée de l'émetteur). Cette LED est reliée à la sortie RSSI du MC3372 via un comparateur à hysteresis.
- Un filtre d'antenne passe-bande constitué de selfs ajustables et de condensateurs est accordé à la fréquence indiquée sur l'antenne: 31.3875 MHz. Ceci atténue les fréquences inférieures et supérieures.
- Un mélangeur/oscillateur SA612 mélange le signal antenne avec celui de l'oscillateur local (un quartz sur support, taillé sur mesure à 42.0875MHz). Ceci a pour effet de produire 3 composantes: une à la fréquence de l'oscillateur local fo1 à 42.0875MHz, une à 42.0875 - 31.3875 = 10.7MHz et l'autre à 42.0875 + 31.3875 = 73.475MHz.
- Un filtre passe bande à quartz conserve que les composantes aux environs de 10.7MHz (avec environ 10kHz de bande passante).
- Le mélangeur du MC3372 réalise la deuxième conversion avec le quartz X3 à 10.245MHz pour produire encore 3 composantes: une à fo2 donc 10.245MHz, une à 10.7 - 10.245 = 455kHz et une à 10.7 + 10.245 = 20.945MHz.
- Le discriminateur élimine les composantes supérieures à 455kHz.
- Le MC3372 démodule le signal, le filtre, puis l'amplifie.
Réalisation de la télécommande
- Premier essai:
![]() |
Le signal numérique vient d'un ATTiny45, la tension de commande ("DATA") varie entre 9V et 0.6V. Le circuit HF est des plus simples: un oscillateur colpitts modulé par une LED verte utilisée comme Varicap du pauvre (j'en avais pas). J'ai pu émettre et faire reconnaître le
message radio à plus d'une vingtaine de mètres ! A améliorer, c'est inutilisable sur le terrain. |
|
- Deuxième essai:
![]() |
Le signal numérique provient toujours d'un ATTiny45, sur quartz désormais, afin de s'assurer de la précision des temps du message. J'ai pu le confirmer en injectant directement via un point test sur le récepteur. Cette fois un oscillateur MC1648 est utilisé, qui fonctionne de la même façon avec un circuit LC et une LED comme Varicap. Le réglage de la fréquence est toujours difficile mais la stabilité est meilleure, le montage peut fonctionner pendant plusieurs minutes avant de nécessiter un nouveau réglage. Encore à améliorer... |
- Troisième essai:
Enfin le bon ! Il utilise un module DDS à base de AD9850.