Aller au contenu

ESP32-S3 USB Bridge

L’ESP32-S3 USB bridge est le seul PCB custom nécessaire pour connecter un SimServer aux nodes de simulation (DAE, Dinamap, Scope…). C’est un petit circuit imprimé 2 couches qui fait le pont entre le réseau ESP-NOW des dispositifs et la machine hôte via USB-C.

graph LR
Nodes["Nodes ESP32<br/>(DAE, Dinamap, Scope)"] <-->|ESP-NOW<br/>broadcast| Bridge["ESP32-S3<br/>USB Bridge"] <-->|USB-C<br/>JSON lines| Host["Machine hôte<br/>(Docker SimServer)"]
style Nodes fill:#d94a4a,color:#fff
style Bridge fill:#9b59b6,color:#fff
style Host fill:#4a90d9,color:#fff
ParamètreValeur
MCUESP32-S3-WROOM-1 (N16R8)
Flash16 Mo
PSRAM8 Mo
ConnecteurUSB-C (USB 2.0, CDC-ACM)
Couches PCB2
Dimensions~40 x 25 mm
Coût unitaire~5 EUR (composants + PCB)
LicenceCERN-OHL-S v2
ConceptionKiCad 8

Réception ESP-NOW

Reçoit les messages ESP-NOW des nodes (paramètres vitaux, annonces, événements) et les transmet à la machine hôte en JSON lines via USB série.

Émission ESP-NOW

Reçoit les commandes de SimServer via USB série et les retransmet aux nodes en broadcast ESP-NOW (démarrage scénario, overrides, événements).

LED de statut

LED RGB indiquant l’état : démarrage (bleu), connecté (vert), activité ESP-NOW (clignotement), erreur (rouge).

OTA via USB-DFU

Mise à jour du firmware via USB-DFU — pas besoin de retirer le bridge pour le flasher.

┌─────────────────────────────────┐
│ ESP32-S3-WROOM-1 │
│ (N16R8) │
│ │
│ ┌─────────┐ ┌────────────┐ │
│ │ ESP-NOW │ │ USB CDC │ │
│ │ Radio │ │ (série) │ │
│ └────┬─────┘ └─────┬──────┘ │
│ │ │ │
│ ┌────┴────────────────┴──────┐ │
│ │ Firmware bridge │ │
│ │ (réception / émission │ │
│ │ + JSON lines parsing) │ │
│ └────────────┬───────────────┘ │
│ │ │
│ ┌────┴────┐ │
│ │ LED RGB │ │
│ └─────────┘ │
└───────────────┬─────────────────┘
┌────┴────┐
│ USB-C │
└─────────┘

Le bridge communique avec la machine hôte en JSON lines à 115200 baud. Chaque ligne est un message JSON complet terminé par \n.

// Bridge → Machine hôte
{"type":"vitals","device":"dinamap-01","hr":72,"spo2":98,"rr":16}
{"type":"announce","device":"dae-01","deviceType":"dae","capabilities":["shock","analyze"]}
{"type":"event","device":"dae-01","name":"shock_delivered","energy":200}
// Machine hôte → Bridge
{"cmd":"start","scenario":"acr-fv-adulte","group":1}
{"cmd":"override","param":"hr","value":120,"group":1}
{"cmd":"stop","group":1}

Sur Linux, le bridge apparaît comme /dev/ttyACM0 (USB CDC-ACM).

Le bridge supporte l’isolation par Group ID pour faire fonctionner jusqu’à 3 kits simultanément dans la même salle :

KitCanal WiFiGroup ID
Kit 111
Kit 262
Kit 3113

Le Group ID est configuré via une commande JSON au démarrage.

  • Conception : KiCad 8
  • Fabrication : JLCPCB (PCB 2 couches + assemblage SMD)
  • Coût PCB : ~1-2 EUR / unité (lot de 5)
  • Coût total : ~5 EUR / unité (PCB + composants + assemblage)
  • Licence : CERN-OHL-S v2

Voir PCB (KiCad) pour les détails de conception et les fichiers de fabrication.