I2L 2022 Groupe2

De wiki-se.plil.fr
Révision datée du 15 juin 2023 à 12:03 par Dclairet (discussion | contributions) (Ajouts sections compilation)
Aller à la navigation Aller à la recherche

Proposition de système

Nous proposons un vérificateur de mot de passe. La carte comporterait 3 LED correspondant à 3 essais, si l'essai est mauvais la led est rouge et on passe à un nouvel essai, si l'essai est bon ça passe au vert et ensuite l'état est remis à 0. Au bout de 3 essais ratés tout est au rouge et est remis à 0 ensuite.

Contre-proposition

Pas de difficulté sur la programmation de la carte. Le code doit être programmé dans le périphérique USB. Ce périphérique USB doit comporter une interface avec un point d'accès IN et un point d'accès OUT. Le point d'accès OUT est utilisée pour envoyer le code proposé vers la carte, le point d'accès IN est utilisée pour lire la réponse de la carte (code correct ou non). Le programme sur PC utilisera la bibliothèque libusb-1.0.

Carte

Schéma
Carte
Carte soudée

Fonctionnement du système embarqué

Le projet consiste en un périphérique USB qui intègre un mot de passe et des LEDs. Lorsqu'il est connecté à un ordinateur, on lance un programme, demandant à l'utilisateur de saisir un mot de passe. L'utilisateur dispose de quatre essais pour entrer le mot de passe correct. Chaque essai infructueux allume une LED rouge. Si le mot de passe est correct, les LEDs s'allument en vert pour signaler une authentification réussie. Si les quatre essais échouent, toutes les LEDs rouges clignotent rapidement, et empêche toute tentative supplémentaire d'entrer un mot de passe.

Programmes

Lien du projet GitHub : https://github.com/hisakiyo/systeme-embarque

Première version (test de l'allumage des leds à l'aide des boutons) : Fichier:Projet embarqué V1.zip

Version finale : Fichier:Projet embarqué V2.zip

Démonstration du fonctionnement

Voici une vidéo où nous entrons plusieurs 3 mots de passe incorrects puis le bon mot de passe.

Compilation

Utilitaires

  • gcc-avr
  • avr-libs
  • libusb
  • LUFA


Commandes nécessaires

Au sein du dossier Input, compiler le programme présent sur la carte

make && make download


Au sein du dossier Output, compiler le programme tournant sur le PC

Lors du make, le projet génère un exécutable sous le nom proj_echo

make && ./proj_echo

Conclusion

Historique des travaux

TP du Lundi 22 mai :

Programmation en C dans le but de faire clignoter la LED, en précisant un timing précis et en utilisant l'horloge ajouté sur la carte. En fin de séance, nous étions occupés à allumer la LED uniquement lorsque nous appuyons sur un bouton.

TP du Jeudi 25 mai :

Notre carte contient désormais 7 leds (3 rouges, 3 vertes et une bleue) ainsi que 2 boutons. Dans un premier temps, nous avons programmé en C un programme qui : par défaut maintient les leds éteintes, sur l'appui du bouton gauche on allume les leds rouges et bleue et sur le bouton droit on allume les vertes.

Suite à ça nous avons pris en main un projet LUFA en y ajoutant la base "Minimal", avec lsusb -vvv nous vérifions si notre périphérique USB contient bien une interface, ce qui n'est pas le cas pour l'instant.


TP du Lundi 12 juin :

En début de projet, nous avons récupéré une base LUFA ainsi qu'une base utilisant la librairie libusb. Après avoir testé ces deux programmes, nous avons bien une interface de renseigné et le IN/OUT fonctionnel.

Nous avons rencontré un problème avec le code erreur -7 qui provenait du stockage (uint8_t EP_Data;), en ajoutant "volatile" devant le typage, cela a réglé le soucis.

Pour finir, nous avons réunis les deux projets en un seul pour plus de facilité lors de nos programmations, ce projet est disponible sur le lien GitHub dans les fichiers. Nous avons démarré la programmation de la lecture d'un mot de passe, en commençant par envoyer 10 caractères et en vérifiant la bonne réception sur le premier caractère.

En fin de séance, nous avons démarré la programmation sur la comparaison de mot de passe.

Envoi d'un mot de passe de 10 caractères, le périphérique renvoi 01 ce qui veut dire que le mot de passe n'est pas bon


TP du Jeudi 15 juin :

Finalisation du développement sur la comparaison de mot de passe ainsi que du Wiki. L'utilisateur a 4 essais au sein d'un prompt, la carte contient le mot de passe et les leds indique si le mot de passe est ok ou non.

Fichiers

Projet KiCAD : Fichier:I2L-2022-CLAIRET-MARETTE.zip

Projet LUFA "écho" : Fichier:I2L-2022-LUFA-echo.zip

Programme libusb-1.0 "écho" : Fichier:I2L-2022-libusb-echo.zip

Projet GitHub réunissant la partie périphérique et la partie PC : https://github.com/hisakiyo/systeme-embarque

Pour compiler le programme "libusb" il faut juste avoir installé un compilateur C et la bibliothèque libusb-1.0-0-dev.

Pour compiler le projet LUFA, il faut commencer par récupérer la bibliothèque lufa-LUFA-210130. Il faut ensuite placer le répertoire de l'archive dans un nouveau répertoire I2L créé dans le répertoire de la bibliothèque : lufa-LUFA-210130/I2L/Echo. Un simple make compile le projet et un make dfu télécharge le binaire dans le périphérique USB.