Ressources S5 Modalités S5 Objectifs pédagogiques S5
Dans ce troisième thème, vous allez développer une application informatique permettant de piloter une carte d’acquisition externe (ici carte Nucleo) et d’afficher des informations collectées par celle-ci.
Vous verrez également la démarche à utiliser dans le développement d’application d’interfaçage. En particulier, on s’intéressera aux différentes couches nécessaires à la bonne transmission d’informatique numérique, à travers ici une liaison série “simple”.

Cahier des charges
Le système devra pouvoir :
- Allumer ou éteindre une LED présente sur la carte d’acquisition (Nucleo), à partir d’une interface informatique (Python)
- Convertir une donnée analogique en donnée numérique sur la carte d’acquisition
- Récupérer l’information sur une application informatique et l’afficher
Le traitement numérique devra être réalisé à l’aide d’une carte Nucléo L476RG.
Etapes
Mission 1 / Programme de base de la carte d’acquisition
Dans un premier temps, on souhaite réaliser un programme pour la carte d’acquisition qui exécute les commandes suivantes reçues selon un protocole série (RS232) :
- caractère ‘A’ : allumer la LED présente sur la carte d’acquisition
- caractère ‘E’ : éteindre la LED
Afin de tester le bon fonctionnement du programme embarqué, on utilisera un logiciel de type TeraTerm qui permet de transmettre des informations sur une liaison série.
Ressources
- Tutoriels en ligne sur les cartes Nucléo, et plus particulièrement :
Mission 2 / Script Python de test
A terme, on souhaite pouvoir interfacer la carte d’acquisition à un logiciel “fait maison” en Python. Avant se lancer dans la conception d’une interface graphique, il est intéressant de réaliser un script de test des communications entre le PC et la carte d’acquisition.
Pour cela, nous allons nous intéresser à la bibliothèque SupOpNumTools.drivers.SerialConnect écrite pour configurer et piloter une liaison série à partir de Python. Cette bibliothèque est basée sur le module pySerial.
Construire une application en console sous Python permettant de :
- Paramétrer une liaison RS232 avec la carte Nucleo (sur le bon port de communication)
- Créer cette liaison
- Transmettre les instructions précédentes
Ressources
- Tutoriels en ligne sur les cartes Nucléo, et plus particulièrement :
Mission 3 / Application graphique
Afin d’améliorer l’expérience utilisateur du système, nous vous proposons d’ajouter une interface graphique réalisée à partir de la bibliothèque PyQt6.
A partir de l’application fournie (LIEN VERS FICHIER .py), qui se base sur la bibliothèque vue dans la mission 2, préciser le rôle des différents éléments graphiques et leur interactions.
Mission 4 / Affichage de données analogiques / Partie matérielle
On souhaite à présent ajouter la possibilité de transférer et afficher une donnée provenant d’un des convertisseurs analogique-numérique de la carte Nucléo (qui pourrait correspondre à la conversion d’une donnée provenant d’un capteur). Cette donnée sera un entier codé sur 12 bits.
On veut ajouter une instruction (transmise par liaison série) qui lorsqu’elle est reçue par la carte Nucléo, cette dernière lance la conversion et renvoie la donnée par la liaison série.
Tester cette nouvelle fonctionnalité à l’aide du logiciel TeraTerm.
Mission 5 / Affichage de données analogiques / Script Python
Compléter l’application console de la Mission 2 en ajoutant la possibilité de lancer une conversion et d’afficher la valeur obtenue.
Mission 6 / Affichage de données analogiques / Application graphique
En vous basant sur l’application graphique Python (LIEN VERS APPLI), ajouter les fonctionnalités permettant d’afficher la nouvelle tension à chaque appui sur le bouton d’action.
Mission 7 / Affichage d’un graphique de données (BONUS)
Il est également possible d’automatiser la tâche et de réaliser l’affichage d’un graphique de cette donnée en fonction du temps.
Pour cela, il existe deux possibilités :
- Méthode 1 : c’est l’application Python (graphique) par l’intermédiaire d’un objet QTimer (PyQt6) qui demande une nouvelle mesure à la carte d’acquisition et l’ajoute au graphique existant
- Méthode 2 : c’est la carte d’acquisition qui fait l’acquisition régulière d’un nombre fini de points et les transmet par la suite à l’application Python pour qu’elle les affiche
D’après vous, quels sont les avantages et les inconvénients de chacune des méthodes précédentes ?
Essayer d’implémenter celle qui vous parait la plus pertinente.
Vers les projets
- Piloter un moteur pas à pas : Vision industrielle, Banc optique…
- paramétrer la direction, la vitesse
- avancer, reculer, stopper
- avancer d’un pas, avancer d’une distance particulière
- Piloter un servomoteur : Vision industrielle, Banc optique, Diagramme rayonnement…
- tourner d’un certain angle
- Collecter des informations de capteurs / de photodiodes : Harpe Laser, Banc optique (focus, focale…), Robots
- lancer la conversion
- récupérer les données et les afficher
- Collecter des données d’une caméra : Vision industrielle, Spectromètre, Diffraction…
- Piloter un dispositif à distance : Robot