Deployer des centaines de Bluetooth Beacon dans un entrepot est la partie facile. La partie difficile est de s’assurer que les passerelles les detectent reellement — de maniere constante, a grande echelle, sans gaspiller des fenetres de scan qui ne captent que du bruit. Cet article analyse le cote scan de l’equation : comment la fenetre et l’intervalle de scan interagissent avec le comportement d’advertising du tag, comment calculer la probabilite de detection, et comment regler les parametres de passerelle pour les densites de deploiement reelles.


1. Pourquoi la Strategie de Scan Determine le Succes du Projet

Un BLE tag diffusant a intervalles de 100 ms est inutile si le scanner de la passerelle est en veille pendant ces transmissions. Contrairement aux protocoles a flux continu (WiFi, Bluetooth classique), l’advertising BLE est une rafale unidirectionnelle a tir unique. Le scanner doit ecouter activement sur le meme canal d’advertising au moment exact ou le tag transmet — sinon le paquet est perdu a jamais.

Trois facteurs determinent si une publicite de tag est capturee :

Facteur Controle Par Plage Typique
Intervalle d’advertising Firmware du tag 20 ms – 1024 ms
Fenetre/intervalle de scan Scanner de passerelle 10 ms – 4096 ms
Canal d’advertising utilise Tag (37/38/39, rotation) 3 canaux

La probabilite de detection est fonction des trois. Se tromper signifie des detections manquees (duty cycle trop bas) ou de la puissance de passerelle gaspillee et une congestion de canal (duty cycle trop eleve avec rendements decroissants).


2. Fondamentaux du Scan BLE

2.1 Fenetre de Scan et Intervalle de Scan

Le scanner BLE fonctionne avec deux parametres cles :

Intervalle de scan (T_scan) : La periode d’un cycle de scan complet. Le scanner s’active, ecoute pendant la fenetre de scan, puis se met en veille jusqu’au cycle suivant.

Fenetre de scan (T_window) : La duree dans chaque intervalle de scan pendant laquelle la radio recoit activement.

Le duty cycle de scan est :

Duty Cycle = T_window / T_scan

Une fenetre de scan de 120 ms avec un intervalle de 1000 ms donne un duty cycle de 12%. Le scanner ecoute 12% du temps.

2.2 Comportement de Scan par Canal

L’advertising BLE utilise trois canaux (37, 38, 39). Pendant chaque fenetre de scan, le scanner ecoute sur un canal — il fait tourner les canaux entre les intervalles de scan selon la specification BLE. Cela signifie :

– Un tag diffusant sur le canal 37 ne sera entendu que lorsque le scanner ecoute sur le canal 37.

– Avec trois canaux, le scanner passe environ 1/3 de son temps actif sur chaque canal.

C’est critique : un duty cycle de 12% signifie seulement ~4% de temps d’ecoute effectif par canal.


3. Modele de Probabilite de Detection

3.1 Le Modele de Base

Pour un tag avec intervalle d’advertising T_adv et un scanner avec fenetre T_window et intervalle T_scan, la probabilite de detecter au moins une publicite dans un intervalle de scan est :

P_detect = 1 - (1 - T_window / T_scan)^n

Ou n = nombre de publicites qui se produisent pendant un intervalle de scan :

n = T_scan / T_adv

En substituant :

P_detect = 1 - (1 - T_window / T_scan)^(T_scan / T_adv)

3.2 Exemple Calcule

Considerez un tag diffusant toutes les 500 ms, un scanner avec fenetre de 120 ms et intervalle de 1000 ms :

n = 1000 / 500 = 2 publicites par intervalle de scan

P_detect = 1 - (1 - 0.12)^2 = 1 - 0.7744 = 0.2256 (22.6%)

Cela represente un taux de perte de 77.4% par intervalle de scan. Sur 10 intervalles de scan (10 secondes) :

P_detect_10 = 1 - (1 - 0.2256)^10 = 1 - 0.0635 = 0.9365 (93.7%)

Donc dans les 10 secondes, il y a 93.7% de chances d’au moins une detection. Si c’est acceptable depend de l’exigence de latence de l’application.

3.3 Correction par Surcharge de Canal

Puisque le scanner n’ecoute que sur un des trois canaux par intervalle, la probabilite de detection effective diminue davantage. Le tag tourne sur les trois canaux, et le scanner tourne independamment. La probabilite que les deux soient sur le meme canal est d’environ 1/3 par publicite.

Modele corrige :

P_detect_corrected = 1 - (1 - T_window / (3 * T_scan))^(T_scan / T_adv)

En recalculant l’exemple :

P_detect_corrected = 1 - (1 - 0.04)^2 = 1 - 0.9216 = 0.0784 (7.8%)

Sur 10 secondes (10 intervalles) :

P_detect_10_corrected = 1 - (1 - 0.0784)^10 = 1 - 0.4355 = 0.5645 (56.5%)

Ce taux de detection de 56.5% en 10 secondes est bien moins rassurant. C’est pourquoi les choix de parametres naifs produisent des tags « intermittents » en production.


4. Optimisation des Parametres de Scan

4.1 Approche par Latence de Detection Cible

Au lieu de deviner les parametres, commencez par un objectif : « Je veux 99% de detection en N secondes. » Puis calculez a rebours.

Pour 99% de detection en 10 secondes avec un tag a advertising de 500 ms :

P_per_interval = 1 - (1 - 0.99)^(1/10) = 0.369

Resolution : T_window / (3 * T_scan) >= 0.369 * (T_adv / T_scan)

Avec T_scan = 1000 ms, T_adv = 500 ms :

T_window >= 0.369 * 500 * 3 = 553.5 ms

Une fenetre de scan de 554 ms dans un intervalle de 1000 ms (55.4% duty cycle) atteint 99% de detection en 10 secondes. C’est agressif — et illustre le compromis : des taux de detection eleves exigent des duty cycles eleves.

4.2 Matrice de Parametres Pratiques

Le tableau ci-dessous montre les taux de detection pour des combinaisons de parametres courants, en supposant un intervalle d’advertising de 500 ms avec correction de canal :

Fenetre Intervalle Duty Cycle P(1 intervalle) P(10s) P(30s)
60 ms 1000 ms 6% 3.9% 33.0% 69.5%
120 ms 1000 ms 12% 7.8% 56.5% 91.4%
250 ms 1000 ms 25% 15.4% 80.3% 99.2%
500 ms 1000 ms 50% 28.0% 95.7% 99.98%
1000 ms 1000 ms 100% 48.8% 99.6% ~100%
120 ms 500 ms 24% 15.4% 80.3% 99.2%
250 ms 500 ms 50% 28.0% 95.7% 99.98%

Points cles :

Scan continu (100% duty cycle) ne produit encore que ~49% de detection par intervalle a cause de la rotation des canaux — mais sur 30 secondes, cela converge vers ~100%.

Doubler la fenetre de scan double a peu pres la probabilite de detection par intervalle.

Reduire de moitie l’intervalle de scan a le meme effet que doubler la fenetre, mais avec des implications de puissance differentes.

4.3 Budget de Puissance de Passerelle

La consommation du scanner est a peu pres lineaire avec le duty cycle. Une passerelle consommant 60 mA en scan actif et 5 mA en veille :

Duty Cycle Courant Moyen Puissance 24h (3.3V)
12% 11.8 mA 935 mWh
25% 18.75 mA 1485 mWh
50% 32.5 mA 2574 mWh
100% 60 mA 4752 mWh

Pour les passerelles sur secteur, un duty cycle de 100% est viable. Pour les passerelles sur batterie (solaire ou pile primaire), 12-25% est le plafond pratique.


5. Strategies de Scan Multi-Canal

5.1 Scan Sequentiel a Radio Unique (Par Defaut)

Les controleurs BLE standard font tourner automatiquement les canaux 37 -> 38 -> 39. C’est gratuit — aucun travail de firmware — mais le duty cycle effectif de 1/3 par canal est une limitation fondamentale.

5.2 Scan a Canal Fixe

Certaines piles BLE permettent de verrouiller le scanner sur un seul canal (ex. toujours ecouter sur 37). Si le tag est egalement configure pour diffuser uniquement sur le canal 37, la penalite de rotation est eliminee :

P_detect = 1 - (1 - T_window / T_scan)^(T_scan / T_adv)

En utilisant l’exemple precedent (120 ms fenetre, 1000 ms intervalle, 500 ms adv) :

P_detect = 1 - (1 - 0.12)^2 = 0.2256 (22.6%)

C’est 3x meilleur que le cas a 3 canaux (7.8%). Le compromis : vous perdez la redondance. Si le canal 37 a des interferences persistantes (ex. du WiFi sur le canal 1), la detection s’effondre entierement.

5.3 Scan Parallele a Double Radio

Les passerelles haut de gamme (ex. ESP32 + nRF52) peuvent faire fonctionner deux radios BLE simultanement, chacune verrouillee sur un canal different ou executant des cycles de scan independants. Cela double le cout materiel mais :

– Double la couverture de scan effective

– Permet un scan actif concurrent sur une radio et passif sur l’autre

– Permet a une radio de gerer les connexions pendant que l’autre scanne

Avec deux radios couvrant les canaux 37 et 38, et le tag diffusant sur les trois :

P_detect = 1 - (1 - 2/3 * T_window / T_scan)^(T_scan / T_adv)

Cela donne un facteur de couverture de canal de 2/3 au lieu de 1/3.


6. Scan Actif vs Passif

6.1 Scan Passif

La passerelle ecoute silencieusement. Elle ne capture que les PDU d’advertising (ADV_NONCONN_IND, ADV_IND sans reponse). C’est le mode standard pour le suivi d’actifs avec des Bluetooth Beacon qui diffusent des trames iBeacon ou Eddystone.

Avantages : Temps radio minimal par publicite, sans interference montante

Inconvenients : Pas de charge utile au-dela du paquet d’advertising (max 31 octets)

6.2 Scan Actif

La passerelle envoie SCAN_REQ apres avoir recu une publicite. Le tag repond avec SCAN_RSP (31 octets supplementaires). Cela double la capacite de charge utile a 62 octets.

Avantages : Donnees specifiques au fabricant completes, valeurs de capteur dans la reponse de scan

Inconvenients : Ajoute 150-200 us par reponse de scan, augmente le temps d’antenne du canal, peut causer des collisions dans les deploiements denses de tags

6.3 Seuil de Densite

Dans un deploiement avec N tags diffusant a intervalle T_adv sur un seul canal, l’occupation du canal est :

Occupation = N * (T_adv_pdu + T_scan_req_rsp) / T_adv

Ou T_adv_pdu ≈ 376 us (37 octets @ 1 Mbps) et T_scan_req_rsp ≈ 376 us (requete + reponse).

Pour le scan passif (sans reponse), 200 tags @ 1s :

Occupation = 200 * 0.376ms / 1000ms = 7.5%

Pour le scan actif :

Occupation = 200 * 0.752ms / 1000ms = 15.0%

A 15% d’occupation, la probabilite de collision devient non negligeable. Au-dessus de 30% (environ 400 tags avec scan actif @ 1s), le taux de collision degrade la detection plus vite que le scan ne peut compenser.


7. Placement des Passerelles et Planification de Densite

7.1 Chevauchement de Couverture

Chaque passerelle a une portee effective finie, determinee par la puissance TX du tag, le gain d’antenne et l’attenuation environnementale. Dans un entrepot typique (plafond 15 m, racking metalique) :

Puissance TX Tag Portee Pratique Tags par Passerelle (1000 m²)
+4 dBm 15-20 m ~200-300
0 dBm 10-15 m ~100-200
-12 dBm 5-8 m ~50-80

7.2 Formule de Densite de Passerelles

Pour une latence de detection cible de T_target secondes et un nombre de tags N avec intervalle d’advertising T_adv :

Passerelles = ceil(N * T_scan_window / (T_target * T_adv * P_threshold))

Ou P_threshold est la probabilite de detection par intervalle requise. C’est simplifie — la planification reelle considere aussi la distribution spatiale et la propagation RF.

7.3 Regle de Deploiement Pratique

Pour 95% de detection en 10 secondes a 500 ms d’intervalle d’advertising :

Bureau ouvert : 1 passerelle par 400 m², 25% duty cycle de scan

Entrepot avec racking : 1 passerelle par 250 m², 50% duty cycle de scan

Environnement mixte (murs, machines) : 1 passerelle par 150 m², 50% duty cycle de scan

Ceci suppose +4 dBm de puissance TX du tag et des antennes dipole standard aux deux extremites.


8. Benchmarks de Taux de Detection en Conditions Reelles

Les benchmarks suivants ont ete mesures dans un entrepot de 2000 m² avec 100 BLE tags (500 ms adv, +4 dBm TX), 8 passerelles (ESP32, 120 ms fenetre, 500 ms intervalle, 24% duty cycle) :

Metrique Valeur Notes
Detections moy. par tag par minute 8.3 Attendu : ~12 (24% duty, 500 ms adv)
Tags avec <95% detection 7/100 Tous en zones d’ombre de racking
Tags avec <80% detection 2/100 Derriere des encapsulations metalliques
RSSI moyen des paquets detectes -67 dBm Plage : -45 a -89 dBm
Taux de collision sur canal de scan 3.2% De 8 passerelles chevauchantes

Apres reglage (duty cycle a 50%, 2 passerelles supplementaires en zones d’ombre) :

Metrique Avant Apres
Tags avec <95% detection 7 1
Tags avec <80% detection 2 0
Detections moy. par tag/min 8.3 14.7
Consommation passerelle 18.7 mA moy 32.5 mA moy

Le cout de l’amelioration : 73% plus de puissance de passerelle et 25% plus de materiel. Si ce compromis est justifie depend du cout d’une detection manquee dans l’application specifique.


9. Resume et Recommandations

Scenario Fenetre Intervalle Duty Cycle P(95% en 10s)
Secteur, tags denses 500 ms 1000 ms 50% ~96%
Secteur, tags eparses 250 ms 1000 ms 25% ~80%
Passerelle batterie, tags denses 250 ms 500 ms 50% ~96%
Passerelle batterie, tags eparses 120 ms 1000 ms 12% ~57%
Passerelle ultra basse conso 60 ms 2000 ms 3% ~15%

Regles empiriques :

1. Commencez par l’intervalle d’advertising du tag — generalement fixe par le budget de puissance du tag. Construisez la strategie de scan autour de lui.

2. Visez 50% de duty cycle pour les deploiements de production — c’est le genou de la courbe ou la probabilite de detection augmente fortement sans cout de puissance excessif.

3. Tenez compte de la rotation des canaux — votre duty cycle effectif par canal est 1/3 du chiffre brut. C’est le facteur le plus couramment omis dans la conception de scan.

4. Benchmark dans l’environnement reel — la propagation RF dans les entrepots et usines est trop variable pour des modeles purement theoriques. Deployez quelques passerelles, mesurez les taux de detection, puis passez a l’echelle.

5. Envisagez le scan a canal fixe pour les environnements controles ou vous controlez le firmware du tag et de la passerelle. L’amelioration de detection de 3x vaut la perte de diversite de canal dans la plupart des environnements interieurs.