Protocoles de communication

Comment deux ordinateurs communiquent-ils ?

Protocole de communication

On peut faire un parallèle avec la communication humaine.Un protocole est un ensemble de règles qui permettent de s'assurer que les informations sont bien comprises. On peut mettre en avant deux extrêmes :

  • conversation humaine structurée
  • messages incohérents, brouhaha

Nous allons ici réaliser la construction d'un protocole de communication basique, ainsi qu'un programme qui nous permettra de l'utiliser pour réaliser un système de chat :
  • envoi de messages globaux
  • envoi de messages personnels
  • création d'un groupe de discussion

Utilisation des cartes micro:bit

Nous allons utiliser les cartes micro:bit pour mettre en pratique une simulation de réseau de communications. Elles nous permettent d'aborder la question avec des simplifications utiles :

  • pas de réseau à configurer
  • communication radio, donc sans fil
  • utilisation de Python

Éditeur micro:bit v3

Après les notebook de Capytale, Thonny, Mu, un nouvel éditeur !

Code source de l'éditeur

L'éditeur est open-source.

Le module radio

Le module radio des cartes micro:bit est très simple d'utilisation. Un exemple de code :

from microbit import *
import radio

radio.on()  # Active la radio
radio.config(channel=10)  # Définit un canal (10 ici)

while True:
    if button_a.was_pressed():
        radio.send("Bonjour !")  # Envoie un message
    message = radio.receive() # Permet de vérifier régulièrement la réception d'un message
    if message:
        print(message)  # Affiche le message reçu dans la console

Explications :

  • le module radio contient des fonctions permettant d'interagir avec la radio de la carte micro:bit
  • la fonction radio.config() permet de configurer la radio
  • la fonction radio.on() permet d'activer la radio
  • la fonction radio.send() permet d'envoyer des données par radio

Communications sans protocole

Dans ce premier exercice, nous allons prendre en mains l'interface de l'éditeur, s'assurer du bon fonctionnement de l'envoi d'un programme sur une carte, et mettre en place notre premier système de chat de discussion.

Consignes

L'objectif est simple :

  • créer un programme permettant de rejoindre le canal 10
  • la carte microbit détecte la pression sur le bouton A - si le bouton A est appuyé, elle demande à l'utilisateur le message à envoyer (fonction input()) - une fois que le résultat de input() a été stocké dans une variable, on envoie le contenu de cette variable avec radio.send() - pour éviter les envois multiples, on peut utiliser immédiatement après radio.send() la fonction sleep(100) qui temporisera le programme - avec radio.receive(), on détecte la réception d'un message, qu'on affichera avec print() dans la console

Ce système montre très rapidement ses limites : un ensemble de messages dont on ne connaît ni l'émetteur ni le destinataire se succèdent, il est impossible de suivre une conversation. L'ensemble correspond à une sorte de bruit de fond inintelligible.

Mise en place d'un protocole

Un protocole de communication nous permettra aisément de pouvoir améliorer nos messages afin d'atteindre notre objectif : un grand forum dans lequel vous pouvez communiquer avec qui vous voulez, en sachant précisément qui vous parle et à qui vous vous adressez.

Il nous faut donc trouver un moyen d'ajouter des informations au simple contenu du message, notamment l'émetteur et le destinataire. Nous devons donc, ensemble, convenir d'un format qui sera commun à tous nos messages, et que nos programmes seront en mesure de traiter : un protocole.

On rappelle quelques fonctions utiles :

  • la fonction split() permet de diviser une chaîne de caractères en une liste de chaînes de caractères. L'argument est le séparateur.
messsage = "Bonjour ! Comment allez-vous ?"
message.split('.') # Donnera une liste : ["Bonjour ", " Comment allez-vous ?"]
  • l'opérateur + permet de concaténer des chaînes de caractères :
auteur = "Mathieu"
message = "Bonjour"
trame = auteur+message
# trame sera égal à "MathieuBonjour"

Amélioration de notre programme

Suite en page 2