Le collier est le cœur produit : capteurs embarqués, connectivité cellulaire basse consommation et firmware C (Zephyr RTOS) sur un SiP nRF9160 (MCU + modem intégrés, sans AT commands), pensés pour tenir sur batterie, fonctionner en zone blanche et transmettre en sécurité. Voici ce qu'on embarque et pourquoi.
Les défis à résoudre
Concevoir un collier autonome, fiable en zone blanche et sécurisé soulève des contraintes interdépendantes.
Architecture en 3 zones
Du collier jusqu'au backend, chaque zone a un rôle clair.
Zone 1 · Collier (Edge)
Le hardware embarqué : SiP nRF9160 (MCU + modem), GNSS dédié, capteurs, batterie. Il collecte, met en tampon localement et transmet de façon chiffrée.
Zone 2 · Réseau & communication
Connectivité cellulaire LPWAN (LTE-M, NB-IoT en repli) avec SIM IoT, transport MQTT sur TLS. Pensée pour la basse consommation et le réseau instable.
Zone 3 · Backend & cloud
L'ingestion, le stockage et l'analyse côté plateforme (stack du site : Hetzner / Kubernetes, observabilité Grafana). Le collier s'y authentifie en mTLS via la gateway.
Choix du MCU : nRF9160 (SiP), plus d'AT commands
Le nRF9160 est un SiP qui intègre le microcontrôleur (ARM Cortex-M33) et le modem LTE-M/NB-IoT dans la même puce. L'alternative (MCU + modem externe : ESP32-S3 + BG95, ou LilyGO T-SIM7080G) oblige le firmware à piloter le modem par AT commands (protocole textuel des années 1980 : chaînes à construire, réponses fragiles à parser, timeouts empiriques, 250+ pages de doc). Avec le nRF9160, la connectivité passe par la LTE Link Control library du nRF Connect SDK (lte_lc_connect(), en C sur Zephyr) : plus d'AT commands. Son TrustZone sert de secure element pour la clé privée.
Le collier : composants embarqués
Ce qu'on met dans le collier, et le rôle de chaque brique.
| Composant | Choix | Rôle |
|---|---|---|
| MCU + modem (SiP) | nRF9160-SICA | Exécute le firmware C/Zephyr et la machine à états. Le SiP intègre le modem LTE-M/NB-IoT : connectivité via la LTE Link Control library du nRF Connect SDK, sans AT commands. TrustZone = secure element pour la clé privée. |
| GNSS dédié | u-blox ZOE-M8Q | Localisation multi-constellation (GPS/GLONASS/Galileo/BeiDou), plus précise que le GNSS intégré seul ; A-GPS pour accélérer le premier fix. |
| Centrale inertielle (IMU) | LSM6DSOX (ST) | Accéléromètre + gyroscope avec Machine Learning Core embarqué : activité, immobilité, chocs (I²C). |
| Température | TMP117 (TI) | Mesure de la température corporelle, précision ±0,1°C (I²C). |
| Fréquence cardiaque | 1 option parmi 4 (axe R&D) | Rythme cardiaque (PPG optique ou piézo) ; feature différenciante conditionnée à un Go/No-Go. Indicateur de tendance, non médical. |
| Mémoire flash | W25Q128 (16 Mo, SPI) | Tampon local des données en attente de transmission (store and forward, ~72 h). |
| PMU + régulateur | BQ25895 + TLV62585 | Charge Li-Po, fuel gauge I²C (niveau précis), régulation 3,3 V et protections. |
| Antennes | Taoglas FPC (LTE-M + GNSS) | Antennes flexibles dédiées à la cellulaire et au GNSS. |
| Batterie | Li-Po 2000 mAh (103450) | Alimentation autonome ; autonomie cible 12 à 15 jours. |
Capteurs : choix justifiés
Les capteurs retenus, et les alternatives écartées.
| Mesure | Retenu | Pourquoi |
|---|---|---|
| Activité (IMU) | LSM6DSOX | Très basse consommation, Machine Learning Core embarqué (détection de mouvement) qui décharge le MCU. Préféré aux IMU sans logique interne. |
| Température | TMP117 | Précision médicale (±0,1°C), idéale pour détecter une fièvre. Préféré aux capteurs génériques moins précis. |
| Fréquence cardiaque | Axe R&D · 4 candidats | MAX30102 (PPG rouge/IR), APDS-9960 (PPG vert 530 nm), MAXM86161 (PPG 3 longueurs d'onde) et un capteur piézocéramique sont testés sur chien ; décision Go/No-Go fin du mois 6. Le PPG optique étant calibré pour l'humain, sa fiabilité sur un animal à fourrure et en mouvement doit être validée. Donnée de tendance, non médicale. Le radar 60 GHz est écarté (consommation, précision faible sur chien mobile). |
Réseau & transport
Connectivité basse consommation, pensée pour le réseau instable.
Sécurité de la flotte
Aucun faux collier ne peut injecter de données : authentification par certificat de bout en bout.
- PKI X.509 : autorité racine (Root CA) puis CA intermédiaire qui signe les certificats des colliers et du serveur. Sur le site, c'est step-ca.
- Authentification mutuelle (mTLS) : chaque collier prouve son identité par certificat, et vérifie le serveur. Un appareil non enregistré est refusé, même avec le firmware reverse-engineeré.
- Provisioning en usine : chaque collier reçoit un device_id et un certificat signé, la clé privée est protégée dans le TrustZone du nRF9160.
- Activation par l'utilisateur : appairage BLE (QR code), association device_id ↔ user_id, le collier passe de l'état « provisioned » à « active ».
Logique embarquée : machine à états
Le firmware C/Zephyr adapte ses acquisitions et sa transmission selon l'état de l'animal et du réseau.