Internet des Objets : quelle connexion entre objets ?

| 12 minutes read

L’Internet des Objets (ou IoT / Internet of Things) est un concept en vogue en ce moment. Pour rappel, il s’agit d’équiper de capteurs des objets du quotidien, et de leur donner ensuite une connexion à Internet afin de remonter les informations et de les analyser. Dans un précédent article sur le Spark Core, j’avais évoqué les différentes manières de connecter ces capteurs à Internet. En revanche, je n’avais pas abordé le sujet de la communication entre les capteurs eux-mêmes, ce qui est le sujet abordé dans l’article ci-dessous.  

Petit point introductif

Dans le cas qui nous intéresse, je vais parler de communications entre objets faisant partie d’un même réseau, c’est à dire devant / pouvant directement communiquer entre eux. Pour les communications entre réseaux d’objets connectés, le plus simple étant de passer par Internet (et dans ce cas, voir l’article mentionné précédemment).

 

Autre précisions : la liste des technologies présentées ci-dessous n’est pas exhaustive, mais présente juste les solutions éprouvées et les plus fréquemment utilisées.

 

Comment connecter les objets entre eux ?

Comment connecter les objets entre eux ?

 

À l’ancienne, avec un (ou plusieurs) fils à la patte

Tout d’abord, évoquons le domaine des solutions qui ne viennent pas forcément à l’esprit, à savoir les solutions filaires. En effet, dans certains cas, il n’est pas nécessaire de sortir l’artillerie lourde de la solution sans fil qui participe à l’encombrement du spectre radio, mais on peut se contenter de solutions qui ont fait leurs preuves par le passé, et continuent encore actuellement.

 

Il est bien entendu que ce type de solution ne fonctionne que dans le cas d’objets immobiles les uns par rapport aux autres (mais rien n’empêche que l’ensemble soit mouvant).

 

Donc, les différentes solutions possibles sont :

 

Liaison série

Cette liaison filaire fait un peu figure d’ancêtre. Elle a le mérite d’être une solution éprouvée et universelle, même si elle souffre de quelques défauts. Les débits offerts par une liaison série peuvent atteindre plusieurs mégabits par seconde. En revanche, c’est une liaison point à point uniquement : un lien série ne peut relier que deux périphériques uniquement. Si on veut faire communiquer plusieurs objets entre eux, il est nécessaire de prévoir plusieurs connexions séries et de chainer les objets, le fonctionnement étant : je reçois une info sur ma première interface série, je la retransmets telle quelle sur ma deuxième interface série (quitte à imaginer un protocole logiciel permettant d’adresser un périphérique en particulier).

 

Une liaison série nécessite 3 fils :

  • TX (transmission), connecté au RX de l’autre périphérique.
  • RX (réception), connecté au TX de l’autre périphérique.
  • Masse, tous les périphériques connectés en filaire devant avoir une masse commune.

 

Liaison I2C

La liaison I2C est une liaison en bus, c’est à dire que tous les périphériques sont chainés les uns aux autres, avec un périphérique maitre et un à plusieurs périphériques esclaves. Le périphérique maitre initie la communication avec un esclave donné, et les esclaves ne peuvent pas communiquer entre eux. Dans ce cas, il est nécessaire de passer par le maitre (et donc imaginer le protocole logiciel nécessaire pour échanger des informations entre esclaves). Les débits atteints par un bus I2C peuvent être au maximum de 1 Mb/s, mais les versions les plus souvent utilisées n’autorisent des débits que de 100 kb/s ou 400 kb/s.

 

Une liaison I2C nécessite 3 fils :

  • SCL : le signal d’horloge, permettant de synchroniser tous les périphériques sur le bus.
  • SDA : le signal de données
  • Masse, tous les périphériques connectés en filaire devant avoir une masse commune.

 

Liaison 1-Wire

La liaison 1-Wire est elle aussi une liaison en bus, avec plusieurs périphériques (un maitre et des esclaves) chainés les uns aux autres. C’est une liaison moins chère qu’I2C, mais qui propose des débits plus réduits (jusqu’à 16 kb/s). Là aussi, il n’est pas possible de faire communiquer directement plusieurs esclaves entre eux.

 

Une liaison 1-Wire nécessite 2 fils :

  • Données : le signal de données
  • Masse, tous les objets connectés en filaire devant avoir une masse commune.

 

Autres liaisons filaires

Je n’ai pas évoqué d’autres liaisons filaires possibles, comme SPI, USB, CAN ou Ethernet. Certaines sont surdimensionnées par rapport au besoin, tandis que d’autres nécessitent des contrôleurs plus coûteux.

 

Par la voie des airs

Il y a des cas où les connexions filaires ne sont pas utilisables, par exemple avec des objets mobiles les uns par rapport aux autres, ou bien parce que les distances sont trop grandes, etc. Dans ce cas, il ne reste plus que les solutions radios, et là aussi plusieurs possibilités.

 

315 / 433 / 434 MHz

Une solution bon marché à mettre en œuvre pour interconnecter des objets est d’utiliser un émetteur / récepteur sur la bande des 315, 433 ou 434 MHz. Le gros avantage de cette bande de fréquences est qu’elle est libre (en terme d’autorisation d’exploitation). Le gros inconvénient de cette bande de fréquences est qu’elle est libre, donc encombrée (pensez télécommandes de portail, stations météo domestiques sans fil, radio-amateurs, jouets, baby-phones, etc). De fait, il est possible que vos communications entre objets soient noyées dans un brouillard radio et que les messages envoyés n’arrivent jamais. La méthode habituelle avec ce type de communication est d’envoyer une salve de messages identiques, en espérant qu’au moins un arrive à destination, et laisser l’objet récepteur se débrouiller avec les éventuels doublons reçus.

 

Autre point à connaitre avec cette technologie, c’est qu’il n’y a pas de notion maitre / esclave (tout le monde peut communiquer avec tout le monde), et que les communications sont de type broadcast. Il n’y a pas d’adressage, et un message envoyé par un objet est reçu par tous ceux qui sont à portée. C’est à vous de définir dans vos messages un moyen d’adresser un objet en particulier si nécessaire.

 

D’un point de vue pratique, il suffit d’équiper chaque objet à connecter d’un module émetteur et d’un module récepteur. En plus de l’alimentation, il n’y a qu’un câble à brancher entre l’émetteur / récepteur et l’objet à connecter. L’antenne pour chacun des modules est un simple bout de câble électrique de seize centimètres de long. D’un point de vue logiciel, il existe de nombreuses implémentations existantes, la plus connue étant VirtualWire pour Arduino.

 

Pour info, c’est cette technologie que j’ai utilisé pour relier un Raspberry Pi (en émetteur) et trois Arduino (en récepteurs) dans le cadre du projet artistique Stochastic d’Annlor Codina, développé au sein d’ekito.

 

Résumé :

  • Portée : jusqu’à une centaine de mètres, en fonction de l’antenne et du débit souhaité
  • Débit : jusqu’à 4,8 kb/s en fonction de la distance
  • Plus : bon marché, simple à mettre en œuvre, communications possibles entre tout le monde
  • Moins : bande de fréquence encombrée, communications publiques, faibles débits

 

Bluetooth

Je vais aborder dans cette section le cas du Bluetooth « standard ». Pour sa version basse consommation, voir la section suivante. Le Bluetooth est un protocole radio, de type maitre / esclave, opérant sur la bande des 2,4 GHz. Un maitre peut se connecter à plusieurs esclaves et communiquer avec eux, mais les esclaves ne peuvent communiquer entre eux directement. De plus un esclave peut être connecté à plusieurs maitres, mais pas plusieurs maitres entre eux.

 

Un des points particuliers du Bluetooth est la notion d’appairage entre un maitre et ses esclaves, ce qui exclut une connexion transparente entre deux objets, et donc nécessite une pré-configuration avant d’intégrer un nouvel objet à l’ensemble. Enfin, le nombre d’esclaves actifs par maitre est limité à sept.

 

Résumé :

  • Portée : une dizaine de mètres, en fonction du débit souhaité (maximum 100m sur des débits très faibles)
  • Débit : jusqu’à 3 Mb/s en fonction de la distance et de la version Bluetooth utilisée (1 Mb/s en mode standard, 3 Mb/s en mode EDR)
  • Plus : commun, relativement bon marché, débits corrects
  • Moins : faible portée, notion d’appairage, maximum sept esclaves actifs par maitre, pas de communications directes entre esclaves

 

BLE

BLE, pour Bluetooth Low Energy, est une sous-version de Bluetooth, bien qu’incompatible avec cette dernière. Le but de BLE est de permettre des communications entre objets avec des débits et une portée similaires à la norme Bluetooth « standard », tout en ayant une consommation nettement moindre. La topologie reste la même qu’en Bluetooth, à savoir un maitre avec plusieurs esclaves (ici un serveur avec plusieurs clients).

 

Le principal avantage de BLE est que la notion d’appairage disparait : le client (exemple un smartphone) va chercher un serveur avec des caractéristiques données (exemple un capteur de température), s’y connecter, émettre un requête et attendre la réponse, et éventuellement se déconnecter. En revanche, un serveur ne peut pas initier de son propre chef une communication vers un client.

 

Résumé :

  • Portée : une dizaine de mètres, en fonction du débit souhaité (maximum 100m sur des débits très faibles)
  • Débit : jusqu’à 1 Mb/s en fonction de la distance
  • Plus : faible consommation, plus d’appairage nécessaire, bon marché
  • Moins : faible portée, communication client / serveur assez particulière, pas de communications directes entre clients

 

WIFI

Est-il bien nécessaire d’expliquer ce qu’est le WIFI ? Il s’agit d’une communication réseau opérant dans la bande des 2,4 GHz ou 5 GHz. D’un point de vue communications entres objets, le réseau WIFI souffre de la nécessité de passer par un point d’accès (soit un vrai point d’accès dédié, soit un des objets se comportant comme tel), ce qui complexifie l’entrée d’un nouvel objet dans l’ensemble des objets déjà présents (configuration nécessaire du réseau à utiliser).

 

De plus, les contrôleurs WIFI sont extrêmement gourmands en énergie pendant les phases d’émission.

 

Résumé :

  • Portée : une centaine de mètres, en fonction du débit et de l’antenne utilisée
  • Débit : jusqu’à 1200 Mb/s en fonction de la norme WIFI utilisée, du nombre d’antennes, etc. Dans le cas des objets connectés, on travaille plutôt en mode 802.11g, soit 54 Mb/s maximum.
  • Plus : universel, bons débits, bonne portée
  • Moins : phase de configuration, consommation

 

ZigBee

ZigBee est un protocole de communication opérant (en Europe) dans la bande des 2,4 GHz ou 868 Mhz. Le but de ce protocole est de permettre des débits réduits, une faible consommation énergétique et de longues portées, soit en vue directe soit par l’utilisation d’autres modules ZigBee intermédaires (réseau de type mesh).

 

Les réseaux ZigBee sont entièrement décentralisés, ce qui permet une plus grande résilience à la perte d’un nœud intermédiaire.

 

En revanche, la grande souplesse de ce type de réseau implique une configuration inversement compliquée.

 

Module ZigBee / XBee

Module ZigBee / XBee

 

Résumé :

  • Portée : une centaine de mètres en vue directe, plusieurs kilomètres via le maillage réseau (ou en vue directe avec une antenne à haut gain)
  • Débit : 250 kb/s
  • Plus : réseau mesh, bonne portée, faible coût
  • Moins : configuration initiale, débit moyen

 

2,4 GHz en général

Comme la bande des 2,4 GHz n’est qu’un support pour la transmission des messages, il est possible de l’utiliser avec une infinité de protocoles. En voici deux exemples propriétaires, initiés par la société Nordic Semiconductor.

 

nRF24L01

Cet émetteur / récepteur radio est un peu la version 2,4 GHz des modules en 433 MHz. La différence est que les débits sont plus élevés (entre 250 kb/s et 2 Mb/s), et qu’il est possible de s’adresser à un périphérique en particulier.

 

Module nRF24L01

Module nRF24L01

 

Gazell

C’est un réseau en typologie étoilée, avec un maitre (appelé hôte) et au plus huit esclaves (appelés périphériques). Chaque périphérique ne peut communiquer qu’avec l’hôte (pas de communications entre périphériques), et l’hôte ne peut pas initier de son propre chef une communication vers un périphérique.

 

Notes sur la bande des 2,4 GHz

Concernant la bande des 2,4 GHz, il faut savoir que son utilisation n’est pas entièrement libre, et que des normes d’émission ont été définies (canaux utilisables, niveaux d’émissions). Histoire de bien simplifier les choses, ces normes varient en fonction des pays.

 

Ci-dessous les limites d’émission telles que définies en France :

  • La bande 2 400-2 454 MHz est utilisable à l’intérieur des bâtiments comme à l’extérieur avec une puissance inférieure à 100 milliwatts (mW) ;
  • La bande 2 454-2 483,5 MHz est utilisable à l’intérieur des bâtiments avec une puissance inférieure à 100 mW et à l’extérieur des bâtiments avec une puissance inférieure à 10 mW. Sur les propriétés privées, cette puissance peut atteindre 100 mW à l’extérieur avec une autorisation du ministère de la Défense

 

Il ne faut pas oublier que la puissance d’émission impacte directement la portée de l’émetteur. Cette portée peut tout de même être améliorée par l’utilisation d’antennes à haut gain et / ou directionnelles.

Arnaud Boudou Author: Arnaud Boudou

Développeur Java et mobile (iOS) ; enthousiaste des TIC ; photographe amateur (un jour, peut-être…).

Mes hashtags : #j2ee #objc #raspberrypi #inneedforgadgetry

@boudouarnaud sur Twitter

Like it?  Share  it!

Share Button