Section Numérique   –   Lycée Saint-Paul IV

Compteur CDI

image_accueil


I. Présentation

1. L'équipe projet

Photo de l'équipe
Dans le cadre de la spécialité Informatique et Science du Numérique (ISN),
nous avons eu à réaliser un projet en groupe.


Nous avons choisi le projet du "Compteur CDI" mettant en oeuvre un
nano-ordinateur Raspberry Pi ainsi qu'un émetteur-récepteur infrarouge.


L'équipe projet se compose de:

- Maëlle Ponama

- Clara Mégret

- Amos Le Tiec





2. Objectif du projet

Le projet du "Compteur CDI" consiste en la réalisation d'un prototype de compteur de fréquentation d'un lieu, en l'occurence le CDI de notre établissement.
L'objectif est de créer un compteur de passage permettant de mesurer la fréquentation du CDI àl'aide d'un emetteur-récepteur infrarouge.

Ce projet, réalisé en langage Python 3, utilise une interface graphique réalisée avec la bibliothèque tkinter et permet ainsi l'exploitation d'un écran tactile de 5 pouces. En effet, le prototype n'est pas équipé de clavier/souris.

Le prototype dispose, de plus, d'un signal lumineux composé de deux dels permettant de déterminer l’état du compteur (libre ou en cours de traitement de l’information).

L’utilisateur, en signalant sa présence via le capteur infrarouge, verra le signal lumineux passer du bleu (il n'y a personne) au clignotant rouge (un passage a été détecté).


Sur l’interface graphique, il pourra :

- constater la valeur du compteur (le nombre de passages),

- lire un message de bienvenue généré aléatoirement,

- ainsi que consulter le flux de fréquentation de la journée.

En effet, le fichier CSV, directement accessible depuis l’interface via le bouton « Compte rendu », permet de consulter en temps réel le flux de fréquentation quotidien du CDI.



Banderolle de la Section Numérique du Lycée Saint-Paul IV




II. Matériel et montage

1. Liste du matériel nécessaire et des notions à savoir

Afin de réaliser ce projet vous devez disposer :

- Un Raspberry Pi : Le Raspberry Pi est un nano-ordinateur à carte unique (monocarte), conçu par le créateur de jeu David Braben. Ce nano-ordinateur fonctionne avec différentes distribution du système d'exploitation libre Linux. Nous travaillons ici sous Raspbian. A noter que la dernière version Rpi 3 peut fonctionner sous windows :(

- Un écran tactile LCD 5 pouces pour Raspberry Pi 3

- Un capteur émetteur/récepteur infrarouge. Dans le cadre de notre projet nous avons utilisé Capteur E18-D80NK : Il s'agit d'un capteur infrarouge photoélectrique qui peut détecter des objets jusqu'à 80 cm de distance.

- Une Horloge RTC (temps réel) de type Hotloge RTC Pi +
- Deux leds, ainsi que les résistances...

- Utilisation du module de base intégré Python, "Tkinter" permettant de réaliser des interfaces graphiques.

- Utilisation d'un fichier CSV (Comma-separated values) permettant de gérer des bases de données pouvant être par la suite exploitées.



2. Le Raspberry Pi et son port GPIO.

Grâce à son port GPIO (General Purpose Input/Output), le Raspberry Pi peut interagir avec le monde réel en communiquant avec des capteurs, des moteurs, et un tas d’autres composants électroniques (sondes de température, LEDs, capteurs gyroscopiques, boussoles, GPS, servos moteurs, récepteurs IR/RF…).

De la petite commande relais pour piloter vos guirlandes de Noël, au robot, en passant par la station météo et le drone, les possibilités sont sans limites, ou presque !

Image du Raspberry Pi et détails de son port GPIO

Bibliothèque et gestion générale des ports GPIO :


Instructions Python pour le paramétrage du port GPIO.





3. Montage de l'emetteur-récepteur infrarouge et des dels.

Chaque del est montée sur une broche du port GPIO intialisée en sortie et protégée par une résistance de 220Ω.

L'emetteur-récepteur infrarouge est alimenté par les broches 2 (5V) et 6 (GND) du port GPIO.
Le signal est récupérer sur une broche initialisée en entrée (la broche 38 sur le schéma ci-dessous).

A noter que le capteur dispose d'une vis de réglage située à l'opposé des cellules émettrice et réceptrice et permettant de régler la sensibilité afin d'obtenir une détection à une distance comprise entre 3 et 80 cm.

Schéma du cablage des dels et de l'émetteur-récepteur infrarouge.

Schéma du montage des 2 dels et de l'emetteur-récepteur infrarouge.



4. Prototypage : la boite !

Le prototype a été réalisé à l'aide d'une boite en plexiglass trouvée dans un magasin de bricolage et quelque peu allégée à l'aide de la perceuse à colonne et de la scie sauteuse.
Il a, en effet, été nécessaire de réaliser un orifice rectangulaire pour recevoir l'écran tactile, un trou rond de 20mm de diamètre situé sur le côté pour y placer l'émetteur-récepteur ainsi d'un petit orifice rectangulaire de l'autre côté pour y fixer une prise femelle micro-usb pour l'alimentation de l'ensemble.

Un support pour les 2 dels a été réalisé à l'aide de l'imprimante 3D
Vous trouverez ci-dessous quelques photos prises en cours de réalisation.


Prototype vu de profil Prototype vu de face Détail de la prise micro-usb femelle Le support de dels réalisé avec l'imprimante 3D
Le dessin du support en DAO

Photos du prototype en cours de réalisation.





III. Code et rendu

1. Gestion de l'émetteur-récepteur infrarouge.

L'émetteur-récepteur IR fournit un signal digital de niveau haut lorsqu'aucun obstacle est détecté et de niveau bas lors de la présence d'un obstacle à une distance inférieure à sa limite de détection.

On initialise donc la broche 40 du port GPIO en entrée et on choisit d'y détecter uniquement les fronts descendants correspondants à de nouveaux obstacles, donc à des nouveaux passages devant le capteur.

On incrémente une variable de comptage à chaque détection de front puis on effectue une temporisation d'une seconde sachant que deux entrées de visiteurs dans le CDI ne peuvent avoir lieu à moins d'une seconde d'écart.

Le statut "occupé" du module est signalé par le clignotement d'une del rouge comme nous le verrons plus tard.

Extrait du code gérant le capteur IR :






2. La fonction "message"

Une fonction "message" a été réalisée afin d'afficher aléatoirement un message au visiteur détecté. Le message affiché est choisi aléatoirement parmi une liste de messages.

A ce premier affichage, une fonctionnalité supplémentaire a été ajoutée. En effet, si le visiteur est le dixième, le vingtième, le trentième, le cinquantième ou le centième, après deux secondes d'affichage du premier message, une second message lui est adressé disant : "vous êtes le nième visiteur".

Bien sûr, nous aurions pu faire quelque chose de plus esthétique que tous ces "si" en cascade :(

Extrait du code générant les différents messages :





3. Gestion des dels.

L'objectif de ces deux dels est d'indiquer l'état du compteur.

Del bleue allumée : le module de détection est prêt à détecter un passage.

Un visiteur se présente. Un front descendant est alors observé sur la broche digitale du capteur IR. La variable valcompteur est incrémentée et un ou plusieurs messages sont affichés au visiteur.

La del bleue s'éteint et la rouge clignote rapidement durant 1 seconde.

Pour le cablage, veuillez vous référer au plan de montage : Emetteur-récepteur IR et dels.

Extrait du code pour la gestion des dels :

Exemple

Essai de fonctionnement du capteur et des dels sur le port GPIO.





4. Interface Graphique tkinter

Nous avons choisi de réaliser une interface graphique adaptée à notre écran tactile de 5 pouces, à la fois facile et ergonomique pour l'utilisateur.

Cette interface graphique est organisée de sorte à ce qu'il y ait :

          - un label sur lequel figure le nom de notre projet
          - une zone d'affichage où figure le nombre de passage
          - une zone texte où apparaît des messages, choisis aléatoirement, adaptés au nombre de passages
          - un canvas où figure le logo de la section numérique de notre lycée
          - un bouton « Quitter » permettant de quitter le programme et de fermer la fenêtre
          - un second bouton entrainant l'ouverture d'une seconde fenêtre affichant les données enregistrées dans le fichier CSV

Vous trouverez ci-dessous l'extrait du code python générant les fenêtre graphiques à l'aide des méthodes de la bibliothèque tkinter.

Les différents widgets utilisés sont : les labels et entrées pour afficher des messages, des boutons, un canvas pour l'affiche de l'image du logo de la section numérique du lycée, une zone de texte pour afficher le contenu du fichier csv ainsi qu'un scrollbar pour en faire défiler le contenu.

Extrait du code générant les différents éléments graphiques :

Exemple
Exemple

Les 2 fenêtres graphiques créées avec la bibliothèque tkinter.





5. Le fichier CSV

Un fichier csv (Comma-separated values) est un fichier texte dans lequel des données sont enregistrées, séparées initialement par une virgule mais aussi maintenant par une tabulation, un espace ou un point virgule...

Après avoir importé la bibliothèque "csv" une instance passageCDI est créée à partir du fichier passage.csv.

Le fichier est ensuite ouvert en mode ajout, "a". On y écrit ensuite la date de chaque détection sous la forme d'une chaîne de caractères suivie d'un passage à la ligne.





6. Vidéo de démonstration et code complet





Code dans son intégralité:

www.000webhost.com