

LinKey
Une clé WIFI lisant la sortie TIC du Linky connectée au broker MQTT d'un Home Assistant
- Size
- 25 × 37.3 mm
- Copper layers
- 4
- Thickness
- 1.6 mm
- Parts
- 42
- Nets
- 52
- Pads
- 173
- Tracks, vias
- 156, 65
- Pours
- 13
- Routed
- Yes
- KiCad
- KiCad 9.0 (file 20241229)
- Created
- 22 Feb 2025
- Updated
- 11 Sep 2026
Overview
LinKey is an open-source printed circuit board by Konkzor, from the Konkzor/LinKey repository on GitHub, published under the CERN-OHL-W-2.0 licence. It is a 4-layer board of 25 × 37.3 mm with 42 parts on 52 nets, routed with 156 tracks and 65 vias.
It is built around the ESP32-WROOM-32E, ACPL-214-500E and TPS61022, with the BAS4002ARPP E6327, CSD25402Q3A and MMBT2907ALT1G among its other parts. Its parts include 18 resistors, 9 capacitors, 4 ICs, 2 diodes and 2 transistors. It belongs with the radio and wireless and home automation and IoT boards and the ESP32 boards of this library.
Main components
6ESP32-WROOM-32E
SMD,18x25.5mmSMD,18x25.5mm WiFi Modules ROHSEspressif SystemsWiFi ModulesACPL-214-500E
SOIC-4-55℃~+110℃ 1 1.2V 20% 200mW 2us 3.75kV 3us 400% 400mV@8mA,2.4mA 50mA 50mA 80V AC,DC Phototransistor SOIC-4 Transistor, Photovoltaic Output Optoisolators ROHSBroadcom LimitedTransistor, Photovoltaic Output OptoisolatorsTPS61022
UncategorisedTexas InstrumentsBAS4002ARPP E6327
SOT-143-410uA@40V 200mA 2A 40V 690mV@200mA SOT-143-4 Bridge Rectifiers ROHSInfineon TechnologiesBridge RectifiersCSD25402Q3A
VSONP-8(3.3x3.3)-55℃~+150℃ 1 P-Channel 1.15V 1.79nF 2.8W 20V 51pF 7.5nC@4.5V 72A 74mΩ@1.8V 992pF P-Channel VSONP-8(3.3x3.3) MOSFETs ROHSTexas InstrumentsMOSFETsMMBT2907ALT1G
SOT-23-55℃~+150℃ 1 PNP 1.6V 10nA 200MHz 350mW 5V 600mA 60V 75 PNP SOT-23 Bipolar (BJT) ROHSonsemiBipolar (BJT)
README
PCB/README.mdLinKey — Carte électronique
Sources matérielles de la carte LinKey : projet KiCad, Gerbers et nomenclature.
[!NOTE] La révision PCB est portée par les tags git
pcb-v*(ex.pcb-v1.0). C'est la source unique : la CI dérive la version d'git describe --tags --match 'pcb-v*'et l'injecte à la fois dans le nom de l'artefact (LinKey-pcb-<version>-fab) et dans la variable de projetPCB_VERSION(Board Setup → Text Variables) pour que la sérigraphie${PCB_VERSION}reflète exactement l'état du dépôt :
Build ${PCB_VERSION}et nom d'artefactLocal (export manuel depuis KiCad) UNCONTROLLED— valeur fixée en dur dansLinKey.kicad_pro, signale que les fichiers de fab n'ont pas été produits par la CI et ne doivent pas être utilisésCI hors tag vX.Y-N-gSHA(tag le plus récent + commits depuis + hash court)CI sur un tag pcb-vX.YvX.Y
Couche physique de la TIC Linky
Source : Enedis-NOI-CPT_54E, §5.3.1 Caractéristiques des signaux (Table 3).
La sortie TIC du compteur Linky se présente sur le bornier client sous forme de trois bornes (I1, I2, A) : la paire I1/I2 véhicule les données, et la paire I1/A est dédiée à l'alimentation parasite des récepteurs. Le compteur émet sur ce bus un signal binaire modulé par tout-ou-rien sur une porteuse 50 kHz ± 3 % (Table 3 de la spec Enedis), avec une logique de codage négative (porteuse présente ⇒ « 0 », porteuse absente ⇒ « 1 ») et une transmission unidirectionnelle.
[!WARNING] Bien que les niveaux soient bas, le bus TIC reste relié au compteur — une isolation galvanique côté récepteur reste obligatoire pour la sécurité utilisateur et la conformité. C'est le rôle de l'optocoupleur (voir l'étage d'entrée ci-dessous).
Le bus est connecté à la carte via le connecteur J1 (Samtec HPM-03-04-T-S, header 3 broches, pas 5 mm, sortie à angle droit).
Architecture du PCB
L'architecture du PCB est composée de 2 branches principales :
flowchart LR
TIC([TIC Linky J1<br/>I1, I2, A])
TIC -->|I1 / A| D1[Pont redresseur<br/>D1]
D1 --> Charge[Circuit de charge<br/>Q1, Q2, U4]
Charge --> C2[(C2 — 1 F<br/>supercapa)]
C2 --> Boost[Boost 3,3 V<br/>U5 — TPS61022]
Boost --> ESP[ESP32 WROOM-32E<br/>+ périphériques]
TIC -->|I1 / I2| U1[Opto AC/DC<br/>U1 — ACPL-214]
U1 -->|RX — GPIO 14| ESP
C2 -.->|ADC GPIO 33 — V_cap| ESP- Branche supérieure : chemin d'alimentation, sur les bornes
I1/Adu Linky → pont redresseur → circuit de charge supercapa →C2→ boost 3,3 V → ESP32. - Branche inférieure : chemin de données, sur les bornes
I1/I2du Linky → optocoupleur → ESP32.
Remarque : En trait pointillé la mesure de la tension du supercondensateur par l'ESP32.
1. Étage d'entrée
Sépare et conditionne les deux fonctions du bus TIC.
- Démodulation des données —
U1(Broadcom ACPL-214-500E, opto AC SOP-4) extrait directement l'enveloppe de la porteuse 50 kHz et fournit un signal UART démodulé côté ESP32 (pull_upR5incluse), tout en assurant l'isolation galvanique. - Pont redresseur d'alimentation —
D1(Infineon BAS 4002A RPP E6327, array de Schottky basse Vf) forme un pont à quatre diodes dans un seul boîtier qui rectifie la porteuse 50 kHz pour alimenter le reste de la carte.
2. Circuit de charge du supercondensateur
Stocke l'énergie disponible pour absorber les pics de consommation pendant l'émission WiFi/MQTT. Limite le courant et la tension de charge.
- Supercondensateur —
C2(KYOCERA AVX SCCR12E105SRB, 1 F / 3 V, ESR faible, radial 8×12 mm). - Limitation de courant et tension contrôlant la tension Vgs de
Q2(TI CSD25402Q3A, P-MOSFET 20 V) :- Limitation de courant —
Q1(ON Semi MMBT2907A, PNP 60 V / 0,6 A) conjugué àR10(10 Ω) qui fixe le seuil de courant débité par l'étage d'entrée vers la supercapa à environ 40 mA. - Limitation de tension —
U4(TI TL431, référence shunt ajustable) clampe la tension de charge à 2,7V de la supercapa (seuil réglé parR15etR16).
- Limitation de courant —
3. Alimentation 3,3 V (boost)
Convertit la tension variable du supercondensateur (0 V → 2,7 V) en un rail 3,3 V stable pour l'ESP32.
- Convertisseur —
U5(TI TPS61022, boost synchrone 8 A pic, démarrage à 1,5 V, maintien jusqu'à 0,5 V) : on peut tirer du jus de la supercapa presque jusqu'à le vider complètement. - Inductance —
L1(Coilcraft XEL5030-102MEC, 1 µH), recommandée par TI. - Capacités —
C3,C4pour l'entrée,C6(22 µF / 10 V X7R 1206) pour la sortie. - Pont diviseur —
R17(453 k) /R18(100 k) pour régler la sortie à 3,3 V.
4. ESP32 et périphériques
- MCU —
U2(Espressif ESP32-WROOM-32E-N8, 8 MB flash SPI, antenne PCB intégrée). Module choisi pour sa disponibilité du coprocesseur ULP que le firmware utilise pour décoder la TIC pendant le light sleep. - Découplage —
C8(100 nF),C7(22 µF). - Interface programmation/debug —
J2(header 4 broches, pas 2,54 mm) exposeTX,RX,GND,3V3pour le flashage et le debug. - Boutons — deux boutons tactiles Omron B3U-1000P :
SW1— RESET, raccordé sur la brocheENde l'ESP32 (tient le module en reset tant qu'il est pressé).SW2— BOOT, raccordé surIO0; à maintenir pendant un reset pour entrer en mode flashage.
- LED d'état RGB —
D8(American Bright BL-HBXJXGX32L, 5050 PLCC6) avec ses résistances de limitationR6(120 Ω) /R8(330 Ω) /R9(120 Ω) sur les trois canaux B/R/G respectivement. Pilotée par GPIO 2 / 13 / 15 ; flash bref de 10 ms à chaque itération de la FSM (voirFirmware/README.md).
Affectation des broches (ESP32)
| Fonction | GPIO |
|---|---|
| RX TIC Linky | 14 |
| ADC tension supercondensateur | 33 |
| LED RGB Rouge | 13 |
| LED RGB Verte | 15 |
| LED RGB Bleue | 2 |
| RX UART ESP | 3 |
| TX UART ESP | 1 |
Contenu du dossier
| Fichier / dossier | Description |
|---|---|
LinKey.kicad_pro | Projet KiCad 9 |
LinKey.kicad_sch | Schéma |
LinKey.kicad_pcb | Routage |
fab-output.kicad_jobset | Jobset KiCad décrivant les sorties de fabrication générées en CI |
MCAD files/ | Modèles 3D des composants (STEP) |
LinKey_Lib_Footprints.pretty/ | Bibliothèque d'empreintes du projet |
LinKey_Lib_Symbols.kicad_sym | Bibliothèque de symboles du projet |
Fabrication
Les fichiers de fabrication ne sont pas versionnés : ils sont régénérés à chaque push par le workflow GitHub Actions .github/workflows/ci.yml (job pcb-fab) à partir du jobset fab-output.kicad_jobset, et publiés en tant qu'artefact nommé LinKey-pcb-<PCB_VERSION>-fab sur l'exécution correspondante (la version provient de la variable de projet PCB_VERSION — cf. note en haut de ce README).
Contenu de l'artefact :
| Fichier | Description |
|---|---|
gerbers/LinKey-F_Cu.gbr, B_Cu.gbr, In1_Cu.gbr, In2_Cu.gbr | Couches cuivre (4 couches) |
gerbers/LinKey-F_Mask.gbr, B_Mask.gbr | Masques de soudure |
gerbers/LinKey-F_Paste.gbr, B_Paste.gbr | Pochoir pâte à braser |
gerbers/LinKey-F_Silkscreen.gbr, B_Silkscreen.gbr | Sérigraphies |
gerbers/LinKey-Edge_Cuts.gbr | Contour de la carte |
gerbers/LinKey-job.gbrjob | Métadonnées Gerber X2 (stackup) |
LinKey-PTH.drl, LinKey-NPTH.drl | Perçages (plaqués / non plaqués) |
LinKey_positions-all.csv | Fichier de positions (pick & place) |
LinKey_Bill_of_Materials.csv | Nomenclature (BOM) |
Pour récupérer l'archive : ouvrir l'exécution CI sur GitHub → onglet Summary → section Artifacts → LinKey-pcb-<PCB_VERSION>-fab.
Consommation
- Light sleep : à mesurer
- Actif (publication) : à mesurer
- Moyenne : à mesurer
Licence
Voir le fichier LICENSE à la racine du dépôt (CERN-OHL-W-2.0).
Parts
42| Qty | Value | Footprint | References |
|---|---|---|---|
| 3 | 100n | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C4, C8, C9 |
| 3 | 10k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R7, R13, R16 |
| 3 | 120r | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R6, R9, R12 |
| 3 | 1k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R5, R11, R15 |
| 3 | 22u | Capacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolder | C3, C6, C7 |
| 3 | R | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R1, R2, R3 |
| 2 | 330r | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R4, R8 |
| 2 | ~ | LinKey_Lib_Footprints:B3U-1000P | SW1, SW2 |
| 1 | 100k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R18 |
| 1 | 10r | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R10 |
| 1 | 180p | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C5 |
| 1 | 1F | Capacitor_THT:CP_Radial_D8.0mm_P3.50mm | C2 |
| 1 | 1uH | Inductor_SMD:L_Coilcraft_XAL5030-XXX | L1 |
| 1 | 2,2u | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C1 |
| 1 | 2k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R14 |
| 1 | 453k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R17 |
| 1 | ACPL-214-500E | Package_SO:SOP-4_4.4x2.6mm_P1.27mm | U1 |
| 1 | BAS_4002A_RPP_E6327 | LinKey_Lib_Footprints:BAS4002ARPPE6327 | D1 |
| 1 | CSD25402Q3A | Package_SON:VSON-8_3.3x3.3mm_P0.65mm_NexFET | Q2 |
| 1 | Conn_01x04 | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J2 |
| 1 | ESP32-WROOM-32E | RF_Module:ESP32-WROOM-32E | U2 |
| 1 | LED_RGB | LED_SMD:LED_RGB_5050-6 | D8 |
| 1 | MMBT2907ALT1G | Package_TO_SOT_SMD:SOT-23_Handsoldering | Q1 |
| 1 | TL431DBZ | Package_TO_SOT_SMD:SOT-23 | U4 |
| 1 | TPS61022 | Package_DFN_QFN:Texas_RWU0007A_VQFN-7_2x2mm_P0.5mm | U5 |
| 1 | ~ | LinKey_Lib_Footprints:Conn_01x03_TIC | J1 |
The 40 most common of 42 parts.
Similar boards
- 4 layers100 × 100 mm

- 2 layers137.2 × 83.8 mm

GeneralPurposeAlarmDevicePCB
PubInv/general-purpose-alarm-device
A general purpose alarm device (with software) as a module for medical devices (and others)
140 parts7AGPL-3.0 - 2 layers100 × 100 mm

- 4 layers63.5 × 44.5 mm

Clock Controller
Fish-in-a-Barrel/Nixie
This is my Nixie clock project. It was created as an excuse to learn more about electronics and it touches on power circuits, microcontrollers, serial communications, and more.
48 parts - 2 layers21 × 9 mm

FanPWMtoRotorLock
mlh5599/FanPWMtoRotorLock
Converts the output from a 12v PWM fan to a rotor lock detector signal
13 partsMIT - 2 layers140 × 105 mm

- 2 layers140.1 × 85.5 mm

Cardiac
Adamos-khalilos/cardiac-monitor-pcb
Open-source PCB design for a portable cardiac monitor — STM32F407 + ADS1292R AFE with full galvanic patient isolation (IEC 60601, 4kV), on-device NanoEdge AI arrhythmia classification, encrypted SD logging (AES-256 +…
75 partsMIT - 4 layers198 × 64.5 mm

Questions
How big is the LinKey PCB?
It measures 25 × 37.3 mm and has 4 copper layers, 1.6 mm thick.
What parts does the LinKey use?
42 parts, built around the ESP32-WROOM-32E, ACPL-214-500E, TPS61022 and BAS4002ARPP E6327. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the LinKey KiCad files?
From the Konkzor/LinKey repository on GitHub, at the commit this page was made from: the board is PCB/LinKey.kicad_pcb and its schematic PCB/LinKey.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the LinKey design in my own project?
Its repository publishes it under the CERN-OHL-W-2.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).