SCIENCES DE L'INGENIEUR

Niveau : Première générale, enseignement de spécialité SI

 

D
É
C
O
N
N
E
C
T
É

Tapis de course interactif

1. PRESENTATION DU SYSTEME

Le tapis de course PF790 Interactif de la société PRO-FORM (voir figure ci-dessous) est un système complet de fitness à domicile.

Il intègre des programmes d'entraînements spécifiques :

  • 6 programmes préenregistrés simulant des profils de courses différents ;
  • 4 programmes de contrôle de la fréquence cardiaque ;
  • 2 programmes personnalisables (vitesse du tapis et inclinaison) ;
  • 1 programme de test de forme.

2. Nouvelle fonctionnalité : affichage de la zone de travail cardiaque

L’objectif de cette étude est de compléter l’affichage existant afin de fournir à l’utilisateur des informations supplémentaires.

Durant les programmes de contrôle de la fréquence cardiaque, la matrice à DEL de la console affiche simplement un pic à chaque fois qu’un battement cardiaque est détecté.

Il est envisagé d’indiquer la zone de travail cardiaque par des nouveaux pictogrammes afin que l'utilisateur sache quel type d’exercice il est en train d’effectuer :

  • Un exercice inefficace ;
  • Un exercice de brûlage de graisses ;
  • Un exercice en aérobie (renforcement du système cardiovasculaire) ;
  • Un avertissement lorsque l'utilisateur rentre dans la zone d'anaérobie.

Les différentes zones de travail cardiaque sont définies grâce à 3 seuils (fc1 à fc3) exprimés en battements par minute (bpm). Ces seuils dépendent de l’âge de l’utilisateur, qui est saisi à partir de la console en début d’exercice.

On détermine la fréquence cardiaque maximum en appliquant la relation suivante :

    fcmax = 220-age

    Exemple : pour un utilisateur de 20 ans sa fréquence cardiaque fcmax = 200 bpm

ZoneFréquence cardiaqueType d'effortPictogramme
1inférieur à 55% de fcmax Inefficace
2compris entre 55% et 65% de fcmaxBrûlage de graisses
3compris entre 65% et 85% de fcmaxAérobie
4Supérieur à 85% de fcmaxAnaérobie

Remarque : Si la fréquence cardiaque dépasse le seuil fc3 (zone 4), alors le tapis s’arrête automatiquement afin d’assurer la sécurité de l’utilisateur (non étudié).

compléter le programme ci-dessous permettant de saisir l'âge, puis de calculer les 3 seuils fc1, fc2 et fc3 en remplaçant les ? par un calcul, chacune de ces 3 variables seront des entiers (type int)


			

Pour afficher les différents motifs, le microcontrôleur (µC) va envoyer deux octets sur son interface de sortie, chacun dédiés à la commande des DEL de la matrice.

La matrice est constituée de 70 DEL réparties sur 7 lignes et 10 colonnes.

Pour commander la DEL A, il faut activer sa ligne et sa colonne (soit L1 et C2 du schéma ci-dessus), ce qui nécessite d’utiliser deux sorties du microcontrôleur.

Le schéma de liaison est le suivant :

Remarques :

  • La première colonne C1 et la dernière C10 de l'afficheur ne seront pas reliées au microcontrôleur.
  • GPIO33 et GPIO12 sont les poids forts de l'octet
  • GPIO37 et GPIO11 sont les poids faibles

Pour commander les soties GPIO en même temps, on liste d'un coté le numéro des sorties et de l'autre leurs états logiques correspondants

Exemple pour commander les lignes : GPIO.output([12,13,15,16,18,7,11],[1,0,1,0,1,0,1])

On peut donc déclarer la variable lignes de type list :

lignes=[12,13,15,16,18,7,11]

GPIO12 étant le poids fort donc le premier élément de la liste

Déclarer ci-dessous la variable colonnes de type list ayant comme poids fort GPIO33 :

3. Pictogramme "Inefficace"

Q1. Placez des niveaux logique 1 ou 0 dans le tableau ci-dessous permettant d’activer les colonnes permettant d’obtenir le pictogramme « = »

GPIO33 GPIO32 GPIO35 GPIO31 GPIO36 GPIO38 GPIO40 GPIO37
Colonnes
?
?
?
?
?
?
?
?

En faire de même pour les lignes.

GPIO12 GPIO13 GPIO15 GPIO16 GPIO18 GPIO7 GPIO11
Lignes
?
?
?
?
?
?
?

Q2. Allumer le Raspberry pi, vérifier la présence des fichiers tapisIHM.py et biometre.py dans le dossier documents, sinon télécharger tapis1.py et biometre.py.

Ouvrir le script tapis1.py avec l'application « Thonny » et modifiez-le comme suit :

  • Compléter les variables lignes et colonnes aux lignes 31 et 32 du code ;
  • La fonction eteindre() permet de mettre toutes les lignes et colonnes à l'état logique zéro. Compléter les lignes 15 et 16 du code ;
  • Entrez les valeurs binaires précédées du préfixe 0b, en lignes 42 et 43, permettant de commander l'afficheur pour afficher le pictogramme « = ».

Brancher la matrice LED, exécuter le programme et faire valider le fonctionnement par le professeur.

Reporter vos modifications ci-dessous, permettant de faire fonctionner le programme :

4. Pictogramme "Brûlage de graisses"

Pour afficher les autres pictogrammes, il faut faire défiler les colonnes les unes après les autres très rapidement et l’œil percevra le pictogramme entier.

Regarder la vidéo du multiplexage d'un afficheur 7 segments pour comprendre le principe de programmation :

Q3. Complétez la séquence permettant d’afficher le pictogramme ci-dessus en additionnant les poids lignes et des colonnes sélectionnées.

C2
128
C3
64
C4
32
C5
16
C6
8
C7
4
C8
2
C9
1
Décimal
Colonnes
?
?
?
?
?
?
?
?
L1
64
L2
32
L3
16
L4
8
L5
4
L6
2
L7
1
Décimal
Lignes
?
?
?
?
?
?
?
?
PAUSE
C2 C3 C4 C5 C6 C7 C8 C9 Décimal
Colonnes
?
?
?
?
?
?
?
?
L1 L2 L3 L4 L5 L6 L7 Décimal
Lignes
?
?
?
?
?
?
?
?
PAUSE
C2 C3 C4 C5 C6 C7 C8 C9 Décimal
Colonnes
?
?
?
?
?
?
?
?
L1 L2 L3 L4 L5 L6 L7 Décimal
Lignes
?
?
?
?
?
?
?
?
PAUSE
C2 C3 C4 C5 C6 C7 C8 C9 Décimal
Colonnes
?
?
?
?
?
?
?
?
L1 L2 L3 L4 L5 L6 L7 Décimal
Lignes
?
?
?
?
?
?
?
?
PAUSE
C2 C3 C4 C5 C6 C7 C8 C9 Décimal
Colonnes
?
?
?
?
?
?
?
?
L1 L2 L3 L4 L5 L6 L7 Décimal
Lignes
?
?
?
?
?
?
?
?
PAUSE
C2 C3 C4 C5 C6 C7 C8 C9 Décimal
Colonnes
?
?
?
?
?
?
?
?
L1 L2 L3 L4 L5 L6 L7 Décimal
Lignes
?
?
?
?
?
?
?
?
PAUSE

Q4.Vérifier la présence du fichier tapis1.py dans le dossier documents, sinon télécharger, puis modifier le programme tapis2.py en ajoutant les valeurs décimales des colonnes et lignes, permettant d'afficher le pictogramme « Brûlage des graisses ».

Faire valider le fonctionnement après avoir ajusté la variable t : temps de défilement des colonnes.

Reportez vos modifications ci-dessous : la variable t et la boucle while True :.

Le programme précédent comporte de nombreuses lignes qui pourraient être réduites grâce à une boucle for ainsi que 2 listes cols_flamme et lignes_flamme contenant les octets de chaque ligne et colonne.


		
  • Déclarez ces 2 listes cols_flamme et lignes_flamme après t=0.25.
  • juste après la boucle while True : créer une boucle for permettant de parcourir ces 2 listes afin de réduire le programme du pictogramme de « brûlage de graisses ».

5. Pictogramme "Aérobie"

CODE BINAIRE NATUREL CODE
Hexadécimal
8 4 2 1
0 0 0 0 0
0 0 0 1 1
...
1 0 0 1 9
1 0 1 0 A
1 0 1 1 B
1 1 0 0 C
1 1 0 1 D
1 1 1 0 E
1 1 1 1 F

Q5. Complétez la séquence permettant d’afficher le pictogramme ci-dessus :

C2 C2
8
C3
4
C4
2
C5
1
C6
8
C7
4
C8
2
C9
1
Hexa
Colonnes
?
?
?
?
?
?
?
?
0x
L1
4
L2
2
L3
1
L4
8
L5
4
L6
2
L7
1
Hexa
Lignes
?
?
?
?
?
?
?
?
0x
PAUSE
C3 C2 C3 C4 C5 C6 C7 C8 C9 Hexa
Colonnes
?
?
?
?
?
?
?
?
0x
L1 L2 L3 L4 L5 L6 L7 Hexa
Lignes
?
?
?
?
?
?
?
?
0x
PAUSE
C4 C2 C3 C4 C5 C6 C7 C8 C9 Hexa
Colonnes
?
?
?
?
?
?
?
?
0x
L1 L2 L3 L4 L5 L6 L7 Hexa
Lignes
?
?
?
?
?
?
?
?
0x
PAUSE
C5 C2 C3 C4 C5 C6 C7 C8 C9 Hexa
Colonnes
?
?
?
?
?
?
?
?
0x
L1 L2 L3 L4 L5 L6 L7 Hexa
Lignes
?
?
?
?
?
?
?
?
0x
PAUSE
C6 C2 C3 C4 C5 C6 C7 C8 C9 Hexa
Colonnes
?
?
?
?
?
?
?
?
0x
L1 L2 L3 L4 L5 L6 L7 Hexa
Lignes
?
?
?
?
?
?
?
?
0x
PAUSE
C7 C2 C3 C4 C5 C6 C7 C8 C9 Hexa
Colonnes
?
?
?
?
?
?
?
?
0x
L1 L2 L3 L4 L5 L6 L7 Hexa
Lignes
?
?
?
?
?
?
?
?
0x
PAUSE
C8 C2 C3 C4 C5 C6 C7 C8 C9 Hexa
Colonnes
?
?
?
?
?
?
?
?
0x
L1 L2 L3 L4 L5 L6 L7 Hexa
Lignes
?
?
?
?
?
?
?
?
0x
PAUSE

Q6. Vérifier la présence du fichier tapis3.py dans le dossier documents, sinon télécharger, puis modifier le programme tapis3.py permettant d'afficher le pictogramme représentant un effort « Aérobie » en programmant des valeurs hexadécimales.

Exécuter le programme et faire valider le fonctionnement par le professeur

Reportez vos modifications ci-dessous : la variable t et la boucle while True :.

6. Programme complet

Q7. Vérifier la présence des fichiers tapisIHM.py et biometre.py dans le dossier documents, sinon télécharger tapisIHM.py.

Pour réduire le nombre de variables, nous allons utiliser des listes contenant 2 sous-listes

Exemple :


			
			
			
  • Compléter les lignes 48, 49 et 50 en y ajoutant les valeurs des colonnes et des lignes des pictogrammes des programmes précédents
  • Compléter les lignes 67, 68 et 69 en y ajoutant les calculs des 3 seuils fc1, fc2 et fc3
  • Tester le fonctionnement du programme sur les 3 premières zones
  • Faire valider le fonctionnement par le professeur
  • Effacer l'instruction pass en ligne 80 et implanter le code correspondant à l'agorithme suivant :
  • n = valeur entière du calcul (0.2/t/8)
    pour i variant de 0 à n
        afficher le pictogramme coeur durant t secondes
    éteindre l'afficheur
    attendre 0.2 secondes
  • Faire valider le fonctionnement par le professeur

Compléter le programme ci-dessous avec vos modifications.

Fond : Texte : Tables :