Skip to the content
4 layers25 × 37.3 mmLinKey, the printed circuit board in 3D

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

6

README

PCB/README.md

LinKey — Carte électronique

Rendu 3D de la carte LinKey

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 projet PCB_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'artefact
Local (export manuel depuis KiCad)UNCONTROLLED — valeur fixée en dur dans LinKey.kicad_pro, signale que les fichiers de fab n'ont pas été produits par la CI et ne doivent pas être utilisés
CI hors tagvX.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.

Enedis — Table 3 : Caractéristiques des signaux

[!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 :

mermaid
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 / A du Linky → pont redresseur → circuit de charge supercapa → C2 → boost 3,3 V → ESP32.
  • Branche inférieure : chemin de données, sur les bornes I1 / I2 du 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_up R5 incluse), 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.

Schéma de l'étage d'entrée (opto + pont redresseur)

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é par R15 et R16).

Schéma du circuit de charge du supercondensateur

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, C4 pour 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.

Schéma du convertisseur boost 3,3 V (TPS61022)

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) expose TX, RX, GND, 3V3 pour le flashage et le debug.
  • Boutons — deux boutons tactiles Omron B3U-1000P :
    • SW1 — RESET, raccordé sur la broche EN de l'ESP32 (tient le module en reset tant qu'il est pressé).
    • SW2 — BOOT, raccordé sur IO0 ; à 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 limitation R6 (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 (voir Firmware/README.md).

Schéma de l'ESP32 et de ses périphériques (LED RGB, bouton, header debug)

Affectation des broches (ESP32)

FonctionGPIO
RX TIC Linky14
ADC tension supercondensateur33
LED RGB Rouge13
LED RGB Verte15
LED RGB Bleue2
RX UART ESP3
TX UART ESP1

Contenu du dossier

Fichier / dossierDescription
LinKey.kicad_proProjet KiCad 9
LinKey.kicad_schSchéma
LinKey.kicad_pcbRoutage
fab-output.kicad_jobsetJobset 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_symBibliothè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 :

FichierDescription
gerbers/LinKey-F_Cu.gbr, B_Cu.gbr, In1_Cu.gbr, In2_Cu.gbrCouches cuivre (4 couches)
gerbers/LinKey-F_Mask.gbr, B_Mask.gbrMasques de soudure
gerbers/LinKey-F_Paste.gbr, B_Paste.gbrPochoir pâte à braser
gerbers/LinKey-F_Silkscreen.gbr, B_Silkscreen.gbrSérigraphies
gerbers/LinKey-Edge_Cuts.gbrContour de la carte
gerbers/LinKey-job.gbrjobMétadonnées Gerber X2 (stackup)
LinKey-PTH.drl, LinKey-NPTH.drlPerçages (plaqués / non plaqués)
LinKey_positions-all.csvFichier de positions (pick & place)
LinKey_Bill_of_Materials.csvNomenclature (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
QtyValueFootprintReferences
3100nCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC4, C8, C9
310kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR7, R13, R16
3120rResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR6, R9, R12
31kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR5, R11, R15
322uCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC3, C6, C7
3RResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR1, R2, R3
2330rResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR4, R8
2~LinKey_Lib_Footprints:B3U-1000PSW1, SW2
1100kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR18
110rResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR10
1180pCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC5
11FCapacitor_THT:CP_Radial_D8.0mm_P3.50mmC2
11uHInductor_SMD:L_Coilcraft_XAL5030-XXXL1
12,2uCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC1
12kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR14
1453kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR17
1ACPL-214-500EPackage_SO:SOP-4_4.4x2.6mm_P1.27mmU1
1BAS_4002A_RPP_E6327LinKey_Lib_Footprints:BAS4002ARPPE6327D1
1CSD25402Q3APackage_SON:VSON-8_3.3x3.3mm_P0.65mm_NexFETQ2
1Conn_01x04Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ2
1ESP32-WROOM-32ERF_Module:ESP32-WROOM-32EU2
1LED_RGBLED_SMD:LED_RGB_5050-6D8
1MMBT2907ALT1GPackage_TO_SOT_SMD:SOT-23_HandsolderingQ1
1TL431DBZPackage_TO_SOT_SMD:SOT-23U4
1TPS61022Package_DFN_QFN:Texas_RWU0007A_VQFN-7_2x2mm_P0.5mmU5
1~LinKey_Lib_Footprints:Conn_01x03_TICJ1

The 40 most common of 42 parts.

Similar boards

  • 4 layers100 × 100 mmWattwiser, the printed circuit board in 3D

    Wattwiser

    rndfm/wattwiser_pcb

    49 parts
  • 2 layers137.2 × 83.8 mmGeneralPurposeAlarmDevicePCB, the printed circuit board in 3D

    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 mmCan ssr, the printed circuit board in 3D

    Can ssr

    czalinski/ThlHats

    Test devices with Raspberry PI HAT form factor

    201 partsMIT
  • 4 layers63.5 × 44.5 mmClock Controller, the printed circuit board in 3D

    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 mmFanPWMtoRotorLock, the printed circuit board in 3D

    FanPWMtoRotorLock

    mlh5599/FanPWMtoRotorLock

    Converts the output from a 12v PWM fan to a rotor lock detector signal

    13 partsMIT
  • 2 layers140.1 × 85.5 mmCardiac, the printed circuit board in 3D

    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 mmPXU, the printed circuit board in 3D

    PXU

    Andr-Zero/PXU

    Replacement Original Xbox Power Supply

    129 parts105CERN-OHL-S-2.0

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).