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 :

  1. Allumer ou éteindre une LED présente sur la carte d’acquisition (Nucleo), à partir d’une interface informatique (Python)
  2. Convertir une donnée analogique en donnée numérique sur la carte d’acquisition
  3. 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

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

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
Thème 3 / Interfaçage