SE2a4 USB 2023/2024 E12

De wiki-se.plil.fr
Révision datée du 27 mai 2024 à 14:26 par Nconrard (discussion | contributions)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

Présentation du Projet Système et Réseau

L'objectif de ce projet est de concevoir un système permettant de gérer l'état des écrans d'une salle de travaux pratiques.

Le projet est composé d'une carte relié en USB à l'ordinateur le plus proche ainsi que d'un serveur web accessible depuis un navigateur.

L'objectif étant de pouvoir depuis une page web connaître l'état d'un moniteur et de pouvoir le changer en appuyant physiquement sur le bouton d'extinction/allumage de ce dernier


L'ensemble de ma production sur ce projet est disponible sur mon archive GIT. Lien de l'archive git:

https://archives.plil.fr/nconrard/ProjetSystemeReseauNoah


CAO

Schéma de la carte utilisée


Le schéma complet de la carte est celui disponible ci-dessus. Il est basé sur le design originel fourni par M. Redon, disponible sur la page du projet.

Cette conception inclut 3 indicateurs lumineux, un directement commandé par la tension d'alimentation de la carte et deux autres sur des entrées/sorties de l'ATMEGA32U4, ainsi qu'une unique sortie pour servo-moteur.


La détection de l'état du moniteur se fait au travers d'une LDR (ou photorésistance) qui par un jeu de résistance fait varier une tension au niveau d'un CAN de l'ATMEGA32U4. On peut calculer la tension par un calcul de diviseur de tension :



Le contrôleur pourra en fonction de cette tension choisir si il doit ou non bouger le Servo-moteur via la broche MLI sur PD0.

Board de la carte utilisée


Le routage de la carte est celui ci-dessus. On notera que les emplacements pour le Servo-moteur ainsi que la LDR sont traversants afin de pouvoir les déporter par la suite.


PCB

Carte électronique sous-cablée projet Système et Réseau 2023/2024

Le micro-contrôleur est accessible via le port USB, le chargeur d'amorçage (bootloader) a été téléversé initialement via le port ISP de l'ATMEGA32U4.

Des programmes de test afin de faire clignoter les LEDs sont présents sur l'archive git.

Serveur Web

Aperçu de la page des actions du site web

HTML :

Il est possible de lancer (pour l'instant) en local un site web de la manière suivante :

./serveur_http -p XXXX

Ou bien de manière plus verbeux :

./serveur_http --port XXXX
Aperçu de la page des status des moniteurs

Par défaut, le port utilisé par défaut est 8080.

Le site est composé de 3 pages, une page d'accueil, une pour la liste des actions ainsi qu'une pour surveiller le statut des écrans. Une amélioration future pourrait être de fusionner ses 3 pages.

UDP :

Une ébauche de serveur UDP est également présent sur l'archive git.

Lorsque compilé et exécuté, il écoute sur le port 4242 les messages et en fonction de leur contenu le code rentre dans une étape précise. Le format des trames peut être trouvé ci-dessous, il a été discuté avec les autres membres du projet.

On peut notamment le constater sur le code ci-dessous :

Rapide mémo sur le format des trames utilisées.
if (nreseau[0] == NRES[0] && nreseau[1] == NRES[1] && nreseau[2] == NRES[2]) {
                switch (action) {

                        case '0': // Retourner ID usb

                            printf("Veut retourner ID usb\n");

                            break;

                        case '1': // Retourner Etat Ecran

                            printf("Veut retourner Etat Ecran\n");

                            break;

                        case '2': // Changer Etat Ecran

                            printf("Veut changer Etat Ecran\n");

                            break;

                        default:

                            perror("Erreur lors de la réception du message / Action non reconnue");
                            exit(EXIT_FAILURE);

                            break; // ?? en théorie inutile.

                    }
                }

D'autres codes sont également disponibles sur l'archive afin d'émettre des messages vers ce serveur UDP ainsi que celui d'autres groupes.

La suite du projet coté serveur Web serait de relier la partie HTML avec la partie UDP (programmation "multi-threadé") et relier les boutons des pages HTML à des vraies actions d'envoi de trame.