Exercice : Acquisition des données d'un système embarqué par une IHM

Réalisation du système embarqué

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

Question

Dans un nouveau fichier, compléter le programme ci-dessous pour qu'il envoie sur la sortie série la valeur capturée par accelerometer.get_x() si le caractère "c" est reçu sur l'entrée série.

L'enregistrer sous le nom acquisition_mb.py.

1
from microbit import *
2
3
uart.init(baudrate=9600)
4
5
while True:
6
    if uart.any():
7
        #à compléter
8
        
9
    sleep(1000)

Enregistrer puis transférer le programme sur la carte.

Indice

Vous pouvez vous inspirer du travail fait pour IHM pour interagir entre un ordinateur et une carte Micro:bit

Réalisation de l'IHM

Dans cette partie, on utilise Mu en mode Python.

Recopier le programme dont le code est donné ci-dessous et l'enregistrer dans un dossier pertinent.

1
from serial import *
2
from tkinter import *
3
4
#port série à découvrir en ligne de commande avec mode
5
port = "COM3"
6
serie = Serial(port)
7
#même vitesse de transmission que sur la carte
8
serie.baudrate = 9600
9
10
def envoie_message():
11
    """Fonction d'envoi"""
12
    msg = texte_message.get()
13
    message_bytes = bytes(msg, "utf-8")
14
    serie.write(message_bytes)
15
16
# Fenêtre principale
17
ma_fenetre = Tk()
18
ma_fenetre.title("IHM")
19
20
# Création d'un bouton pour envoyer un message
21
button_message = Button(ma_fenetre, text ="Envoyer", command = envoie_message)
22
23
#positionnement du bouton
24
button_message.pack()
25
26
# Création d'un champ de saisie d'un message
27
texte_message = StringVar()
28
champ_message = Entry(ma_fenetre, textvariable= texte_message, bg ="bisque", fg="maroon", width="20")
29
30
#on donne le focus au champ de saisie
31
champ_message.focus_set()
32
33
#positionnement du champ
34
champ_message.pack()
35
36
#boucle de capture d'événements
37
ma_fenetre.mainloop()

L'enregistrer sous le nom acquisition_pc.py.

Exécuter le programme en cliquant sur l'icône Lancer, une fenêtre graphique comme ci-dessous s'affiche.

Vérifier qu'un clic que le bouton capturer permet bien d'afficher la valeur souhaitée dans l'IHM.

Incliner la carte pour faire varier cette valeur.

Pour aller plus loin

On souhaite connaître "à distance" dans quelle direction se dirige la personne équipée du capteur de la micro:bit.

Question

En mode micro:bit, modifier le programme et l'enregistrer sous le nom acquisitionp2_mb.py., pour que la carte transmette sur sa sortie série un caractère différent selon l'angle compass.heading() avec le nord magnétique mesuré par son capteur boussole :

  • "N" pour Nord si l'angle en degrés est supérieur à 315 ou inférieur à 45 ;

  • "E" pour Est si l'angle est entre 45 et 135 ;

  • "S" pour Sud si l'angle est entre 135 et 225 ;

  • "O" pour Ouest sinon.

Indice

Vous pouvez vous aider du travail fait dans l'activité Boussole.

Question

En mode Python, lancer l'IHM programmée précédemment acquisition_pc.py et vérifier que les directions transmises par la carte sont bien affichées. Adapter l'affichage.