{"id":6697,"date":"2021-01-07T18:13:28","date_gmt":"2021-01-07T17:13:28","guid":{"rendered":"https:\/\/telefab.fr\/?p=6697"},"modified":"2026-04-30T17:33:31","modified_gmt":"2026-04-30T15:33:31","slug":"solution-technique-flem","status":"publish","type":"post","link":"https:\/\/hub.imt-atlantique.fr\/fablab\/solution-technique-flem\/","title":{"rendered":"Solution Technique &#8211; FLEM"},"content":{"rendered":"<p><em><span style=\"text-decoration: underline;\">Auteurs:<\/span> Elias DHOUIB, Marwen BEN AYED et Fran\u00e7ois-Louis JAFFRY<\/em><\/p>\n<p><b>Plan :<span class=\"Apple-converted-space\">\u00a0<\/span><\/b><\/p>\n<p><b>I-Contexte<\/b><\/p>\n<p><b>II-Pr\u00e9sentation de la solution technique de mani\u00e8re synth\u00e9tique<\/b><\/p>\n<p><b>III-Pr\u00e9sentation de la solution de mani\u00e8re d\u00e9taill\u00e9e<\/b><\/p>\n<p><b>IV-Lien vers le code<\/b><\/p>\n<p><b>V-Protocole de communication<\/b><\/p>\n<p><b>VI-Justification des choix techniques<\/b><\/p>\n<p><b>VII-Perspectives<\/b><\/p>\n<p><b>VIII-Sources<\/b><\/p>\n<p>&nbsp;<\/p>\n<p><b>I-Contexte<\/b><\/p>\n<p>Dans le cadre de notre projet TAF COOC, nous \u00e9tions amen\u00e9s \u00e0 r\u00e9aliser un objet communiquant.<\/p>\n<p>Notre objet est destin\u00e9 \u00e0 la gestion et l\u2019optimisation des bureaux de travail en entreprise. En effet, l\u2019arriv\u00e9e de la crise COVID-19 a acc\u00e9l\u00e9r\u00e9 le ph\u00e9nom\u00e8ne du t\u00e9l\u00e9travail, entra\u00eenant une re-dimension des espaces et lieux de travail: le bureau fixe que l\u2019employ\u00e9 garde jusqu\u2019\u00e0 la fin de sa carri\u00e8re dispara\u00eet progressivement.<span class=\"Apple-converted-space\">\u00a0<\/span><\/p>\n<p>Ainsi cette nouvelle organisation du travail est \u00e0 l\u2019origine de nombreuses r\u00e9percussions notamment sur la r\u00e9partition des bureaux, certains employ\u00e9s ne connaissant pas forc\u00e9ment leur emplacement attribu\u00e9 avant d\u2019arriver dans les locaux de l\u2019entreprise.<\/p>\n<p>Nous avons ainsi con\u00e7u un objet communicant qui a pour but d\u2019indiquer l\u2019emplacement des bureaux de chacun des employ\u00e9s, mais aussi de pouvoir choisir ses jours de t\u00e9l\u00e9travail, consulter son emploi du temps et r\u00e9partir les employ\u00e9s dans diff\u00e9rents bureaux gr\u00e2ce \u00e0 une application qui sera en communication directe avec cet objet.<\/p>\n<p>Cette solution a pour ambition de simplifier les conditions de travail des employ\u00e9s en entreprise.<\/p>\n<p><b>II<\/b>&#8211;<b>Pr\u00e9sentation de la solution technique de mani\u00e8re synth\u00e9tique<\/b><\/p>\n<p><span class=\"Apple-converted-space\">\u00a0<\/span><b>1)L\u2019objet<\/b><\/p>\n<p>L\u2019objet connect\u00e9 est tr\u00e8s intuitif, il s\u2019agit d\u2019un afficheur LCD et d\u2019un lecteur RFID reli\u00e9s \u00e0 une carte Arduino Uno. Cela permettra d\u2019afficher en temps r\u00e9el l\u2019emplacement des bureaux des employ\u00e9s lorsqu\u2019ils auront pos\u00e9 leur badge sur le lecteur RFID, information qui sera aussi envoy\u00e9e directement sur l\u2019application gr\u00e2ce \u00e0 un module wifi (ESP8266).<\/p>\n<p><b>2) L\u2019application<\/b><\/p>\n<p>L\u2019application FLEM est accessible sur le smartphone de chaque utilisateur. Sur la page d\u2019accueil il faut d\u2019abord s\u2019authentifier gr\u00e2ce \u00e0 une adresse mail et<span class=\"Apple-converted-space\">\u00a0 <\/span>mot de passe pr\u00e9alablement d\u00e9finis par l\u2019entreprise. En fonction du statut (employ\u00e9 ou manager) certaines fonctionnalit\u00e9s vont \u00eatre diff\u00e9rentes. Voici l\u2019interface d\u2019authentification:<a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-16-%C3%A0-13.44.07.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-6698 aligncenter\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-16-%C3%A0-13.44.07-142x300.png\" alt=\"\" width=\"142\" height=\"300\" \/><\/a><\/p>\n<p><span style=\"text-decoration: underline;\">Dans le cadre d\u2019un employ\u00e9 :<\/span><\/p>\n<p>Apr\u00e8s authentification, il acc\u00e8dera \u00e0 son profil dans lequel il pourra:<\/p>\n<ul>\n<li>choisir\/modifier sa photo de profil<\/li>\n<li>choisir\/modifier ses jours de t\u00e9l\u00e9travail<\/li>\n<li>consulter ses jours s\u00e9lectionn\u00e9s<\/li>\n<li>consulter le bureau qu\u2019il lui est affect\u00e9 le jour m\u00eame<\/li>\n<\/ul>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-16-%C3%A0-14.26.40.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-6699 alignleft\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-16-%C3%A0-14.26.40-142x300.png\" alt=\"\" width=\"142\" height=\"300\" \/><\/a><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-16-%C3%A0-14.27.26.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-6700 alignleft\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-16-%C3%A0-14.27.26-142x300.png\" alt=\"\" width=\"142\" height=\"300\" \/><\/a><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-16-%C3%A0-14.28.04.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-6701 alignleft\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-16-%C3%A0-14.28.04-142x300.png\" alt=\"\" width=\"142\" height=\"300\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-decoration: underline;\">Dans le cadre du manager :<\/span><\/p>\n<p>Apr\u00e8s authentification, il acc\u00e8dera \u00e0 son profil dans lequel il pourra:<\/p>\n<ul>\n<li>choisir\/modifier sa photo de profil (m\u00eame affichage que pour l\u2019employ\u00e9)<\/li>\n<li>choisir\/modifier ses jours de t\u00e9l\u00e9travail (m\u00eame affichage que pour l\u2019employ\u00e9)<\/li>\n<li>consulter l\u2019emploi du temps de son \u00e9quipe<\/li>\n<li>attribuer les bureaux aux membres de son \u00e9quipe<\/li>\n<li>choisir\/modifier les jours de t\u00e9l\u00e9travail de son \u00e9quipe<\/li>\n<li>consulter les bureaux disponibles<\/li>\n<\/ul>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-16-%C3%A0-13.57.32.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-6703\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-16-%C3%A0-13.57.32-142x300.png\" alt=\"\" width=\"142\" height=\"300\" \/><\/a> <a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-16-%C3%A0-13.54.04.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-6704\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-16-%C3%A0-13.54.04-143x300.png\" alt=\"\" width=\"143\" height=\"300\" \/><\/a> <a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-16-%C3%A0-13.55.20.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-6705\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-16-%C3%A0-13.55.20-142x300.png\" alt=\"\" width=\"142\" height=\"300\" \/><\/a> <a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-16-%C3%A0-13.56.38.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-6706\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-16-%C3%A0-13.56.38-142x300.png\" alt=\"\" width=\"142\" height=\"300\" \/><\/a><\/p>\n<p><b>III-Pr\u00e9sentation de la solution de mani\u00e8re d\u00e9taill\u00e9e<\/b><\/p>\n<p><b>1) Diagramme d\u2019architecture mat\u00e9rielle\/logicielle<\/b><\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-17-%C3%A0-21.33.21.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-6707 size-full\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-17-%C3%A0-21.33.21.png\" alt=\"\" width=\"1158\" height=\"662\" \/><\/a><\/p>\n<p>Voici ci-dessus le diagramme d\u2019architecture de la solution que nous avons d\u00e9termin\u00e9. Notre solution propos\u00e9e est compos\u00e9e de trois parties.<span class=\"Apple-converted-space\">\u00a0<\/span><\/p>\n<p>D\u2019une part, les utilisateurs (\u00e0 savoir managers et employ\u00e9s), ont acc\u00e8s \u00e0 l\u2019application FLEM sur leur smartphone. Celle-ci permet aux employ\u00e9s d\u2019acc\u00e9der \u00e0 leur emploi du temps, \u00e0 la r\u00e9partition des bureaux et de saisir leurs pr\u00e9f\u00e9rences en termes de jours de t\u00e9l\u00e9travail. Les managers ont acc\u00e8s \u00e0 ces fonctionnalit\u00e9s, mais peuvent aussi d\u00e9cider de l\u2019emploi du temps de leurs employ\u00e9s et de leur attribuer des bureaux.<span class=\"Apple-converted-space\">\u00a0<\/span><\/p>\n<p>D\u2019autre part, nous avons con\u00e7u un objet connect\u00e9 permettant d\u2019afficher en temps r\u00e9el la r\u00e9partition des bureaux au sein des locaux et la pr\u00e9sence ou non des employ\u00e9s \u00e0 leur bureau. Ceci est permis gr\u00e2ce \u00e0 un lecteur RFID dispos\u00e9 sur chaque bureau, qui d\u00e9tecte la pr\u00e9sence du badge de l\u2019employ\u00e9 et envoie cette information \u00e0 une carte Arduino. Apr\u00e8s v\u00e9rification de l\u2019identit\u00e9 du badge, l\u2019\u00e9cran LCD affiche un message de bienvenue \u00e0 l\u2019employ\u00e9, et offre la possibilit\u00e9 d\u2019afficher la r\u00e9partition physique des bureaux et de leurs occupants.<\/p>\n<p><span class=\"Apple-converted-space\">\u00a0<\/span>Le dialogue entre ces deux parties est r\u00e9alis\u00e9 par l\u2019interm\u00e9diaire d\u2019un serveur. Celui-ci contient un fichier Excel qui stocke les donn\u00e9es des utilisateurs, leurs emplois du temps et bureaux, et leurs identifiants de badge. En manoeuvrant l\u2019application, chaque utilisateur agit directement sur le fichier Excel. Le syst\u00e8me Arduino, lui, interagit avec Firebase, une plateforme permettant de modifier en temps r\u00e9el les donn\u00e9es d\u2019un fichier en \u00e9vitant de le manipuler \u00e0 chaque fois. Cette connexion est permise par une carte WiFi ESP8266, qui \u00e9tablit la connexion entre la carte Arduino et le serveur.<\/p>\n<p><span style=\"text-decoration: underline;\">Liste du mat\u00e9riel :<\/span><b><span class=\"Apple-converted-space\">\u00a0<\/span><\/b><\/p>\n<ul>\n<li>Une carte Arduino UNO Rev3<\/li>\n<li>Un afficheur LCD 2\u00d716 I2C<\/li>\n<li>Un module Wifi type ESP8266<\/li>\n<li>Un module RFID-RC522<\/li>\n<li>Un Badge RFID<\/li>\n<li>Des fils de liaison (GND LCD =&gt; GND Arduino, VCC LCD =&gt; 5V Arduino \u2026)<\/li>\n<\/ul>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-17-%C3%A0-21.35.05.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-6711 size-full\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-17-%C3%A0-21.35.05.png\" alt=\"\" width=\"840\" height=\"580\" \/><\/a><\/p>\n<p><b>2) Mat\u00e9riel utilis\u00e9 et montage \u00e9lectronique<\/b><\/p>\n<p><b>A. Carte Arduino-Uno<span class=\"Apple-converted-space\">\u00a0<\/span><\/b><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-17-%C3%A0-21.35.11.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-6710 aligncenter\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-17-%C3%A0-21.35.11-300x228.png\" alt=\"\" width=\"300\" height=\"228\" \/><\/a><\/p>\n<p><b>B. Afficheur LCD<\/b><\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-17-%C3%A0-21.35.15.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-6709 aligncenter\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-17-%C3%A0-21.35.15-255x300.png\" alt=\"\" width=\"255\" height=\"300\" \/><\/a><\/p>\n<p>L\u2019afficheur LCD est compos\u00e9 de deux faces.<br \/>\nSur la face avant se trouve l\u2019\u00e9cran LCD et sur la face arri\u00e8re un module d\u2019interface I2C.<\/p>\n<p>La communication avec la carte Arduino se fait gr\u00e2ce au protocole I2C sur deux lignes d\u00e9nomm\u00e9es SCL et SDA. Il faut ajouter les lignes d\u2019alimentation VCC et GND.<\/p>\n<p><span style=\"text-decoration: underline;\"><b>Biblioth\u00e8ques utilis\u00e9es :\u00a0<\/b><\/span><\/p>\n<p>LiquidCrystal_I2C<\/p>\n<p><span style=\"text-decoration: underline;\"><b>Fonctions utilis\u00e9es :<\/b><\/span><\/p>\n<p>lcd.init(); # initialise le lcd<\/p>\n<p>lcd.backlight();<\/p>\n<p>lcd.print(\u00ab\u00a0Laure\u00a0: Bureau 9!\u00a0\u00bb);\u00a0<span class=\"Apple-converted-space\">\u00a0 <\/span>#Affiche le message sur le LCD<\/p>\n<p><span style=\"text-decoration: underline;\">Montage:<\/span><span class=\"Apple-converted-space\">\u00a0<\/span><\/p>\n<p>On relie le VCC au 5V et le GND au GND de l\u2019Arduino<\/p>\n<p>On branche le SDA sur A4<\/p>\n<p>On branche le SCL sur A5<\/p>\n<p><b>C. Module RFID RC522<\/b><\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-17-%C3%A0-21.35.24.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6708 size-full aligncenter\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-17-%C3%A0-21.35.24.png\" alt=\"\" width=\"668\" height=\"424\" \/><\/a><\/p>\n<p><span style=\"text-decoration: underline;\">Montage:<\/span><\/p>\n<p>Le montage du module RFID se compose de 7 (sept) fils :<\/p>\n<ul>\n<li>RST\/Reset\u00a0\u00a0\u00a0RST\u00a0\u00a0 \u00a0 \u00a0\u00a0\u2014&gt;\u00a0\u00a0\u00a0Pin 9 Arduino<\/li>\n<li>SPI SS\u00a0 \u00a0 \u00a0\u00a0SDA(SS)\u00a0\u00a0\u2014&gt;\u00a0 \u00a0\u00a0Pin 10 Arduino<\/li>\n<li>SPI MOSI\u00a0 \u00a0\u00a0MOSI\u00a0 \u00a0 \u00a0\u00a0\u2014&gt;\u00a0\u00a0Pin 11 Arduino<\/li>\n<li>SPI MISO\u00a0 \u00a0\u00a0MISO\u00a0\u00a0 \u00a0\u00a0\u2014&gt;\u00a0 \u00a0\u00a0Pin 12 Arduino<\/li>\n<li>SPI SCK\u00a0\u00a0 \u00a0\u00a0SCK\u00a0 \u00a0 \u00a0\u00a0\u2014&gt;\u00a0 \u00a0\u00a0Pin 13 Arduino<\/li>\n<li>GND<\/li>\n<li>VCC 3,3V<span class=\"Apple-converted-space\">\u00a0<\/span><\/li>\n<\/ul>\n<p><span style=\"text-decoration: underline;\"><b>Biblioth\u00e8ques utilis\u00e9es:<\/b><\/span><\/p>\n<p>La librairie\u00a0<a href=\"https:\/\/www.arduino.cc\/en\/reference\/SPI\">SPI.h<\/a>\u00a0qui va permettre d\u2019\u00e9tablir la communication entre la carte Arduino et le module; et la librairie\u00a0<a href=\"https:\/\/github.com\/miguelbalboa\/rfid\">MFRC522.h<\/a>\u00a0qui va permettre de dialoguer avec le module.<\/p>\n<p><b>D. Badge<span class=\"Apple-converted-space\">\u00a0<\/span><\/b><\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-17-%C3%A0-21.40.53.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-6712 aligncenter\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-17-%C3%A0-21.40.53-300x118.png\" alt=\"\" width=\"300\" height=\"118\" \/><\/a><\/p>\n<p><span style=\"text-decoration: underline;\">Montage:<\/span> Suffit de passer la carter sur lecteur RFID afin d\u2019en extraire l\u2019ID<\/p>\n<p>Biblioth\u00e8que utilis\u00e9e\u00a0:<\/p>\n<p>Librairie RFID (cf <a href=\"https:\/\/github.com\/miguelbalboa\/rfid\">https:\/\/github.com\/miguelbalboa\/rfid<\/a>)<\/p>\n<p><span style=\"text-decoration: underline;\"><b>Fonctions utilis\u00e9es:<span class=\"Apple-converted-space\">\u00a0<\/span><\/b><\/span><\/p>\n<p><b>#Affichage de l\u2019ID<\/b><\/p>\n<p>Serial.println(\u00ab\u00a0Un badge est d\u00e9tect\u00e9\u00a0\u00bb);<\/p>\n<p>Serial.println(\u00a0\u00bb L&rsquo;UID du tag est:\u00a0\u00bb)<\/p>\n<p><b>E. Module wifi ESP8266<\/b><\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-17-%C3%A0-21.40.59.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-6713 aligncenter\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-17-%C3%A0-21.40.59-300x259.png\" alt=\"\" width=\"300\" height=\"259\" \/><\/a><\/p>\n<p>La seule difficult\u00e9 ici est li\u00e9e au fait que notre Arduino fonctionne en 5v, alors que l&rsquo;ESP8266 fonctionne lui en 3.3v. Nous avons ainsi r\u00e9alis\u00e9 les branchements suivants:<\/p>\n<ul>\n<li>VCC \u2014&gt; 3,3v Arduino<\/li>\n<li>GND \u2014&gt; GND Arduino<\/li>\n<li>RX \u2014&gt; Pin 10 Arduino (L&rsquo;ESP8266 ne doit pas recevoir de 5v sur ses pins.<br \/>\nNous devons donc ici convertir le signal 5v en 3.3v.)<\/li>\n<li>TX \u2014&gt; Pin 11 Arduino<\/li>\n<\/ul>\n<p>CH_PD \u2014&gt; 3,3v Arduino (La pin CH_PD doit \u00eatre au niveau haut pour que le module fonctionne)<\/p>\n<p><strong><span style=\"text-decoration: underline;\">Biblioth\u00e8que utilis\u00e9e:<\/span><\/strong><\/p>\n<p>EDI ARDUINO<\/p>\n<p><strong><span style=\"text-decoration: underline;\">Commandes utilis\u00e9es:<span class=\"Apple-converted-space\">\u00a0<\/span><\/span><\/strong><\/p>\n<p>AT\u00a0: permet de v\u00e9rifier que nous arrivons \u00e0 communiquer avec le module<\/p>\n<p>AT+CWLAP\u00a0:<span class=\"Apple-converted-space\">\u00a0 <\/span>retourne la liste des r\u00e9seaux Wi-Fi \u00e0 port\u00e9e<\/p>\n<p>AT+CWJAP Connexion \u00e0 un r\u00e9seau Wi-Fi. Cette commande prend deux param\u00e8tres: le SSID du r\u00e9seau, et le mot de passe.<\/p>\n<p>Par exemple: AT+CWJAP=\u00a0\u00bbLivebox-1234&Prime;,\u00a0\u00bbMonMotDePasseWifi\u00a0\u00bb<\/p>\n<p>AT+CIFSR\u00a0: Une fois le module connect\u00e9 \u00e0 un r\u00e9seau, cette commande permet de r\u00e9cup\u00e9rer son adresse IP.<\/p>\n<p>AT+CIPSTART\u00a0: Initialise une connexion.<\/p>\n<p>AT+CIPSEND\u00a0:D\u00e9marre l\u2019envoi de donn\u00e9es sur une connexion.<\/p>\n<p>AT+CIPCLOSE : Ferme une connexion.<\/p>\n<p>Dans un premier temps, nous avons connect\u00e9 la carte Arduino avec le lecteur RFID. Une fois cette connexion \u00e9tablie, le moniteur s\u00e9rie pr\u00e9sent sur l\u2019ordinateur affiche l\u2019identifiant du badge d\u00e9tect\u00e9 par le lecteur. Il s\u2019agissait maintenant de connecter l\u2019\u00e9cran LCD \u00e0 la carte Arduino en parall\u00e8le. L\u2019afficheur LCD TFT Touchscreen n\u00e9cessitait trop de branchements sur la carte Arduino pour \u00eatre branch\u00e9 en parall\u00e8le avec le lecteur RFID. Nous avons donc opt\u00e9 pour un afficheur 2&#215;16, qui n\u00e9cessitait beaucoup moins de branchements. La connexion parall\u00e8le permettait donc d\u2019afficher sur l\u2019\u00e9cran LCD un message de bienvenue de l\u2019employ\u00e9 si celui-ci \u00e9tait le bon ainsi que le num\u00e9ro du bureau par d\u00e9faut. Par manque de temps, nous n\u2019avons pas r\u00e9ussi \u00e0 \u00e9tablir la connexion entre le module Arduino et le serveur. Nous avons donc d\u00e9fini directement le lien entre identifiant et employ\u00e9 sur la carte Arduino pour r\u00e9aliser la connexion. De ce fait, le montage pour la d\u00e9monstration ne n\u00e9cessitait pas de module WiFi ESP8266.<\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-17-%C3%A0-21.43.40.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-6714 size-full\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-17-%C3%A0-21.43.40.png\" alt=\"\" width=\"460\" height=\"642\" \/><\/a> <a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-17-%C3%A0-21.43.49.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-6715\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-17-%C3%A0-21.43.49-300x232.png\" alt=\"\" width=\"300\" height=\"232\" \/><\/a> <a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-17-%C3%A0-21.43.44.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-6716\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-17-%C3%A0-21.43.44-300x228.png\" alt=\"\" width=\"300\" height=\"228\" \/><\/a><\/p>\n<p><b>2) Application mobile<\/b><\/p>\n<p>Le d\u00e9tail sur la structure de l\u2019application se d\u00e9coupe en deux parties, \u00e0 savoir le frontend et le backend. Les tests ont \u00e9t\u00e9 r\u00e9alis\u00e9s sur un \u00e9mulateur API27 et les ressources (Excel+photos) sont g\u00e9r\u00e9es localement dans la m\u00e9moire du t\u00e9l\u00e9phone.<\/p>\n<p><b>A. Frontend<\/b><\/p>\n<p>Le frontend fait r\u00e9f\u00e9rence \u00e0 l\u2019ensemble des \u00e9l\u00e9ments visibles et accessibles depuis l\u2019application. La r\u00e9alisation de celui-ci se d\u00e9coupe en trois parties, \u00e0 savoir:<\/p>\n<ul>\n<li>la police de caract\u00e8re<\/li>\n<li>la mise en page des widgets<\/li>\n<li>la mise en page globale<span class=\"Apple-converted-space\">\u00a0<\/span><\/li>\n<\/ul>\n<p><b>1. La police de caract\u00e8re:<\/b><\/p>\n<p>Pour mettre en forme la police de caract\u00e8re, nous avons r\u00e9alis\u00e9 nos recherches sur Google Fonts. Nous avons s\u00e9lectionn\u00e9 trois polices de caract\u00e8res:<\/p>\n<ul>\n<li>Nunito (black italic)<\/li>\n<li>Nunito (regular)<\/li>\n<li>Sansita (regular)<\/li>\n<\/ul>\n<p>Pour<span class=\"Apple-converted-space\">\u00a0 <\/span>int\u00e9grer ces polices de caract\u00e8res sous Android Studio, il faut cr\u00e9er un dossier \u201cfont\u201d puis dans la classe java il faut importer la classe TypeFace puis l\u2019appliquer \u00e0 l\u2019objet en question (ex: TextView, Button\u2026):<\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-17-%C3%A0-21.44.21.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-6717 size-full\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-17-%C3%A0-21.44.21.png\" alt=\"\" width=\"1200\" height=\"188\" \/><\/a><\/p>\n<p><b>2. La mise en page des widgets<\/b><\/p>\n<p>Pour mettre en forme une table ou un bouton, nous avons d\u00fb r\u00e9aliser des fichiers XML dans le r\u00e9pertoire \u201cdrawable\u201d. Comme le d\u00e9montre l\u2019exemple d\u2019images ci-dessous, nous avons d\u00fb d\u00e9finir les diff\u00e9rents param\u00e8tres de forme de notre objet:<\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-17-%C3%A0-21.44.28.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-6718 size-full\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-17-%C3%A0-21.44.28.png\" alt=\"\" width=\"1192\" height=\"274\" \/><\/a><\/p>\n<p>Ici:<\/p>\n<ul>\n<li>\u201csolid\u201d permet de d\u00e9finir<span class=\"Apple-converted-space\">\u00a0 <\/span>la couleur de l\u2019int\u00e9rieur de l\u2019objet (ici beige orang\u00e9)<\/li>\n<li>\u201ccorners\u201d permet de d\u00e9finir la couleur et la forme des traits. Ici la forme choisie est arrondie. Si nous avions choisi une forme rectangulaire nous aurions mis \u201craduis=0dp\u201d (par d\u00e9faut)<\/li>\n<li>\u201cstroke\u201d permet de d\u00e9finir la couleur du contour<\/li>\n<li>\u201cpadding\u201d permet de d\u00e9finir les marges entre le texte et le contour<\/li>\n<\/ul>\n<p><strong>3. La mise en page globale<\/strong><\/p>\n<p>Pour mettre en page les diff\u00e9rents objets, nous avons r\u00e9alis\u00e9 la police de caract\u00e8re plus la mise en page des widgets et enfin une harmonisation du tout. Pour ce faire, nous avons:<\/p>\n<ul>\n<li>ajout\u00e9 un arri\u00e8re plan \u00e0 chaque layout<\/li>\n<li>regroup\u00e9 les objets dans des LinearLayout (vertical ou horizontal)<\/li>\n<li>ajout\u00e9 des ImageView pour accompagner les TextView<\/li>\n<\/ul>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-17-%C3%A0-21.44.34.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-6719 size-full\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-17-%C3%A0-21.44.34.png\" alt=\"\" width=\"1216\" height=\"578\" \/><\/a><\/p>\n<p><strong>B. Backend<\/strong><\/p>\n<p>Le backend fait r\u00e9f\u00e9rence \u00e0 l\u2019ensemble des parties invisibles de l\u2019application mobile afin de permettre le bon fonctionnement de celle-ci. Dans cette partie nous n\u2019allons pas rentrer dans la fonctionnalit\u00e9 de chaque objet (ex: lorsque nous cliquons sur un bouton ceci permet de lancer une activit\u00e9 par l\u2019interm\u00e9diaire d\u2019un Intent) mais plut\u00f4t dans la gestion des emplois du temps, des bureaux et des photos de profil.<\/p>\n<p><strong>1. Structure du fichier Excel<\/strong><\/p>\n<p>Pourquoi le choix d\u2019un fichier Excel ? Celui-ci est motiv\u00e9 par son accessibilit\u00e9 importante et dans le cas d\u2019une panne (probl\u00e8me de connexion avec le serveur) l\u2019entreprise peut continuer de g\u00e9rer l\u2019organisation des jours de t\u00e9l\u00e9travail.<\/p>\n<p>Au niveau de sa structure, Excel reste relativement simple. La feuille num\u00e9ro 1 permet d\u2019avoir la liste des employ\u00e9s avec toute les informations n\u00e9cessaires ainsi que les jours de t\u00e9l\u00e9travail:<\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-17-%C3%A0-21.44.49.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-6720 size-full\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-17-%C3%A0-21.44.49.png\" alt=\"\" width=\"1250\" height=\"348\" \/><\/a><\/p>\n<ul>\n<li>chaque employ\u00e9 ou manager poss\u00e8de un id unique (car des personnes peuvent avoir le m\u00eame nom\u2026), un nom, un pr\u00e9nom, une fonction, une photo (d\u00e9pend des versions d\u2019Excel, dans certaines nous pouvons ajouter une image), une adresse email et un mot de passe.<\/li>\n<li>\u201cid_role\u201d repr\u00e9sente la fonction, 0 pour un manager, 1 pour un employ\u00e9. Ceci permet d\u2019ajouter des restrictions, par exemple, 0 pourra avoir acc\u00e8s \u00e0 certaines informations et 1 \u00e0 d\u2019autres informations. S\u2019il y a d\u2019autres fonctions, nous pouvons tr\u00e8s simplement ajouter un autre chiffre.<\/li>\n<li>\u201cid_team\u201d repr\u00e9sente l\u2019\u00e9quipe dans laquelle est\/sont la (les) personne(s). Ceci permet lors de la visualisation des emplois du temps de voir ceux de son \u00e9quipe. \u201cid_validation_employee\u201d contient un 1 si l\u2019employ\u00e9 a s\u00e9lectionn\u00e9\/modifi\u00e9 des jours et r\u00e9initialise \u201cid_validation_manager\u201d \u00e0 0 \u00e0 la ligne correspondante. Il restera toujours a 0 pour le manager car il valide par lui m\u00eame ses jours.<span class=\"Apple-converted-space\">\u00a0<\/span><\/li>\n<li>\u2018id_validation_manager\u201d contient un 1 si le manager a valid\u00e9 les jours de l\u2019employ\u00e9 ou 0 dans le cas contraire (sur l\u2019interface de l\u2019employ\u00e9, s\u2019il y a un 1, le TextView affichera \u201cvalidation par le manager : Oui\u201d).<\/li>\n<li>les colonnes apr\u00e8s \u201cid_validation_manager\u201d sont les jours s\u00e9lectionn\u00e9s. S\u2019il y a un 1, c\u2019est que ce jour a \u00e9t\u00e9 choisi par l\u2019employ\u00e9 ou le manager.<\/li>\n<\/ul>\n<p>La feuille num\u00e9ro 2 permet de r\u00e9aliser l\u2019affectation des bureaux. Lorsqu\u2019un bureau est s\u00e9lectionn\u00e9, nous verrons appara\u00eetre l\u2019id de l\u2019employ\u00e9:<\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-17-%C3%A0-21.44.55.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-6721 size-full\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-17-%C3%A0-21.44.55.png\" alt=\"\" width=\"1224\" height=\"198\" \/><\/a><\/p>\n<p>Prenons l\u2019exemple de Jean avec son id 100, s\u2019il t\u00e9l\u00e9travaille le lundi et qu\u2019il est affect\u00e9 au bureau 1, \u00e0 la place du 0 nous aurons 100.<\/p>\n<p><strong>2. Lecture et \u00e9criture dans le fichier<\/strong><\/p>\n<p>Pour ce faire, nous avons int\u00e9gr\u00e9s une biblioth\u00e8que (dans le gradle) permettant de g\u00e9rer les fichiers Excel et les diff\u00e9rentes feuilles:<\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-17-%C3%A0-21.45.00.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-6722 size-full\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-17-%C3%A0-21.45.00.png\" alt=\"\" width=\"1198\" height=\"86\" \/><\/a><\/p>\n<ul>\n<li>Lecture du fichier Excel<\/li>\n<\/ul>\n<p>Cette \u00e9tape est relativement simple, il suffit de cr\u00e9er un dossier \u201cassets\u201d et de copier\/coller le fichier Excel:<\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-17-%C3%A0-21.45.05.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-6723 aligncenter\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-17-%C3%A0-21.45.05-300x89.png\" alt=\"\" width=\"300\" height=\"89\" \/><\/a><\/p>\n<p>Ensuite, avec le code java ci-dessous nous pouvons lire les informations contenues dans celui-ci (il est n\u00e9cessaire de parcourir chacune des lignes\/colonnes sauf si vous avez une cellule pr\u00e9cise \u00e0 r\u00e9cup\u00e9rer):<\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-17-%C3%A0-21.45.10.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-6724 aligncenter\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-17-%C3%A0-21.45.10-300x159.png\" alt=\"\" width=\"300\" height=\"159\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li>Ecrire dans le fichier Excel<\/li>\n<\/ul>\n<p>Cette \u00e9tape est un peu plus compliqu\u00e9e car il n\u2019est pas possible de modifier un fichier qui a \u00e9t\u00e9 compil\u00e9 et la biblioth\u00e8que ne permet pas de modifier le fichier Excel. Il faut donc cr\u00e9er \u00e0 chaque fois une copie modifiable de celui-ci pour entrer les informations et supprimer l\u2019ancienne copie. Nous avons rang\u00e9 ces fichiers Excel dans ce r\u00e9pertoire:<\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-17-%C3%A0-21.45.15.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-6727 aligncenter\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-17-%C3%A0-21.45.15-300x191.png\" alt=\"\" width=\"300\" height=\"191\" \/><\/a><\/p>\n<p>Notons le fichier 1: \u00ab\u00a0filesCompagny-copy.xls\u00a0\u00bb, le fichier 2: \u00ab\u00a0filesCompagny-copy2.xls\u00a0\u00bb et le r\u00e9pertoire: \u00ab\u00a0com.example.flem\u00a0\u00bb.<\/p>\n<p>Au d\u00e9part s\u2019il n\u2019y a aucun fichier dans le r\u00e9pertoire, l\u2019application va r\u00e9aliser une copie du fichier initial (\u201cassets\/Compagny.xls\u201d) dans celui-ci en le nommant fichier 1.<\/p>\n<p>Lors d\u2019une premi\u00e8re \u00e9criture, nous allons faire une copie du fichier 1 en le nommant fichier 2 puis supprimer le fichier 1. Lors d\u2019une deuxi\u00e8me \u00e9criture, nous allons copier le fichier 2 et le nommer fichier 1 puis supprimer le fichier 2 et ainsi de suite.<\/p>\n<p><strong>3. Gestion des photos de profils<\/strong><\/p>\n<p>Dans le cas o\u00f9 il n&rsquo;est pas possible d\u2019ajouter ou de r\u00e9cup\u00e9rer une photo dans le fichier Excel (selon la version), nous pouvons r\u00e9aliser un dossier o\u00f9 seront stock\u00e9es les photos. Au moment du chargement du profil nous regardons si le dossier contient un fichier \u201cid.png\u201d avec id l\u2019id de l\u2019employ\u00e9 ou le manager. Par exemple, pour Jean, le code va v\u00e9rifier s\u2019il y a un fichier \u201c100.png\u201d. Voici ci-dessous la structure:<\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-17-%C3%A0-21.45.20.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-6728 aligncenter\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-17-%C3%A0-21.45.20-300x210.png\" alt=\"\" width=\"300\" height=\"210\" \/><\/a><\/p>\n<ul>\n<li><span style=\"text-decoration: underline;\">Cas 1:<\/span> l\u2019utilisateur n\u2019a pas la de photo dans le fichier<\/li>\n<\/ul>\n<p>L\u2019application lui demandera en premier lieu de choisir s\u2019il veut prendre une photo \u00e0 partir de la cam\u00e9ra ou importer une photo directement depuis la galerie. Ensuite nous allons redimensionner la photo pour l\u2019afficher correctement. Enfin nous allons la sauvegarder (ou r\u00e9aliser une copie si la photo provient d\u2019une importation) dans le r\u00e9pertoire en question.<\/p>\n<ul>\n<li><span style=\"text-decoration: underline;\">Cas 2:<\/span> l\u2019utilisateur a d\u00e9j\u00e0 une photo<\/li>\n<\/ul>\n<p>L\u2019application lui demandera en premier lieu de choisir s\u2019il veut prendre une photo \u00e0 partir de la cam\u00e9ra ou importer une photo depuis la galerie. Ensuite nous allons redimensionner la photo pour bien l\u2019afficher. Enfin nous allons mettre \u00e0 jour la photo existante (ou r\u00e9aliser une copie si la photo provient d\u2019une importation) dans le r\u00e9pertoire en question.<\/p>\n<p>Voici ci-dessous les \u00e9l\u00e9ments permettant de redimensionner, formater et copier l\u2019image dans le r\u00e9pertoire:<\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-17-%C3%A0-21.45.26.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-6729 size-full\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture-d%E2%80%99%C3%A9cran-2020-12-17-%C3%A0-21.45.26.png\" alt=\"\" width=\"1210\" height=\"634\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p><b>V-Lien vers le code<\/b><\/p>\n<p>Vous trouverez le code Arduino et Android sur Github \u00e0 ce lien :<\/p>\n<p><b>https:\/\/github.com\/eliasdhouib\/FLEM<\/b><\/p>\n<p><b>V-Protocole de communication<\/b><\/p>\n<p>Nous avons choisi pour informer directement les employ\u00e9s de l\u2019emplacement des bureaux de leurs coll\u00e8gues une communication bidirectionnelle\u00a0:<span class=\"Apple-converted-space\">\u00a0 <\/span>Arduino \u2194 Application mobile, via wifi et une communication unidirectionnelle\u00a0: Arduino \u2192 Afficheur LCD.<\/p>\n<p>Le but \u00e9tant que cette information soit directement transmise \u00e0 l\u2019application mobile dans l\u2019interface \u00ab\u00a0bureau\u00a0\u00bb lorsque l\u2019employ\u00e9 ou le manager pose son badge RFID sur le lecteur RFID et aussi apparaissant sur l\u2019afficheur mis \u00e0 disposition sur chaque bureau. <span class=\"Apple-converted-space\">\u00a0<\/span><\/p>\n<p>Lorsque l\u2019employ\u00e9 arrive \u00e0 son bureau, il doit poser son badge sur le lecteur RFID. Aussit\u00f4t d\u00e9tect\u00e9, le lecteur envoie l\u2019identifiant du badge \u00e0 la carte Arduino. Celle-ci communique l\u2019identifiant au serveur comparant l\u2019employ\u00e9 correspondant et son bureau attribu\u00e9. Une fois cette information envoy\u00e9e, la carte Arduino commande \u00e0 l\u2019\u00e9cran LCD d\u2019afficher un message d\u2019erreur si le badge ne correspond pas ou un message de bienvenue dans le cas \u00e9ch\u00e9ant.<span class=\"Apple-converted-space\">\u00a0<\/span><\/p>\n<p>L\u2019employ\u00e9 peut aussi acc\u00e9der \u00e0 la r\u00e9partition en temps r\u00e9el des bureaux. En effet, quand la carte Arduino a communiqu\u00e9 l\u2019adresse du badge, le serveur a enregistr\u00e9 la pr\u00e9sence de l\u2019employ\u00e9 \u00e0 son bureau. Le serveur est donc capable d\u2019envoyer la totalit\u00e9 des employ\u00e9s pr\u00e9sents, et leur bureau correspondant \u00e0 la carte Arduino, qui transf\u00e8re ces informations \u00e0 l\u2019\u00e9cran LCD pour qu\u2019il puisse les afficher.<span class=\"Apple-converted-space\">\u00a0<\/span><\/p>\n<p><b>VI-Justification des choix techniques<\/b><\/p>\n<p><b>WIFI<\/b><\/p>\n<p>Nous avons choisi comme technologie de communication le Wifi car celle-ci est relativement facile d\u2019acc\u00e8s et d\u2019utilisation et tr\u00e8s pr\u00e9sente dans les entreprises (celles-ci sont la cible de notre projet).<\/p>\n<p>De plus nous avions \u00e0 disposition des modules ESP8266 compatible avec Arduino disposant d\u2019une immense biblioth\u00e8que en libre service permettant sa communication avec notre afficheur ainsi que notre application mobile. L&rsquo;ESP8266 est un petit module Wifi tr\u00e8s bon march\u00e9 (de l\u2019ordre de 3\u20ac), ainsi les entreprises destin\u00e9es \u00e0 utiliser notre objet connect\u00e9 pourront en mettre suffisamment \u00e0 disposition \u00e0 leurs employ\u00e9es pour profiter pleinement de toutes les fonctionnalit\u00e9s de notre solutions sans d\u00e9penser trop d\u2019argent, pr\u00e9sentant un bon argument de vente. Il poss\u00e8de une port\u00e9e tout \u00e0 fait correcte et on pourra donc installer un module partout o\u00f9 le signal Wifi peut \u00eatre capt\u00e9.<\/p>\n<p>Le seul inconv\u00e9nient est que le Wifi est assez consommateur de courant, m\u00eame si le but n\u2019est de l&rsquo;allumer que quelques secondes pour envoyer les bureaux occup\u00e9s par exemple.<\/p>\n<p><b>ARDUINO UNO<\/b><\/p>\n<p>Nous avons choisi comme microcontr\u00f4leur une carte Arduino UNO.<\/p>\n<p>L\u2019un des avantages est sa\u00a0facilit\u00e9<b> <\/b>d\u2019utilisation le rendant accessible \u00e0 tous. Sa programmation est relativement simple et de nombreux tutoriels<span class=\"Apple-converted-space\">\u00a0 <\/span>sont pr\u00e9sents sur internet pour aider les d\u00e9butants. Sa manipulation n\u2019exige pas des comp\u00e9tences techniques importantes, m\u00eame les amateurs pourront s\u2019en sortir ais\u00e9ment gr\u00e2ce aux explications claires, distribu\u00e9es sur internet.<\/p>\n<p>Le second avantage est qu\u2019elle est multi-plateformes, ainsi on peut l\u2019utiliser sur un syst\u00e8me<b> <\/b>d\u2019exploitation iOS, Linux, ou Windows permettant ainsi \u00e0 chacun des membres de notre projet de travailler dessus tout en ayant aucune contrainte li\u00e9e \u00e0 notre syst\u00e8me d\u2019exploitation.<\/p>\n<p>Le troisi\u00e8me avantage est qu\u2019elle est compatible avec un grand nombre de composants ce qui nous laisse une large marge de man\u0153uvre dans le choix des autres composants notamment l\u2019ESP8266, le lecteur RFID, l\u2019afficheur LCD, sans nous imposer de r\u00e9elles contraintes.<\/p>\n<p>Le quatri\u00e8me avantage est son prix : on en trouve sur internet \u00e0 des prix inf\u00e9rieurs \u00e0 25\u20ac, ainsi on pourra \u00e9quiper nos futurs utilisateurs sans trop d\u00e9penser.<\/p>\n<p><b>Afficheur LCD<\/b><\/p>\n<p>Au d\u00e9part nous voulions utiliser un grand \u00e9cran LCD afin de pouvoir afficher l\u2019ensemble des bureaux occup\u00e9s ainsi que le nom des employ\u00e9s s\u2019y trouvant.<\/p>\n<p>Cependant, suite \u00e0 un probl\u00e8me de compatibilit\u00e9 de mat\u00e9riel, nous avons seulement eu \u00e0 disposition un \u00e9cran LCD 2\u00d716, ne permettant pas d\u2019afficher l\u2019ensemble de cette fonctionnalit\u00e9.<\/p>\n<p>Apr\u00e8s diff\u00e9rentes consultations sur Internet, nous sommes parvenus \u00e0 une solution qui est de faire d\u00e9filer les noms des employ\u00e9s ainsi que le bureau qu\u2019ils occupent.<\/p>\n<p>Apr\u00e8s un entretien avec de potentiels clients, cette solution ne peut pas convenir car cela repr\u00e9sente un investissement de temps non n\u00e9gligeable afin de prendre connaissance du bureau o\u00f9 se trouve son coll\u00e8gue.<\/p>\n<p><span class=\"Apple-converted-space\">\u00a0<\/span><\/p>\n<p><b>Module RFID RC522<\/b><\/p>\n<p>Pour la lecture du TAG RFID de l\u2019employ\u00e9, nous avons choisi d\u2019utiliser un module RFID RC522.<\/p>\n<p>Un de ces avantages est que\u00a0\u00a0son<span class=\"Apple-converted-space\">\u00a0 <\/span>fonctionnement est passif (sans source d\u2019\u00e9nergie donc autonome et inusable).<\/p>\n<p>De plus la technologie RFID est une technologie qui est \u00e0 son apog\u00e9e dans les entreprises, tr\u00e8s utilis\u00e9e par les employ\u00e9es notamment pour acc\u00e9der aux locaux de l\u2019entreprise. Ainsi nos futurs utilisateurs ne rencontreront aucune difficult\u00e9 pour son utilisation.<\/p>\n<p>Son exploitation est tr\u00e8s intuitive gr\u00e2ce \u00e0 une vari\u00e9t\u00e9 de biblioth\u00e8ques disponibles sur Internet, notamment les deux principales permettant de r\u00e9cup\u00e9rer le num\u00e9ro d\u2019un TAG RFID et ensuite<span class=\"Apple-converted-space\">\u00a0 <\/span>de v\u00e9rifier si le TAG est correct, \u00e9vitant ainsi \u00e0 l\u2019employ\u00e9 de ne pas empi\u00e9ter le bureau d\u2019un autre coll\u00e8gue.<\/p>\n<p><b>Android Studio<\/b><\/p>\n<p>Pour programmer notre application sur smartphone, nous avons utilis\u00e9 Android Studio.<\/p>\n<p>Le premier avantage est qu\u2019Android Studio dispose d&rsquo;une interface intuitive et simple d\u2019utilisation. Maitris\u00e9 par certains membres de notre \u00e9quipe, Android Studio repr\u00e9sentait un bonne outil pour d\u00e9velopper notre application.<span class=\"Apple-converted-space\">\u00a0<\/span><\/p>\n<p>Le fait de t\u00e9l\u00e9charger Android Studio \u00e9vite aussi de t\u00e9l\u00e9charger un IDE et de t\u00e9l\u00e9charger un SDK Android qu&rsquo;on rajouterait ensuite \u00e0 notre IDE. Ici on a tout ce qu&rsquo;il nous faut en t\u00e9l\u00e9chargeant uniquement ce logiciel.<\/p>\n<p>Ainsi le t\u00e9l\u00e9chargement et l&rsquo;utilisation d&rsquo;Android Studio repr\u00e9sentent un gain de temps cons\u00e9quent.<\/p>\n<p>Cependant Android Studio pr\u00e9sente un inconv\u00e9nient non n\u00e9gligeable : sa lenteur lors de son ouverture et lors des compilations.<\/p>\n<p>De plus, des probl\u00e8mes des int\u00e9grations du code sont tr\u00e8s r\u00e9currents lors de son envoi \u00e0 d\u2019autre membre de notre \u00e9quipe donnant lieu \u00e0 plusieurs messages d\u2019erreur, emp\u00eachant parfois son utilisation depuis d\u2019autres postes.<\/p>\n<p><b>VII-Perspectives<\/b><\/p>\n<p>Apr\u00e8s avoir mis au point ce premier prototype, plusieurs axes de progr\u00e8s sont apparus notamment \u00e0 cause du manque de temps mais aussi le fait d\u2019avoir \u00e9t\u00e9 \u00e0 distance durant les sprints 1-2-3, consacr\u00e9s \u00e0 la r\u00e9alisation de l\u2019objet connect\u00e9.<\/p>\n<p><b>Au niveau de l\u2019application<\/b>\u00a0:<span class=\"Apple-converted-space\">\u00a0<\/span><\/p>\n<ol>\n<li>R\u00e9aliser une connexion avec l\u2019objet.<\/li>\n<li>Optimiser le code afin d\u2019\u00e9viter de faire des it\u00e9rations. En effet, nous aurions pu cr\u00e9er directement une classe permettant de lire et une autre permettant d\u2019\u00e9crire dans le fichier Excel.<\/li>\n<li>Adapter le Layout de l\u2019emploi du temps pour des entreprises avec une plus grande capacit\u00e9. En effet, nos tests ont \u00e9t\u00e9 r\u00e9alis\u00e9s sur une \u00e9quipe de 3 personnes. Dans le cas d\u2019une \u00e9quipe de 20 personnes, le Layout ne sera surement pas adapt\u00e9.<\/li>\n<li>Cr\u00e9er un bouton dans la page du manager permettant de g\u00e9n\u00e9rer une r\u00e9partition automatique des bureaux, \u00e9vitant au manager de faire cela manuellement repr\u00e9sentant ainsi un gain de temps.<\/li>\n<\/ol>\n<p><b>Au niveau de l\u2019objet\u00a0:<\/b><\/p>\n<ol>\n<li>R\u00e9aliser une connexion avec l\u2019application mobile.<\/li>\n<li>R\u00e9alisation d\u2019un design rendant plus esth\u00e9tique la fa\u00e7on dont est dispos\u00e9 l\u2019afficheur LCD et le lecteur RFID sur le bureau.<\/li>\n<\/ol>\n<p><b>Bibliographie\u00a0:<\/b><\/p>\n<p><a href=\"https:\/\/www.mataucarre.fr\/index.php\/2017\/04\/05\/module-rfid-rc522-arduino\/\">https:\/\/www.mataucarre.fr\/index.php\/2017\/04\/05\/module-rfid-rc522-arduino\/<\/a><\/p>\n<p><a href=\"https:\/\/www.nouvelles-technologies.net\/arduino\/\">https:\/\/www.nouvelles-technologies.net\/arduino\/<\/a><\/p>\n<p><a href=\"https:\/\/www.arduino-france.com\/review\/arduino-uno\/\">https:\/\/www.arduino-france.com\/review\/arduino-uno\/<\/a><\/p>\n<p><a href=\"https:\/\/blog.uggy.org\/?post\/2015\/05\/31\/D%25C3%25A9couverte-de-l-ESP8266%23:~:text=L'ESP8266%2520est%2520un%2520petit,de%2520l'UART%2520vers%2520Wifi\">https:\/\/blog.uggy.org\/?post\/2015\/05\/31\/D%C3%A9couverte-de-l-ESP8266#:~:text=L&rsquo;ESP8266%20est%20un%20petit,de%20l&rsquo;UART%20vers%20Wifi<\/a>.<\/p>\n<p><a href=\"https:\/\/www.electronique-mixte.fr\/microcontrolleurs\/rfid-controle-dacces-par-badge-avec-arduino\/?fbclid=IwAR0A7PHaEAEPmtc5Y1U89W-LXQtSolflePnRAvD29Af1o3dvOAcPR2YbIrI\">https:\/\/www.electronique-mixte.fr\/microcontrolleurs\/rfid-controle-dacces-par-badge-avec-arduino\/?fbclid=IwAR0A7PHaEAEPmtc5Y1U89W-LXQtSolflePnRAvD29Af1o3dvOAcPR2YbIrI<\/a><\/p>\n<p><a href=\"https:\/\/www.fais-le-toi-meme.fr\/fr\/electronique\/materiel\/esp8266-arduino-wifi-2-euros\">https:\/\/www.fais-le-toi-meme.fr\/fr\/electronique\/materiel\/esp8266-arduino-wifi-2-euros<\/a><\/p>\n<p><a href=\"https:\/\/f-leb.developpez.com\/tutoriels\/arduino\/esp8266\/debuter\/\">https:\/\/f-leb.developpez.com\/tutoriels\/arduino\/esp8266\/debuter\/<\/a><\/p>\n<p><a href=\"https:\/\/plaisirarduino.fr\/rfid-avec-arduino\/\">https:\/\/plaisirarduino.fr\/rfid-avec-arduino\/<\/a><\/p>\n<p>http:\/\/nalhossri.free.fr\/LCD4bits.h\/LCD4bits.h.html<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Auteurs: Elias DHOUIB, Marwen BEN AYED et Fran\u00e7ois-Louis JAFFRY Plan :\u00a0 I-Contexte II-Pr\u00e9sentation de la solution technique de mani\u00e8re synth\u00e9tique III-Pr\u00e9sentation de la solution de mani\u00e8re d\u00e9taill\u00e9e IV-Lien vers le code V-Protocole de communication VI-Justification des choix techniques VII-Perspectives VIII-Sources &nbsp; I-Contexte Dans le cadre de notre projet TAF COOC, nous \u00e9tions amen\u00e9s \u00e0 r\u00e9aliser [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":6705,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[113],"tags":[],"class_list":["post-6697","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couad"],"acf":{"article_projet":null},"_links":{"self":[{"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/posts\/6697","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/comments?post=6697"}],"version-history":[{"count":1,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/posts\/6697\/revisions"}],"predecessor-version":[{"id":10426,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/posts\/6697\/revisions\/10426"}],"wp:attachment":[{"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/media?parent=6697"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/categories?post=6697"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/tags?post=6697"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}