HomeTortue graphiqueGPanelGameGrid WebTigerPython
 Python - Online
bluetooth
Deutsch   English   Français   

7. COMMUNICATION BLUETOOTH

 

 

TU APPRENDRAS ICI...

 

comment deux ordinateurs peuvent échanger des informations via Bluetooth.

 

 

COMMUNICATION SANS FIL

 

Lors de la communication entre deux micro:bits (également appelés nœuds), chaque nœud est à la fois un émetteur et un récepteur. Tout d'abord, les deux nœuds activent leur dispositif d'émission et de réception avec radio.on(). Une liaison radio sans fil est ainsi établie.

Ensuite, chaque nœud peut envoyer un message (sous forme de chaîne de caractères) à l'autre nœud avec radio.send(msg). Le message reçu est d'abord stocké dans un tampon de réception (buffer), comme dans une file d'attente. Avec radio.receive(), tu récupères le message le plus ancien, qui est alors supprimé du tampon.

Le nœud A et le nœud B ont appelé radio.on().



Le nœud A a appelé send('guten').



Le nœud A a appelé send(Tag')



Le nœud B a appelé msg = receive(). La variable msg contient 'guten'.

 

 

EXAMPLES

 

Avec une autre personne (qui dispose d'un deuxième micro:bit), tu établis une communication sans fil afin d'échanger des informations à l'aide de points et de traits (comme en code Morse). Lorsque tu appuies sur le bouton A d'un micro:bit, la LED centrale de l'écran de l'autre micro:bit s'allume pendant ½ seconde (comme un point). Lorsque tu appuies sur le bouton B, trois LED s'allument (comme un trait).

 
Node A
 
Node B
 
 



 
   

La partie centrale du programme consiste en une boucle infinie dans laquelle l'envoi, puis la réception des messages sont gérés.

Lorsque tu appuies sur le bouton A, tu transmets le message "p" (abréviation de "point"). Lorsque tu appuies sur le bouton B, tu transmets le message "d" (abréviation de "dash", qui signifie trait en anglais).

Ensuite, avec receive(), tu récupères le message le plus ancien dans la file d'attente. (Si celle-ci est vide, tu obtiens la valeur spéciale None.) Selon que tu as reçu "p" ou "d", tu exécutes l'action correspondante.

Le programme suivant doit être exécuté sur les deux micro:bits.

Programme:

import radio
from microbit import *

point = Image('00000:00000:00900:00000:00000')
dash = Image('00000:00000:09990:00000:00000')

def draw(img):
    display.show(img)
    sleep(500)
    display.clear()
    sleep(500)

radio.on()
while True:
    if button_a.was_pressed():
        radio.send("p")
    elif button_b.was_pressed():
        radio.send("d")
    rec = radio.receive()
    if rec != None:
        if rec == "p":
            draw(point)
        elif rec == "d":
            draw(dash)
    sleep(10)
►Copy to clipboard

Les véritables stations Morse utilisent presque toujours des sons courts et longs. Pour cela, tu dois brancher un casque (ou un haut-parleur actif, comme expliqué dans le chapitre Sound). Ton programme doit maintenant activer un son sur le micro:bit récepteur tant que le bouton A de l'émetteur est maintenu enfoncé. Dès que tu appuies sur le bouton, tu envoies au récepteur le message "d" (pour "down", enfoncé). Lorsque tu relâches le bouton, tu envoies le message "u" (pour "up", relâché).

Pour cela, tu dois introduire une variable booléenne down qui permet de mémoriser si le bouton est enfoncé ou relâché. Renseigne-toi sur le code Morse et essaie d'échanger quelques messages courts (par exemple "SOS").

 

 

À RETENIR...

 

l'émetteur envoie un message avec send(msg). Les messages reçus sont stockés successivement dans le tampon de réception jusqu'à ce que le récepteur récupère le plus ancien avec msg = receive().

 

 

EXERCICES À RÉSOUDRE

 

 

1.

Modifie le programme de l'exemple de manière à ce que des points soient envoyés en continu tant que le bouton A est maintenu enfoncé, et des traits lorsque le bouton B est maintenu enfoncé (les traits doivent durer trois fois plus longtemps que les points).


2.
a) Écris un programme qui transmet l'inclinaison actuelle du micro:bit (selon un axe) à un nœud récepteur, qui affiche la valeur dans le terminal.

b) Affiche la valeur reçue sur l'écran du micro:bit récepteur (en la convertissant en un nombre compris entre 0 et 9).