Optimisation Jeux

Et si l’on facilitait la vie des gens en un clic ?

C’est l’objectif de notre projet : Proposer un site internet à une ludo-crèche qui leur permettrait de gérer toutes leurs demandes d’emprunt de jeux, en un clic. Il nous faut pour cela : 

  • Apprendre à coder en PHP.
  • Trouver un moyen d’attribuer un ensemble de jeu à un ensemble de personnes de manière automatique.
  • Gérer tout ce qui est relatif à un site internet : mise en ligne, hébergement…

Objectif : Un site web qui satisfait les utilisateurs comme les responsables et qui fait gagner du temps a tout le monde


Première étape : Apprendre à coder

C’est parti pour apprendre à coder. Entre les bases de HTML et CSS nécessaires pour comprendre PHP, la syntaxe de PHP, la structure du code… On y a passé plus d’une vingtaine d’heures.

En plus d’apprendre à coder en PHP pour réaliser l’affichage et le fonctionnement du site, on devait aussi utiliser MySQL qui est une base de données avec son propre langage ainsi qu’un solveur : un langage de programmation visant à résoudre des problèmes mathématiques.

L’apparence d’une table d’une base de donnée MySQL


Commençons la programmation du site

Chacun de ces fichiers compte entre 10 et 500 lignes de code, de quoi vite s’y perdre…

La phase d’apprentissage étant terminée, nous avons pu commencer à réaliser une première version du site, un peu vide puisque nous avions très peu d’informations sur le contenu et l’aspect qu’il devait avoir. C’est là qu’on se heurte à nos premiers problèmes :

Le travail en coopération : étant donné le temps que l’on avait pour créer ce site, il y allait avoir beaucoup de code réparti sur beaucoup de pages. Au bout d’un moment, on s’est rendu compte que l’on n’avait pas tous la même manière de coder et la structure du code s’est vite dégradée. Il a fallu imposer des règles strictes pour s’assurer qu’on puisse garder l’ensemble des pages de codes claires tout au long du projet.

La fonction d’attribution : sans rentrer dans les détails, pour attribuer les jeux aux emprunteurs, il faut représenter cette tâche par un problème mathématique que l’on va ensuite résoudre grâce à un solveur. Ce solveur nommé GLPK sert à résoudre des programmes linéaires, cependant, il faut apprendre à coder dans ce langage. Le problème étant que quasiment personne n’utilise GLPK, et cela se ressent dans l’absence de documentation sur ce langage. Notre seule manière d’apprendre était d’utiliser un simple PDF de quelques pages sur GLPK et de faire des essais et des erreurs.


Une quantité de travail inattendue

Ce site devait simplement permettre à des utilisateurs de faire des demandes de prêt de certains jeux et permettre aux responsables du site d’attribuer ces jeux automatiquement, mais il y avait bien plus de travail derrière que ce que l’on imaginait. 

Voici une liste non exhaustive de ce qu’il faut faire pour qu’un site comme celui-là fonctionne : 

  • Faire un système de connexion/inscription.
  • Créer différentes interfaces en fonction de qui est connecté (Simple utilisateur ou responsable).
  • Stocker les données des utilisateurs et des responsables à l’aide d’une base de données.
  • Gérer les flux d’information entre les pages.
  • Lier plusieurs langages, PHP pour l’affichage et la gestion du site, GLPK pour le système d’attribution des jeux et MySQL pour le stockage de données.
  • Créer un ensemble de fonctionnalités qui font le contenu du site (Faire et supprimer des vœux, voir les jeux disponibles et demandés, voir les informations de son compte…)

Le résultat final

Malgré les quelques problèmes mentionnés plus tôt et les nombreuses heures passées à débugger le site, nous sommes finalement parvenus à la version définitive qui répondait aux attentes du client. Ce site permet aux adhérents de la ludo-crèche de demander d’emprunter des jeux, de consulter toutes les informations dont ils ont besoin (infos personnelles, infos sur les jeux, consulter leurs vœux et leurs jeux attribués…). Ce site est surtout utile aux responsables de la ludo-crèche, car ils peuvent désormais obtenir directement une liste à jour des demandes d’emprunt, attribuer les jeux d’une manière presque optimale, bien meilleure que ce qu’ils auraient fait à la main et surtout bien plus rapidement. En plus du projet initial, nos clients nous ont demandé des fonctionnalités supplémentaires afin que ce site seul permette la gestion totale des prêts de jeu. Ainsi il leur permet aussi de gérer leurs stocks et de savoir où sont les jeux plus simplement. Notre site leur offre une archive de toutes les attributions précédentes, une liste de leurs membres et la possibilité d’avoir différents modes d’emprunts.

L’ensemble des jeux demandés par chacun, ainsi qu’un bouton qui s’occupe automatiquement de l’attribution qui aurait pris plusieurs heures à la main.
Un formulaire permettant l’ajout rapide d’un jeu

Conclusion

Ce projet était une expérience vraiment différente du genre de travaux que l’on a fait jusqu’à maintenant dans nos études. Ce qui nous a motivé à nous investir autant, c’est le fait de savoir qu’il serait vraiment utile et qu’il aiderait des personnes au quotidien. Ce projet a été l’occasion de se mettre dans la peau d’un professionnel et de concevoir un produit pour un client, d’autant plus que même après la date limite de réalisation du projet, nous accompagnerons nos clients pour s’assurer que tout fonctionne correctement. C’était aussi un bon entraînement à la programmation pour deux d’entre nous qui allons poursuivre nos études dans le domaine de l’informatique.

Polytech Angers – Projets PEIP2

Projet réalisé par Florian Louveau, Maxence Martin, Noé Cabaud-Bloquel.

Capteur CO2

Introduction

Bonjour, nous sommes Nicolas Macé et Antonin Rabault, étudiants en 2ème année à Polytech Angers.
Dans le cadre du projet de conception de fin de cycle préparatoire, nous avons décidé de créer une interface web reliée à des capteurs de CO2.

Pourquoi ce projet ?

Vous n’êtes pas sans savoir qu’au moment où ces lignes sont écrites, le monde est encore en pleine crise sanitaire. Ainsi, nous souhaitions apporter notre contribution dans la lutte contre la pandémie. En effet, nos capteurs mesurent la qualité de l’air en fonction de la concentration en CO2, et selon un article du Haut Conseil de la Santé Publique, les particules de COVID-19 se comportent d’une manière similaire à celles du dioxyde de carbone (CO2) dans l’air.

Présentation du projet

Il y a actuellement 50 capteurs répartis dans les différents UFR de l’Université d’Angers et 100 de plus sont en préparation et seront installés prochainement.


Chaque capteur envoie des données toutes les 5 minutes dans une base de données grâce à une carte électronique (ESP-32). Ensuite, nous stockons puis récupérons ces données afin de les afficher sur le site pour que l’utilisateur puisse y avoir accès. Nous représentons ces données premièrement sous forme de jauges qui nous indiquent si le taux de CO2 actuel est trop élevé ou non. Nous les représentons aussi sous forme de courbes afin que l’on puisse voir l’évolution dans la dernière heure.

Courbe du taux de CO2 (en ppm) en fonction du temps

Courbe du taux de CO2 (en ppm) en fonction du temps

Nous avons aussi intégré dans notre site web une fonctionnalité assez inédite, une prévision de l’heure à laquelle le taux de CO2 dépassera un certain seuil. Cela permet de savoir assez précisément quand est-ce qu’une aération sera nécessaire. Cette prévision est utile car elle donne un bon indicateur temporel et évite à l’utilisateur de consulter toutes les 5 minutes le site. En général, le site affichera “Pas d’ouverture nécessaire prochainement”, c’est bon signe et cela signifie que la pièce est correctement aérée.

Equation donnant le temps en heures avant lequel une aération sera nécessaire

Equation donnant le temps en heures avant lequel une aération sera nécessaire

Tutoriel sur comment ajouter un capteur et comment visualiser la courbe de la concentration en CO2 en fonction du temps.

accueil
Vous pouvez dès à présent essayer vous même notre site web !

Pour approfondir

Notre projet a fait parler de lui ! En effet, un court reportage a été consacré à notre projet sur France 3 Régions.

Si vous souhaitez en apprendre davantage sur la transmission par voies aériennes du COVID, nous ne pouvons que vous recommander l’excellente vidéo de David Louapre.

Enfin, nous vous joignions notre rapport détaillé si vous voulez des renseignements supplémentaires sur le processus de création du site web ou sur l’élaboration de l’équation de prévision d’aération :

Contrôle d’accès salle 214

Bonjour,
Je suis étudiant en deuxième année de cycle préparatoire à Polytech Angers. J’ai choisi de travailler sur le projet de contrôle d’accès à la salle 214.

Objectif du projet

La salle 214 est une salle de Polytech Angers dédiée aux projets. Cette salle contient beaucoup de matériel. Il est donc important de laisser la porte de cette salle fermée lorsque personne n’y travaille.
Actuellement, les étudiants qui veulent accéder à la salle 214 doivent demander la clé à l’accueil en échange de leur carte étudiante. Ils peuvent ensuite rapporter cette clé quand ils ont terminé.
Le but de mon projet est de simplifier cette démarche en rendant automatique l’ouverture de la porte grâce aux cartes étudiantes.

En effet, les cartes étudiantes contiennent une puce RFID. En scannant une carte à l’aide d’un lecteur de cartes, il est possible de récupérer un numéro unique pour chaque carte. Il y avait déjà un ancien système pour ouvrir la porte de la salle 214, mais il fonctionnait avec des badges et n’est plus utilisé. Je réutilise donc ce système pour déclencher l’ouverture de la porte.

Le premier ojectif de mon projet est de créer une base de données avec les numéros des cartes étudiantes pour gérer qui a accès à la salle. Un programme relié à cette base de données déclenchera un relais qui laisse passer le courant pour ouvrir la porte de la salle 214. Le second objectif est de créer un site web pour pouvoir contrôler facilement les accès et voir l’historique de toutes les entrées dans la salle.

Étapes du projet

Pour ce projet, j’ai utilisé deux Raspberry Pi. Une Raspberry Pi est un petit ordinateur de la taille d’une carte bancaire. On peut programmer une Raspberry Pi de la manière qu’on le souhaite. De plus, la Raspberry Pi possède des broches GPIO que l’on peut alimenter avec un programme. J’utilise donc ces broches pour relier la Raspberry Pi au relais qui ouvre la porte.

Une Raspberry Pi utilisée durant ce projet.

Une Raspberry Pi utilisée durant ce projet.

J’ai commencé par écrire un programme en langage Python qui récupère le numéro de la carte. J’ai ensuite créé une base de données. Une base de données peut être composée de plusieurs tables, j’ai donc créé une table composée comme ceci :

id Nom Prénom Numéro de carte Date de début d’entrée autorisée Date de fin d’entrée autorisée
1 DURAND Martin 00123456789ABCDE 2019-03-01 2019-06-30

Dans l’exemple ci dessus, Martin DURAND peut accéder à la salle 214 du 1er mars au 30 juin 2019.

J’ai donc intégré cette base de données à mon programme Python pour qu’il cherche si le numéro scanné par le lecteur est présent dans la base de données et si la personne a le droit d’entrer.
Pour activer le relais, j’ai déclenché l’alimentation d’une broche GPIO à partir du programme Python. Ainsi, tout fonctionnait avec une seule Raspberry Pi.

Test du programme avec une seule Raspberry Pi.

Test du programme avec une seule Raspberry Pi.

Une des contraintes de ce projet est que le déclenchement de l’ouverture de la porte de la salle 214 se fait sur un tableau électrique présent en salle 212. C’est pour cela que j’ai besoin de deux Raspberry Pi qui doivent communiquer entre elles pour ouvrir la porte. Ainsi, j’ai fait deux programmes Python :

  • Un pour la Raspberry Pi en salle 214 qui scanne la carte et regarde dans la base de données si la personne a le droit d’entrer
  • Un autre pour la Raspberry Pi en salle 212 qui déclenche l’ouverture de la porte

Le programme Python de la salle 214 envoie un message d’ordre d’ouverture à l’autre programme quand la personne est autorisée à entrer.

J’ai ensuite installé tous les composants dont j’avais besoin sur le tableau électrique en salle 212 avec l’aide de M. Bouljroufi.

Composants installés sur le tableau électrique

Composants installés sur le tableau électrique

Ainsi, j’ai pu tester que le programme fonctionnait correctement. Voici une vidéo de l’ouverture de la porte avec une carte étudiante :

J’ai ensuite créé le site web. J’ai pour cela installé un serveur web sur la Raspberry Pi de la salle 214. J’ai utilisé le langage php pour relier la base de données au serveur web. J’ai aussi créé une deuxième table dans la base de données pour avoir un historique de toutes les ouvertures de la porte de la salle.

Voici une démonstration du fonctionnement de ce site web :

Conclusion

Le résultat de ce projet est satisfaisant. On peut désormais ouvrir la porte de la salle 214 à l’aide d’une carte étudiante. De nombreux points restent à améliorer. Le site web pourrait avoir plus de fonctionnalités et être plus esthétique. Mais globalement ce projet a été une très bonne expérience. Cela m’a permis d’apprendre plein de nouvelles connaissances. J’ai appris les langages Python et php. J’ai découvert comment gérer des bases de données et j’ai amélioré mes compétences en électricité.