IMA5 2021/2022 P28 : Différence entre versions

De Wiki de Projets IMA
(Semaine 5)
(Semaine 4)
Ligne 229 : Ligne 229 :
 
  $ mysql
 
  $ mysql
  
Je créer l'utilisateur 'lwadbled' ainsi qu'une base de donnée du même nom. Dans cette base de donnée, je crée une table 'utilisateur' contenant un identifiant et un mot de passe. Cette table permettra la connexion à la plateforme. J'y ajoute l'utilisateur 'lwadbled' avec un mot de passe. Une fois tout ceci fait, on peut reprendre la page de login et se connecter avec le l'utilisateur tout juste créé :
+
Je créer l'utilisateur 'lwadbled' ainsi qu'une base de donnée du même nom. Dans cette base de donnée, je crée une table 'utilisateur' contenant un identifiant et un mot de passe. Cette table permettra la connexion à la plateforme. J'y ajoute l'utilisateur 'lwadbled' avec un mot de passe.
 +
 
 +
[[Fichier:Diagramme_UML_bdd.PNG|500px|thumb|center|Diagramme UML de la base de donnée]]
 +
 
 +
Ce diagramme UML représente la base de donnée que je met en place. Il est possible que celui ci soit modifié par la suite si je me rends compte d'une erreur. Le banc est représenté par un numéro, et possèdera au minimum 3 appareils. L'utilisateur est représenté par un identifiant et un mot de passe et un créneau par un jour. La réservation est l'association entre un utilisateur, un banc et une date. Cette table reprends les champs identifiant, numéro et jour, et ajoute également les heures de début et de fin du créneau. On peut traduire l'association par : pour un créneau donné, un banc peut être réservé par un unique utilisateur.
 +
 
 +
Une fois tout ceci fait, on peut reprendre la page de login et se connecter avec le l'utilisateur tout juste créé :
  
 
[[Fichier:Test_login.PNG|500px|thumb|center|Connexion de l'utilisateur 'lwadbled']]
 
[[Fichier:Test_login.PNG|500px|thumb|center|Connexion de l'utilisateur 'lwadbled']]

Version du 12 novembre 2021 à 17:05


Présentation générale

Description

La crise de la Covid-19 et les différents confinements ou cours à distance ont montré les limites des outils disponibles pour de l’enseignement à distance ou pour les enseignements en dehors des temps dédiés. Par exemple, il est extrêmement difficile de réviser un TP ou de le terminer en dehors des heures d’enseignement car l’accès aux salles est compliquée, notamment les soirs ou les week-end.

Ce projet propose de réaliser une plateforme permettant d’accéder au matériel de TP à distance. La plateforme sera composée d’équipements supportant le protocole LXI. Une unité pourra contenir un générateur de fonction, une alimentation stabilisée, un multimètre et un oscilloscope. Tous les équipements sont reliés au travers d’un réseau Ethernet.

Objectifs

L'objectif de ce projet est de réaliser un POC complet d'un banc d'observation pour réaliser des TP à distance.

La réalisation de ce POC est décomposé en 3 parties :

  • une matrice de commutation permettant de relier différents montages expérimentaux aux appareils de mesures ;
  • une interface permettant l’accès à la plateforme de façon sécurisée et avec un planning avec réservation du/des banc(s) d'observation(s).

Préparation du projet

Cahier des charges

Fichier:CDC PI Louis Wadbled.pdf

Cahier des spécifications

Fichier:Cahier des specifications PI.pdf

Liste du matériel

Farnell :

200 0 ohm - https://fr.farnell.com/multicomp/mcwr12x000-ptl/res-couche-epaisse-0r-1-0-25w/dp/2695115RL

30 Relais - https://fr.farnell.com/oeg-te-connectivity/oje-sh-105lmh-000/relais-puiss-5vdc-spst-no-8a-trav/dp/3397625

30 transistors Mosfet en CMS - https://fr.farnell.com/nexperia/nxv55unr/mosfet-n-ch-30v-1-9a-sot-23/dp/3617842

30 diodes équivalent 1N4001 en CMS - https://fr.farnell.com/rohm/rr1vwm4stftr/diode-aec-q101-1a-400v-cms/dp/2886628

10 connecteurs BNC - https://fr.farnell.com/molex/73100-0154/conn-coax-rf-bnc-femelle-50-ohms/dp/1909205

10 fiches bananes - https://fr.farnell.com/multicomp/24-243-3/fiche-femelle-ci-4mm-jaune/dp/1698985

2 nucleo F7 (avec écran ?) - https://fr.rs-online.com/web/p/outils-de-developpement-pour-microcontroleurs/1231052

5 MC14514BDWR2G (décodeurs) - https://fr.farnell.com/on-semiconductor/mc14514bdwr2g/verrou-transparent-decod-4-16/dp/2845025?ost=mc14514bdwr2g

5 cordons BNC - BNC - https://fr.farnell.com/schutzinger/ko-88-58-100-sw/cordon-de-test-bnc-male-1m/dp/3224334

5 cordons BNC - banane - https://fr.farnell.com/mh-connectors/bnc4mml1mrg58/cordon-de-test-1m/dp/3153514?st=cordons%20bnc%20bnc

10 cordons banane - banane https://fr.farnell.com/staubli/28-0124-100-21/cordon-test-noir-1m-1kv-32a/dp/152737?st=cordons%20banane%20banane

2 connecteurs Nucléo vers carte matrice 2 rangées n contacts - https://fr.farnell.com/samtec/tsw-135-08-t-d/conn-header-70-voies-2-rangs-2/dp/3585156

2 connecteurs Nucléo vers carte matrice 2 rangées n contacts https://fr.farnell.com/samtec/esq-135-14-t-d/conn-fem-70-voies-2-rangees-2/dp/3514956

1 connecteur Nucléo vers RPi - https://fr.farnell.com/multicomp/2214s-40sg-85/connecteur-femelle-40-voies-2/dp/2847248

1 adaptateur serie USB https://fr.farnell.com/adafruit-industries/954/usb-to-ttl-serial-cable-raspberry/dp/2215041

ESI :

switch ethernet type SWITCH TP−LINK TL−SG108E - https://shop.esipro.fr/produit/cuc-317368-tp-link-tl-sg108e-switch-metal-8-ports-gigabit-igmp-vlan-qos

Ne pas acheter .... HUB USB - https://shop.esipro.fr/produit/2-4783130-15m-usb-2-0-active-cable-with-4-port-hub

caméra usb

1 kit RPi - https://shop.esipro.fr/produit/cuc-151366-starter-kit-officiel-raspberry-pi-3-b

Liste non exhaustive des tâches à effectuer

Interface Web

  • Création d'une BDD contenant : les logins des utilisateurs de la plateforme, les créneaux des bancs d'observations (réservés ou non) ;
  • Mise en place d'un serveur pour réaliser l'interface ;
  • Programmation des différentes pages de l'interface :
    • Page d'accueil (identification de l'utilisateur) ;
    • Page de réservation des bancs d'essai ;
    • Page d'utilisation du banc réservé.

Matrice de commutation

  • Lister le matériel ;
  • Réalisation du PCB de la matrice :
  • Souder la matrice ;
  • Programmation du contrôle de la matrice : une Raspberry Pi recevant les ordres du serveurs et un microcontrôleur qui contrôle la matrice ;
  • Réalisation des tests de la matrice.

Documentation

  • Ecriture de la documentation technique du POC.

Diagramme de Gantt

Voici le diagramme de Gantt prévisionnel du projet. Celui-ci sera mis régulièrement à jour selon les tâches effectuées et potentiellement les tâches à ajouter/modifier.

Diagramme de Gantt prévisionnel du projet (Mise à jour du 04/10/2021)

Réalisation du projet

Semaine 1

  • Réalisation du cahier des charges

Semaine 2

  • Réalisation du cahier des spécifications

Cette semaine marque également un début de réflexion concernant la matrice de commutation. Pour relier une entrée de la matrice avec une sortie, on souhaite utiliser des relais.

Premier schéma de la matrice de commutation

Comme on peut le voir sur le schéma rapide ci-dessus, les relais n'ont besoins que d'un interrupteur ouvert ou fermé, donc on pourra choisir des relais SPST (Single Pole Single Throw). De plus, je préfère choisir ici des relais normalement ouverts ce qui implique que l'on envoie un courant à la bobine simplement pour fermer l'interrupteur.

Les relais seront contrôlés par le microcontrôleur. On ajoute une diode de roue libre pour protéger la bobine du relais.

Ici, la matrice a été pensée pour lier 4 entrées et 4 sorties. Or pour réaliser le POC de la plateforme, on souhaite placer au minimum 3 appareils sur un banc d'observation, donc ce schéma n'est pas complet puisqu'il faudrait ajouter une entrée et une sortie (5 entrées pour les appareils déjà prêt à utilisation : 2 pour l'oscilloscope, 2 pour le multimètre et 1 pour le générateur de signaux).

On peut ensuite dresser un premier schéma de la plateforme. Cela permettra de réaliser la liste du matériel nécessaire notamment pour les connecteurs.

Le serveur pourra contrôler les appareils de mesures selon ce que l'utilisateur de l'interface Web souhaite grâce à leurs adresses IP. Pour contrôler la matrice de commutation, le serveur communiquera avec une Raspberry Pi qui transmet les informations au microcontrôleur de la matrice afin de modifier les états des relais pour associer les appareils de mesures avec les dispositifs de tests.

Premier schéma de la plateforme physique
  • Réalisation de la liste de matériel

Semaine 3

  • Réalisation du diagramme de Gantt

Afin de réaliser le PCB de la matrice, certains sites permettent de trouver les empreintes des composants électroniques. Il est possible d'utiliser :

De nouvelles réflexions ont lieu concernant la matrice de commutation avant de pouvoir réaliser le PCB. On ajoute ici un transistor MOSFET en commutation pour que la bobine du relais ne soit pas tout le temps alimentée. Le fonctionnement de ce transistor est le suivant : lorsque VGS < VT, le transistor représente un circuit ouvert donc la bobine sera alimentée (ce qui ferme l'interrupteur du relais); lorsque VGS > VT, le transistor représente un fil, donc la bobine ne sera pas alimentée (ce qui ouvre l'interrupteur du relais). VGS représente la tension grille-source et VT la tension de seuil du transistor.

Partie Relais de la matrice de commutation

En poursuivant la réflexion, il devrait être possible de placer le relais et le transistor en série. Le fonctionnement serait alors le suivant : lorsque VGS < VT, le transistor représentera un circuit ouvert donc aucun courant ne passe dans le transistor. Il passe donc par la diode de roue libre ce qui va faire décroitre le courant progressivement dans la bobine, ce qui entraine l'ouverture de l'interrupteur du relais. Dans le cas inverse, lorsque VGS > VT, le transistor représente un fil donc le courant passe dans le transistor, la bobine sera alors alimentée ce qui ferme l'interrupteur du relais.

Deuxième réflexion sur la partie Relais de la matrice de commutation

Le 2ème schéma ici semble plus approprié à ce que l'on souhaite réaliser. Il faudra réfléchir également au besoin d'ajouter ou non des résistances autour du transistor.

Du côté de l'interrupteur du relais, on trouve simplement un lien entre une entrée et une sortie, qui sont représentés par un connecteur BNC (pour connecter les appareils à la matrice) et par une fiche Banane (pour connecter le circuit de test à la matrice).

Le PCB sera réalisé en utilisant Altium. Sur le site comprenant les schématiques et empreintes des composants électroniques, il est actuellement impossible de télécharger les fichiers du transistor et des connecteurs Nucléo, je vais me lancer dans d'autres recherches pour des fichiers de ces composants.

Le schéma et l'empreinte du transistor sont trouvables ici :

Après avoir téléchargé les différents fichiers des composants, on peut réaliser un début de schéma de la matrice. Ici on ne place pour l'instant qu'un lien entre une entrée et une sortie.

Schema exemple avec un relais sur Altium

Il faut maintenant se pencher sur la partie du contrôle du transistor (côté grille du transistor). On utilise des démultiplexeurs pour utiliser moins de pins de la carte Nucléo. En effet, sans décodeur, on aurait eu besoin de 25 pins de la carte Nucléo, alors qu'avec 2 décodeurs 4 vers 16, on utilise seulement 10 pins.

Sur la vue schématique, on peut alors relier une sortie du décodeur vers le transistor. Les entrées sont reliées à 4 pins du connecteur Nucléo et 1 pin supplémentaire pour le contrôle des sorties. Les pins du connecteur Nucléo seront reliés par des fils sur la carte Nucléo.

Pour une entrée reliée à 5 sorties, on peut retrouver le schéma suivant :

Schema d'une entrée

Pour réaliser les entrées suivantes, étant donné la place prise pour une seule entrée, il est obligatoire d'utiliser plusieurs fichiers Schematics. Il faut alors ajouter des ports pour relier ces entrées aux sorties. Ces ports sont donc reliés aux fiches bananes et sont nommés "FB1" pour fiche banane 1 puis numérotés selon le numéro de la sortie. On peut retrouver l'exemple de la 5ème entrée placée sur une autre feuille schématique :

Schema de la 5ème entrée sur une autre feuille schématique

De plus, on peut remarquer des ports "2S4" jusqu'à "2S8" du côté de la grille du transistor. Ces ports sont reliés au second décodeur de la matrice.

Il ne semble maintenant rester qu'une seule partie de la matrice à schématiser : la partie connexion avec la carte Nucléo. N'ayant pas encore trouvé de librairie Altium pour le connecteur, je ne peux pas encore le représenter. Néanmoins, les connexions devraient être assez simple : nous avons besoin de 10 pins pour les relier en entrée des décodeurs(4 pins de data +1 pour chaque décodeur comme expliqué précédemment), et 2 pins représentant la tension d'entrée et la masse.

Semaine 4

Certains composants de la liste ont été modifiés (comme par exemple les transistors parce qu'ils allaient être trop compliqués à souder). En attendant les schématiques et les empreintes des différents composants (résistances et transistors) sous Altium, je commence à placer les composants sur le PCB, et router très rapidement les composants qui n'auront pas besoin d'être modifiés par la suite. De plus, on retire les décodeurs étant donné que les connecteurs ont largement assez de broches pour contrôler les 25 transistors.

Une fois les nouveaux schématiques et empreintes reçues, je modifie les différents fichiers schématics avant de les importer sur le PCB. Etant donné que la plupart des composants étaient déjà placés, les empreintes se sont mises directement aux endroits souhaités. Pour éviter de mettre des pistes sur les deux faces, on utilise des résistances 0 Ohm. Je les utilise notamment pour relier les grilles des transistors avec le connecteur 70 contacts de la carte NUCLEO. J'ordonne alors les transistors avec les connecteurs les plus proches pour essayer d'utiliser le moins de résistances possible.

Une fois que tout est routé, j'ai lancé le Design Rule Check (DRC). Celui-ci indiqué beaucoup d'erreur de collisions entre entre des noms de composants. J'ai donc modifié l'emplacement des noms des composants impliqués, et en relançant le DRC, plus aucune erreur n'est indiqué sur le PCB.

Design Rule Check du PCB

Il reste maintenant potentiellement quelques composants à placer sur le PCB : le second connecteur de la NUCLEO et le connecteur Raspberry Pi. Pour ces connecteurs, il faudra faire attention à la distance entre les deux connecteurs de la NUCLEO pour que celle-ci s'emboite directeur avec la matrice.

J'ai également programmé l'interface de la page de login, on peut en voir un aperçu :

Page de login de la plateforme de TP à distance

Pour mettre en place la plateforme, j'installe un serveur Apache2 sur la zabeth14 :

$ apt-get install apache2

Les fichiers du serveur se trouve maintenant dans le dossier /var/www/html et on peut voir les erreurs du serveur avec la commande :

$ tail -f /var/log/apache2/error.log

Il faut également installer PHP :

$ apt-get install php
$ apt-get install php-mysql

Ensuite on redémarre le serveur pour qu'il puisse prendre le compte le PHP :

$ service apache2 restart

Avant de pouvoir se connecter sur l'interface, il faut créer la base de donnée. J'utilise alors la commande :

$ mysql

Je créer l'utilisateur 'lwadbled' ainsi qu'une base de donnée du même nom. Dans cette base de donnée, je crée une table 'utilisateur' contenant un identifiant et un mot de passe. Cette table permettra la connexion à la plateforme. J'y ajoute l'utilisateur 'lwadbled' avec un mot de passe.

Diagramme UML de la base de donnée

Ce diagramme UML représente la base de donnée que je met en place. Il est possible que celui ci soit modifié par la suite si je me rends compte d'une erreur. Le banc est représenté par un numéro, et possèdera au minimum 3 appareils. L'utilisateur est représenté par un identifiant et un mot de passe et un créneau par un jour. La réservation est l'association entre un utilisateur, un banc et une date. Cette table reprends les champs identifiant, numéro et jour, et ajoute également les heures de début et de fin du créneau. On peut traduire l'association par : pour un créneau donné, un banc peut être réservé par un unique utilisateur.

Une fois tout ceci fait, on peut reprendre la page de login et se connecter avec le l'utilisateur tout juste créé :

Connexion de l'utilisateur 'lwadbled'
Page de vérification de la connexion

Semaine 5

Concernant l'interface Web, j'ai créé un dépôt GIT contenant les codes de la page sur archives.plil (lien vers le dépôt dans la section Documents Rendus).

J'ai implémenté la possibilité de réserver des créneaux. Une fois le créneau réservé, les informations suivantes sont stockés dans la BDD : le banc choisi, le nom de l'utilisateur, la date, l'heure de début et l'heure de fin du créneau. Un créneau dure 1h. Je n'ai pas encore implémenté le blocage des créneaux déjà réservés, mais c'est quelque chose de très important à réaliser le plus vite possible.

De plus, j'ai ajouté une page pour voir les réservations effectués. Sur cette même page, il est possible de supprimer une réservation faite. Ensuite je vais y ajouter le lien vers la page de visualisation et de commande du banc lorsque l'on est dans le créneau (date+heure). Je n'ai pas encore touché à la page de visualisation et de commande du banc.

Les trois captures suivantes montrent les pages de réservations effectués. Le design reste à être modifié :

Exemple de la page de réservation
Page "mes reservations"
Page "mes reservations" après suppression de la réservation

Pour le PCB de la matrice, je réduis encore sa taille.

Semaine 6

Semaine 7

Semaine 8

Documents rendus

Dépôt GIT