~~NOTOC~~ =======Commande de porte à lecteur RFID======= Nous avons découvert les systèmes automatisés et leur programmation à travers des activités simples les années précédentes. Nous allons aujourd'hui étudier et programmer un système plus complexe. **Compétence(s)** * CT 4.2 Appliquer les principes élémentaires de l’algorithmique et du codage à la résolution d’un problème simple. * CT 5.5 Modifier ou paramétrer le fonctionnement d’un objet communicant. **J’ai acquis la(les) compétence(s) si :** * Je suis capable de modifier un algorithme de fonctionnement initial afin de répondre à un nouveau besoin * J'ai acquis les notions de variables, sous-programmes, temporisations/délais {{ :serrurerfid.jpg?200|Cliquer pour agrandir}} Dans une entreprise traitant des données sensibles, l'accès aux différents locaux se fait grâce à des badges RFID. Les portes se ferment et se verrouillent automatiquement grâce à des systèmes à ressorts. La présentation du badge adéquat au lecteur figurant sur la porte permet de déverrouiller la gâche un court instant ce qui permet d'ouvrir la porte. =====Présentation du système===== ====Composition du système de déverrouillage==== {{ :maquette_rfid_bb.png?200|Cliquer pour agrandir}} * Une carte [[uno|Arduino]] * Un module RFID [[cap635|CAP635 (RC522)]] : broches RST = 9 et SDA = 10 * Un servomoteur : broche 3 fermé = 10° et ouvert = 150° * Une LED rouge avec sa résistance de limitation : broche 4 qui indique "Porte fermé" * Une LED verte avec sa résistance de limitation : broche 5 qui indique "Porte ouverte" ====Fonctionnement du programme==== ===Initialisation=== Au démarrage : * la LED rouge est allumée, la LED verte est éteinte et le servomoteur est en position fermeture. * le n° de badge autorisé est noté dans une variable ===Boucle principale=== Le programme répète la séquence suivante : * Si l'on présente un badge et si son code est valide * Si le code lu est identique au code enregistré dans le programme * la LED verte s'allume et le servomoteur pivote en position ouverture pendant 3 secondes puis repasse en position fermeture et la LED verte s'éteint. * Si le badge présenté n'est pas le bon, la LED rouge clignote 3 fois et le servomoteur reste en position fermeture. * Le badge est invalidé jusqu'à son retrait (pour éviter plusieurs ouvertures intempestives). =====Activité===== ====Étude du système==== {{ :serrure2.png?300|}} En vous aidant de toutes les ressources disponibles (liens) ou de vos recherches personnelles : - Dessiner le schémas bloc en trouvant les fonctions techniques à réaliser et les solutions utilisées. - Dessiner la chaîne d'information et d'énergie en y plaçant les composants utilisés. - Proposer un système mécanique destiné à transformer le mouvement de rotation du servomoteur en mouvement de translation du pêne de verrouillage. Faire un croquis légendé et noter les explications. ====Programmation==== Grâce à la maquette et aux trois tag fournis avec, réalisez un programme qui déclenche l'ouverture dans les conditions précisées plus haut. Vous utiliserez [[https://ide.mblock.cc|mBloc]] et y chargerez le {{ :serrurerfid.zip |début de programme suivant}} (décompresser le fichier avant de l'ouvrir). Le programme nécessite des extensions mBlock spécifiques à l'ARDUINO UNO : ===RFID de Yeni (basé sur MFRC522 RFID : Gestion de la carte RFID)=== {{:rfid_codemblock.png?350 |Cliquer pour agrandir}} Initialisation de la carte RFID en utilisant les broches 10 et 9 pour les entrées SDA et RST Présence carte ? (résultat Vrai ou Faux) Code valide ? (résultat Vrai ou Faux) Code carte (N° de carte sous forme texte) Invalidation code jusqu'à nouvelle présentation ===Strings de Extransfer (Gestion des chaînes textes)=== {{:aau_codemblock.png?200 |Cliquer pour agrandir}} Définir une variable texte. ex. "Bonjour" ou "12345" (en informatique, le texte "12345" est différent du nombre 12345). Utiliser la variable texte ===Coup de pouce=== * Indiquer durant l'initialisation le N° du Tag qui permet d'ouvrir la porte dans la variable texte 1 * Lors de la lecture du N° du Tag de la carte, le mettre dans la variable texte 2 * comparer les 2 variable pour définir l'action