TP4 : Ravoux avec pupitre (Multiprocessus et signaux)


Mise en situation
Le travail de ce TP se déroule seul.
Temps alloué : 7h
Dans un premier temps la programmation se fait sur Arduino Due puis, la programmation se fait directement sur la carte Raspberry avec geany (gcc)
|
Objectif
- Prise en main du Ravoux
- Programmation du multiprocessus et envoi de signaux
|
Pré requis
Programmation C (1er année)
Aide C : Référence
|
Travail demandé
Algorithme de l'application.
Un listing du code source commenté
Démonstration au professeur de la progression.
Une vidéo commentée de la démonstration
|
Critères d’évaluation
Clarté de l’ algorithme, lisibilité du code, exécutable opérationnel.
|
But :
Le système Ravoux possède une platine de commande :

A l’aide du
TP3, mettre en œuvre un deuxième processus supervisant les boutons Marche/Arrêt et la lampe Marche.
Programmation sur Arduino |
Dans un premier temps, le programme sera simulé sur une Arduino Due. Le bilan entrées.sorties est le suivant :
Entrées |
sorties |
B1/B2/Marche/Arrêt |
T3/Lampe marche/Lampe arrêt |
Les entrées seront simulées par des interrupteurs
Les sorties seront simulées par des leds
- Faire un schéma électronique de votre câblage
- Le processus (identique au TP3) démarre quand on appuie sur le bouton marche (Lampe marche s'allume) et se termine quand on appuie sur le bouton Arrêt (Lampe arrêt s'allume)
Programmation sur Raspberry |
Enoncé :
- Le processus père crée les 2 processus et se met en attente de fin de programme.
- Le processus pupitre attend l’action sur le bouton Marche, allume la lampe Marche, envoie un signal d’action au 2em fils et se met en attente (active) sur le bouton Arrêt. Quand celui-ci est actionné, envoie un 2em signal au processus tapis et revient en attente sur le bouton Marche.
- Le processus tapis gère le tapis quand il reçoit le signal Marche.
- Met en marche le tapis.
- Attends un pot grâce au capteur B1.
- Stoppe le moteur tapis quand B2 est actionné pendant 5s simulant le remplissage du pot et redémarre le tapis.
- Quand il reçoit un signal du processus pupitre, arrête le moteur et revient au début de l’algorithme.
Déroulement du TP :
Utiliser une Raspberry en local et des interrupteur/led avant de tester sur le Ravoux.
- Créer le 1er prg père qui crée les 2 fils (Attention, un seul père. Attention à l’ordre pour passage de paramètres) qui affiche juste « Je suis fils N° » toutes les secondes (sleep). Boucle infinie.
- Faire attendre le père sur une entrée clavier, quand le père reçoit le caractère Q, il tue ses 2 fils par envoi d’un signal et le programme se termine.
- Enlever le sleep du filsTapis, et remplacer le par une pause. Le filsTapis sera réveillé par un signal envoyé par le filsPupitre toutes les secondes.
FilsPupitre FilsTapis
signal...
while(1) while(1)
{ … { ...
sleep(1) ; pause();
kill… allume ou éteint une led
} }
- Remplacer le sleep par la gestion du bouton et lampe Marche.
- Ecrire l’algorithme de remplissage de pots.
- Gérer le bouton d’Arrêt.
- Une fois votre programme testé en local, testez le sur le Ravoux
Programmation sur Raspberry suite |
Nous aimerions connaître l'état du Ravoux et de permettre de le sauvegarder. Pour cela, nous allons dédier un nouveau processus fils (affichage) qui communiquera avec les deux autres fils (tapis et pupitre) avec des tubes. A chaque changement d'états, les processus tapis et pupitre enverront une information (B1, B2, en cours remplissage, en attente B1, bouton marche, bouton arrêt...) au processus affichage qui s'occupera de l'afficher et de l'archiver dans un fichier.

