Un BLE Tag n’est pas qu’un localisateur — ajoute-lui un capteur et il devient un nœud sans fil qui rapporte température, humidité, mouvement ou lumière sans câblage. Cet article explique comment échantillonner, stocker et rapporter des données capteur depuis un tag sans vider la pile bouton.

Ce qu’on peut capter sur un tag

  • Température / humidité (classe SHTxx, ~1–5 µA à la lecture, endormi le reste)
  • Pression (baromètre pour l’altitude)
  • Accéléromètre 3 axes (mouvement / chute / choc)
  • Lumière ambiante, magnétique, gaz

Chaque capteur ajoute une *énergie de lecture* plus l’*énergie radio* pour envoyer la valeur.

Cadence d’échantillonnage

Lire un capteur chaque seconde semble sûr mais consomme la batterie. Fixe la cadence à l’usage :

  • Température cold-chain : journaliser toutes les 5–15 min, alerter sur seuil.
  • Événements mouvement/porte : piloté par événement, dort le reste.
  • Tendance ambientale : 1–10 min suffit.

Stockage local

Un tag ne peut pas uplinker en continu, donc bufferise localement. Un anneau (FIFO) des derniers N échantillons survit à une connexion manquée ; au contact suivant le gateway récupère le backlog. 32–256 échantillons est typique.

Stratégies de rapport

  • Périodique : envoie chaque T quoi qu’il arrive. Simple, prévisible, gaspille si rien n’a changé.
  • Piloté par événement : envoie seulement au franchissement de seuil ou mouvement. Meilleur pour la batterie.
  • Rapport delta : stocke les deltas ; envoie un échantillon complet seulement occasionnellement pour resynchroniser.

Compression des données

float32 × N dans un buffer de 32 échantillons est du gaspillage. Utilise :

  • Encodage delta : `d_i = sample_i − sample_{i-1}` (petits entiers).
  • Échelle en int8/int16 avec offset et gain connus.
  • Bit-pack plusieurs canaux.

Un log temp de 16 échantillons float32 (64 B) passe à ~16–20 B.

Mathématiques de puissance

Par cycle de rapport : lecture capteur ~5 µA·2 ms + TX radio ~8 mA·20 ms + MCU ~3 mA·50 ms.

Pour un tag lisant la temp toutes les 10 min et rapportant chaque heure en BLE :

  • Lecture : 5 µA × 2 ms × 6 = 60 nAh/cycle
  • TX : 8 mA × 20 ms = 44 nAh
  • Total ≈ 100 nAh/cycle × 24 = 2,4 µAh/jour → une CR2032 (225 mAh) tient >20 ans sur le papier (réalité : autodécharge et fuite en deep-sleep dominent, ~2–5 ans).

Rapport via BLE

Deux façons :

1. GATT notify connecté : le tag connecte, envoie Sensor Notify, déconnecte. Max de flexibilité, max d’énergie.

2. Publicité périodique avec réponses (PAwR) : le tag diffuse les données en slots périodiques ; le gateway répond. Énergie minimale pour beaucoup de tags.

Ingestion par gateway

Même pipeline qu’un Beacon : le gateway entend l’advertisement/notify, déduplique + horodate + agrège, transmet en MQTT. Le tag doit juste être *entendu*, pas connecté, pour la plupart des rapports.

Cas d’usage

  • Cold-chain (pharma/aliments) : temp + événements porte ouverte.
  • État d’actif : vibration avant panne.
  • Ambiental : humidité en entrepôts, lumière en bureaux.

Checklist

  • [ ] Cadence selon le cas d’usage, pas « chaque seconde »
  • [ ] Anneau pour connexions manquées
  • [ ] Piloté par événement si possible
  • [ ] Compression delta + échelle int
  • [ ] PAwR ou fenêtres connectées courtes
  • [ ] Dedupe + timestamp côté gateway
  • [ ] Modèle de batterie inclut l’autodécharge

Cet équilibre est tout le jeu du BLE Tag.