Exercice Liaison série        : Commande d'un objet connecté par une Interface Homme Machine


L’objectif de cet exercice est de réaliser une IHM simple permettant d’envoyer un code de trois chiffres xyv à la carte pour qu’elle d’affiche (actionneur) la diode de coordonnées (x,y) avec l’intensité v.


Les systèmes embarqués sont de nos jours souvent connectés à un réseau local ou à l’Internet ce qui permet

de communiquer avec eux à travers des IHM déportées sur le Web ou un smartphone. On va écrire deux programmes Python : un programme pour l’IHM s’exécutant uniquement sur l’ordinateur et un autre pour le système informatique embarqué qui sera transféré sur la carte.




Dans cette partie, on utilise Mu en mode micro:bit.





Ouvrir le logiciel Mu en mode micro:bit, saisir le programme ci-dessous dans l’éditeur avant de l’enregistrer dans un dossier pertinent sous le nom exo2-microbit.py puis de le transférer sur la carte.



nom du fichier à sauvegarder : serial_microBit.py


from microbit import *


#initialisation de la vitesse de transmission en bauds

uart.init(baudrate=9600)


while True:

    if uart.any():

        msg_bytes=uart.read()

        msg = str(msg_bytes, "utf-8")

        x = int(msg[0])

        y = int(msg[1])

        v = int(msg[2])

        display.set_pixel(x,y,v)

    sleep(500)


    display.clear()





Méthode Communication série côté micro:bit


Le module uart permet de communiquer avec l’ordinateur connecté sur le port série USB.


- uart.init(baudrate=9600) est nécessaire pour fixer la vitesse de transmission en bauds.


- Pour lire un message sur l’entrée série, on vérifie s’il reste des messages à lire dans la file d’attente avec uart.any() puis on lit toute la file de messages avec uart.read() ou le message de tête jusqu’au prochain saut de ligne avec uart.readline(). On peut effacer les caractères invisibles de saut de ligne avec uart.readline().strip()


- Un message reçu msg_bytes est un flux d’octets, de type bytes en Python, avant de le traiter, il faut le convertir en chaîne de caractères avec str(msg_bytes, ’utf-8’).


-Pour transmettre un message msg de type chaîne de caractères, on le convertit en bytes avec

msg_bytes = bytes(msg, ’utf-8’) puis on l’écrit sur la sortie série avec print(msg_bytes).






Dans cette partie, on utilise Mu en mode Python.




  1. Recopier le code suivante puis copier le dans mu



nom du fichier à sauvegarder : serial_python.py


from serial import *

from tkinter import *


port = "COM8"

serie = Serial(port)

serie.baudrate = 9600


def envoie_msg():

        msg = texte_message.get()

        message_bytes = bytes(msg, "utf-8")

        serie.write(message_bytes)


#fenetre principale

ma_fenetre = Tk()

ma_fenetre.title("IHM")


#Création d'un bouton pour envoyer un message

button_message = Button(ma_fenetre, text="Envoyer", command=envoie_msg)

button_message.pack()


#Création d'un champ de saisie d'un message

texte_message = StringVar()

champ_message = Entry(ma_fenetre, textvariable=texte_message, bg="bisque", fg="maroon", width="20")

#on donne le focus au champ de saisie

champ_message.focus_set()

champ_message.pack()


#boucle de capture d'évenements

ma_fenetre.mainloop()





  1. Exécuter le programme en cliquant sur l’icône Lancer, une fenêtre graphique comme ci-dessous s’af- fiche. Écrire 115 dans le champ de saisie puis cliquer sur le bouton envoyer, le pixel de coordonnées (1,1) devrait s’allumer avec une intensité moyenne.


Pour arrêter l’IHM, fermer la fenêtre graphique puis cliquer sur Arrêter dans la barre de menu de Mu.





  1. Revenons sur le code de l’IHM.


La réalisation de l’interface graphique est commentée dans le code, elle s’appuie sur le module tkinter qu’on charge avec from tkinter import *.

La communication série avec la carte micro:bit s’appuie sur le module serial qu’on charge avec


from serial import *.



Méthode Communication série côté ordinateur


Le module serial permet de communiquer avec une carte connectée sur le port série USB.

- serie = Serial(port) permet d’ouvrir une connexion série sur le port de l’ordinateur où la carte est connectée. Sous Windows ce port peut être découvert avec la commande mode depuis la console lancée avec cmd dans la barre de recherche. Si l’accès n’est pas autorisé, il suffit de tester les différentes possibilités : "COM3", "COM4" ou "COM5".

- On commence par fixer la vitesse de transmission serie.baudrate à la même valeur que celle choisie sur la carte.

- Comme sur la carte les messages transmis par communication série sont nécessairement en bytes, ce qui nécessite une conversion entre chaîne de caractères de type str et bytes avant transmission ou après réception.




- On lit un message en bytes sur l’entrée série, avec serie.read() ou serie.readline() si on veut s’arrêter au prochain saut de ligne.

- On écrit un message en bytes sur l’entrée série, avec serie.write(msg_bytes)




Q6.1 : Faites communiquer le programme serial_microbit avec le programme python serial_python. Vous devez utiliser le moniteur série de l'application Arduino pour envoyer/visualiser les trames série.

 Lancer l'application arduino


Choisissez le bon port série avec la liste déroulante présente dans Outils > Ports :


Puis choisissez Outils / Monitur série :




Dans la fenêtre :




Choisissez bien 9600 baud en bas de l'écran et non pas 115200 !!

Vous pouvez écrire dans le bandeau du haut puis utiliser le bouton "Envoyer" pour envoyer un caractère dans le port série.


Les entrées série se font via la fenêtre.



Q6.2 : Modifier le programme de la carte et l’enregistrer sous le nom  exo6Partie2-microbit.py, pour que la carte allume le pixel pendant une seconde la diagonale de diodes de coordonnées (x, x) avec 0 ,x , 4 si on transmet le message "a" par l’IHM ;

Q6.3 : L’autre diagonale de diodes si on transmet le message "b" par l’IHM ;

Q6.4 : Une croix formée des deux diagonales si on transmet le message "c" par l’IHM;

Q6.5 : Proposez une modification d'allumage d'une led à partir d'un message en utilisant le shield Grove Micro:bit, en envoyant le message "l" le lettre L en minuscule.


Faites valider par le professeur 


Créé avec HelpNDoc Personal Edition: Mettez à niveau vos fichiers d'aide et votre flux de travail avec la conversion WinHelp HLP vers CHM de HelpNDoc