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.
from microbit import *
uart.init(baudrate=9600)
while True:
if uart.any():
#à compléter
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.
from serial import *
from tkinter import *
#port série à découvrir en ligne de commande avec mode
port = "COM3"
serie = Serial(port)
#même vitesse de transmission que sur la carte
serie.baudrate = 9600
def envoie_message():
"""Fonction d'envoi"""
msg = texte_message.get()
message_bytes = bytes(msg, "utf-8")
serie.write(message_bytes)
# Fenêtre 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_message)
#positionnement du bouton
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()
#positionnement du champ
champ_message.pack()
#boucle de capture d'événements
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.
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.