Académique Documents
Professionnel Documents
Culture Documents
Discipline : Informatique
Cédric BERENGER
3
Abstract
Microcontrollers are small and cheap embedded computers that can make
great things. With low power consumption, they are equipped to interact with
the environment and give us feedback using radio waves. With such abilities, we
could build a giant mesh network, to monitor a house, an industrial facility, or
event a whole city. However, scalability of such meshed networks is a complex to-
pic, and numerous existing solutions for managing meshed network, submitted
to robustness and performance constraints, make compromises. Solutions with
low power consumption, supporting meshed topologies and using peer to peer
communications, are both hard to find and not easy to implement. In this PhD
thesis, we contribute to an alternative solution following our own compromises.
We propose a minimalistic method to build scalable meshed networks of energy-
autonomous nodes, able to self-organization without central coordination.
We first choose a programming model. We run distributed applications using
synchronous rounds, just as cellular automata. To put such a model in practice,
we discuss the synchronization topic : two nodes never run at the same exact
speed, so there is an increasing skew between clock values in time. But, we need
to keep neighbouring nodes in phase with each others. We give a minimalistic
synchronization algorithm to set synchronous execution rounds. The shared na-
ture of the wireless communication medium and its sensitivity to electromagne-
tic disturbances make it unsuitable for our synchronization algorithm without
adjustments. Thus, we present a protocol giving a necessary frugal framework to
let our synchronization algorithm work on wireless nodes.
Once we are able to run synchronous algorithms on nodes, we aim at simpli-
fying the deployment of such networks by adding geolocation with software tech-
niques. We take advantage of tiny differences in nodes’ clock speeds in order to
measure precisely propagation delays of radio waves exchanged by neighbours.
Finally, we consider a way to interface centralized systems with our distributed
networks allowing to broadcast data streams using several entry points.
4
Remerciements
Je vais bien sûr commencer par remercier mon directeur de thèse Peter Niebert,
qui m’a accompagné depuis ma deuxième année de licence et m’a fait découvrir
les micro-contrôleurs ainsi que les algorithmes distribués. Je lui dois une grande
partie de mes connaissances en électronique et réseaux, et c’est grâce à lui que j’ai
pu investiguer durant ma thèse des thématiques aussi passionnantes que variées,
oscillant régulièrement entre théorie et pratique.
Ensuite, je tiens à remercier tout particulièrement mon co-directeur de thèse
Kévin Perrot, qui a toujours été présent dans les moments de doutes et qui m’a
permis de tenir jusqu’à la fin. Il a effectué un travail titanesque de relecture et
de révision du manuscrit. Toujours positif et pertinent, il a grandement aidé à
apporter la rigueur nécessaire au manuscrit ainsi qu’aux démonstrations.
Je remercie M. Thomas Noël et Mme Nathalie Mitton de m’avoir fait l’honneur
d’être mes rapporteurs. Je remercie également Emmanuel Godard et Mme Claire
Goursaud d’avoir accepté de faire parti de mon jury de thèse.
Je remercie tous mes collègues au laboratoire LIS, notamment Manon, Sébas-
tien D., François, Théodore, Amélia, Cindy, Franck, Florian, Thibault, Damien,
Pâcome, José-Luis, Didier, Léo, etc., avec lesquels j’ai pu apprendre et échanger
et qui ont instauré une ambiance de travail agréable. Je remercie tout particuliè-
rement mes collègues de bureau Sébastien R. et Jeremy qui ont toujours accepté
de prendre de leur temps pour donner des avis critiques sur des démonstrations,
des sections ou des illustrations, et qui on eu la patience de supporter mes ex-
centricités toutes ces années. Ils m’ont également fait profiter de leur expertise
de l’outil LaTeX et m’ont aidé à le manier correctement.
Merci à ma mère, qui, sans bagage avancé en informatique, a lu et relu attenti-
vement les différentes versions de la thèse et qui a vérifié que les différentes sec-
tions soient compréhensibles et lisibles de manière indépendantes. Ses conseils
ont grandement participé à la vulgarisation du récit ainsi qu’à rendre sa lecture
plus fluide. Merci également à ma grand-mère pour son expertise sur la gram-
maire et l’orthographe et qui a corrigé un grand nombre de coquilles.
Merci à mes collègues de la startup LED’sChat, Guillaume pour son soutien, et
surtout Mathieu pour ses annotations et conseils concernant le style et la lecture
de plusieurs chapitres.
Enfin, merci à ma famille, mon père et ma sœur pour leur aide dans la prépa-
ration de la soutenance, et merci à tous ceux qui sont venu si nombreux assister
à ma soutenance de thèse et ce, malgré le fait qu’elle se soit déroulée en visio
durant une période si singulière (janvier 2021).
5
Table des matières
Table des matières 6
1 Introduction 10
1.1 Plan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2 Objectif, minimalisme et visualisations interactives . . . . . . . . . 13
1.3 Microcontrôleurs : notions de base . . . . . . . . . . . . . . . . . . . 14
1.4 Horloge et mesure du temps . . . . . . . . . . . . . . . . . . . . . . 16
1.4.1 Signal et fronts d’horloge . . . . . . . . . . . . . . . . . . . . 17
1.4.2 Le temps : une succession d’états . . . . . . . . . . . . . . . 17
1.4.3 Périphérique compteur . . . . . . . . . . . . . . . . . . . . . 18
1.4.4 Perception des évènements . . . . . . . . . . . . . . . . . . . 18
1.4.5 Dérive de la fréquence . . . . . . . . . . . . . . . . . . . . . 20
1.5 Consommation énergétique . . . . . . . . . . . . . . . . . . . . . . . 22
1.5.1 Sources d’énergie . . . . . . . . . . . . . . . . . . . . . . . . 23
1.5.2 Consommation des périphériques . . . . . . . . . . . . . . . 23
1.5.3 Mode de fonctionnement "basse énergie" . . . . . . . . . . . 23
1.6 Transition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2 Synchronisation filaire 25
2.1 Abstraction synchrone . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.1.1 Principe général et avantages . . . . . . . . . . . . . . . . . 26
2.1.2 Fonctionnement de la couche . . . . . . . . . . . . . . . . . . 27
2.1.3 Implémentation . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.2 Synchronisation : état de l’art . . . . . . . . . . . . . . . . . . . . . 29
2.3 Modèle d’horloges et de délais . . . . . . . . . . . . . . . . . . . . . 31
2.3.1 Fréquence nominale et fréquence effective . . . . . . . . . . . 31
2.3.2 Gigue aléatoire . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.3.3 Exemple : effets cumulatifs de la gigue . . . . . . . . . . . . 32
2.3.4 Exemple : synchronisation par impulsions Pulse Sync . . . . 32
2.4 Primitive : GooseSync . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.4.1 Choix du nom Goose Sync . . . . . . . . . . . . . . . . . . . 34
2.4.2 Fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.5 Comportement et passage à l’échelle . . . . . . . . . . . . . . . . . 36
2.5.1 Noeuds meneurs et suiveurs . . . . . . . . . . . . . . . . . . 36
2.5.2 Convergence vers un meneur unique . . . . . . . . . . . . . . 36
2.5.3 Mémoire implicite et propagation accélérée . . . . . . . . . . 37
6
2.6 Étude empirique . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.6.1 Simulation à évènements discrets . . . . . . . . . . . . . . . 39
2.6.2 Simulation par tours . . . . . . . . . . . . . . . . . . . . . . 43
2.6.3 Démonstrateur physique : LED’s Chat Mozaïk . . . . . . . . 47
2.7 Éléments d’étude analytique . . . . . . . . . . . . . . . √ . . . . . . . 48
2.7.1 Variance de Goose Sync bornée par Pulse Sync ( n) . . . . 48
2.7.2 Hypothèse : vitesse de propagation rapide indépendante du
diamètre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.7.3 Variance faiblement dépendante du diamètre . . . . . . . . . 49
2.8 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
7
3.8 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
8
Table des matières
9
1 Introduction
Les microcontrôleurs sont des ordinateurs miniatures capables d’exécuter un
programme, et de produire en sortie une action physique en fonction d’évène-
ments observés sur des entrées analogiques ou numériques. Un microcontrôleur
peut par exemple allumer une lampe lorsqu’il détecte une variation importante
du signal électrique provenant d’un capteur de présence infrarouge. Les micro-
contrôleurs sont des circuits intégrés peu chers, fiables, et requièrent peu d’éner-
gie. Les groupements de microcontrôleurs peuvent interagir et échanger de l’in-
formation via des câbles ou des émetteurs-récepteurs radio. Il est alors intéres-
sant d’inter-connecter un grand nombre de microcontrôleurs pour former un
réseau de capteurs et accéder à un champ applicatif plus vaste : sans déployer
d’infrastructure lourde, de tels réseaux de capteurs permettent d’une part de sur-
veiller et cartographier l’environnement en récoltant des données sur une large
zone géographique, et d’autre part d’agir sur l’environnement en réaction à des
évènements. Ce champ applicatif s’étend du domaine militaire au public, avec de
nombreuses utilisations concrètes dans les domaines de la santé, de l’industrie,
de l’écologie, ainsi que de la domotique.
Les réseaux de microcontrôleurs sont aujourd’hui en plein essort. Rassemblés
sous la bannière "Internet of things" (Internet des objets), les technologies et mé-
thodes permettant de créer des réseaux de microcontrôleurs foisonnent. Contrai-
rement aux ordinateurs classiques pour lesquels il existe des standards établis qui
dictent comment doivent communiquer les différents noeuds du réseau (comme
le protocole Internet IP, le Wifi pour la liaison sans-fil, et Ethernet pour la liaison
filaire), il n’y a actuellement pas de standard de facto pour établir des réseaux de
microcontrôleurs. De plus, la variété d’applications possibles ainsi que les faibles
ressources des microcontrôleurs empêchent l’existence d’ une méthode générale
répondant à tous les cas d’usages.
Néanmoins, un point commun à l’ensemble de ces technologies est la gestion
du temps. En effet, l’objectif premier d’un protocole réseau est de maîtriser la cir-
culation de l’information. Or, pour que cette circulation soit efficace, sans conges-
tions ni retards, il faut ordonnancer les communications des membres du réseau.
Cette tâche d’ordonnancement primordiale est complexe, en particulier lorsque
l’on considère des réseaux de grande taille, car l’ordonnancement des communi-
cations d’un noeud dépend de celui de ses voisins, et que le manque de précision
des horloges des microcontrôleurs provoque dans le temps une accumulation du
retard ou de l’avance.
Enfin, les lois de la physique limitent la portée des approches centralisées pour
10
1 Introduction – 1.1 Plan
1.1 Plan
Nous proposons dans ce document un ensemble de méthodes pour construire,
gérer et déployer de très grands réseaux de microcontrôleurs.
Le présent chapitre 1 est un chapitre introductif présentant les microcontrô-
leurs, les notions de base concernant leur fonctionnement, ainsi que leur gestion
du temps grâce au signal d’horloge.
Dans les premiers chapitres, nous cherchons à établir un cadre pour gérer les
communications du réseau. Nous basons la gestion du réseau sur une primitive
de synchronisation locale auto-stabilisante : nous donnons aux noeuds du réseau
le bon comportement à adopter pour propager efficacement de l’information en
compensant localement tout retard dans le flux. Cette primitive de synchronisa-
tion est étudiée pour le cas filaire dans le chapitre 2 ; nous donnons une analyse
empirique sur simulateurs de la bonne scalabilité de cette primitive et donnons
quelques pistes pour formuler une démonstration analytique de ses propriétés.
Nous constatons dans le chapitre 3 que les communications sans-fil apportent
des contraintes supplémentaires et nous proposons un protocole pour pallier
ces contraintes. Là encore, nous vérifions empiriquement sur simulateur le bon
comportement du protocole. De plus, nous discutons en détail de la consom-
mation énergétique et de la façon de minimiser celle-ci, pour faire fonctionner
le réseau avec une source photo-voltaïque produisant un courant de quelques
micro-ampères.
Dans la continuité des travaux effectués sur la synchronisation et les dérives
d’horloges, les chapitres 4 et 5 se concentrent sur le temps et la mesure de dé-
11
1 Introduction – 1.1 Plan
lais. Nous utilisons les dérives des horloges comme un atout : elles permettent
d’observer les délais d’un évènement périodique sous les différentes valeurs de
phase prises par signal d’horloge du microcontrôleur. Nous proposons dans ces
chapitres deux méthodes distinctes permettant de mesurer précisément le délais
de propagation des transmissions radio afin de mesurer les distances entre paires
de microcontrôleurs, sans matériel supplémentaire. Cela a de nombreuses appli-
cations pour nos réseaux, notamment la localisation dans l’espace des noeuds
lors du déploiement.
Dans le chapitre 4, nous mesurons sur de courtes distances (<10m) des délais
aller-retour entre deux microcontrôleurs (un noeud émetteur, un noeud récep-
teur). Nous obtenons une telle résolution en sur-échantillonnant sur un cadre
temporel intelligemment choisi : ce cadre est en effet délimité par la période
du déphasage progressif entre les fronts d’horloge d’un noeud émetteur et d’un
noeud récepteur. Nous verrons qu’un tel cadre est essentiel pour garantir la
consistance de la mesure. Nous présentons nos résultats expérimentaux et dé-
taillons les paramètres à prendre en compte pour compenser les effets parasites
tels que la tension d’alimentation, la température et l’auto-gain.
Dans le chapitre 5, nous mesurons des distances en observant les effets d’in-
terférences délibérées entre deux noeuds émetteurs. En créant volontairement
des interférences entre les transmissions de plusieurs noeuds, nous créons des
ondes stationnaires. Nous utilisons là encore le déphasage progressif entre les
horloges des noeuds pour localiser les noeuds par rapport à ces ondes station-
naires. Nous constatons que dans les conditions optimales, la mesure peut être
précise à quelques millimètres près, cependant nous discuterons de la difficulté
d’obtenir de telles conditions.
Enfin, le chapitre 6, plus théorique, ouvre sur la diffusion d’informations de-
puis une source centralisée vers un grand réseau distribué de microcontrôleurs.
La problématique est la gestion de la bande passante : si le serveur est relié à
un seul noeud du réseau, le débit est limité par la capacité du lien. Si le réseau
grandit, rajouter des liens vers d’autres noeuds permet d’augmenter le débit, ce-
pendant il faut décider comment partager ce débit en évitant les croisements des
flux provenant des différents liens, et décider pour chaque noeud sa source d’in-
formation. Pour répondre à cette problématique, nous nous sommes penchés sur
le partitionnement de graphes en zones connexes équilibrées. Nous avons étudié
ce problème sur les graphes grilles planaires. Pour le cas général, nous donnons
une preuve de NP-difficulté. Malgré cela, en relâchant certaines contraintes, nous
proposons deux algorithmes polynomiaux permettant de résoudre le problème
en pratique sur deux familles de topologies intuitives.
Bien qu’il y ait une continuité dans laquelle chaque chapitre apporte sa brique
pour construire une solution capable d’établir et d’exploiter un réseau, l’étude de
chaque brique est indépendante. Ainsi les chapitres peuvent être abordés dans
n’importe quel ordre.
12
1 Introduction – 1.2 Objectif, minimalisme et visualisations interactives
1. Les simulations ont été développées et testées avec Mozilla Firefox 76.0.1 (64 bits)
13
1 Introduction – 1.3 Microcontrôleurs : notions de base
14
1 Introduction – 1.3 Microcontrôleurs : notions de base
et de mémoires externes.
Les concepteurs de systèmes embarqués ont aujourd’hui beaucoup de choix
d’µC. En effet, les constructeurs proposent une grande gamme de modèles pour
satisfaire un grand nombre de contraintes. Une de ces contraintes est le facteur
de forme, certains µC comme l’Attiny 20 UUR peuvent tenir dans un carré de
1.5x1.5mm, tandis que d’autres, nécessitant plus de pattes d’entrée-sorties ou
devant fournir plus de courant, peuvent mesurer jusqu’à plusieurs centimètres
de côté. Une autre contrainte est celle du domaine applicatif visé. En fonction
de l’utilisation souhaitée, les constructeurs intègrent au microcontrôleur des pé-
riphériques pour résoudre spécifiquement des tâches précises. Parmi ces périphé-
riques, on peut citer : les unités de calcul flottant pour le traitement du signal ;
des convertisseurs analogique vers numérique pour l’acquisition de données pro-
venant de capteurs ; les émetteurs-récepteurs radio (bluetooth pour les objets
connectés) ; les commandes de moteur. De plus, pour satisfaire les exigences de
qualité de l’industrie, une même puce existe en différents grades de robustesse,
grade standard, automobile ou militaire. Enfin, une dernière contrainte est celle
du coût. Les modèles les plus rudimentaires et obscurs 2 , comme le PMS150C
du constructeur Padauk, sont disponibles à moins de 0.03C 3 , tandis que les
modèles les mieux équipés dépassent rarement la cinquantaine d’euros. D’expé-
rience, un modèle coûtant moins de 2C 4 est suffisant pour une vaste majorité
d’applications. Nous prendrons comme exemple tout au long de ce document le
microcontrôleur nRF52832 du constructeur Nordic (N ORDIC -S EMICONDUCTOR
2017), équipé d’un périphérique radio et qui est le modèle avec lequel nous tra-
vaillons.
De par leur faible coût, les microcontrôleurs des gammes moyennes sont loin
d’égaler les ordinateurs de bureau en terme de ressources et de performances.
En effet, les microcontrôleurs ne sont pas des ordinateurs taillés pour effectuer
des taches très diverses, leurs ressources sont suffisantes pour une application
précise. Pour donner un ordre d’idées, voici les plages de valeurs des caractéris-
tiques classiques des microcontrôleurs : les microcontrôleurs sont généralement
équipés d’un processeur simple coeur 5 . Pour la fréquence d’exécution, on ne
parle pas en giga Hertz mais en méga Hertz, voire en dizaines de kilo Hertz
lorsque l’on considère des applications basse consommation. En ce qui concerne
la mémoire de stockage des programmes (ROM Flash, équivalent du disque dur),
on ne parle plus en dizaines de gigas octet mais en dizaines/centaines de kilos
octets voire méga octets pour le haut de gamme. Enfin, pour la mémoire vive,
on parlera en dizaines de kilo octets. La table ci-après, exposant les caractéris-
tiques extraites de la documentation technique du nRF52832, donne un exemple
15
1 Introduction – 1.4 Horloge et mesure du temps
6. Benchmark eembc Coremark, le score prend en compte la pipeline des opérations, les accès
mémoire (avec cache), ainsi que les opérations sur les entiers.
16
1 Introduction – 1.4 Horloge et mesure du temps
7. Des µC asynchrones existent aussi mais sont très peu présent par rapport aux µC synchrones.
17
1 Introduction – 1.4 Horloge et mesure du temps
Mesurer une durée est une opération relative, c’est comparer l’évolution d’une
première caractéristique de l’environnement par rapport à l’évolution d’une deuxième
servant de référence. Pour un microcontrôleur, cette référence est son état in-
terne qui est mis à jour à chaque top d’horloge.
Ainsi, la plus petite durée mesurable par le microcontrôleur est celle entre deux
tops, deux fronts du signal d’horloge. On appellera cette unité le cycle d’horloge.
Pour convertir une mesure relative, exprimée en nombre de cycles d’horloge, en
une mesure absolue en secondes, il est possible d’utiliser la valeur nominale de
la fréquence de l’oscillateur donnée par le fabricant.
18
1 Introduction – 1.4 Horloge et mesure du temps
Par conséquent, si deux évènements ont lieu entre deux même tops d’horloge,
par exemple deux entrées commutant l’une après l’autre du niveau logique bas
vers le niveau logique haut, alors le microcontrôleur ne peut pas déterminer
lequel de ces évènements a lieu en premier. Il est ainsi impossible de mesurer
avec précision une durée entre deux évènements si cette durée est inférieure
au cycle d’horloge, voir figure 1.2. Nous proposerons plus tard une technique
pour mesurer de telles courtes durées pour des évènements répétables. Cette
technique exploite l’écart entre la fréquence nominale et la fréquence effective
de deux microcontrôleurs.
19
1 Introduction – 1.4 Horloge et mesure du temps
Le signal d’horloge est dérivé d’un signal analogique produit par un oscilla-
teur, voir figure 1.3. Les deux types d’oscillateurs majoritairement utilisés sont
les oscillateurs RC (resistance/condensateur) qui fonctionnent en chargeant et
déchargeant périodiquement un condensateur au travers d’une résistance, et les
oscillateurs à quartz, plus précis, exploitant les propriétés piezoélectriques d’un
diapason de quartz pour générer un signal sinusoïdal.
Si les oscillateurs sont calibrés en ciblant une fréquence d’oscillation nominale,
par exemple 16Mhz, les imprécisions lors de la fabrication conduisent à des fré-
quences effectives différentes d’un oscillateur à l’autre. De plus, en fonction du
type d’oscillateur utilisé, la fréquence effective de l’oscillateur varie au cours du
temps suivant différents facteurs comme le vieillissement, la tension d’alimenta-
tion, la température, ainsi que les condensateurs de charge 8 .
Les oscillateurs RC sont simples, peu chers et consomment peu d’énergie. De
tels oscillateurs sont souvent directement intégrés dans la puce du microcon-
trôleur et servent d’horloge par défaut. La faiblesse de ces oscillateurs est leur
manque de précision et de stabilité. En effet, non seulement la fréquence peut
8. Condensateurs requis par le circuit oscillateur, voir application note SWRA495H (James
Murdock 2015) Texas Instruments
20
1 Introduction – 1.4 Horloge et mesure du temps
fortement varier d’un oscillateur à l’autre (5%), mais elle est aussi grandement
influencée par la température : poser un doigt sur la puce modifie significative-
ment la fréquence d’oscillation. Impossible par exemple d’utiliser cet oscillateur
pour réaliser une montre, l’avance ou le retard à la fin de la journée se comp-
terait en minutes. Pour donner un chiffre concret, la documentation technique
du nRF52832 indique que la fréquence de l’oscillateur interne @64MHz a une
déviation typique inférieure à ±1.5% et que celle-ci peut aller jusqu’à ±6%.
Les applications de précision ont usuellement recourts aux oscillateurs à quartz.
Les propriétés du quartz permettent des fréquences effectives très proches de la
fréquence nominale. L’écart de fréquence ne s’exprime plus en pourcent, mais
en ppm pour (parties par million). La fréquence varie très peu d’un oscillateur
à l’autre. Dans l’exemple du nRF52832, la tolérance maximale requise par les
applications Bluetooth est de ±40ppm. Des oscillateurs ayant une tolérance infé-
rieure de ±20ppm sont d’usage courant. Aussi, tout comme pour les oscillateurs
RC, la fréquence des oscillateurs à quartz varie en fonction de la température
et cette variation peut être de plusieurs ppm. Pour mieux illustrer cela, voici les
courbes caractéristiques typiques d’oscillateurs à quartz extraits de l’application
note SWRA495H de Texas Instruments (JAMES M URDOCK 2015). Voir figures 1.4
et 1.5.
21
1 Introduction – 1.5 Consommation énergétique
22
1 Introduction – 1.5 Consommation énergétique
23
1 Introduction – 1.6 Transition
1.6 Transition
Nous avons vu dans cette partie introductive les notions de bases concernant la
gestion du temps ainsi que de l’énergie avec les microcontrôleurs. Nous verrons
dans les sections suivantes que cette gestion et mesure du temps joue un grand
rôle dans les communications entre microcontrôleurs et donc dans l’architecture
même des réseaux. Nous reviendrons ensuite sur l’aspect énergétique lorsque
nous aborderons le thème des réseaux sans-fils.
24
2 Synchronisation filaire
Dans un réseau de microcontrôleurs, les nœuds fonctionnent naturellement à
des vitesses différentes, de légères différences lors de la fabrication ou encore
de petites variations des conditions environnementales d’un nœud à l’autre suf-
fisent à modifier significativement la fréquence des horloges. Ainsi, à l’instar de
montres à quartz, même si les horloges des nœuds sont mises à la même heure
au même moment, les horodatages donnés par les nœuds du réseau divergeront
avec le temps.
Cette asynchronie intrinsèque pose problème lorsque les nœuds doivent com-
muniquer : sans compenser ces différences entre les horloges et sans référence
externe, il n’est pas possible de fixer un rendez-vous à l’avance pour échanger
des paquets d’informations. L’incapacité de prédire avec précision la date d’une
future réception oblige les noeuds a rester en permanence à l’écoute. De plus,
tout calcul initié par un nœud est susceptible d’être interrompu au profit du trai-
tement d’un paquet entrant, ce qui constitue une perte de performances. Lors-
qu’un processus prioritaire s’exécute, l’interruption n’est pas toujours possible et
le paquet peut être perdu. Les différences de cadences des noeuds dans un ré-
seau asynchrone requièrent l’utilisation de mémoires tampons lorsque les noeuds
échangent en suivant une relation producteur/consommateur, et ce, afin d’éviter
la perte de données lorsque la production est plus rapide que la consommation.
Finalement, les différences de vitesses dans le réseau rendent les horodatages in-
consistants, autant localement entre nœuds voisins que globalement. Sans base
de temps commune et fiable, l’agglomération dans le temps des mesures de cap-
teurs devient imprécise voire impossible.
La synchronisation permet de s’affranchir de ces difficultés induites par la
nature asynchrone des réseaux de microcontrôleurs. S’en abstraire et considé-
rer le réseau comme étant synchrone rend de nombreux problèmes plus faciles
à résoudre d’un point de vue algorithmique que leur pendant asynchrone. En
effet, un modèle synchrone peut être vu comme un cas particulier de modèle
asynchrone, ainsi l’état de l’art des réseaux de capteurs dispose d’un plus grand
nombre de solutions requierant un paradigme synchrone.
Dans ce chapitre nous allons étudier la synchronisation de réseaux maillés de
microcontrôleurs synchronisés à l’aide de notre algorithme de synchronisation
baptisé Goose Sync. Nous verrons que malgré son fonctionnement en apparence
minimaliste, consistant à suivre simplement le rythme du noeud le plus rapide
dans le réseau, l’algorithme Goose Sync induit un comportement macroscopique
bénéfique faisant barrière à toute désynchronisation. En effet, nous verrons que
25
2 Synchronisation filaire – 2.1 Abstraction synchrone
Goose Sync dispose d’un mécanisme implicite capable de se souvenir des désyn-
chronisations précédentes et de prévenir les désynchronisations futures, en mo-
difiant la vitesse apparente de propagation de paquets de synchronisation.
Nous utiliserons par la suite cet algorithme comme le coeur d’une couche d’abs-
traction qui nous permettra de considérer le réseau sous-jacent comme étant syn-
chrone et sur lequel nous pourrons exécuter des algorithmes synchrones au tour
par tour, sur toute taille de réseaux maillés filaires de microcontrôleurs. Nous
commencerons d’abord par détailler cette couche d’abstraction qui s’inspire du
cadre des automates cellulaires synchrones. Ensuite nous introduirons un mo-
dèle pour les horloges et les délais pour préparer l’étude de la synchronisation.
Enfin, nous entrerons dans le vif du sujet en étudiant notre algorithme de syn-
chronisation, Goose sync, cœur de notre couche d’abstraction. Nous verrons ses
garanties probabilistes théoriques en matière de scalabilité, et comment celles-ci
se traduisent en pratique, en virtuel sur simulateur et en réel dans un réseau
physique. Le chapitre suivant sera consacré à l’adaptation de cette couche d’abs-
traction synchrone aux réseaux sans fils.
26
2 Synchronisation filaire – 2.1 Abstraction synchrone
trace et le même résultat. Sans cette abstraction, les différences entre les hor-
loges des nœuds du réseau font que les échanges d’informations s’enchaînent
dans des ordres différents en fonction de l’environnement, principalement en
fonction de la température et des défauts d’usine des microcontrôleurs. Ce mo-
dèle simplifie ainsi la conception d’algorithmes : pour concevoir un algorithme
sous la forme d’un automate cellulaire synchrone, il suffit de construire la fonc-
tion de transition commune à tous les nœuds du réseau, sans tenir compte des
dates exactes et de l’ordre de réception des paquets. On considère que tous les
échanges au tour précédent ont été effectués en même temps, en parallèle.
Abstraire un réseau asynchrone et le considérer comme un automate cellulaire
synchrone nous permet de tirer profit de la vaste collection d’algorithmes dispo-
nible dans l’état de l’art des automates cellulaires synchrones. D’un point de vue
orienté applicatif, ce paradigme facilite les tests et le débogage : le réseau fonc-
tionnant au tour par tour, ce dernier peut être simulé sur ordinateur sans devoir
prendre en compte les interactions complexes des noeuds avec l’environnement,
interactions qui modifient significativement les cadences des noeuds.
27
2 Synchronisation filaire – 2.1 Abstraction synchrone
Après l’acquisition des états des voisins Si pour le tour courant i, la couche
28
2 Synchronisation filaire – 2.2 Synchronisation : état de l’art
appelle la fonction de transition f qui calcule le nouvel état si+1 , puis la primitive
de synchronisation bloque l’exécution jusqu’au prochain tour. La durée d’un tour
ou période est un paramètre de la primitive de synchronisation gsync .
Tandis que la durée d’un tour est garantie par gsync , la fonction de transition f ,
dont la durée d’exécution n’est ici pas négligeable, doit se terminer dans la limite
du temps imparti dicté par la période. Dans le cas contraire, le début du prochain
tour serait manqué et cela briserait la logique d’automate cellulaire synchrone.
2.1.3 Implémentation
D’un point de vu pratique, la couche d’abstraction que nous proposons uti-
lise très peu de ressources, autant en termes de processeur que de mémoire, ce
qui permet de l’utiliser sur les microcontrôleurs les plus modestes et les moins
onéreux.
Son implémentation, très similaire à celle d’un automate cellulaire synchrone,
est résumée ci-dessous sous la forme d’un pseudo-code, code exécuté sur l’en-
semble des noeuds du réseau :
var period;
var state; //Local state
var nStates[nbNeighbors]; //Array of neighbors states
while(true)
{
gsync(period); //Blocking, Synchronous wait.
startReception(nStates);
shortPause(); //Compensate small delays (µseconds).
startEmission(state);
waitEndOfReception();
state = f(state,nStates);
}
Cette section préliminaire terminée, nous étudierons dans les sections suivante
la primitive de synchronisation gsync . Pour cela, nous allons introduire en premier
lieu le cadre que nous utiliserons pour cette étude, la manière dont nous modé-
liserons les horloges et leur évolution dans le temps.
29
2 Synchronisation filaire – 2.2 Synchronisation : état de l’art
les années 70 (L AMPORT 2019) et pour lequel il existe un grand nombre de para-
digmes (N. A. LYNCH 1996 ; R ANGANATHAN et N YGARD 2010 ; S WAIN et H ANSDAH
2015).
Dans ce chapitre, nous nous intéressons à la synchronisation à gradient d’hor-
loge (FAN et N. LYNCH 2006). Ce type de synchronisation consiste à maintenir
le gradient d’horloge, c’est-à-dire l’écart local entre les dates indiquées par des
noeuds voisins, en dessous d’un certain seuil. La synchronisation à gradient s’op-
pose à la synchronisation globale pour laquelle il s’agit de limiter l’écart entre
les dates indiquées par tout couple de noeuds dans le réseau. Le protocole NTP,
Network Time Protocol, (M ILLS 1991) constitue un exemple de synchronisation
globale : il permet à tout ordinateur connecté au réseau internet de synchroniser
son horloge sur une référence centralisée.
Pour que cela soit utile à l’horodatage d’évènements ainsi qu’à la planification
d’actions, les paradigmes de synchronisation introduisent des règles raisonnables
de bon sens. En effet, les horloges doivent indiquer des valeurs cohérentes : les
dates indiquées par les horloges des noeuds doivent suivre linéairement le temps
réel, ne pas revenir en arrière et ne pas s’arrêter ; en effet, sans cette dernière
règle, indiquer toujours la même date "0" résoudraient trivialement le problème.
Sous un tel modèle raisonnable, Fann et Lynch (FAN et N. LYNCH 2006) ont
démontré qu’il n’est pas possible d’assurer un gradient d’horloge constant, même
localement entre noeuds voisins. Le pire écart d’horloge susceptible d’occurer
dans un réseau dépend du diamètre du graphe. Ils donnent une borne inférieure
indiquant qu’il n’est pas possible de garantir mieux qu’un écart logarithmique en
fonction du diamètre.
Depuis 2006, plusieurs algorithmes se sont succédés pour resserrer la borne
supérieure. Pulse Sync (L ENZEN, S OMMER et WATTENHOFER 2009), que nous étu-
dierons plus en détail dans la section 2.3.4 car il constitue un exemple intéres-
sant, maintient √ un gradient d’horloge le long d’un arbre couvrant. Il garantit un
pire écart en O( D), avec D le diamètre du graphe. AlgoLog (L ENZEN, L OCHER et
WATTENHOFER 2008) atteint la borne inférieure en garantissant un écart logarith-
mique mais en permettant cependant aux horloges de sauter pour se resynchro-
niser, c’est-à-dire qu’il peut y avoir des discontinuités dans les dates indiquées
par les noeuds. AlgoOpt (L ENZEN, L OCHER et WATTENHOFER 2010) referme l’in-
tervalle et constitue une solution optimale sans saut d’horloges : l’algorithme
resynchronise en ajustant les vitesses des horloges, et non pas en changeant bru-
talement la valeur de l’horloge.
Les algorithmes que nous avons cités jusqu’ici abordent le problème principa-
lement de manière déterministe : leurs garanties sont données pour le pire cas,
même si ce pire cas n’arrive pas souvent. Il est possible d’aborder le problème
sous un angle plus stochastique, et de s’intéresser aux chances qu’une avarie de
synchronisation survienne. C’est sous cet angle que nous allons travailler dans la
suite du chapitre. Nous allons en effet proposer une méthode simple pour syn-
chroniser des réseaux maillés. Cette méthode à le gros inconvénient de permettre
30
2 Synchronisation filaire – 2.3 Modèle d’horloges et de délais
31
2 Synchronisation filaire – 2.3 Modèle d’horloges et de délais
transmission varie d’un envoi de paquet à l’autre, nous noterons d(u,v) (r) le délai
effectif lors de la transmission d’un paquet de u vers v au tour r, avec r pour
round. Nous noterons aussi j(u,v) (r) la gigue aléatoire (j pour jitter), c’est-à-dire
l’écart entre le délai effectif et le délai nominal : d(u,v) (r) = d + j(u,v) (r).
Sauf contre-indication, nous considérerons que les gigues sur les délais de
transmissions sont tirées aléatoirement suivant une distribution de probabilité
uniforme dans un intervalle centré sur 0.
Nous noterons Aj l’amplitude de la gigue, c’est-à-dire j(u,v) (t) ∈ [−Aj , Aj ].
32
2 Synchronisation filaire – 2.4 Primitive : GooseSync
33
2 Synchronisation filaire – 2.4 Primitive : GooseSync
Figure 2.3 – Goose Sync : Analogie avec le vol en formation en "V" des oies
sauvages.
Nous avons nommé l’algorithme "Goose Sync" par analogie avec les forma-
tions en "V" des vols d’oies sauvages. Dans de telles formations, les individus à la
pointe de chaque "V" semblent mener la formation. Les autres individus suivent
leurs voisins directs les plus avancés tout en maintenant une certaine distance,
créant ainsi un gradient continu sur l’ensemble de la formation. Si les meneurs
ne vont pas à la même vitesse, le relief de la formation change progressivement
sans rompre la continuité. Ainsi, deux voisins dans la formation restent toujours
proche dans l’espace et peuvent communiquer visuellement. Si un individu me-
neur fatigue, le relief s’adapte et l’individu le plus rapide localement en reprend
la tête.
Avec Goose Sync, les noeuds du réseau créent une formation en "V" semblable,
sauf qu’ici la distance ne s’exprime pas en mètres, mais en microsecondes :
chaque noeud suit son voisin le plus avancé tout en maintenant une certaine dis-
tance de quelques microsecondes. Le gradient continu permet à chaque couple
34
2 Synchronisation filaire – 2.4 Primitive: GooseSync
2.4.2 Fonctionnement
L’algorithme que nous proposons se base sur la propagation rapide de paquets
de synchronisations. Le rôle de l’algorithme est de fournir un évènement pério-
dique, un signal top signifiant à l’application distribuée qu’elle peut passer au
tour suivant en toute sécurité et que les noeuds voisins sont eux aussi prêts à
communiquer.
L’algorithme dispose d’un compteur de tour r (r pour round) ainsi que d’un
compte à rebours décomptant périodiquement de p à 0. Le compte à rebours est
tout le temps actif et décompte à chaque cycle d’horloge du nœud. Lorsque le
compte à rebours soupasse, l’algorithme émet le signal top, le compteur de tour
est alors incrémenté, le compte à rebours est réarmé à la valeur p, et le nœud
émet un paquet de synchronisation contenant le numéro de tour r. Si le noeud
reçoit un paquet de synchronisation contenant un numéro de tour r1 supérieur à
celui du compteur local r, l’algorithme émet le signal top, le compte tour r prend
directement la valeur r1 , le compte à rebours est réarmé à p et le nœud émet un
paquet de synchronisation contenant le numéro de tour r fraîchement réaffecté.
setup()
{
tmr.reset(p);
r = 0;
}
interrupt_on_timer_underflow()
{
r++
tmr.reset(p);
send(r);
top_signal();
}
interrupt_on_reception(r1)
{
35
2 Synchronisation filaire – 2.5 Comportement et passage à l’échelle
if(r1 > r)
{
r = r1;
tmr.reset(p);
send(r);
top_signal();
}
}
36
2 Synchronisation filaire – 2.5 Comportement et passage à l’échelle
37
2 Synchronisation filaire – 2.6 Étude empirique
r avec un retard égal au délai de propagation nominal d par rapport à son voisin
de gauche. Supposons maintenant que le paquet de synchronisation pour le tour
r + 1 se propage à la vitesse maximale possible (pire tirage possible pour le délai
de propagation pour chaque maillon de la chaîne). Le délai de propagation est
alors d − j. La propagation du paquet est si rapide que tous les nœuds l’acceptent
et sont suiveurs. Hormis le meneur v, tous les noeuds relayent le paquet de
synchronisation sans attendre la fin de leur compte à rebours.
Maintenant nous allons propager depuis le meneur v le paquet pour le tour
r + 2 à la vitesse minimale possible (meilleur tirage possible pour le délai de
propagation pour chaque maillon de la chaîne). Le délai de propagation est alors
d + j. Cependant, grâce à l’accélération survenue lors du tour précédent, tous les
nœuds deviennent meneurs, écoutent leurs comptes à rebours, passent au tour
r + 2 et rejettent les paquets entrants car arrivés trop tard. Ils génèrent alors
tous un paquet de synchronisation et donc, l’impulsion de synchronisation se
propage dans le réseau avec un délai de d − j. Les nœuds sont capables de
garder en mémoire les précédentes vitesses de propagation des paquets pour les
reproduire.
Attention cependant : à cause des différences de vitesses entre les nœuds, cette
mémoire est limitée dans le temps. En effet, comme nous l’avons vu précédem-
ment, l’écart entre les numéros de tour de deux nœuds meneurs et se creuse.
Puisque les nœuds meneurs génèrent leur propre signal de synchronisation indé-
pendamment du reste du réseau, v redeviendra inévitablement meneur global.
Les autres nœuds, redevenus suiveurs auront perdu la capacité de propager le
paquet de synchronisation aussi rapidement.
La clé de l’algorithme goose sync réside dans le fait que cet effet mémoire
converge vers un équilibre : puisque la gigue s’accumule régulièrement, la mé-
moire est en permanence rafraîchie. Ainsi, une fois instaurée, l’effet mémoire
ne disparaît pas. Les nœuds apprennent implicitement à propager le paquet de
synchronisation rapidement avec un délai dgsync inférieur au délai nominal d. Em-
piriquement, même sur de grandes distances, l’effet cumulatif de la gigue n ’est
pas suffisamment important pour engendrer une propagation de paquets aussi
rapide. En conséquence, deux paquets de synchronisations consécutifs partant
d’un même nœud conserveront une distance quasi constante, il n’y a donc pas
de saut de tour ni de compression de tour.
38
2 Synchronisation filaire – 2.6 Étude empirique
39
2 Synchronisation filaire – 2.6 Étude empirique
simulateur est contenu dans ce fichier html, pour lancer le simulateur, il faut
ouvrir le fichier dans un navigateur web contemporain de ce document (Mozilla
Firefox Ver.78, 2020).
2.6.1.1 Fonctionnement
Ce simulateur simule une grande chaîne de n noeuds s’échangeant des paquets
de synchronisation. Chaque objet noeud dispose d’une constante de fréquence ef-
fective tirée aléatoirement lors de l’initialisation, ainsi que d’une variable numéro
de tour initialisée à 0. De plus, chaque objet noeud dispose d’une variable dans
laquelle on enregistre la date, dans un référentiel global, à laquelle le noeud
a changé de tour pour la dernière fois. Lorsque un noeud v passe au tour r, il
émet un paquet de synchronisation pour chacun des ces voisins, un tel paquet
qui sera reçu après un délai d + jr où jr est le résultat du tirage aléatoire de la
gigue au tour courant. La réception d’un tel paquet de synchronisation par un
voisin constituera un évènement. De plus, le compte a rebours du noeud dictera
un passage au tour r + 1 après un délais pv fonction de la fréquence effective du
noeud. Ce passage au tour suivant constitue lui aussi un évènement.
Ces évènements sont planifiés à l’avance et sont enregistrés dans une file de
priorité dans laquelle ils sont organisés par ordre d’occurrence. Le simulateur
traite ces évènements les uns après les autres, en suivant l’ordre de la file, ce
qui respecte leur causalité. Chaque évènement traité par le simulateur induit la
création de nouveaux évènements pour des dates ultérieures. Ainsi, pour une
date limite donnée t, le simulateur retrace la chaîne d’échanges de paquets dans
le réseau pour en déduire l’état à l’instant t du réseau.
2.6.1.2 Usage
Le simulateur affiche les noeuds sur l’axe horizontal et affiche sur l’axe vertical
les écarts en microsecondes entres les dates de chaque noeud : chaque noeud v
peut en effet à chaque instant t déduire une date en utilisant le numéro de tour
courant rv ainsi que la valeur actuelle du compte à rebours.
Les points les plus hauts dans l’affichage correspondent aux noeuds les plus en
avance, proches de noeuds meneurs. À L’inverse, les points les plus bas corres-
pondent aux noeuds les plus en retard.
Les échelles horizontales et verticales sont modifiables interactivement en cli-
quant et faisant glisser la souris sur l’affichage.
Le passage d’un tour à un autre est symbolisé par un changement de couleur :
rouge pour les numéros de tour pairs, bleu pour les numéros de tour impairs.
Les noeuds leaders du tour courant sont symbolisés par une variation de teinte :
orange au lieu de rouge pour les tours pairs, cyan au lieu de bleu pour les tours
impairs.
Le simulateur permet de modifier les paramètres suivants :
40
2 Synchronisation filaire – 2.6 Étude empirique
2.6.1.3 Captures
Ci-après la figure 2.5 rassemble une série de captures dans l’ordre chronolo-
gique retraçant l’évolution des écarts entre les horloges des noeuds.
Capture 1 : Dès l’activation de Goose Sync, les écarts entre les dates indiquées
par des noeuds voisins se resserrent pour dessiner un relief montagneux, assu-
rant un gradient continu sur tout le réseau. Capture 2 : Avant la propagation
des paquets de synchronisation pour le prochain tour, les écarts se sont creu-
sés à cause des différences de fréquences effectives des horloges dans le réseau.
Capture 3 : Le tour de synchronisation n°4 a commencé (noeuds en bleu), les pa-
quets de synchronisation se propagent et recalent localement les débuts de tours
des noeuds. Capture 4 : Fin de la propagation pour le tour n°4, tous les noeuds
sont passés au tour 4. Captures 5,6,7,8 : On avance dans la simulation aux tours
n°40, puis n°81, puis n°214, puis n° 547. le relief évolue progressivement car
les noeuds meneurs, au comportement assez indépendant du reste du réseau,
finissent fatalement par se doubler mutuellement. Captures 9,10 : Le réseau a
presque fini sa convergence (tour n°950) : un noeud devient meneur global.
41
2 Synchronisation filaire – 2.6 Étude empirique
Figure 2.5 – Captures : évolution dans le temps des écarts d’horloges entre les
noeuds. Les statistiques de l’avancement sont visible en zoomant sur
chaque capture (images haute résolutions dans le PDF).
42
2 Synchronisation filaire – 2.6 Étude empirique
Le deuxième simulateur que nous avons réalisé fonctionne au tour par tour et
simule une chaîne de n noeuds communiquant de façon unidirectionnelle, de la
gauche vers la droite, en prenant comme hypothèse que le noeud à l’extrémité
gauche de la chaîne, u0 , est meneur global.
2.6.2.1 Fonctionnement
Le simulateur résout itérativement les termes d’une suite récurrente : Pour
chaque noeud v et pour chaque tour r, il calcule la date absolue tr (v) à laquelle
le noeud v passe au tour r. Il effectue ce calcul en prenant l’échéance minimale
entre tr−1 (v)+pv où pv est la période du compte a rebours de v 3 , et tr (u)+d+jr (u)
où u est le voisin de gauche de v et d + jr (u) le délai de transmission du paquet
de synchronisation émis par u à destination de v.
43
2 Synchronisation filaire – 2.6 Étude empirique
Bien que l’on considère ici les liaisons comme unidirectionnelles, la simulation
donne une borne inférieure concernant la variance des écarts locaux d’horloges
pour le cas où les liaisons seraient bidirectionnelles. En effet, avoir des liaisons
bidirectionnelles est bénéfique et contribue à réduire légèrement les écarts en
permettant la propagation sur de courtes distances de paquets de synchronisa-
tion de la droite vers la gauche. Mais puisque nous considérons que le noeud u0
à l’extrémité gauche de la chaîne de noeuds est meneur global, les paquets de
synchronisation s’écoulent majoritairement de la gauche vers la droite, car u0 est
toujours le noeud commençant le tour en premier.
Ainsi, bien que ce deuxième modèle de simulation au tour par tour soit moins
fidèle, il permet d’analyser empiriquement des chaînes bien plus grandes tout en
constituant une bonne approximation par rapport au premier modèle à évène-
ments discrets.
2.6.2.2 Usage
Pour un numéro de tour de synchronisation donné r, le simulateur affiche pour
chaque noeud v la différence entre la date à laquelle le noeud v passe au tour r,
et la date à laquelle son voisin de gauche u passe au tour r.
Le simulateur dispose d’une fonction de rémanence de l’affichage, permettant
de visualiser la variance de ces différences.
Le simulateur affiche en bleu les différences obtenues avec l’algorithme goose
sync, et affiche en rouge les différences obtenues avec l’algorithme de synchroni-
sation par impulsions Pulse Sync 2.3.4.
2.6.2.3 Captures
Gradient de synchronisation : Goose Sync vs Pulse Sync Sur les captures
2.7, 2.8, nous pouvons observer sur une même chaine de 100000 noeuds les
comportements des algorithmes Goose Sync, en bleu, et Pulse Sync, en rouge.
Avec l’algorithme Goose Sync, on observe que les écarts locaux sont stables de
tours en tours, et cela indépendemment de la distance par rapport à l’extrémité
gauche de la chaine, ce qui témoigne de la scalabilité de Goose Sync.
À l’inverse, avec Pulse Sync, les écarts locaux varient beaucoup d’un tour à
l’autre, et les écarts
√ sont beaucoup plus importants en bout de chaîne, et croissent
dans l’ordre de n avec la distance depuis l’extrémité gauche, comme en té-
moigne la forme de parabole que prend la rémanence.
44
2 Synchronisation filaire – 2.6 Étude empirique
Figure 2.7 – Capture avec rémanence sur plusieurs tours : différences entre les
dates de début de tours des voisins, algorithme Goose Sync exécuté
sur une topologie de 100000 noeuds.
Figure 2.8 – Capture avec rémanence sur plusieurs tours : différences entre les
dates de début de tours des voisins, algorithme Pulse Sync exécuté
sur une topologie de 100000 noeuds.
45
2 Synchronisation filaire – 2.6 Étude empirique
Figure 2.9 – Gradient d’horloge sur une ligne 1000 noeuds avec une faible gigue
sur le délai de transmission des messages. En rouge le gradient
correspondant au seul délais de transmissions des messages, en bleu
le gradient obtenu avec Goose Sync.
Figure 2.10 – Gradient d’horloge sur une ligne 1000 noeuds avec une forte gigue
sur le délai de transmission des messages. En rouge le gradient
correspondant au seul délais de transmissions des messages, en bleu
le gradient obtenu avec Goose Sync.
46
2 Synchronisation filaire – 2.6 Étude empirique
L’algorithme Goose Sync que nous avons réalisé est éprouvé depuis plusieurs
années maintenant par le produit Mozaïk de la société LED’s Chat. C’est avec ce
produit que nous nous sommes intéressés à la synchronisation et avons conçu et
implémenté Goose Sync.
Le produit Mozaïk consiste en un ensemble de tuiles pouvant s’imbriquer entre
elles pour former une surface d’affichage. Chaque tuile dispose d’un microcon-
trôleur PIC32 de Microchip pouvant contrôler une matrice de LEDs et de quatre
connecteurs permettant de communiquer avec les tuiles voisines via liaison sé-
rie UART. Le microcontrôleur exécute une application distribuée programmée
en utilisant l’abstraction cellulaire présentée dans les sections précédentes. Cette
application fonctionne au tour par tour à une fréquence de rafraîchissement de
47
2 Synchronisation filaire – 2.7 Éléments d’étude analytique
100Hz, les débuts de chaque tour sont maintenus en phase avec les noeuds voi-
sins en utilisant l’algorithme Goose Sync.
L’algorithme Goose Sync s’est avéré très robuste sur de grandes installations
de plus d’une centaine de tuiles, et avec un diamètre supérieur à 30 noeuds,
en maintenant un delta moyen de l’ordre de 10µs entre le début des tours de
noeuds voisins. De plus, tout écart local trop important > 30us 4 empêcherait
les communications et provoquerait un redémarrage, car les émissions se pro-
duiraient avant le passage en réception des noeuds. Bien que les installations
Mozaïk soient fréquemment actives pendant des jours, nous n’avons pas observé
un tel phénomène.
√
2.7.1 Variance de Goose Sync bornée par Pulse Sync ( n)
La variance de la durée d’un tour pour l’algorithme Goose Sync est bornée
par la variance de la durée d’un tour pour l’algorithme de synchronisation par
impulsions Pulse Sync.
En effet, Goose Sync est une amélioration de Pulse Sync. Le compte à rebours
qu’il contient apporte un biais dans le tirage des délais de transmission : un
paquet avec un délai de transmission trop faible sera remplacé par un paquet
à l’initiative du compte à rebours, ce qui équivaut à réduire l’intervalle pour
le tirage aléatoire des valeurs de la gigue jr (v). Ainsi, l’intervalle [−j, +j] pour
chaque tirage de la gigue est remplacé par l’intervalle [−j, kr (v)] avec kr (v) < j
et fonction de l’effet mémoire. L’intervalle de la gigue étant plus restreint, la
variance l’est aussi.
48
2 Synchronisation filaire – 2.7 Éléments d’étude analytique
49
2 Synchronisation filaire – 2.8 Conclusion
√
Puisque l’écart type de la somme des dr (vi ) est de l’ordre de i, maintenir
dr (vi ) > i · d0 est très peu probable. Voir figure 2.12.
P
Figure 2.12 – Fonction de densité d’une loi Gaussienne. Plus une valeur s’éloigne
de petits multiples de l’écart type, plus sa probabilité d’occurrence
est faible. (Adaptation CC-BY M. W. Toews (wikimedia Standard_-
deviation_diagram.svg))
2.8 Conclusion
Dans ce chapitre, nous avons introduit l’algorithme de synchronisation Goose
Sync, algorithme que nous avons conçu pour permettre l’exécution d’applica-
tions synchrones fonctionnant au tour par tour, programmées à la manière d’un
automate cellulaire, en suivant le paradigme de la programmation cellulaire.
Nous avons décrit le comportement de Goose Sync et la manière dont celui-
ci maintient un gradient, de quelques microsecondes en pratique, entre chaque
couple de noeuds voisins, leurs permettant de communiquer de manière syn-
chrone. Nous avons aussi vu comment Goose Sync arrive à se prémunir des
désynchronisations causées par les variations aléatoires de la vitesse de trans-
mission des paquets et les accumulations d’avances et de retards.
Nous avons ensuite étudié empiriquement, sur simulateur et sur démonstra-
teur physique, la bonne scalabilité de l’algorithme Goose Sync et nous l’avons
comparé avec celle de l’algorithme Pulse Sync. Enfin, en gardant comme conjec-
ture que Goose Sync augmente la vitesse de propagation des paquets par rapport
au délai de transmission nominal, nous avons démontré analytiquement cette
propriété de scalabilité.
50
2 Synchronisation filaire – 2.8 Conclusion
51
3 Synchronisation sans fils de
réseaux maillés
Nous avons vu dans la partie précédente que, dans le cadre de réseaux filaires,
la synchronisation permet l’exécution d’algorithmes distribués au tour par tour,
ce qui apporte un cadre confortable pour le développement d’applications : les
exécutions deviennent déterministes et la gestion des délais critiques pour les
communications est abstraite, relayée à une couche logicielle inférieure. Nous
avons créé un tel cadre d’exécution pour des réseaux filaires en utilisant Goose
Sync, notre algorithme de synchronisation minimaliste et scalable.
Transposer nos travaux sur la synchronisation dans le paradigme des communi-
cations sans fils est une évidence. En effet, nous sommes à une époque où l’inter-
net des objets poursuit son expansion, où les microcontrôleurs équipés de trans-
metteurs radio deviennent de plus en plus abordables (nRF52832 par exemple),
et où les standards pour les réseaux d’objet sans fils émergent et se consolident
(Thread, BLE 5, ZigBee, Wireless Heart, (S ILICON -L ABS 2018),(T EXAS -I NSTRUMENTS
2019), (L INEAR -T ECHNOLOGY 2015)). De plus, la synchronisation a de nouveaux
enjeux lorsque l’on considère des réseaux utilisant un médium de communica-
tion sans fils. En effet, pour des capteurs autonomes fonctionnant sur batteries
ou des systèmes pratiquant la récolte d’énergie, panneaux photo-voltaïques, cap-
teurs piezo, générateurs thermoélectriques etc., les émissions et réceptions radio
deviennent des opérations coûteuses en énergie qu’il convient de restreindre à de
courtes fenêtres de temps. La synchronisation permet la création de rendez-vous
pour les communications et permet ainsi de minimiser la consommation énergé-
tique, en allumant la radio uniquement lorsque cela est strictement nécessaire.
Cependant, les communications sans fils apportent des contraintes supplémen-
taires qu’il faut gérer. En plus des interférences et des possibles pertes de pa-
quets dues à la qualité de la réception, le médium est public, n’importe qui peut
l’écouter et émettre. Ce qui, en plus de poser des problèmes de sécurité, pose
aussi des problèmes de fiabilité ainsi que des problèmes d’ordonnancement pour
le partage équitable du médium. En effet, tout comme lorsque l’on utilise un
talkie-walkie ou un poste CB, les communications radio n’utilisant qu’une seule
antenne sont half-duplex, c’est à dire qu’il est impossible d’émettre et de recevoir
en même temps, et deux émissions simultanées peuvent localement créer une
interférence ou se masquer mutuellement. Ces contraintes rendent impraticable
en l’état l’algorithme de synchronisation Goose Sync présenté dans la partie pré-
cédente, car ce dernier requiert un lien de communication full-duplex exclusif et
52
3 Synchronisation sans fils de réseaux maillés – 3.1 Medium sans-fil
fiable pour chaque couple de noeuds voisins. Goose Sync doit être adapté pour
prendre en compte les spécificités des communications sans-fils.
Ainsi dans cette partie, après avoir détaillé le comportement typique des moyens
de communications sans fils, après avoir décrit les principales différences avec
leur pendant filaire et fait un tour d’horizon des solutions existantes pour syn-
chroniser des réseaux d’objets sans fils, nous adapterons notre primitive de syn-
chronisation Goose Sync à ce médium. En outre, nous proposerons MeeMSyP,
un protocole basse énergie, minimaliste mais complet, reposant sur Goose Sync,
permettant l’exécution d’applications synchrones au tour par tour, avec la particu-
larité de se baser sur la création volontaire d’interférences entre paquets de syn-
chronisations. . Nous validerons empiriquement par simulation le bon compor-
tement de MeeMSyP avant de nous attarder en détail sur l’aspect énergétique :
nous calculerons la consommation théorique d’un réseau de capteurs utilisant
MeeMSyP pour ordonnancer les communications radio et récolter/diffuser de
l’information. En gardant une latence raisonnable, nous verrons qu’il est possible,
d’après le recoupement des données constructeurs, de maintenir la consomma-
tion moyenne en deçà de 10µA (@3V), permettant de tenir plusieurs années sur
une pile bouton.
53
3 Synchronisation sans fils de réseaux maillés – 3.1 Medium sans-fil
54
3 Synchronisation sans fils de réseaux maillés – 3.1 Medium sans-fil
soit il ne comprend que les paroles de l’interlocuteur dont le signal perçu est le
plus fort. Par contre il reste possible d’émettre deux informations différentes en
même temps et de les garder intelligibles en utilisant deux plages de fréquences
différentes. Ainsi, même dans le brouhaha d’une foule, une sirène d’alarme reste
toujours perceptible car le son émis est plus aigu.
Tout comme pour les ondes sonores, lorsqu’un signal radio se propage sur une
longue distance, celui-ci est atténué selon un rapport inversement proportionnel
au carré de la distance parcourue. Ainsi, même si de nombreux individus réunis
dans une salle partagent le même médium, deux individus suffisamment proches
peuvent toujours communiquer, car les signaux émis localement sont perçus plus
intensément que les signaux plus lointains.
Il n’est pas possible d’émettre et d’écouter sur la même plage de fréquence
en même temps, même avec plusieurs antennes. En effet, si un individu parle
en même temps que son interlocuteur, le son de sa propre voix vient masquer
sa perception de l’interlocuteur. Ainsi, si un microcontrôleur tente d’émettre sur
une antenne et recevoir sur une seconde, il sera aveuglé par sa propre émission.
À noter que même s’il n’est pas possible d’émettre en même temps des messages
différents, il est cependant possible à l’instar des chants de supporters dans un
stade de football, d’émettre en chœur un même message : En émettant les mêmes
fréquences en même temps sur le même canal, il est possible de relayer à l’unis-
son une même information. Nous utiliserons plus tard ce principe simple pour
propager le signal de synchronisation dans notre protocole de synchronisation
sans fil.
Les phénomènes d’écho et de réflexion que nous expérimentons avec les sons
impactent et perturbent aussi la propagation des ondes radio : Les ondes radio
avec une fréquence élevée, dont les 2.4GHz notamment, ont un comportement
qui converge vers celui de la lumière visible. Ces ondes rebondissent sur le sol et
les murs, créant ainsi des échos qui viennent se superposer aux signaux transmis
et les altèrent. Les ondes radio se propagent à la vitesse de la lumière, soit un mil-
lion de fois plus vite que le son. Ainsi sur de courtes distances, l’effet des échos
sur le signal reçu est légèrement différent. Avec le son, il peut y avoir jusqu’à des
secondes de retard entre la réception d’un symbole et la réception de son écho,
provoquant ainsi un mélange entre les différents symboles d’une communication.
Avec les ondes radio, le retard est de l’ordre de la longueur d’onde, ainsi, le si-
gnal reflèté contient le même symbole que le signal direct, mais les signaux ne
sont pas dans la même phase de leur oscillation. L’addition du signal et de son
reflet constitue alors une interférence constructive (signaux en phase), ou des-
tructive (signaux en opposition de phase), augmentant ou diminuant l’amplitude
du signal perçu.
Tout comme avec les communications vocales, les communications radio sont
soumises aux aléas de l’environnement : si le bruit ambiant (voitures, travaux,
sonneries, etc.) peut empêcher deux interlocuteurs de discuter correctement,
le bruit électromagnétique ambiant peut provoquer des pertes de paquets lors
55
3 Synchronisation sans fils de réseaux maillés – 3.2 État de l’art
56
3 Synchronisation sans fils de réseaux maillés – 3.2 État de l’art
niques ont été introduites depuis l’avènement des communications radio pour
pallier ces défauts. L’une des principales difficultés est le fait que le médium
soit partagé. Les techniques permettant le multiplexage du médium sont nom-
breuses. Parmi ces techniques, on distingue deux grands types de multiplexage :
le multiplexage temporel dans lequel les différents nœuds utilisent la même fré-
quence mais pas au même moment et où les différents interlocuteurs parlent
chacun leur tour, et le multiplexage en multiples canaux, où différents groupes
de nœuds peuvent parler en même temps en utilisant des plages de fréquences
différences.
2. "Channel Hopping"
57
3 Synchronisation sans fils de réseaux maillés – 3.2 État de l’art
58
3 Synchronisation sans fils de réseaux maillés – 3.2 État de l’art
59
3 Synchronisation sans fils de réseaux maillés – 3.3 Multiplexage par superposition
Signal 1
+
Signal 2
+ Signaux 2.4GHz
Signal 3
Signal Somme
46uS
(Duree TX)
60
3 Synchronisation sans fils de réseaux maillés – 3.4 Protocole MeeMSyP
dio en émission et émet un signal neutre (porteuse 2.4GHz) pour relayer l’infor-
mation. De plus, les noeuds disposent d’une temporisation qui déclenche auto-
matiquement la commutation après un certain temps sans perception.
Un tel programme de test permet une synchronisation fonctionnelle, cepen-
dant, il ne constitue qu’une adaptation grossière de Goose Sync au sans-fil, dif-
ficilement exploitable en pratique. En effet, la synchronisation ne fonctionne ici
que si les noeuds sont initialement démarrés en même temps. Ainsi, il n’est pas
possible d’ajouter directement de nouveaux noeuds au réseau. De plus, garder
la radio allumée en permanence est énergivore et le réseau est très sensible aux
émissions parasites des équipements environnant partageant la même bande de
fréquence.
Nous utilisons ce principe de multiplexage des émissions par superposition
comme base du protocole de synchronisation sans fil MeeMSyP. Pour qu’il soit
exploitable, nous lui ajoutons plusieurs mécanismes simples permettant d’une
part d’amorcer la synchronisation, et d’autre part d’assurer sa robustesse vis à vis
de l’environnement.
Notons enfin que, puisque cette technique de multiplexage utilise des signaux
qui se superposent, on peut se poser la question des interférences destructives
lorsque les signaux sont en opposition de phase. Nous répondrons à cette ques-
tion plus loin dans une section dédiée. Pour le moment nous dirons simplement
que ces interférences destructives sont rares et que leurs effets sont peu percep-
tibles.
61
3 Synchronisation sans fils de réseaux maillés – 3.4 Protocole MeeMSyP
62
3 Synchronisation sans fils de réseaux maillés – 3.4 Protocole MeeMSyP
63
3 Synchronisation sans fils de réseaux maillés – 3.4 Protocole MeeMSyP
phasage des cycles, il n’est pas capable de l’y amener en premier lieu. Pour créer
cette configuration dans laquelle les fenêtres de communication sont alignées,
on a recours au canal de découverte.
64
3 Synchronisation sans fils de réseaux maillés – 3.4 Protocole MeeMSyP
du canal de découverte. Le nœud peut alors connaître les identifiants de ses voi-
sins, les réseaux dans lesquels ses voisins se trouvent, ainsi que l’emplacement
temporel, c-à-d le déphasage, des salves périodiques sur lesquelles les voisins se
synchronisent. Le nœud choisit de se synchroniser, de recaler le début de sa pé-
riode sur la salve du nœud se trouvant dans le réseau ayant l’identifiant le plus
élevé. Si deux nœuds ont le même identifiant de réseau, alors la synchronisation
se fera sur le nœud ayant le numéro de tour le plus élevé.
L’identifiant de réseau correspond à l’identifiant du nœud le plus grand dans le
réseau. Ce mécanisme de nœud racine aide à garantir l’unicité et la connexité du
réseau : deux îlots indépendants ne peuvent pas se créer et grandir au même en-
droit, les nœuds fraîchement démarrés rejoindront systématiquement l’îlot pos-
sédant le nœud dont l’identifiant est le plus élevé.
Cependant, même si l’initialisation utilisant le canal de découverte garantit
que deux îlots de noeuds ne peuvent pas coexister localement, cela n’empêche
pas deux îlots distants de se former et de grandir tout en ayant des numéros
de tour différents, ainsi que des salves de synchronisations incompatibles car dé-
phasées. L’algorithme n’est alors pas capable de fusionner deux réseaux ayant
une frontière proche, car les nœuds n’ont pas l’information qu’un autre réseau
existe. Pour acquérir cette information, les nœuds doivent périodiquement partir
en reconnaissance et écouter le canal de découverte à la recherche de nœuds
étrangers provenant d’un réseau concurrent. Une telle opération est très coû-
teuse en énergie. Ainsi, une fois la synchronisation amorcée, cette opération sera
réalisée de façon sporadique dans le réseau, suivant un tirage aléatoire avec une
faible probabilité d’occurrence, ce qui malheureusement réduit très fortement la
vitesse à laquelle deux réseaux vont fusionner.
Pour accélérer la fusion d’îlots contigus, ainsi que pour maintenir la connexité
du réseau en cas d’avarie de synchronisation, nous avons recours à un troisième
canal sur lequel les nœuds éclaireurs partis en reconnaissance pourrons propager
rapidement l’information : le canal système.
65
3 Synchronisation sans fils de réseaux maillés – 3.4 Protocole MeeMSyP
66
3 Synchronisation sans fils de réseaux maillés – 3.4 Protocole MeeMSyP
de découverte, paquet découvert quelques cycles plus tard par ses voisins directs
(à l’affût), voisins qui eux mêmes propageront l’information à leurs voisins et
redémarreront à leur tour. Ces redémarrages en cascade provoquent ainsi l’ex-
tinction de l’îlot ayant l’identifiant le plus petit, les nœuds de ce précédent îlot
rejoignent alors progressivement l’îlot ayant le numéro de tour le plus avancé.
Liens vers le nœud racine Afin de détecter toute perte de connexité dans le
réseau, les nœuds gardent un lien vers le nœud racine, c’est-à-dire le nœud pos-
sédant l’identifiant le plus élevé, identifiant identique à l’identifiant réseau. Ce
lien prend la forme d’un flot ininterrompu de paquets émis sur le canal système
par le nœud racine, flot relayé en permanence par les nœuds du réseau.
Les paquets provenant de la racine sont numérotés et font office de fil d’Ariane.
Ainsi, lorsque un nœud s’aperçoit que son fil d’Ariane est rompu, c’est-à-dire que
le flot a cessé de lui parvenir et que le numéro de paquet a cessé de progres-
ser, il redémarre pour réamorcer la synchronisation. Ce mécanisme est auto-
stabilisant : Si un nœud racine tombe en panne, tout le réseau redémarre en
cascade et une nouvelle racine est progressivement élue.
67
3 Synchronisation sans fils de réseaux maillés – 3.4 Protocole MeeMSyP
68
3 Synchronisation sans fils de réseaux maillés – 3.4 Protocole MeeMSyP
pour le tour le plus élevé pour ce réseau. Si cet identifiant réseau est plus grand
que l’identifiant du nœud, alors le nœud configure son compte à rebours pour
terminer à l’échéance récupérée. Dans le cas contraire, le nœud ne tient pas
compte de l’échéance et déclenche son compte à rebours. Dans un tel cas, le
nœud est lui-même la racine de son propre réseau.
69
3 Synchronisation sans fils de réseaux maillés – 3.4 Protocole MeeMSyP
signalement est implicite : lorsqu’un nœud redémarre, cela fait perdre en cascade
et rapidement le lien vers la racine pour les autres noeuds. Dans le cas de la
découverte d’un nouveau réseau, cet effet de cascade est lent pour économiser
de l’énergie, ce qui oblige à expliciter ce signalement.
//Paramètres: constantes
//Les durées sont exprimés en microsecondes.
//ID:
const identifiant //Identifiant unique du noeud.
//Synchronisation:
const periode = 10^6 //Durée entre deux salves (1 seconde).
const salve_rx = 120 //Fenêtre de réception des salve.
const salve_tx = 80 //Fenêtre d'émission d'une salve.
//Système:
const système_rxtx = 530 //Fenêtre des communications système.
const système_tx = 140 //Fenêtre d'émission des paquets système.
70
3 Synchronisation sans fils de réseaux maillés – 3.4 Protocole MeeMSyP
//Découverte/Économie d'énergie:
//Fiabilité et latences:
3.4.2.2 Variables
Ci dessous sont listés les variables constituant l’état courant du noeud.
//État: variables
var racine = identifiant //Numéro de la racine/id réseau.
var tour = 0 //Numéro de tour courant.
var compteurRacine = 0 //Compteur pour le fil d'Ariane.
//Logique de découverte:
var stabilité = 0 //Compteur de stabilité du réseau,
//incrémenté à chaque tour,
//réinitialisé lors d'avarie.
var inhiberDécouverte = 0 //Permet de désactiver la découverte
// au tour courant (basse énergie).
var racineDécouverte = 0 //Booléen alertant de la présence
//potentielle d'un nouveau réseau.
71
3 Synchronisation sans fils de réseaux maillés – 3.4 Protocole MeeMSyP
//Boucle principale
function MeeMSyP()
{
écouter_canal_synchro(salve_rx)
émettre_impulsion_synchro(salve_tx)
écouter_canal_système(système_txpos)
émettre_données_système(système_tx)
écouter_canal_système(système_rxtx - système_txpos)
écouter_canal_découverte(découverte_txpos)
émettre_canal_découverte(découverte_tx)
écouter_canal_découverte(découverte_rxtx - découverte_txpos)
attendre(periode)
}
3.4.2.4 Attente
Ci-dessous est présenté la routine d’attente basse consommation.
//Sous-Routines
function attendre(échéance)
72
3 Synchronisation sans fils de réseaux maillés – 3.4 Protocole MeeMSyP
{
while(temps < échéance)
{
mode_basse_conso() //Spécifique au µC, attente d'interruptions.
}
}
73
3 Synchronisation sans fils de réseaux maillés – 3.4 Protocole MeeMSyP
if(impulsion_reçue())
return
else
continue
}
}
74
3 Synchronisation sans fils de réseaux maillés – 3.4 Protocole MeeMSyP
}
}
}
function émetter_données_système(durée)
{
canal_système_tx() //Paramètre la radio pour le canal système
envoyer(racineDecouverte)
envoyer(compteurRacine)
if(inhiberDécouverte)
{
attendre(échéance)
return
}
75
3 Synchronisation sans fils de réseaux maillés – 3.4 Protocole MeeMSyP
}
}
function émettre_données_découverte(durée)
{
canal_decouverte_tx() //Paramètre la radio pour le canal découverte
envoyer(identifiant)
envoyer(racine)
envoyer(tour)
envoyer(temps)
attendre(nouveauDécalage)
temps = 0
}
76
3 Synchronisation sans fils de réseaux maillés – 3.5 Consommation énergétique
nouveauDécalage = décalage
}
77
3 Synchronisation sans fils de réseaux maillés – 3.5 Consommation énergétique
Action Consommation
Radio Activée Rx/Tx (en permanence) ∼10mA
Radio Activée Bas rapport cyclique ( 1000
1
) ∼10µA (en moyenne)
µC en mode basse consommation (calculs rares) <10µA (en moyenne)
Réveil du crystal HF ∼0.4mA
Table 3.1 – Courants consommés par les principales actions et modes énergivores.
Le premier poste de consommation énergétique d’un nœud sans fil est l’émet-
teur -récepteur radio. Sur un microcontrôleur typique équipé d’un émetteur-
récepteur superhétérodyne 2.4Ghz comme le Nordic nRF52832, toute utilisation
de l’antenne, pour émettre ou recevoir, consomme en permanence dans l’ordre
de 10mA (milliampères). En effet, un récepteur superhétérodyne fonctionne en
mélangeant deux signaux haute fréquences, ici @2.4GHz, pour obtenir un signal
avec une fréquence plus faible capable d’être traité par le système lui même fonc-
tionnant à plus basse fréquence (ici @16Mhz). Or, en technologie CMOS, chaque
transition logique consomme, ainsi la consommation de l’oscillateur générant le
signal haute fréquence domine de la consommation énergétique du module ra-
dio, autant en réception qu’en émission.
À titre d’exemple, considérons une pile bouton CR2032, source d’énergie cou-
ramment utilisée pour de tels nœuds en raison de sa petite taille et de sa tension
directement utilisable par la plupart des microcontrôleurs. Une pile CR2032 peut
délivrer au maximum dans l’ordre de 200mAh. Si les nœuds utilisent leur antenne
en permanence, ils ne pourraient fonctionner que 20 heures avant d’être à court
d’énergie.
Sans utiliser la radio et en fonctionnant en mode économie d’énergie, c’est-à-
dire en ne faisant des calculs que très rarement, la consommation peut facilement
descendre en dessous des 10µA, soit plus de 2 années d’autonomie. Il faut donc
utiliser l’antenne avec modération, en limitant autant que possible les durées
d’émission ainsi que les durées de réception. Notre objectif est de faire tenir
cette batterie plusieurs années tout en gardant un réseau réactif.
À noter qu’il existe des récepteurs entièrement passifs, en l’occurrence, les
premières radios AM à galène fonctionnaient sans alimentation externe, en uti-
lisant l’énergie des signaux reçu. Cependant, les microcontrôleurs équipés de
récepteurs capable de surveiller les ondes en permanence sans consommer sont
encore rares et chers.
78
3 Synchronisation sans fils de réseaux maillés – 3.5 Consommation énergétique
Action Durée
Allumage Tx 40µs
Extinction Tx 6µs
Allumage Rx 40µs
Extinction Rx 0µs
Transmission Entête (CRC 3 octets + ID 4 octets) 28µs
Transmission d’un octet 4µs
Réveil de l’oscillateur HF 360µs
79
3 Synchronisation sans fils de réseaux maillés – 3.5 Consommation énergétique
80
3 Synchronisation sans fils de réseaux maillés – 3.5 Consommation énergétique
Table 3.3 – Durées d’utilisation de la radio pour chaque canal. (datasheet construc-
teur nRF52832 (Nordic-Semiconductor 2017))
81
3 Synchronisation sans fils de réseaux maillés – 3.5 Consommation énergétique
Canal système Sur le canal système, les nœuds voisins commencent par écou-
ter, puis chacun passe en émission suivant un tirage aléatoire avant de se re-
mettre en écoute. Si les fenêtres d’émission de deux nœuds s’intersectent, alors
c’est le signal le plus fort du point de vue du récepteur qui aura le pas sur le
plus faible, occasionnant une collision. Il convient alors d’allouer une fenêtre de
réception suffisamment grande pour que les nœuds puissent partager de l’infor-
mation utile sans se gêner mutuellement.
Avec MeeMSyP, les nœuds doivent échanger les informations suivantes : un
bit permettant à un nœud de signaler qu’il a découvert une nouvelle racine 5 ,
un compteur (16 bits) pour le "fil d’Ariane", garant de la connexité du réseau.
Notons qu’à raison d’au maximum une incrémentation par période, c’est-à-dire
une incrémentation par seconde, le compteur ne débordera qu’après plusieurs
années, une fois le réseau déjà obsolète. À noter qu’il serait également possible
de compter de manière circulaire pour éviter le débordement, c’est un compro-
mis à faire entre robustesse et simplicité d’implémentation. Nous réservons aussi
quelques octets pour les communications de l’application distribuée utilisateur,
comptons alors 8 octets, l’émission système utilise alors l’antenne pendant 102µs,
tout comme pour l’émission sur le canal de découverte.
Sur une fenêtre de 600 µs, les nœuds émettront pendant 102µs et seront donc
à l’écoute pendant 418 µs (600 − 102 − 40 − 40). Pour un réseau de faible degré
max (3 à 4) cela permet d’échanger sans trop de collisions. Nous détaillerons les
probabilités dans la section concernant la robustesse du protocole 3.6.
82
3 Synchronisation sans fils de réseaux maillés – 3.5 Consommation énergétique
3.5.7 Conclusion
83
3 Synchronisation sans fils de réseaux maillés – 3.6 Stabilité, robustesse et
scalabilité
84
3 Synchronisation sans fils de réseaux maillés – 3.6 Stabilité, robustesse et
scalabilité
85
3 Synchronisation sans fils de réseaux maillés – 3.6 Stabilité, robustesse et
scalabilité
La plage des 2.4Ghz est ouverte à tous. De nombreux appareils émettent sur
ces fréquences, notre protocole se doit d’être robuste à des émissions tierces.
Tandis que l’intégrité des données sur les canaux de découverte et système est
garantie par des codes CRC, la salve de synchronisation est quant à elle proté-
gée par l’étroitesse de la fenêtre de réception : localement, les nœuds se mettent
implicitement d’accord sur la date des prochaines transmissions de synchronisa-
tion. Les nœuds sont alors à l’écoute quasiment en même temps sur une durée
très courte, nous avons précédemment évoqué une durée de 30µs. Pour que le
signal soit pris en compte, il faut impérativement que l’émission soit initiée dans
cette fenêtre, car les nœuds sont attentifs à la variation de la puissance du signal
reçu.
Les chances pour qu’un appareil étranger au réseau non malicieux en altère
le fonctionnement par erreur sont minces. En effet, si l’appareil commence à
émettre et maintient une émission stable avant que les nœuds n’entrent en écoute,
alors les nœuds auront, comme pour une balance, effectué la tare de ce décalage
dans leurs mesures et l’ignoreront.
86
3 Synchronisation sans fils de réseaux maillés – 3.6 Stabilité, robustesse et
scalabilité
En premier lieu, il est possible de chiffrer les paquets des canaux systèmes et
découverte. Les microcontrôleurs nRF52832 disposent d’ailleurs d’une accéléra-
tion matérielle pour le chiffrement AES-128. Si la clé est partagée uniquement
lors du déploiement du réseau, les données échangées sensibles, comme la mise-
à-jour du microgiciel (firmware), resteront secrètes, même si interceptées par un
attaquant.
Pour rendre le protocole plus robuste vis-à-vis de brouilleurs, il est possible
de changer périodiquement les fréquences associées à chaque canal (techniques
usuelles de sauts de canaux) : chaque tour synchrone correspond à une fréquence
différente pour le canal de synchronisation ainsi que le canal système. Ainsi, si
une seule fréquence est brouillée, cela ne peut pas mettre hors service le réseau
existant. Par contre, si le canal de découverte est brouillé, de nouveaux nœuds
ne pourront pas rejoindre le réseau : il n’est pas possible d’utiliser telles quelles
les techniques de sauts de canaux sur le canal de découverte. En effet, les nœuds
de réseaux différents doivent pouvoir se rencontrer, ils doivent donc se présenter
et rechercher aux mêmes endroits (même canal).
3.6.5 Avaries
Collisions de paquets et leurs effets Lorsque deux nœuds émettent des don-
nées sur le même canal en même temps, les signaux émis s’additionnent. Tout
comme pour des conversations vocales, si les signaux émis ont des intensités
différentes, alors un récepteur sera uniquement capable de comprendre les don-
nées du signal le plus fort. Si les signaux sont d’intensités similaires, alors toute
information est perdue.
Avec MeeMSyP, les collisions de paquets sont principalement néfastes lors-
qu’elles arrivent sur le canal système : en cas de collisions répétées, le comp-
teur de tour provenant du nœud racine n’est plus propagé correctement. Sans
nouvelles, les nœuds s’inquiètent et finissent par se déconnecter, pensant que
le chemin vers la racine n’existe plus et donc que le réseau n’est plus connexe.
Pour éviter qu’une seule perte de paquets ne casse le réseau, les nœuds ne com-
mencent à s’inquiéter qu’après un nombre répété de pertes. 6 La valeur choisie
pour ce paramètre est un compromis à faire entre robustesse, consommation et
latence, et est fonction du taux de perte des paquets systèmes. Une valeur trop
petite de ce paramètre induira un réseau instable avec des déconnexions intem-
pestives et une hausse de la consommation : les nœuds croiront perdre le lien
vers la racine. À l’inverse, une valeur trop grande augmentera fortement le temps
de reconstruction du réseau si le graphe implicite des connexions se brise : les
nœuds vont mettre plus de temps à réaliser qu’il n’est plus possible de communi-
quer avec la racine et qu’il faut réactiver la découverte.
6. Ce nombre constitue le paramètre du protocole que nous avons nommé filArianeMax dans
le pseudo code.
87
3 Synchronisation sans fils de réseaux maillés – 3.6 Stabilité, robustesse et
scalabilité
88
3 Synchronisation sans fils de réseaux maillés – 3.6 Stabilité, robustesse et
scalabilité
3.6.6 Simulation
Figure 3.11 – Simulateur : Lien simulateur. Comme pour les autres chapitres, le
simulateur est livré attaché au présent document PDF.
3.6.6.2 Usage
Le simulateur est constitué de deux volets.
89
3 Synchronisation sans fils de réseaux maillés – 3.6 Stabilité, robustesse et
scalabilité
Volet de droite Le volet de droite contient des disques représentant les noeuds
du réseau et leur arrangement dans la topologie 2D. Le voisinage des noeuds
est établi en fonction d’un seuil de distance : deux noeuds suffisamment proches
à l’écran deviennent voisins. La topologie peut librement être modifiée en dé-
plaçant les noeuds via glisser-déposer et des noeuds peuvent être ajoutés via le
bouton Add node +.
Dans ce volet, la couleur d’un noeud indique l’état dans lequel le noeud se
trouve et sur quel canal il communique. La couleur est rouge pour le canal de
découverte, verte pour le canal système, et bleu pour le canal de synchronisation.
De plus, ces couleurs existent en deux niveaux, niveau clair et niveau foncé. Un
niveau clair signifie que le noeud considéré est en mode réception tandis que
foncé signifie que le noeud est en mode d’émission. Lorsque le noeud est grisé,
cela signifie que le noeud se trouve en mode de basse consommation énergétique
(<10µA). Toute autre couleur signifie que le noeud utilise sa radio en émission
ou en réception, ce qui induit une forte consommation ( 10mA).
L’anneau situé autour de chaque disque indique la position courante, c-à-d la
phase, du noeud dans le cycle. Une valeur claire indique que le noeud est au
début de son cycle. Plus le noeud avance dans le cycle, plus l’anneau devient
foncé. L’anneau peut aussi changer de forme : lorsque la ligne formant l’anneau
passe de continue à discontinue, cela signifie que le noeud s’apprête à se réini-
tialiser et à sauter pour recaler sa phase. Le moment auquel le noeud saute est
matérialisé un court instant avant par une couleur supplémentaire sur le disque,
la couleur violette.
Volet de gauche Le volet de gauche est lui même subdivisé en trois parties.
La première, Current States, décrit plus précisément l’état interne de chaque
noeud. On peut notamment y lire de gauche à droite : l’identifiant du noeud ;
l’identifiant du réseau rejoint (numéro root) ; le numéro de tour courant ; la
valeur d’horloge logique, c’est-à-dire la position estimée du noeud dans le tour
courant, valeur entre 0 et la période (ici 10000) ; le décompte avant le saut (-1
signifie pas de saut planifié) ; le voisinage ; la valeur d’inquiétude (usure du fil
d’Ariane reliant au noeud racine et qui cède une fois passé un certain seuil) ;
Le compteur du nombre de tours avant désactivation de la découverte, et la
consommation instantanée moyenne exprimée sous la forme d’un ratio (1 =
radio tout le temps allumée = 10mA).
La seconde partie, au centre, contrôle la vitesse de la simulation à évènement
discret. Le bouton d’option Nominal Speed permet de changer et de maintenir la
vitesse de simulation à un niveau désiré, tandis que les boutons poussoirs Turbo
et Hyper Turbo permettent un boost momentané pour faire avancer la simulation
à chaque clic.
Enfin, la dernière partie est un journal retraçant précisément la chronologie de
tous les évènements réseaux. Ce journal peut être désactivé pour ne pas ralentir
la simulation.
90
3 Synchronisation sans fils de réseaux maillés – 3.6 Stabilité, robustesse et
scalabilité
Paramètre Valeur
Période 1s
Fenêtre Sync Rx 20ms
Fenêtre Sync Tx 10ms
Fenêtre Système Tx 25ms
Fenêtre Système Rx 200ms
Chances d’être Éclaireur 1/10
Inquiétude Max 20
Compteur désactivation Découverte 5
91
3 Synchronisation sans fils de réseaux maillés – 3.6 Stabilité, robustesse et
scalabilité
Figure 3.13 – Juste après la salve de synchronisation, les noeuds passent sur le
canal système. Les collisions sont limitées par le fait que peu de
noeuds sont en émission en même temps (tirage aléatoire, petite
fenêtre d’émission, grande fenêtre de réception).
92
3 Synchronisation sans fils de réseaux maillés – 3.6 Stabilité, robustesse et
scalabilité
Figure 3.14 – Après le passage obligatoire par les canaux de synchro et système, les
noeuds passent éventuellement sur le canal découverte. Ici, puisque
la synchronisation est déjà en place depuis plusieurs tours, rares
sont les noeuds à écouter pendant une période entière le canal de
découverte. Par contre, tous les noeuds émettront un paquet par
tour. (position dans le tour tirée aléatoirement).
93
3 Synchronisation sans fils de réseaux maillés – 3.6 Stabilité, robustesse et
scalabilité
Figure 3.16 – La nouvelle de la présence d’un nouveau réseau se propage, force les
noeuds à réactiver leur découverte. Une fois cette présence attestée
par un noeud, celui-ci prépare son saut, propage la rumeur à ses
voisins puis saute quelques tours plus tard.
94
3 Synchronisation sans fils de réseaux maillés – 3.7 Ouverture : récolte d’énergie
et utilisations
95
3 Synchronisation sans fils de réseaux maillés – 3.7 Ouverture : récolte d’énergie
et utilisations
96
3 Synchronisation sans fils de réseaux maillés – 3.8 Conclusion
3.8 Conclusion
Dans ce chapitre nous avons introduit MeeMSyP, un protocole intuitif, mini-
maliste mais complet tenant sur 300 lignes de pseudo code, permettant d’implé-
menter un réseau maillé scalable de nœuds à faible consommation énergie. Ce
protocole adapte Goose Sync, notre algorithme de synchronisation filaire 2, aux
réseaux maillés sans-fils en y ajoutant les mécanismes nécessaires pour pallier
les défauts des communications sans fils. MeeMSyP apporte notamment un ca-
nal de découverte ainsi qu’une fenêtre pour des communications système. Ces
mécanismes permettent de garantir la connexité du réseau, sa reconstruction
rapide, ainsi que l’échange d’octets d’informations pour l’application utilisateur.
MeeMSyP se distingue d’autres protocoles et standards existants destinés à
l’industrie comme l’IEEE 802.15.4e et ses dérivés par son minimalisme, sa sim-
plicité d’implémentation, et sa compatibilité avec de grandes topologies entiè-
rement maillées. Il n’a cependant pas encore été éprouvé en conditions réelles,
uniquement sur simulations. Il établit une couche légère permettant l’exécution
d’applications synchrones au tour par tour avec une période d’une seconde. Les
97
3 Synchronisation sans fils de réseaux maillés – 3.8 Conclusion
98
4 Mesure de délais inférieurs au
cycle d’horloge et mesure de
distances
La mesure de délais entre deux évènements est un moyen primaire pour un mi-
crocontrôleur de percevoir l’environnement physique qui l’entoure. Par exemple,
mesurer le temps de charge d’un condensateur entre deux seuils peut permettre
à un microcontrôleur de détecter un appui sur un capteur capacitif. Aussi, mesu-
rer la durée entre l’émission d’une onde ultrasonore et la perception de son écho
permet de calculer la distance à laquelle se trouve l’obstacle le plus proche.
Certaines applications nécessitent la mesure de délais très courts. Mesurer le
temps de propagation d’un signal lumineux ou d’une onde électromagnétique
sur une courte distance, par exemple pour géolocaliser les noeuds d’un réseau
en intérieur, requiert une résolution fine de l’ordre de la nanoseconde. Or, de
tels délais sont inférieurs à la période des cycles d’horloges de la plupart des
microcontrôleurs, qui, cadencés à une fréquence inférieure à 100MHz, ont une
période qui se situe dans l’ordre de la dizaine de nanosecondes. C’est pour cette
raison que les applications de mesure de distances via l’observation du délai de
propagation requièrent généralement la présence d’un circuit auxiliaire dédié
travaillant à des fréquences plus élevées, ce qui entraîne nécessairement une
augmentation du coût du système.
Après avoir introduit les bases de la mesure de délais et abordés les techniques
existantes pour la mesure de délais courts et de délais longs, nous décrivons dans
ce chapitre deux méthodes théoriques, nommées respectivement mesure de temps
de réponse et mesure de temps de vol, permettant de s’affranchir de circuits auxi-
liaires pour la mesure de délais courts. Ces méthodes on fait l’objet d’une décla-
ration d’invention auprès de la SATT sud-est (N IEBERT et B ÉRENGER 2018). Ces
deux méthodes exploitent la dérive relative des horloges de deux microcontrô-
leurs d’une même série pour mesurer des délais avec une résolution plus fine que
la période du cycle d’horloge. Après avoir décrit le principe de fonctionnement,
nous confrontons ces deux techniques à la réalité physique au travers de deux
dispositifs expérimentaux, mesurant respectivement le délai de propagation de
faisceaux infrarouges ainsi que le délai de propagation de micro-ondes 2.4Ghz.
Nous discuterons de l’impact important de la chaîne de traitement analogique,
c’est-à-dire l’ensemble des composants qui réalisent en amont le pré-traitement
du signal (filtrage, amplification, discrétisation). Nous verrons que celle-ci intro-
99
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.1 Bases
de la mesure de délais sur microcontrôleurs
Table 4.1 – Récapitulatif des vitesses des ondes et erreurs relatives de mesure.
(µC @16MHz)
100
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.1 Bases
de la mesure de délais sur microcontrôleurs
Haut-parleur
Microphone
Obstacle
reflecteur
Figure 4.1 – Télémètre ultrason utilisant une onde sonore pour mesurer la distance
à laquelle se trouve un obstacle réflecteur distant.
101
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.2
Mesure de délais courts : État de l’art
Diode
emettrice
Photodiode
receptrice
Obstacle
reflecteur
Figure 4.2 – Télémètre laser utilisant une onde lumineuse pour mesurer la distance
à laquelle se trouve un obstacle réflecteur distant.
102
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.2
Mesure de délais courts : État de l’art
de l’ordre de la nanoseconde.
Si il est bien sur possible d’opter pour des microcontrôleurs plus rapide, cette
méthode à cependant un coût : le prix d’achat des composants augmente expo-
nentiellement avec la montée en gamme. Travailler avec des fréquences élevées
oblige en effet à quitter le catalogue des composants grand public produits en
masse et à cibler des solutions de niche destinées à l’expérimentation scienti-
fique. Par exemple, le constructeur ST propose des microcontrôleurs cadencés à
400MHz comme le STM32H743IIT6 ST-M ICROELECTRONICS 2019 à partir de 7.1
dollars 1 . À noter que 400MHz correspond à la fréquence du coeur exécutant les
instructions, les périphériques sont eux cadencés sur des sous-multiples de cette
fréquence.
C’est pourquoi il est en pratique difficile et coûteux de s’équiper d’un micro-
contrôleur dont la fréquence de fonctionnement des périphériques dépasse les
400MHz, et cela, pour un gain en résolution limité. Ainsi, pour être capable de
mesurer des délais de propagation d’ondes électromagnétiques, lumière infra-
rouge ou ondes radio sur de courtes distances, il faut recourir à des techniques
plus avancées. Plutôt que d’augmenter simplement la fréquence, l’état de l’art
comporte différentes méthodes analogiques, proposant des circuits auxiliaires
au microcontrôleur, pour mesurer des délais dans le cadre d’expérimentations
scientifiques.
Ces circuits permettant de mesurer des intervalles de temps sont apparus très
tôt, à une époque où l’électronique était principalement analogique. Ainsi, cer-
tains de ces circuits analogiques expriment le résultat sous forme analogique
et sont nommés Time-to-Voltage Converters. Lorsqu’il s’agit de convertir directe-
ment une durée en valeur numérique, ces circuits sont appelés Time-to-Digital
converters. Les techniques existantes sont passées en revu dans (P ORAT 1973 ;
N APOLITANO, M OSCHITTA et C ARBONE 2010).
Nous allons ici nous intéresser à quelques exemples principaux.
1. Prix unitaire pour 100 pièces et plus relevé le 29/09/2020 chez le distributeur LCSC.
103
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.2
Mesure de délais courts : État de l’art
nomètre est déclenché en faisant traverser un niveau logique haut dans la chaîne
de portes Oui. Ce signal électrique se propage à une vitesse proche de celle de la
lumière dans les câbles. Cependant, chaque porte logique introduit un délai pour
recopier son entrée sur sa sortie, ce qui ralentit considérablement la propagation
globale du signal. On arrête le chronomètre en activant le signal d’inhibition des
bascules. Le délai mesuré s’exprime alors en nombre de portes traversées : il
s’agit du numéro de la dernière bascule ayant verrouillé le niveau logique haut.
L’inconvénient de cette méthode est qu’elle nécessite des composants dont le
délai de propagation est connu et demeure fixe au cours du temps. En pratique,
ces délais de propagation varient d’une porte logique à l’autre, à cause de légères
différences lors de la fabrication. De plus, pour une porte donnée, ces délais de
propagation varient en fonction de facteurs environnementaux, majoritairement
avec la température, mais aussi avec les perturbations électromagnétiques am-
biantes, ainsi que la présence de capacités parasites. En conséquence, le recours
à de telles méthodes analogiques nécessite l’utilisation de composants de préci-
sion ainsi qu’une calibration prenant en compte les défauts et dérives de chaque
composant.
Porte Bascule
Oui RS
Set
Sortie
Figure 4.3 – Mesure de délais utilisant la latence introduite par une chaîne de
portes analogiques Oui. Le dispositif mesure le délai écoulé entre
l’activation de la ligne Set et l’activation de la ligne Inhibition. Le
résultat se lit sur les sorties des bascules RS : le nombre de sorties
activées est proportionnel au délai.
104
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.2
Mesure de délais courts : État de l’art
105
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.2
Mesure de délais courts : État de l’art
2. En témoigne la forte disponibilité chez les principaux fournisseurs de composants, > 6000
unités du modèle VL53L0CXV0DH/1 chez LCSC ELectronics (relevé le 05/08/2020).
3. LCSC ELectronics, prix relevé le 05/08/2020.
4. Modèle NRF52832-QFAA-R, LCSC ELectronics, prix à 1000 pièces, relevé le 05/08/2020.
106
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.3
Protocoles sous un modèle idéalisé
107
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.4
Mesure de temps de réponse
Pour résoudre ce problème sans avoir recours à un matériel utilisant des hor-
loges plus précises, et donc onéreuses, nous proposons dans cette section un
protocole utilisant la coopération entre deux microcontrôleurs pour mesurer très
précisément des temps de réponse inférieurs au cycle d’horloge. Ce protocole ex-
ploite la légère différence de fréquences entre deux microcontrôleurs, fréquences
nominalement identiques, pour réaliser des mesures à différents déphasages.
Après une description plus détaillée de la problématique et de ses enjeux, nous
décrirons notre protocole de mesure et expliquerons de manière intuitive com-
ment celui-ci permet d’augmenter significativement la résolution de la mesure.
108
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.4
Mesure de temps de réponse
Nous terminerons par une partie plus formelle détaillant les calculs des délais, et
appuyant la correction du protocole.
109
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.4
Mesure de temps de réponse
110
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.4
Mesure de temps de réponse
111
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.4
Mesure de temps de réponse
112
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.4
Mesure de temps de réponse
4.4.1.2 Pseudo-code
//Protocole temps de réponse ///////////////////////////////////////////
function horodater()
{
return numéro_cycle_courant; //Utilise un compteur du µC
}
function prise_échantillon()
{
activer_DEL();
var r = recevoir();
return r;
}
function nettoyer_séquence(prises)
{
//La première séquence de 1 est potentiellement plus courte,
// car on a pu commencer la mesure en plein milieu, donc on la jette:
prises = supprimer_plus_grande_sous_séquence_de_1(prises);
prises = conserver_plus_grande_sous-séquence_de_1_et_de_0(prises);
// (expression régulière: 1*0*) en partant du début.
return prises;
}
function agréger_échantillons()
{
var prises = new Liste();
for(var i=0;i<N;i++)
prises.ajouter( prise_échantillon() );
prises = nettoyer_sequence(prises);
113
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.4
Mesure de temps de réponse
function loop()
{
attendre_déclenchement_DEL();
var Txp = horodater();
attendre_réponse_photodiode();
var Rxp = horodater();
envoyer(Rxp - Txp); //Envoie 0 ou 1.
//(pour simplifier, on enlève les délais fixes connus de l'horodatage).
}
Dephasage Delai
114
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.4
Mesure de temps de réponse
peut être faussée si les échantillons ne couvrent pas certaines valeurs prises par
le déphasage.
Considérons par exemple la mesure effectuée sur la figure 4.9. Lorsque l’on ef-
fectue la moyenne naïve de la séquence, c’est à dire lorsque l’on divise le nombre
de 1 présents dans la séquence par le nombre d’échantillons, ici 40, la moyenne
se retrouve biaisée par les prises provenant de rotations incomplètes. Considérer
un cadre plus grand ne suffit pas à rendre le résultat de la moyenne plus précis,
car il est possible de conserver les même proportions et donc le même biais sur
une séquence plus longue.
115
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.4
Mesure de temps de réponse
si {d} < (1 − p)
(
bdc
délai observé par µO =
bdc + 1, sinon
Figure 4.10 – Diagramme de temps lors d’une prise de mesure de temps de réponse,
Cas {δ} < (1 − p)
Figure 4.11 – Diagramme de temps lors d’une prise de mesure de temps de réponse,
Cas {δ} > (1 − p)
116
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.4
Mesure de temps de réponse
117
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.4
Mesure de temps de réponse
118
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.4
Mesure de temps de réponse
Figure 4.12 – Valeurs des déphasages lors d’échantillonnages successifs. Les valeurs
sont représentés sur plusieurs frises circulaires, une frise pour chaque
rotation complète du déphasage. Le déphasage progresse de δ à
chaque nouvel échantillon. La projection d’un grand nombre de
rotations sur une même frise s’apparente à une rotation dont le
déphasage progresserait avec un pas δ2 .
En projetant tous les déphasages sur la même frise on peut abstraire le rai-
sonnement et considérer plusieurs rotations comme une seule et unique rotation
avec une vitesse de déphasage plus faible, ici δ2 . Voyons cela en détail dans la
section suivante.
119
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.4
Mesure de temps de réponse
Figure 4.14 – Graduations secondaires obtenues sur la frises circulaire des dépha-
sages après chaque tour complet du déphasage.
120
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.4
Mesure de temps de réponse
Numero
Echantillon
Figure 4.15 – Graduations tertiaires obtenues sur la frises circulaire des dépha-
sages.
δ0 = 1
δ1 = δ
(4.1)
mn = dδn−1 /δn e
δn = δn−1 · mn−1 − δn−2
mn correspond au nombre de graduations +1 à la profondeur n. À la pro-
fondeur n, le nombre de mesures requises pour que l’échelle soit complète est
(mn − 1) · mn−1 · mn−2 . . . m2 · m1 .
La résolution de mesure à la profondeur n est δ1n . On remarque que celle-ci
croît exponentiellement à chaque palier de profondeur franchi, ce qui nécessite
également un nombre exponentiel de prises. La récursion s’arrête à la profondeur
k pour laquelle δk divise δk−1 . Tous les déphasages observables ont été observés,
les nouvelles prises répèteront la même séquence de déphasage que les premières
prises (p0 , p1 , p2 . . . ).
Si δ est un irrationnel, alors une telle profondeur n’existe pas, la résolution at-
teignable est donc limitée uniquement par le nombre d’échantillons. En pratique,
la dérive des horloge imputable à l’environnement est le premier facteur limitant
les gains apportés par cette technique de méta-rotations.
121
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.5
Mesure de temps de vol
122
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.5
Mesure de temps de vol
123
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.5
Mesure de temps de vol
124
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.5
Mesure de temps de vol
que la durée d’un trajet aller du faisceau lumineux, alors µE peut déclencher une
émission sur un front d’horloge et recevoir la réponse de µR au prochain cycle.
Dans le cas contraire, si le déphasage est trop important ou trop faible, alors µE
recevra la réponse de µR deux cycles après avoir émis le signal ping.
Lorsque le délai observé par µE n’est pas le même pour deux prises consécu-
tives, alors cela signifie que le déphasage est proche de la durée d’un trajet aller
du faisceau lumineux. En particulier, si le délai observé par µE est de 1 cycle,
alors cela signifie que la valeur absolue du déphasage , comprise entre 0 et 0.5
cycle, est inférieure à la durée d’un trajet aller du faisceau lumineux. En connais-
sant la vitesse à laquelle les horloges des microcontrôleurs se déphasent , vitesse
supposée constante, on peut mesurer la proportion du temps pendant laquelle
le déphasage entre µE et µR est inférieur à la durée d’un trajet aller. On obtient
alors le temps de vol en multipliant la valeur par la durée d’un cycle.
La partie suivante décrit le pseudo-code simplifié du protocole. Ce dernier sera
étudié plus formellement dans les sections qui suivront.
function horodater()
{
return numéro_cycle_courant; //Utilise un compteur du µC.
}
function prise_échantillon()
{
var Tx0 = horodater();
activer_DEL();
var r = attendre_reponse_photodiode();
var Rx1p = horodater();
return (Rx1p - Tx0); //Durée ping-pong.
}
function nettoyer_séquence(prises)
{
//La première séquence de 1 est potentiellement plus courte,
// car on a pu commencer au milieu de la séquence, donc on ne
//la prend pas en compte jette:
prises = supprimer_plus_grande_sous_séquence_de_1(prises);
prises = conserver_plus_grande_sous-séquence_de_1_et_de_0(prises);
125
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.5
Mesure de temps de vol
return prises;
}
function agréger_échantillons()
{
var prises = new Liste();
for(var i=0;i<N;i++)
prises.ajouter( prise_échantillon() );
prise = nettoyer_sequence(prises);
function loop()
{
var r = attendre_reponse_photodiode();
var Rx0p = horodater();
activer_DEL();
Ensemble de prises:
111111000000000000000000011111111000000000000000000011111111000000000000
résultat:
111111110000000000000000000
126
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.5
Mesure de temps de vol
si {d} < p
(
p − {d}
délai avant perception par µR =
1 − ({d} − p), sinon
Lemme 3. Sur réception du ping, µR émet sa réponse. Celle-ci arrive sur le
récepteur de µE après un délai d et est perçu par µE sur son prochain front
d’horloge, soit après un délai fonction du déphasage p :
127
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.5
Mesure de temps de vol
Démonstration. Parmis toutes les configurations, la configuration {d} > p, {d} >
1−p n’est pas possible, car nous sommes sous l’hypothèse {d} < 0.5 et p+(1−p) = 1.
Nous réalisons la suite de la preuve graphiquement, en étudiant ci-après les 3
configurations restantes. Voir figures 4.19,4.20,4.21.
Figure 4.19 – Diagramme de temps pour la configuration {d} < 0.5, {d} < p,
{d} < 1 − p.
128
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.5
Mesure de temps de vol
Figure 4.20 – Diagramme de temps pour la configuration {d} < 0.5, {d} > p,
{d} < 1 − p.
Figure 4.21 – Diagramme de temps pour la configuration {d} < 0.5, {d} < p,
{d} > 1 − p.
Démonstration. Parmis toutes les configurations, la configuration {d} < p, {d} <
1−p n’est pas possible, car nous sommes sous l’hypothèse {d} > 0.5 et p+(1−p) = 1.
Nous réalisons la suite de la preuve graphiquement, en étudiant ci-après les 3
configurations restantes. Voir figures 4.22,4.23,4.24.
129
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.5
Mesure de temps de vol
Figure 4.22 – Diagramme de temps pour la configuration {d} > 0.5, {d} > p,
{d} > 1 − p.
Figure 4.23 – Diagramme de temps pour la configuration {d} > 0.5, {d} > p,
{d} < 1 − p.
Figure 4.24 – Diagramme de temps pour la configuration {d} > 0.5, {d} < p,
{d} > 1 − p.
130
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.5
Mesure de temps de vol
4.5.3 Simulation
4.5.3.1 fonctionnement
Le simulateur de mesure de temps de vol utilise les équations des sections
précédentes.
131
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.5
Mesure de temps de vol
Usage Les fréquences des microcontrôleurs ainsi que la distance les séparant
sont paramétrables en cliquant sur les périodes notées T1 et T2 et ainsi qu’en
cliquant sur la distance d.
Le curseur tscale permet de choisir la vitesse de la simulation. 1s/1s signifie
temps réel. Par défaut, l’échelle est à 2ms/s ce qui permet d’observer la progres-
sion du déphasage.
Les échelles horizontales et verticales sont modifiables en gardant le clic en-
foncé et en faisant glisser le curseur sur la surface d’affichage.
132
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.5
Mesure de temps de vol
4.5.3.2 Captures
Ping Pong
133
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.6
Confrontation avec la réalité physique
134
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.6
Confrontation avec la réalité physique
d’abord les principaux défauts de nos modèles simplifiés, puis nous étofferons
ces modèles pour augmenter la robustesse des protocoles en conditions réelles.
Enfin, nous ferons part de résultats expérimentaux obtenus au travers deux dis-
positifs prototypes, communicant en utilisant respectivement des faisceaux lumi-
neux infrarouges ainsi que des ondes radio 2.4GHz.
prises: 0111111100000000000000111111100000000000000111111100000000000000
|<----------------->|
Rotation complète du déphasage (p)
entre les horloges des µC
Figure 4.28 – Mesure sous un modèle simplifié, horloges idéales avec des fréquences
fixes
135
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.6
Confrontation avec la réalité physique
prises: 0111111100000000000000111111111111000000000000001111111000000000
Vitesse
de déphasage : _______________ ___________________________________
|____|
|<--->| |<-------->|
Séquence de '1' Séquence de '1'
Normale distordue
Figure 4.29 – Mesure sous un modèle réaliste, avec des fréquences variables dans
le temps
prises: 0001110000000111000000011100000001110000000111000000011100000001
Rotations
Complètes: |<------>||<------>||<------>||<------>||<------>||<------>|
Nous avons utilisé précédemment les informations acquises sur plusieurs ro-
tations complètes pour augmenter la résolution des mesures de temps de vol
et de temps de réponse. Cette technique requiert une connaissance précise de
la vitesse de déphasage δ, pour calculer le nombre d’échantillons à prendre en
compte. En effet, pour éviter tout biais dans l’estimation, il est nécessaire de
garder uniquement un cadre correspondant à une rotation (ou méta-rotation)
complète. Or si la vitesse de déphasage n’est pas uniforme sur l’ensemble des
prises, cette condition n’est pas respectée. Il est ainsi nécessaire en pratique de
monitorer la stabilité de la vitesse de déphasage pour s’assurer que la valeur
mesurée n’est pas altérée.
Sous un modèle idéal, la méthode du balayage multiple permet de calculer un
nombre de prises à prendre en compte pour obtenir une résolution δn , avec n la
profondeur du méta-balayage considéré. On se base sur une bonne estimation de
δ, la vitesse de déphasage, que l’on intègre pour calculer la valeur du déphasage
pk lors de chaque nouvelle prise d’échantillon. Si l’estimation de δ est correcte,
alors les valeurs estimées du déphasage le sont aussi. Puisque les délais observés
sont soit 0, soit 1, en fonction d’un seuil sur la valeur du déphasage, alors la
séquence triée suivant la valeur du déphasage contient une unique transition de
1à0:
136
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.6
Confrontation avec la réalité physique
Séquence brute:
1111000000111100000011110000001111000000111100000011110000001111000000
137
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.6
Confrontation avec la réalité physique
138
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.6
Confrontation avec la réalité physique
139
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.6
Confrontation avec la réalité physique
Figure 4.32 – Carte fabriquée sur mesure (version alpha), équipée d’un micro-
contrôleur PSOC, d’une chaîne analogique, d’une DEL et d’une
photodiode.
Nos avons conçu et assemblé deux modules identiques. Chaque module dis-
pose d’un microcontrôleur Cypress PSOC CY8C5267AXI-LP051 pilotant une diode
émettrice d’infrarouge haute puissance TSAL6100 et monitorant une photodiode
PIN haute fréquence BPV10NF. Le microcontrôleur active la DEL émettrice grâce
à un transistor rapide, ce qui permet de produire des salves d’infrarouge très
courtes, mais très puissantes pour être perçues distinctement plusieurs mètres
plus loin par la photodiode du second module.
Le signal de la photodiode est amplifié et filtré par une chaîne analogique
complexe avant d’arriver au microcontrôleur. En effet, la photodiode produit
un courant très faible, proportionnel au rayonnement lumineux qui la frappe.
De plus, bien que la photodiode dispose d’un filtre infrarouge, elle demeure en
partie sensible à la lumière ambiante. Le rôle de la chaîne analogique est alors
double : la chaîne doit amplifier le signal tout en filtrant la composante du signal
provenant de la lumière ambiante. En bout de chaine, le signal filtré et amplifié
est discrétisé avant de parvenir au microcontrôleur.
140
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.6
Confrontation avec la réalité physique
141
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.6
Confrontation avec la réalité physique
142
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.6
Confrontation avec la réalité physique
Module Renvoyeur Le module renvoyeur est configuré pour attendre une ré-
ception sur sa photodiode. Lorsqu’une impulsion est reçue sur la photodiode, la
chaine analogique qui suit la photodiode génère un front correspondant à l’ex-
tinction de la DEL de l’émetteur. Lorsque ce front est perçu par le microcontrô-
leur (sur son front d’horloge), ce dernier déclenche l’émission d’une impulsion
lumineuse sur sa DEL. Il déclenche aussi une minuterie inhibant toute réception
avant qu’un certain délai se soit écoulé, ceci pour but d’éviter tout déclenchement
intempestif en cas d’erreur ou de fausse détection.
143
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.6
Confrontation avec la réalité physique
144
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.6
Confrontation avec la réalité physique
Pour nos expérimentations sur les ondes radio, nous utilisons des modules ra-
dio BT832F du constructeur Fanstel, modules équipés de microcontrôleurs Nor-
dic nrf52832. Ces microcontrôleurs ont la particularité d’exposer une API permet-
tant de contrôler le périphérique radio à un très bas niveau au travers de registres.
La documentation technique (N ORDIC -S EMICONDUCTOR 2017) est précise dans
la description des délais radio. De plus, les microcontrôleurs nRF52832 disposent
d’un système d’évènements automatisant les interactions entre périphériques au
cycle près. Il est par exemple possible de déclencher l’envoi d’un paquet radio
sur l’évènement de fin d’une minuterie. De même, il est possible de stopper un
chronomètre sur réception d’un paquet pour effectuer un horodatage.
Ces particularités du nRF52832 nous permettent d’implémenter des protocoles
radios propriétaires 7 précis au cycle près, précision requise pour l’application à
la mesure de temps de vol.
145
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.6
Confrontation avec la réalité physique
Le récepteur radio reçoit un signal très faible sur son antenne, signal que le
récepteur filtre et amplifie. La documentation technique évoque brièvement trois
étages d’amplifications, respectivement en début, milieu et fin de chaîne. Tout
comme notre chaîne analogique avec les faisceaux infrarouge, nous pensons que
l’amplitude du signal radio en entrée influe les délais de traitement, ce qui serait
cohérent avec nos observations.
146
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.6
Confrontation avec la réalité physique
Figure 4.37 – Piliers radio, portant les modules nRF52832 à 1.80m du sol pour
limiter l’impact des reflets. (Photo illustrative prise à posteriori,
sur un terrain différent de la zone d’expérimentation.)
Nous avons réalisé une dizaine d’expérimentations sur une plage de distances
147
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.6
Confrontation avec la réalité physique
Figure 4.38 – Graphe de gauche : délai aller-retour µE-µR mesurés par µE dans
le temps. Un point correspond à l’agrégation d’une séquence de
2048 échantillons (environs 1.5 secondes). Graphe de droite : valeurs
moyennes de l’indicateur RSSI lors des différentes mesures (un point
par groupe de 2048 échantillons).
148
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.7
Conclusion
pour varier la longueur d’onde utilisée. Cela n’a pas apporté d’amélioration signi-
ficative.
4.7 Conclusion
Nous nous sommes intéressés dans ce chapitre à la mesure de délais très courts,
comme le délai de propagation d’une onde radio sur quelques mètres. La diffi-
culté principale était de surpasser la faible résolution de mesure imposée par le
cycle d’horloge. En effet, puisque tout horodatage donné par un microcontrôleur
est arrondi au numéro de cycle d’horloge supérieur, le délai entre deux évène-
ments est lui aussi projeté sur l’entier supérieur lors de la mesure.
Pour pallier cette faiblesse, nous avons exploité les connaissances sur la dérive
des horloges acquises lors des précédents travaux sur la synchronisation. Nous
avons vu précédemment que deux systèmes, équipés chacun de sa propre hor-
loge, se déphasent inévitablement, de plus, ce déphasage est observable et est
mesurable. En effet, l’entier sur lequel est projeté le délai mesuré dépend de
la valeur du déphasage. Nous augmentons ainsi la résolution de la mesure en
prenant une série d’échantillons couvrant les différentes valeurs du déphasages
et en analysant les délais projetés : nous avons prouvé que le rapport cyclique
des valeurs prises par les projetés correspond à la partie fractionnaire du délai
mesuré.
Nous avons considéré deux configurations différentes que nous avons nom-
mées respectivement mesure de temps de réponse et mesure de temps de vol. Dans
la configuration mesure de temps de réponse, les deux microcontrôleurs contri-
buant à la mesure sont placés sur un même circuit et communiquent directe-
ment. Le microcontrôleur déclencheur µD déclenche une action, et le microcon-
trôleur observateur µO observe la durée de l’action. Dans la configuration mesure
de temps de vol, les deux microcontrôleurs sont à l’inverse éloignés l’un de l’autre
et s’échangent des paquets de données via les ondes. Le microcontrôleur émet-
teur µE émet un paquet ping, puis le microcontrôleur récepteur µR reçoit le ping
et répond avec un paquet pong.
Nous avons donné pour chacune de ces configurations les équations donnant la
résolution de mesure, théoriquement illimitée, croissant en fonction du nombre
d’échantillons pris, puis nous avons nuancé le discours en abordant l’impact po-
tentiel de l’environnement en situation réelle : plus la durée de la récolte d’échan-
tillon est grande, plus les fréquences des microcontrôleurs dérivent, affectées
notamment par les changements de la température ambiante, ce qui altère la
mesure.
Nous avons de plus, comme dans chaque chapitre, proposé un simulateur per-
mettant de visualiser interactivement l’impact des différents paramètres sur la
prise de mesure. Enfin, nous avons expérimenté la configuration mesure de temps
de vol en situation réelle via deux dispositifs distincts réalisés sur mesure : nous
149
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.7
Conclusion
avons d’une part mesuré le délai de propagation de salves d’infrarouges sur plu-
sieurs dizaines de centimètres, ceci avec deux cartes électroniques jumelles com-
portant DEL et photodiode infrarouge ainsi qu’une chaîne d’amplification ana-
logique pilotée par un microcontrôleur Cypress PSOC ; D’autre part, nous avons
mesuré le délai de propagation d’ondes radio 2.4GHz émis par deux modules
équipés de microcontrôleurs nRF52832. Les résultats obtenus avec ces deux dis-
positifs constituent une preuve de concept, cependant ils soulignent le très fort
impact de l’environnement physique ainsi que la sensibilité de la chaîne ana-
logique. Notamment, pour de futures expériences, nous porterons un soin tout
particulier à éviter les interférences multi-chemin, par exemple en utilisant des
fréquences autres que les 2.4Ghz ayant moins tendance à rebondir comme les
27MHz, ainsi qu’à paramétrer le plus finement possible la chaîne analogique afin
de prévenir tout impact négatif de mécanismes comme l’auto-gain.
150
5 Localisation par interférence et
observation de l’onde stationnaire
Lorsque, dans un milieu, deux ondes de fréquences et d’amplitudes identiques
se propagent dans des direction opposées, elles interfèrent pour former une onde
stationnaire. C’est un phénomène que l’on peu facilement observer en agitant
une corde attachée à son autre extrémité : l’onde se propage jusqu’à l’autre ex-
trémitée où elle est réverbérée. Lorsque l’onde et sa réverbération s’additionnent,
le mouvement de la corde change. On observe alors un mouvement vertical avec
des points fixes à la place d’un mouvement de propagation longitudinal.
151
5 Localisation par interférence et observation de l’onde stationnaire – 5.1 Etat de
l’art
points 1 .
Dans ce chapitre, nous détaillons comment exploiter ce principe physique pour
mesurer des distances entre des modules radio. Nous provoquons volontairement
l’interférence entre les émissions de deux balises distantes, afin de former l’onde
stationnaire. Nous plaçons ensuite deux modules sur le segment délimité par
ces balises. Ces modules écoutent et mesurent l’amplitude du signal résultant de
l’interférence. En comparant leurs relevés d’indicateur de force de signal RSSI,
ils estiment la distance qui les sépare.
Les mesures de la force du signal étant imprécises car bruitées et peu réso-
lues, nous exploitons le lent déplacement de l’onde stationnaire induit par le
déphasage progressif des oscillateurs des balises, pour renforcer la mesure. En
effet, en connaissant d’une part la vitesse de déplacement de l’onde stationnaire,
et d’autre part en mesurant le délai entre l’observation d’un extrémum par un
module, puis l’observation du même extrémum par l’autre module. Finalement,
nous verrons comment généraliser la technique pour localiser des modules dans
le plan ou dans l’espace, et mesurer des distances au delà de la demi longueur
d’onde. Ces travaux ont fait l’objet d’une déclaration d’invention auprès de la
SATT Sud-Est (N IEBERT et B ÉRENGER 2019).
1. Nous verrons que la mesure est relative : la distance mesurée est modulo le quart de la
longueur d’onde
152
5 Localisation par interférence et observation de l’onde stationnaire – 5.2 Modèle
synchronisés émis par les tours du système DECCA utilisent des fréquences har-
moniques, ce qui permet aux signaux de voyager superposés dans le médium.
Quand au GPS, il utilise un codage à étalement de spectre.
L’originalité de notre approche réside dans le fait de créer volontairement des
interférences, et d’utiliser les écarts de fréquences entre les balises, pour mesu-
rer le déphasage sans utiliser de matériel spécifique. Les récepteurs traditionnels,
GPS par exemple, utilisent au contraire une chaîne de traitement analogique très
précise, et coûteuse, pour mesurer le déphasage entre deux signaux. De plus,
les balises émettrices doivent être synchronisées entre elles pour compenser les
écarts de fréquence, ce qui nécessite une infrastructure plus lourde, les satellites
GPS emploient généralement des horloges atomiques au césium. Créer des inter-
férences affecte la puissance du signal perçue en fonction du déphasage. Ainsi
nous pouvons mesurer indirectement le déphasage, en observant la valeur de
l’indicateur de puissance du signal. La plupart des récepteurs radio trouvables
dans le commerce sont équipés d’un tel indicateur RSSI.
5.2 Modèle
Nous considérons un champ (électromagnétique) dans un espace unidimen-
sionnel. Nous noterons f (x, t), la valeur du champ associée au point situé à la
coordonnée x de l’espace au temps t. Nous modélisons l’amplitude d’une onde
électromagnétique par une fonction sinusoïdale comme suit :
t x
f (x, t) = A sin(2π − 2π + φ)
T λ
A désigne l’amplitude, T la période, λ la longueur d’onde, et φ la phase de
l’onde. À noter que pour une onde électromagnétique, période et longueur d’onde
sont liées par la constante de célérité : λ = c · T avec c la vitesse de la lumière
pour le milieu de propagation considéré.
Soient f1 et f2 , deux ondes sinusoïdales de même longueur d’onde, de même
période, mais de directions opposées :
t x
f1 (x, t) = A sin(2π − 2π + φ1 )
T λ
t x
f2 (x, t) = A sin(2π + 2π + φ2 )
T λ
Nous notons f , l’onde stationnaire interférence entre f1 et f2 :
153
5 Localisation par interférence et observation de l’onde stationnaire – 5.3
Simulation interférences 1D
φ3 (t) − φ1 λk
∀t ∈ R, f (x, t) = 0 ⇔ x = λ · +
4π 2
La vitesse de ce déplacement dépend de la différence de fréquence entre les
deux ondes. Plus l’écart de fréquence est faible, plus le déplacement de l’onde
stationnaire est lent.
154
5 Localisation par interférence et observation de l’onde stationnaire – 5.3
Simulation interférences 1D
5.3.1 Usage
Initialement, deux sources émettent deux ondes identiques de directions de
propagation opposées. La somme des deux sinusoïdes forme une onde station-
naire. Activer l’option de rémanence permet d’observer le changement d’ampli-
tude de l’oscillation du champ en fonction de la position dans l’espace. Modifier
les variables de déphasage φ1 et φ2 translate l’onde stationnaire. Modifier légè-
rement la période de l’une des deux ondes engendre un déplacement lent et
continu de l’onde stationnaire. La vitesse de ce déplacement est proportionnelle
à la différence de fréquence entre les deux ondes. La distance entre deux points
de l’espace s’obtient en mesurant le temps de parcours d’un même point fixe de
l’onde stationnaire entre ces deux points : d = vt. Il est possible de modifier l’am-
plitude de l’une des deux sinusoides pour observer l’effet d’une asymétrie entre
les deux ondes sources sur l’onde stationnaire : les points fixes restent percep-
tibles.
5.3.2 Captures 1D
Lorsque les périodes T1 et T2 sont différentes de quelques ppm et lorsque l’on
augmente l’échelle de temps vers 1µs/s, on observe l’onde stationnaire se dépla-
cer lentement à vitesse constante. Un noeud se trouvant entre les deux balises
émettant les signaux rouges et bleus est capable d’observer le déplacement de
155
5 Localisation par interférence et observation de l’onde stationnaire – 5.4
Réalisation pratique
ce motif unidimensionnel via les relevés RSSI. Il peut ainsi calculer position et
vitesse à l’instar d’une souris optique glissant sur son tapis.
Figure 5.3 – Onde stationnaire, interférence entre les émissions du signal rouge
et signal bleu.
156
5 Localisation par interférence et observation de l’onde stationnaire – 5.5
Résultats et limites
157
5 Localisation par interférence et observation de l’onde stationnaire – 5.6
Généralisation au plan et à l’espace
5.6.1 Interférences 2D
Nous fournissons en complément du simulateur 1D, un simulateur 2D permet-
tant de visualiser les interférences dans le plan euclidien. Dans ce simulateur, cli-
quer sur les disques colorés représentant les balises permet d’activer/désactiver
l’émission associée.
5.6.2 Captures 2D
Tout comme pour le cas 1D, lorsque les périodes T1 et T2 sont différentes de
quelques ppm et que lorsque l’on augmente l’échelle de temps vers 1µs/s, on
observe l’onde stationnaire se déplacer lentement à vitesse constante. Ici, c’est
un motif hyperbolique 2D qui coulisse lentement dans l’espace. Ce motif 2D est
observable par tout noeud via l’indicateur RSSI. Un noeud peut alors estimer sa
position et sa vitesse dans le plan.
158
5 Localisation par interférence et observation de l’onde stationnaire – 5.6
Généralisation au plan et à l’espace
Figure 5.5 – Onde stationnaire, l’interférence entre les émissions du noeud rouge
et du noeud bleu fournit un motif qui, en glissant permet d’estimer
les distances sur un axe horizontal.
Figure 5.6 – Onde stationnaire, l’interférence entre les émissions du noeud rouge
et du noeud vert fournit un motif qui, en glissant, permet d’estimer
les distances sur un axe vertical.
159
5 Localisation par interférence et observation de l’onde stationnaire – 5.6
Généralisation au plan et à l’espace
Figure 5.7 – Onde stationnaire, interférence entre les émissions du noeud vert et
du noeud bleu.
Figure 5.8 – Onde stationnaire, l’interférence entre les émissions des 3 noeuds,
rouge, vert et bleu, sur un même canal fournit un motif 2D coulissant
dans le plan suivant 2 axes. En pratique, on préférera simplifier
l’étude en considérant les interférences entre rouge et vert d’une part,
et vert et bleu d’autre part, sur des plages de fréquences différentes.
160
5 Localisation par interférence et observation de l’onde stationnaire – 5.6
Généralisation au plan et à l’espace
dans le commerce car ne nécessitant pas une temporisation précise au cycle près.
Cette méthode repose sur l’observation indirecte du déphasage entre plusieurs
sources, en utilisant la mesure de la puissance du signal résultant d’interférences
volontaires. De plus, nous exploitons les écarts de fréquences entres les sources
émettrices et le glissement du déphasage que cela engendre pour consolider la
mesure et compenser l’affaiblissement du signal, affaiblissement imputé à la dis-
tance ou à un défaut de fabrication.
Nous avons fourni un simulateur pour expérimenter empiriquement, ainsi que
des résultats expérimentaux qualitatifs sur des modules radio 2.4GHz nRF52832.
Les applications potentielles de cette méthode dépendent des fréquences utilisés.
En effet, les distances mesurées sont modulo la demi longueur d’onde. Ainsi
lorsque la longueur d’onde est petite, le positionnement ne peut se faire qu’en
relatif. De plus lors de nos expériences, nous avons constaté le fort impact des
interférences multi-chemin avec les ondes 2.4GHz. Ainsi, avec des fréquences
élevées comme le 2.4Ghz, il serait envisageable de faire des dispositifs de poin-
tage 3D, pour des casques de réalité virtuelle par exemple, ou encore faire du
suivi de mouvement, pour compenser la dérive d’un accéléromètre par exemple.
Enfin, nous n’avons pas encore expérimenté avec des fréquences basses, cepen-
dant celles-ci permettraient de faire des systèmes de localisations en intérieur à
l’échelle d’un bâtiment pour des réseaux de capteurs.
161
6 Partitionnement équilibré de
grilles non-pondérées en zones
connexes
6.1 Introduction
6.1.1 Motivation initiale
Nous avons expliqué dans les chapitres précédents que nos travaux sur la syn-
chronisation filaire ont été motivés initialement par la nécessité de fournir une
base de temps permettant l’exécution d’applications synchrones dans le cadre du
produit Led’sChat Mozaïk. Il s’agit de dalles lumineuses LEDs interconnectables
bords à bord pour former une large surface d’affichage. L’affichage s’y fait de
manière distribuée. En effet, chaque dalle est équipée d’un microcontrôleur, et
leur assemblage constitue un réseau maillé scalable dans lequel l’information
s’échange de pair à pair.
Une des premières applications synchrones réalisées pour le produit Mozaïk
fut une application de diffusion de flux vidéo, permettant de distribuer en temps
réel aux dalles des images provenant d’un ordinateur connecté à l’un des bord
du réseau. Par essence, une telle interface entre un ordinateur d’une part, où
l’information est centralisée, et un réseau maillé d’autre part, où l’information
est distribuée entre les différents noeuds, ne passe pas à l’échelle. Se pose alors
naturellement le problème de la bande passante, du débit ainsi que de la latence
lorsque la taille du réseau augmente : plus le réseau contient de noeuds, plus la
latence augmente et plus le nombre d’images diffusées par seconde et par dalle
diminue.
Ainsi, pour maintenir en pratique le taux de rafraîchissement, il est nécessaire
d’augmenter le débit au niveau du goulot d’étranglement, dans ce cas précis le
débit de la liaison entre le bord du réseau et l’ordinateur. Pour cela, la seule
possibilité 1 est de rajouter de nouveaux liens entre l’ordinateur et d’autres bords
du réseau, ce qui pose un problème théorique : celui de la répartition des flux
provenant de différentes sources sur les noeuds du réseau. C’est pour résoudre ce
problème pratique que dans ce chapitre, nous allons nous intéresser au problème
de partitionnement de grilles carrées en zones connexes : en découpant le réseau
162
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.1
Introduction
163
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.1
Introduction
Figure 6.3 – Variante enracinée du problème : trois couleurs sont en conflit pour
accéder à un couloir de largeur 2. Seulement deux couleurs peuvent
rejoindre la grande zone de droite sans déconnecter l’une des trois
parties. Dans une telle situation, aucun partitionnement connexe
équilibré n’est possible.
164
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.2
Travaux liés
topologies (Théorème 3). Nous conjecturons aussi que ce simple algorithme glou-
ton peut être étendu au cas enraciné et être amélioré pour calculer une solution
en temps linéaire (pour tout entier q fixé). La définition de q-carré connexité,
bien qu’intuitivement similaire mais non équivalente à la définition classique de
k-connexité d’un graphe, n’est pas triviale et est le résultat d’un ajustement mi-
nutieux des conditions afin d’obtenir une preuve de correction. Cependant, cette
notion reste intuitive et elle peut présenter un intérêt en tant que tel.
Nous avons aussi implémenté l’algorithme et effectué des simulations dans
lesquelles l’algorithme s’est bien comporté. Les parties générées lors de nos simu-
lations peuvent être couvertes par des arbres peu profonds (latence faible).
6.1.3 Plan
Ce chapitre est structuré comme suit : la section 6.2 est une section d’état
de l’art présentant les travaux clés. La section 6.3 formalise le modèle ainsi que
l’énoncé du problème. Dans la section 6.4 , nous rappelons l’énoncé du problème
du circuit Hamiltonien pour les grilles hexagonales et nous développons la réduc-
tion depuis ce problème pour montrer la NP-Difficulté du problème général. La
même réduction à quelques détails près peut être utilisée à la fois pour traiter
le cas non-enraciné ainsi que le cas enraciné. La NP-Complétude en découle tri-
vialement, puisqu’il est facile de vérifier une solution en utilisant un algorithme
linéaire. Dans la Section 6.5, nous définissons la sous-classe des graphes q-carré
connexes via deux définitions alternatives (une plus intuitive, l’autre utile à des
fins algorithmiques) et nous montrons leur équivalence. Nous définissons ensuite
un algorithme glouton basé sur des règles pour colorer un graphe une couleur
après l’autre pour le cas non-enraciné. Nous démontrons la terminaison ainsi que
la correction de l’algorithme. Nous argumenterons ensuite sur comment étendre
l’algorithme pour traiter le cas enraciné. La section 6.6 aborde une autre classe
de graphe ( classe des grilles x2 ) pour laquelle nous donnons un algorithme de
partitionnement extrêmement simple (variante non-enracinée). Finalement dans
la section 6.7, nous concluons et nous donnons quelques pistes pour de futurs
travaux.
165
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.3
Modèle
6.3 Modèle
Nous formalisons ici les notions de grilles carrées ainsi que de problèmes de
partitionnement. Nous simplifions l’énoncé en supposant que toutes les grilles
carrées sont plongées dans le plan des couples d’entiers.
Une grille carrée GV = (V, E) est un graphe tel que :
— V ⊂ Z2
— E = {((x1 , y1 ), (x2 , y2 )) ∈ V × V : |x2 − x1 | + |y2 − y1 | = 1}
Chaque sommet est désigné par ses coordonnées dans le plan euclidien, il y
a une arête entre deux sommets soit si la différences des abscisses est 1, soit si
la différence des ordonnées est 1, mais pas les deux en même temps (voisinage
haut-bas-gauche-droite). Nous noterons |GV | = |V | la taille d’une grille carrée.
Par souci de simplicité, nous parlerons simplement de "grille" pour désigner
un graphe grille carrée (nous préciserons par exemple "grille hexagonale" pour
désigner un autre type de grille).
Nous représenterons les graphes grilles ainsi que les sous-graphes induits par
166
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.3
Modèle
des matrices 2D colorés, voir Figure 6.1. Le "rectangle englobant" R(V ) d’une
grille GV est défini comme suit : R(V ) = {(x, y) ∈ V : x1 − 1 ≤ x ≤ x2 + 1 et y3 −
1 ≤ y ≤ y4 + 1} avec (x1 , y1 ), (x2 , y2 ), (x3 , y3 ), (x4 , y4 ) ∈ V , c’est à dire une matrice
pleine contenant V ainsi qu’une bordure extérieure d’épaisseur 1. Le rectangle
englobant permet une représentation matricielle des grilles.
Étant donné un sous ensemble de sommets V 0 ⊆ V d’un graphe (grille) GV =
(V, E), le graphe (V 0 , E 0 ) avec E 0 = E ∩ (V 0 × V 0 ) est le sous-graphe induit de
GV par l’ensemble de sommets V 0 . Évidemment, étant donné une grille GV =
(V, E) ainsi qu’un sous-ensemble de sommets V 0 , le sous-graphe induit (V 0 , E 0 )
est équivalent à la grille GV 0 .
Un graphe (V, E) est connexe si pour chaque couple u, v ∈ V il existe un che-
min les reliant, c’est-à-dire si il existe une séquence de sommets u = v0 , v1 , . . . , vl =
v pour un l ≥ 0 et (vi , vi+1 ) ∈ E pour tout 0 ≤ i < l.
Une partie connexe GV 0 d’une grille GV est un sous-graphe induit connexe de
GV . Une q-partition P d’une grille GV est un ensemble de q parties GVi avec
1 ≤ i ≤ q tel que : V = GV 0 ∈P V 0 et pour tout GVi , GVj ∈ P nous avons que
S
|GV | |GV |
× (1 − r) ≤ |GVi | ≤ × (1 + r)
q q
De la même manière, nous dirons qu’une partie GVi d’une q-partition P d’une
grille GV est r-saturée si et seulement si |GqV | × (1 − r) ≤ |GVi | ≤ |GqV | × (1 + r). Si
|Vi | se trouve en dehors de l’intervalle de saturation [ |GqV | × (1 − r), |GqV | × (1 + r)],
nous dirons respectivement que la partie est (sous/sur)-r-saturée. Lorsqu’il est
clair dans le contexte que nous acceptons les écarts avec un taux de tolérance r,
nous dirons simplement qu’une partie est équilibrée au lieu de dire r-équilibrée,
167
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.4
NP-Difficulté
nous dirons aussi qu’une partie est (sous/sur)-saturée au lieu de dire (sous/sur)-
r-saturée. De même, nous emploierons le terme de "zone" comme synonyme de
"partie".
Le problème du partitionnement r-équilibré en zones connexes (rBCP) est le
problème de trouver, étant donné une grille GV et un nombre q, une partition
r-équilibrée avec q parties connexes. Le problème du partitionnement enraciné r-
équilibré en zones connexes (RrBCP) est le problème de trouver, étant donné une
grille GV et un ensemble de racines R ⊆ V , une partition connexe r-équilibrée,
R-enracinée.
6.4 NP-Difficulté
Dans cette section nous présentons une réduction polynomiale du problème
du cycle Hamiltonien (HCP) sur les grilles hexagonales vers le problème du par-
titionnement enracinés r-équilibrés en zones connexes (rRBCP) sur les grilles
carrées, pour r ≤ 71 . Nous argumenterons ensuite que cette réduction s’applique
aussi à la variante non enracinée du problème (rBCP).
Pour tout ensemble fini de sommets V ⊂ Z2 , nous construisons la grille hexago-
nale HV = (V, E) avec l’ensemble induit d’arêtes E = {((x1 , y1 ), (x2 , y2 )) ∈ V ×V :
(|x2 − x1 | = 1 et |y2 − y1 | = 0) ou (x2 − x1 = 0 et y2 − y1 = 1 et x1 + y1 = 0 mod. 2}.
Nous noterons |HV | := |V | la taille de la grille hexagonale. Un exemple est donné
sur la figure 6.4.
168
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.4
NP-Difficulté
Nous allons introduire ici, étape par étape, quelques-unes des astuces utilisées
dans la réduction.
Considérons une grande région connexe d’une grille carrée, non colorée et
accessible seulement via un seul sommet ou un seul chemin. Une telle région ne
possédera qu’une seule couleur. Un exemple est donné sur la figure 6.5 (en haut
à gauche) : un partitionnement doit nécessairement attribuer une même couleur
à chacune des trois grandes régions extérieures (potentiellement trois couleurs
différentes, mais la même pour chaque). Nous appellerons de telles régions des
réservoirs. À l’inverse, nous appellerons des lignes de sommets de largeur 1 des
chemins.
169
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.4
NP-Difficulté
L’une des bases de la construction est de connecter les réservoirs entre eux en
utilisant des chemins, et de choisir les tailles de ces réservoirs de sorte que le
nombre total de sommets utilisés dans les chemins soit négligeable par rapport à
la taille d’un seul réservoir. Si le taux de tolérance ainsi que la taille des réservoirs
sont choisis judicieusement, alors colorer un réservoir provoquera la saturation
de la partie correspondant à cette couleur, c’est-à-dire qu’une couleur liée à un
réservoir ne peut pas colorer d’autres réservoirs sans sur-saturer sa partie. Par
exemple, sur la figure 6.5 (en bas à gauche), la racine rouge doit nécessairement
colorer le grand réservoir sur la gauche dans tout partitionnement valide, ce qui
amène la couleur proche du seuil de saturation. Par conséquent, le rouge ne peut
pas posséder l’un des deux réservoirs du bas sans sur-saturer.
170
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.4
NP-Difficulté
171
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.4
NP-Difficulté
Figure 6.8 – Construction émulant la grille hexagonale avec une grille carrée
Étant donnée une grille hexagonale (instance du problème HCP), nous construi-
sons une grille carrée ainsi qu’un ensemble de racines (instance du problème
rRBCP). Cette instance du rBCP admettra une solution si et seulement si l’ins-
tance du HCP admet une solution : la grille carrée reproduit la structure de la
grille hexagonale. Une partie avec une couleur spécifique devra correspondre
à un cycle Hamiltonien de la grille hexagonale si il en existe un. Dans le cas
contraire, aucun partitionnement r-équilibré n’existe. Notre construction sera
composée exclusivement de réservoirs et de chemins.
Considérons une macrocellule comme celle de la figure 6.6 (à gauche), une
telle construction est similaire à celle de la figure 6.5 (à droite) avec l’ajout
d’un réservoir supplémentaire au centre. Puisque les dimensions des réservoirs
dépendront des dimensions de la grille hexagonale ainsi que du taux de tolérance
r, il est crucial de pouvoir faire grandir les macrocellules en conséquence. Soit
T × T la taille du rectangle pouvant contenir de telles macrocellules (de telle
sorte que les trois chemins permettant d’entrer soient au centre des côtés du
rectangle), soit ti , tc les dimensions respectives des trois réservoirs internes et
du réservoir central, et soit p le nombre total de sommets dans les chemins (en
dehors des réservoirs) dans une seule macrocellule. Il est simple d’agrandir une
macrocellule de sorte que le nombre de sommets dans les chemins deviennent
négligeable : p croît linéairement avec T , tandis que les dimensions ti , tc croissent
172
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.4
NP-Difficulté
de manière quadratique.
Nous distinguerons un sommet de degré deux dans la grille hexagonale que
nous appellerons racine primaire (il en existe toujours un). En utilisant des co-
pies directes ou en miroir de cette macrocellule pour chaque sommet distinct
de la racine primaire, nous pouvons imiter/ reproduire l’agencement de la grille
hexagonale, comme montré dans la figure 6.8.
Soit m le nombre de sommets dans la grille hexagonale, nous appellerons
famille rouge l’ensemble des m couleurs utilisées pour les racines dans ces macro-
cellules.
Pour ce qui est de la racine primaire (sommet de degré deux dans la grille
hexagonale), nous le remplaçons par une macrocellule spéciale contenant (voir
figure 6.7) : Sur un chemin d’entrée, un réservoir de taille tg ≈ 3 × ( 56 ) × ti appelé
réservoir vert avec une racine verte qui lui est attachée, et, sur l’autre chemin
ti
d’entrée, un réservoir de taille tc ≈ 6m . L’idée pricipale ici est qu’il manque à la
racine verte approximativement 3· 61 ·ti sommets pour être équilibrée (par rapport
à la famille rouge, dans laquelle chaque couleur prend trois réservoirs de taille
ti ), et devra collecter les réservoirs centraux de taille tc de toutes les macrocellules
(m × tc ) pour entrer dans l’intervalle de saturation et devenir r-équilibré, créant
par conséquent un chemin Hamiltonien.
Une construction complète est montrée sur la figure 6.8. Elle correspond à la
grille hexagonale de la figure 6.4.
Figure 6.9 – Si une autre couleur traverse la macrocellule, alors la couleur rouge
force cette couleur a prendre exactement deux chemins d’entrée
parmi les trois. Dans tous les cas, le rouge prendra les trois réservoirs
internes. L’image sur la gauche est un schéma détaillé d’une première
possibilité, les schémas sur la droite représentent de manière simplifiée
les 8 possibilités.
173
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.4
NP-Difficulté
Rappelons que r < 17 . Nous allons maintenant aborder la correction d’une série
d’assertions qui nous permettront de montrer la correction de la réduction.
La figure 6.9 montre une disjonction de cas complète concernant le fait que
les macrocellules appartenant aux couleurs de la famille rouge empêchent la
couleur verte de créer des embranchements (cela correspond aux sommets de
degré 3). Elle démontre le fait suivant.
Lemme 6. Si la couleur verte traverse une macrocellule, alors elle doit occuper
exactement deux des chemins d’entrée.
Dit autrement, la partie verte est contrainte par la famille rouge, qui joue le
rôle d’adversaire, à suivre un chemin Hamiltonien.
Maintenant, montrons comment calculer la taille des réservoirs et des macro-
cellules de sorte que le nombre de sommets dans les chemins soit négligeable
par rapport à la taille d’un seul réservoir, ainsi que le fait que la couleur verte
doive exactement prendre la totalité des réservoirs centraux de taille tc de toutes
les macrocellules (et ainsi traverser chaque macrocellule au moins une fois).
Nous introduisons ici des variables pour spécifier précisément la construction :
— m : Nombre total de sommets de la grille hexagonale,
— n : Nombre total de sommets dans la grille carrée,
— k : facteur d’agrandissement des macrocellules,
— ti : Taille de chacun des trois réservoirs internes de chaque macrocellule,
— tc : Taille du réservoir central de chaque macrocellule (ainsi que celui de la
macrocellule de la racine primaire),
— tg : taille du réservoir attaché à la racine verte dans la macrocellule de la
racine primaire,
— p : Nombre de sommets dans les chemins (sommets non situés dans un
réservoir) pour une macrocellule.
— s= m n
: Seuil de saturation parfaite.
Par définition, nous avons l’intervalle de saturation Is = [s · (1 − r), s · (1 + r)].
Nous disposons de deux sortes de racines (les racines de la famille rouge ainsi
que la racine verte), et de quatre sortes de sommets (les chemins ainsi que les
sommets contenus dans les réservoirs ti , tc , tg ). Cela nous donne trois groupes
d’inéquations à considérer. Rappelons que tg ≈ 3 · ( 56 ) × ti , et que tc ≈ 6m
ti
.
174
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.4
NP-Difficulté
réservoirs entre eux grandit linéairement avec le facteur k tandis que la surface
des réservoirs croît quadratiquement).
tg +(m−1)·tc +mp < s·(1−r) ≤ tg +m·tc et tg +m·tc +m·p < s·(1−r) < tg +ti
(6.3)
175
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.4
NP-Difficulté
s·( 16 − ab )
— tc = m
(−1+12m2 +12m·(−1+ ab )+6· ab )·s
— ti = ms − (tg + m(tc + p)) = 36·(m−1)·m
s( 1 − a )
— p = 2mtc
= 2m 6
2
b
— s = 36 · 71 · 106 · b · (m − 1) · m3
1
− ab
— k = cpp = s · 2·639·m
6
2
Démonstration. Nous effectuons dans les deux sens les réductions polynomiales
entre le problème du HCP et le problème de partitionnement r-équilibré.
Tout partitionnement r-équilibré fournit un cycle Hamiltonien pour l’instance
correspondante du HCP. En effet, la racine verte doit traverser chaque macrocellule
176
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.5
Partitionnement de grilles q-carré connexe
177
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.5
Partitionnement de grilles q-carré connexe
est limité à 4 en général et qui incluent toujours des sommets de degré inférieur
ou égal à 2 (les coins par exemple). De plus, la k-connexité est une propriété glo-
bale d’un graphe qui est difficile à vérifier localement. D’où le besoin d’étudier
une définition alternative.
Dans ce qui suit, nous définissons pour tout q une sous classe des grilles que
nous appelons grilles q-carrés connexes, sous classe pour laquelle il est facile de
vérifier l’appartenance d’une instance et pour laquelle une q-partition équilibrée
en zones connexes existe toujours et est facile à calculer. L’idée est d’avoir des
couloirs suffisamment larges pour que toutes les couleurs puissent traverser. Un
algorithme glouton peut ainsi étendre une partie connexe (depuis une racine)
jusqu’à saturation de celle-ci (possession de |GqV | sommets), tout en maintenant
(q − 1)-carré connexe le graphe de nœuds restant à colorier. Cependant, tandis
qu’il semble évident d’utiliser la notion de "largeur" pour les zones de la grille
formant des "couloirs" rectilignes, les choses sont moins simples pour ce qui est
des angles et des embranchements.
Lemme 8. Soit une grille connexe GV , q-connexe et couverte par des q-carrés avec
q > 1. Alors GV est aussi (q − 1)-connexe.
178
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.5
Partitionnement de grilles q-carré connexe
Lemme 9. Soit une grille connexe et q-connexe GV couverte par des q-carrés.
Alors le graphe induit Sq (V, q) est aussi connexe.
Démonstration. Nous montrons que pour tout couple de carrés sq(x1 , y1, q) et
sq(x2 , y2 , q) dans GV il existe un chemin dans Sq(V, q). La preuve utilise une
induction sur la plus courte distance d entre les paires de sommets (x01 , y10 ) ∈
sq(x1 , y1 , q) et (x02 , y20 ) ∈ sq(x2 , y2 , q) : Si cette distance est nulle, alors les carrés
s’intersectent et la propriété de q-connexion implique qu’il y ait un chemin entre
les deux carrés. Dans le cas contraire, il y a un premier sommet (x03 , y30 ) sur le plus
court chemin allant de (x01 , y10 ) vers (x02 , y20 ) qui n’est pas dans sq(x1 , y1 , q). Puisque
GV est q-carré couverte, il existe sq(x3 , y3 , q) dans VG avec (x03 , y30 ) ∈ sq(x3 , y3 , q).
De plus, à cause de la q-connexité, il existe un chemin allant de sq(x1 , y1 , q) vers
sq(x3 , y3 , q) dans Sq(V, q). D’un autre côté, la distance entre (x03 , y30 ) et (x02 , y20 )
est inférieure à d, ainsi par induction, il existe un chemin allant de sq(x3 , y3 , q)
vers sq(x2 , y2 , q) dans Sq(V, q) et les deux chemins joints connectent sq(x1 , y1 , q) et
sq(x2, y2, q) comme désiré.
Lemme 10. Soit une grille connexe GV couverte par des q-carrés et q−connexe
avec q > 1. Alors chaque (q − 1)-carré dans GV est contenu dans un q-carré de GV .
179
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.5
Partitionnement de grilles q-carré connexe
Lemme 11. : Étant donné une grille connexe GV , les deux conditions qui suivent
sont équivalentes :
— GV est q-carré couverte et q-connexe. (1)
— GV est q-large et satisfait la propriété de q-completion. (2)
Le fait qu’une grille q-carrée connexe puisse contenir des trous requiert une
définition de connexité plus subtile : deux sommets u, v ∈ / V sont proches si et
seulement si leurs distances dans Z2 est au plus 2. Par exemple, deux sommets
sur des positions diagonales sont proches. Un sous-ensemble H ⊆ Z2 \ V est
clos par proximité si et seulement si pour un sommet v ∈ H et un sommet v 0 ∈
Z2 \ V proche de v, alors v 0 ∈ H. L’unique sous-ensemble maximal clos par
proximité H ⊆ Z2 \ V est infini et nous l’appelons l’extérieur de GV . Tout autre
180
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.5
Partitionnement de grilles q-carré connexe
181
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.5
Partitionnement de grilles q-carré connexe
182
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.5
Partitionnement de grilles q-carré connexe
rithme en ignorant les trous, puis relire le texte à nouveau en prenant en compte
la façon dont nous traitons les trous : nous les coupons. Un trou H dans une
grille GV est coupé par la coloration C s’il existe un sommet v ∈ H avec un voisin
dans C. Les sommets d’un trou coupé sont considérés comme en dehors de GV
par rapport à C.
La phase de coloriage commence par un des coins extérieurs (un sommet
v ∈ V possédant deux voisins en dehors de GV ), puis étend une coloration q-
conforme par le biais de trois opérations :
1. Ajouter un sommet v à C, tel que v ∈ V \ C et tel que v dispose d’un voisin
dans C.
2. Ajouter un segment S = S((x, y), a, k) ⊆ V \ C tel que k < q, (x, y) a un
voisin dans C et :
a) soient tous les sommets dans (x + ai, y + (1 − a)i) ont un voisins dans
C ou à l’extérieur de VG et en particulier, S se termine par (x + ak, y +
(1 − a)k) ∈
/ V \ C,
b) soit k = q − 1, et (x + a · k, y + (1 − a) · k) ∈ H pour un trous non coupé
H.
183
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.5
Partitionnement de grilles q-carré connexe
Nous appelons une extension S satisfaisant l’une de ces trois conditions une
extension simple. Notre algorithme décrit précédemment calcule de manière in-
crémentale de telles colorations pour construire une partie. Voir l’algo 1 pour un
pseudo code détaillé. Le simulateur fournit dans la section 6.5.4 constitue une
implémentation de cet algorithme, et il permet de l’expérimenter interactivement
sur différentes topologies. En outre, le simulateur permet de se familiariser avec
les règles de q-carré connexité. En effet, il vérifie en temps réel que la topolo-
gie éditée par l’utilisateur suit les règles. Aussi, à défaut de pouvoir exécuter le
simulateur, une trace d’exécution illustrative est proposée dans la figure 6.11.
184
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.5
Partitionnement de grilles q-carré connexe
u ∈ C, nous appellerons cela une arête colorée, dans le cas où u ∈ H, nous ap-
pellerons cela une arête non-colorée. Les candidats à la frontière de la coloration
(u, v), (u0 , v 0 ) sont connectés si et seulement si u est un voisin de u0 et v est un
voisin de v 0 ou u = u0 et v = (x, y), v 0 = (x0 , y 0 ) satisfont |x − x0 | + |y − y 0 | = 2,
c’est-à-dire qu’ils sont sur des positions diagonales, ou inversement v = v 0 et
u, u0 sont sur des positions diagonales. Graphiquement, des candidats connectés
dans la frontière de la coloration peuvent êtres dessinés sans lever le stylo et
partagent un point commun. Un point d’extension est un candidat à la frontière
colorée (u, v) avec u ∈ C et v le premier sommet d’une extension simple S. Une
frontière colorée est un ensemble connexe de candidats à la frontière colorée. Une
frontière colorée B est prometteuse si :
— elle contient des segments colorés,
— pour toute extension simple S(x, y, a, k) avec (x, y) ayant un voisin coloré
sur la frontière,soit son ajout à C préserve la q-conformité soit il cause un
conflit avec un trou non-coupé ou avec une arête colorée qui est soit sur la
frontière colorée, soit directement connecté à elle.
— Nous sommes alors dans un de ces cas :
1. Elle contient des segments non-colorés S(x, y, a, q − 1) tels que tous les
sommets sont connectés à des candidats à la bordure colorée et tels que
(x − a, y − (1 − a)), (x + a(q − 1), y + (1 − a)(q − 1)) ∈
/ V \ C.
2. Elle ne satisfait pas 6.1, il existe un sommet v ∈ V \ C ayant un voisin
v1 ∈ C et un autre voisin v2 ∈ Z2 \V (un coin avec un côté coloré, l’autre
en dehors de V ), avec (v, v1 ) dans la frontière colorée.
3. Elle ne satisfait pas 6.1 ou 6.2, mais elle contient des arêtes (v, v 0 ) avec
v 0 ∈ Z2 \ V .
4. Elle ne satisfait pas 6.1 ou 6.2 ou 6.3, mais elle contient deux "coins co-
lorés", c’est-à-dire des paires d’arêtes (vi , vi0 ) et (vi , vi00 ), tels que vi ∈ V \C
et vi0 , vi00 ∈ C (coins concaves avec de la couleur sur chaque côté), et tels
qu’il n’existe pas de coins convexes (avec le la couleur sur chaque coté)
entre eux. (De telles paires de coins concaves contiennent naturellement
un segment le long des arêtes entre les deux coins).
185
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.5
Partitionnement de grilles q-carré connexe
186
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.5
Partitionnement de grilles q-carré connexe
conflit avec la q-conformité, il s’agit soit d’un conflit avec la (q − 1)-largeur ou avec
la (q − 1)-complétion. Considérons d’abord le cas d’un conflit avec la (q − 1)-largeur.
Un tel conflit peut concerner les sommets (x, y + q − 2) , (x − k, y) ou (x + k, y)
pour 1 < k < q − 1. Dans le premier cas, puisque GV est q-carré connexe, il est
facile de voir que (x, y + q − 2) ∈ V , et par conséquent, il est dans C. En enlevant
les arêtes ((x, y), (x, y − 1)) et ((x, y + q − 2), (x, y + q − 3)) de la frontière de la
coloration et en conservant un chemin reliant ces deux arêtes et contenant des
arêtes colorés, nous obtenons une frontière de taille réduite et nous affirmons que
celle-ci est prometteuse : par exemple, les deux arêtes retirés sont parallèles et le
chemin effectuant la liaison contient nécessairement des coins concaves (autrement,
nous finirions sur une contradiction avec l’hypothèse 1 qui ne tiendrais plus), et
finalement, étant donné que le reste de la frontière de la coloration est "presque
fermé", un conflit relatif à un point d’extension ne peut se trouver au-delà des deux
arêtes retirés.
Dans le second cas, nous considérons l’extension simple (x − k + 1, y). Celle-ci
ne peut avoir de conflits avec la (q − 1)-largeur, (Autrement nous aurions 1, mais
nous supposons ici que ce n’est pas le cas) et à cause du fait que (x + 1, y − 1) ∈ /
V , nous trouvons qu’un sommet en conflit avec la (q − 1)-complétion doit être
(x − k + q − 1, y + q − 2) ∈ C, nous employons un raisonnement analogue à celui
ci-dessus pour identifier une sous-frontière de la coloration.
Finalement, dans le troisième cas (et en excluant le second cas), le segment
{(x, y), . . . , (x + k − 1, y)} est une extension simple qui ne peut pas introduire un
conflit sur la (q − 1)-largeur et comme avant, si il y a un conflit avec la (q − 1)-
complétion, ce conflit se situera entre l’arête en-dessous (x, y) et une arête colorée.
Là encore, nous effectuons une réduction de la frontière de la coloration.
Dans tous les cas, soit l’extension préserve la q-conformité, soit la frontière réduite
de la coloration est prometteuse et contient par induction une extension préservant
la q-conformité, ce qui s’étend évidemment à la frontière tout entière.
Pour le cas 4, nous supposons (à symétrie près) que les coins (x, y), (x + k, y)
avec (x − 1, y), (x + k + 1, y) ∈ C et (x, y − 1), . . . , (x + k, y − 1) ∈ C. Si ajouter
à C provoque un conflit, cela peut être à cause d’un nœud coloré, dans ce cas
nous utilisons l’induction ci-dessus. Si d’un autre côté, il existe un nœud conflictuel
/ V , alors ce nœud ne peut être dans la frontière de la coloration (hypothèse
v0 ∈
du cas 4), par conséquent il doit faire partie d’un trou non-coupé à la position
(x + q − 1, y + q − 1).
L’extension simple S = (x + q − 1, y), . . . , (x + q − 1, y + q − 2) préserve la q-
conformité. En premier lieu, elle ne peut pas introduire de conflit avec la (q − 1)-
complétion, ni un conflit avec la (q − 1)-width. Observons aussi qu’un trou coupé
est encerclé par un chemin fermé dans V \ C, le couper ne peut pas déconnecter
V \ (C ∪ S). Ce raisonnement récursif de la preuve est illustré dans la figure 6.12
pour le cas q = 4, de gauche à droite : (a) Une coloration partielle et une frontière
prometteuse de la coloration (initialement le contour interne) sont données et une
extension simple possible (cas 3) est montrée en jaune, mais cela induit un conflit
187
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.5
Partitionnement de grilles q-carré connexe
3. Nous négligeons les temps d’accès non-constants à la matrice R, ce qui n’a aucune consé-
quence en pratique.
188
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.5
Partitionnement de grilles q-carré connexe
pour une possible extension simple. Examiner si oui ou non l’extension viole la
q-conformité est cependant une opération locale autour du point d’extension et
peut être réalisée 4 en O(q 2 ). Il faut noter aussi qu’il n’y a aucunement besoin de
tester la connexité de la partie non-colorée après une extension : en effet, chaque
chemin qui traverse l’extension peut être remplacé par un autre chemin qui l’évite :
les contraintes sur les largeurs impliquent cela pour les extensions de type 1,2a,
tandis qu’un trou non-coupé est entouré par un chemin cyclique qui permet aussi
de contourner le segment coupé.
6.5.4 Simulation
6.5.4.1 Usage
Le simulateur permet de tester l’algorithme de partitionnement de grille q-
carré connexes sur des topologies générées aléatoirement ou éditées manuelle-
ment via l’interface.
4. Tandis que les extensions faites par un seul sommet peuvent produire une violation de la
q-largeur ou de la q-complétion, les extensions par un segment S peuvent seulement produire une
violation de la q-largeur.
189
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.5
Partitionnement de grilles q-carré connexe
6.5.4.2 Captures
Nous proposons dans la figure 6.14 un exemple de partition réalisée avec le
simulateur sur une topologie q-carrée connexe.
190
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.6
Famille des grilles ×2
Dans cette section nous évoquons une famille de grilles pour laquelle il est
extrêmement simple de calculer un q-partitionnement en temps linéaire. Nous
appellerons cette famille de grilles carrées la famille des grilles ×2 (prononcer
"grilles fois 2").
Une grille carrée GV fait partie de la famille des grilles ×2 si elle peut être vue
comme un "agrandissement" d’une grille GV 0 avec un facteur 2 : chaque nœud
de V 0 est remplacé dans V par un carré de 2 × 2 nœuds. Nous appellerons GV 0 la
grille ×1 (grille fois 1) associée à GV .
Énoncé plus formellement, GV est une grille ×2 si et seulement si il existe une
grille carré GV 0 telle que :
V = {(x, y) : x = (2x0 ou 2x0 + 1), y = (2y 0 ou 2y 0 + 1) et (x0 , y 0 ) ∈ V 0 }.
Un exemple d’une telle grille est donné dans la figure 6.15.
L’idée pour calculer un q-partitionnement d’une grille ×2 GV , est de d’abord
calculer un arbre couvrant quelconque de GV 0 , la grille ×1 associée à GV . Nous
notons ET0 les arêtes de cet arbre.
Le pourtour de l’arbre couvrant de GV 0 nous indique un cycle Hamiltonien
dans GV . Vu sous un autre angle, les arêtes ET0 ⊆ E 0 de l’arbre couvrant nous
indiquent les arêtes ET ⊆ E à retirer pour ne garder qu’un cycle Hamiltonien.
ET = {(u, v) ∈ E} où :
— u = (2x1 + a(x2 − x1 ), 2y1 + a(y2 − y1 ))
— v = (2x1 + a(x2 − x1 ) + |y2 − y1 |, 2y1 + a(y2 − y1 ) + |x2 − x1 |)
— u0 = (x1 , y1 ), v 0 = (x2 , y2 ), (u0 , v 0 ) ∈ ET0 et a ∈ {1, 2}
Connaissant un cycle Hamiltonien, le partitionnement en q-parties équilibrés
devient trivial : il suffit de découper le cycle séquentiellement en q parties de
191
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.6
Famille des grilles ×2
Figure 6.16 – Toutes les tuiles possibles (modulo rotation) pour obtenir un cycle
Hamiltonien à partir de l’arbre couvrant.
192
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.6
Famille des grilles ×2
6.6.1 Simulation
6.6.2 Usage
Le simulateur permet de tester l’algorithme de partitionnement de grilles ×2
connexes sur des topologies générées aléatoirement ou éditées manuellement
via l’interface.
Contrairement au simulateur de topologies q-carrés connexes, ici l’utilisateur
ne peut pas violer de règles. L’ajout de tuile s’effectue par méta-tuiles de 2 × 2.
6.6.2.1 Captures
Nous proposons dans la figure 6.18 un exemple de partition réalisée avec le
simulateur sur une grille ×2.
193
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.7
Perspectives et travaux futurs
Figure 6.18 – Partition en 7 parties d’une grille ×2 de 150 par 100 tuiles.
194
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.7
Perspectives et travaux futurs
Nous conjecturons que l’algorithme 1 peut être modifié pour résoudre la va-
riante enracinée du BCP comme suit. Dans la variante enracinée, nous commen-
çons avec une grille G ainsi qu’un ensemble de q sommets déjà colorés avec
des couleurs distinctes : ∀1 < i ≤ n, Ci = {vi }, où les Ci désignent les parties
que nous construisons. Ici, nous ne pouvons pas étendre les couleurs l’une après
l’autre de manière gloutonne tout en gardant la q-connexité du sous-graphe res-
tant non-coloriée G \ Ci . En effet, lorsqu’une partie Ci n’est pas saturée, cette
S
Lorsqu’une partie colorée Ci devient saturée, nous pouvons l’enlever puis consi-
dérer récursivement les sous-problèmes sur le sous-graphe G \ Ci , avec les q − 1
parties non-saturées restant toujours connectées au sous-graphe non-coloré qui
lui est (q − 2)-connexe.
Une difficulté importante introduite par le problème enraciné est la possible
émergence de conflits d’accès qui empêcheront de poursuivre le partitionne-
ment. Si ces conflits ne sont pas évités en amont, alors l’algorithme glouton peut
échouer. Comme exemple de conflit simple, il suffit de considérer deux parties
non-saturées Ci et Cj qui toutes les deux ont accès à la partie non colorée du
graphe via le même sommet. Évidemment, une telle coloration ne peut pas être
complétée (voir le conflit entre la couleur rouge et la couleur verte sur l’image
de gauche sur la figure 6.19). Des cas plus généraux peuvent impliquer jusqu’à q
parties lorsque les k parties ont leur unique accès au sous-graphe non-coloré qui
195
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.7
Perspectives et travaux futurs
196
7 Conclusion et perspectives
Dans cette thèse, nous nous sommes intéressés aux grands réseaux de micro-
contrôleurs. Nous nous sommes efforcés de proposer des solutions simples et mi-
nimalistes, tant sur le plan énergétique que sur l’effort d’implémentation, pour
construire, gérer et exploiter de tels grands réseaux. Afin de retranscrire fidèle-
ment cet effort, nous avons suivi pour le manuscrit la même approche intuitive,
visuelle et interactive, axée majoritairement sur la simulation et l’expérimenta-
tion. Nous avons pour cela donné de nombreuses illustrations ainsi qu’un simu-
lateur graphique pour chaque thème abordé.
Le thème central fut celui de la synchronisation, tache primordiale nécessaire
à l’instauration de communications périodiques basse énergie et basse latence.
Pour cela, nous avons proposé Goose Sync, un algorithme minimaliste de syn-
chronisation d’horloges, inspiré du vol en formation des oies sauvages, et ayant
comme propriété de bien passer à l’échelle, en garantissant statistiquement à tout
instant un faible déphasage entre les débuts de périodes de chaque couple de
noeuds voisins. Goose Sync s’est révélé particulièrement utile et robuste au sein
du réseau de dalles lumineuses LED’sChat, entreprise startup issue d’un transfert
de technologies depuis ’Aix-Marseille Université et dans laquelle j’ai contribué ac-
tivement au développement du produit (code embarqué bas niveau, applications
graphiques distribuées). Nous avons étudié Goose Sync à la fois empiriquement
et analytiquement ; cependant une conjecture centrale, bien que validée maintes
fois par l’expérimentation et la simulation, reste à être démontrée pour clôturer
l’analyse théorique.
Nous avons ensuite considéré la problématique du sans-fil. Nous avons fait
fonctionner Goose Sync en sans-fil, et ce malgré les fortes contraintes introduites
par ce médium, en lui ajoutant un cadre nécessaire, le protocole MeeMSyP. Avec
MeeMSyP, nous avons utilisé le phénomène physique d’interférence pour per-
mettre aux noeuds voisins dans le réseaux d’émettre à l’unisson un signal de
synchronisation. De plus, nous y avons adjoint des mécanismes basse énergie de
découverte, de redémarrage et de fusion d’îlots isolés, ce qui fait de MeeMSyP,
une méthode complète et simple pour implémenter des réseaux sans-fil scalables.
Enfin, nous avons étudié la consommation énergétique de MeeMSyP et donnons
un jeu de paramètres permettant d’atteindre un courant moyen de 10µA par
noeud, ce qui permet d’obtenir plusieurs années d’autonomie sur batteries ou en-
core de fonctionner sur cellules solaires, aussi bien en extérieur qu’en intérieur.
L’étude de MeeMSyP a été en grande partie menée sur simulateurs, cependant
nous avons fourni un pseudo-code détaillé permettant une implémentation ra-
197
7 Conclusion et perspectives
198
7 Conclusion et perspectives
pistes à suivre.
Ce dernier paragraphe clôt cet ouvrage. Nous espérons, à défaut d’introduire
des méthodes aux caractéristiques théoriques révolutionnaires, avoir proposé des
solutions utiles aux réalisations concrètes de futurs projets inter-connectant des
milliers de microcontrôleurs.
199
Bibliographie générale
[ASH14] ASHWireless. Choosing between a standard and proprietary wireless
protocol. Rapp. tech. ASHWireless, 2014 (cf. p. 58).
[Bae+18] Mathias Baert, Jen Rossey, Adnan Shahid et al. « The Bluetooth
mesh standard : An overview and experimental evaluation ». In : Sensors
18.8 (2018), p. 2409 (cf. p. 59).
[Bec+98] Ronald Becker, Isabella Lari, Mario Lucertini et al. « Max-min
partitioning of grid graphs into connected components ». In : Networks :
An International Journal 32.2 (1998), p. 115-125 (cf. p. 166).
[CSW07] Frédéric Chataigner, Liliane RB Salgado et Yoshiko Wakabayashi.
« Approximation and inapproximability results on balanced connected
partitions of graphs ». In : (2007) (cf. p. 166).
[Chl96] Janka Chlebikova. « Approximating the maximally balanced connec-
ted partition problem in graphs ». In : Information Processing Letters
60.5 (1996), p. 225-230 (cf. p. 166).
[Chu79] David C Chu. Double vernier time interval measurement using triggered
phase-locked oscillators. US Patent 4,164,648. Août 1979 (cf. p. 105).
[Cil+19] Antonio Cilfone, Luca Davoli, Laura Belli et al. « Wireless mesh
networking : An IoT-oriented perspective survey on relevant technolo-
gies ». In : Future Internet 11.4 (2019), p. 99 (cf. p. 58).
[Cur79] Walter R Curtice. Time interval measurement. US Patent 4,165,459.
Août 1979 (cf. p. 105).
[Cyp19] Cypress. CY8C52LP Family Datasheet, 001-84933. Rapp. tech. Cy-
press, 2019 (cf. p. 139).
[DD20] Francescopaolo Mattioli Della Rocca et Neale Dutton. Method and
apparatus for measuring time of flight. US Patent 10,598,787. Mar. 2020
(cf. p. 106).
[DSH00] Piotr Dudek, Stanislaw Szczepanski et John V Hatfield. « A high-
resolution CMOS time-to-digital converter utilizing a Vernier delay
line ». In : IEEE Journal of Solid-State Circuits 35.2 (2000), p. 240-247
(cf. p. 106).
[DF85] Martin E Dyer et Alan M Frieze. « On the complexity of partitioning
graphs into connected subgraphs ». In : Discrete Applied Mathematics
10.2 (1985), p. 139-153 (cf. p. 166).
200
Bibliographie générale
201
Bibliographie générale
202
Bibliographie générale
203
Bibliographie personnelle
[BNP18] Cédric Bérenger, Peter Niebert et Kévin Perrot. « Balanced
Connected Partitioning of Unweighted Grid Graphs ». In : 43rd Inter-
national Symposium on Mathematical Foundations of Computer Science
(MFCS 2018). Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik. 2018
(cf. p. 163).
[NB18] Peter Niebert et Cédric Bérenger. Déclaration d’invention auprès
de la SATT Sud-Est : mesure précise de délais exploitant le déphasage
entre deux microcontrôleurs. 2018 (cf. p. 99).
[NB19] Peter Niebert et Cédric Bérenger. Déclaration d’invention auprès de
la SATT Sud-Est : localisation exploitant l’onde stationnaire résultant
d’une interférence volontaire entre deux émetteurs 2.4GHz. 2019 (cf.
p. 152).
204