{"id":5821,"date":"2019-12-20T16:39:26","date_gmt":"2019-12-20T15:39:26","guid":{"rendered":"https:\/\/telefab.fr\/?p=5821"},"modified":"2026-04-30T17:33:32","modified_gmt":"2026-04-30T15:33:32","slug":"coocopark-solution-technique","status":"publish","type":"post","link":"https:\/\/hub.imt-atlantique.fr\/fablab\/coocopark-solution-technique\/","title":{"rendered":"COOCOPARK &#8211; Solution technique"},"content":{"rendered":"<p><i>Auteurs : BOUSSARD Tristan, LANTRIN Julien, PREVOST Matthias, RUNACHER Oscar<\/i><\/p>\n<p>&nbsp;<\/p>\n<h1>Contexte<\/h1>\n<p>Dans le cadre de la TAF CoOC, les \u00e9l\u00e8ves doivent r\u00e9aliser un projet fil rouge de d\u00e9veloppement et de prototypage. C\u2019est dans ce contexte que nous avons propos\u00e9 notre propre projet : COOCOPARK.<\/p>\n<p>Pour ce projet nous souhaitons proposer une solution sous la forme d\u2019une application qui indique \u00e0 l\u2019utilisateur une place de stationnement adapt\u00e9e \u00e0 ses crit\u00e8res et le plus proche possible de sa destination. L\u2019application pr\u00e9sente \u00e0 l\u2019utilisateur un ensemble de parkings sur une carte et lui fournit un chemin pour acc\u00e9der \u00e0 une place actuellement disponible qui correspond \u00e0 une distance minimale de sa destination et \u00e0 la taille de son v\u00e9hicule. La disponibilit\u00e9 des places est actualis\u00e9e en temps r\u00e9el.<\/p>\n<p>Ainsi, nous avons r\u00e9alis\u00e9 un prototype qui gr\u00e2ce \u00e0 des capteurs ultrasons connect\u00e9s \u00e0 une carte Arduino est capable d\u2019indiquer l\u2019occupation ou non de places de stationnements fictives \u00e0 une application iOS\/Android cod\u00e9e en React Native. L\u2019application utilise aussi des donn\u00e9es issues d\u2019une API de Brest M\u00e9tropole et du site de Brest\u2019Park pour afficher des informations suppl\u00e9mentaires sur les parking brestois \u00e0 l\u2019utilisateur.<\/p>\n<p><!--more--><\/p>\n<p>&nbsp;<\/p>\n<h1>R\u00e9alisation<\/h1>\n<h2>Liste du mat\u00e9riel utilis\u00e9<\/h2>\n<ul>\n<li>Deux cartes Arduino Uno<\/li>\n<li>Deux modules Bluetooth HC-05<\/li>\n<li>Trois capteurs ultrason HC-Sr04<\/li>\n<li>Trois LEDs<\/li>\n<li>Une breadboard<\/li>\n<li>Une batterie lithium-polym\u00e8re 1000mAh trois cellules de 11.1V<\/li>\n<li>Un smartphone iOS ou Android<\/li>\n<li>Un ordinateur pour jouer le r\u00f4le du serveur<\/li>\n<li>Des c\u00e2bles<\/li>\n<li>Du bois pour le d\u00e9cor de la maquette<\/li>\n<\/ul>\n<h2>Diagrammes d&rsquo;architectures<\/h2>\n<p style=\"text-align: center;\"><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2019\/12\/diag_gen.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-5825 size-large\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2019\/12\/diag_gen-1024x380.png\" alt=\"\" width=\"1024\" height=\"380\" \/><\/a><strong>Diagramme d\u2019architecture g\u00e9n\u00e9ral <a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2019\/12\/diag_hard.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-5826\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2019\/12\/diag_hard-1024x464.png\" alt=\"\" width=\"1024\" height=\"464\" \/><\/a><\/strong><strong>Diagramme d\u2019architecture hardware <a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2019\/12\/diag_soft.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-5827\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2019\/12\/diag_soft-1024x463.png\" alt=\"\" width=\"1024\" height=\"463\" \/><\/a><\/strong><strong>Diagramme d\u2019architecture software<\/strong><\/p>\n<h2>Maquette<\/h2>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2019\/12\/3.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-5828 size-large\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2019\/12\/3-1024x768.jpg\" alt=\"\" width=\"1024\" height=\"768\" \/><\/a> <a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2019\/12\/1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-5829\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2019\/12\/1.jpg\" alt=\"\" width=\"1024\" height=\"768\" \/><\/a><\/p>\n\n<h3>Prototype physique<\/h3>\n<p>Pour la r\u00e9alisation de notre maquette physique (voir photos ci-dessus), nous avons utilis\u00e9 diff\u00e9rents bois, de la peinture, du scotch, plusieurs outils et une d\u00e9coupeuse laser.<\/p>\n<p>Il est possible de ressortir trois objectifs majeur de la r\u00e9alisation de cette maquette :<\/p>\n<ul>\n<li>Reproduire un environnement urbain permettant la r\u00e9alisation de tests.<\/li>\n<li>Rassembler la chauss\u00e9e et l\u2019\u00e9lectronique sur un m\u00eame syst\u00e8me mobile.<\/li>\n<li>Rendre attractif notre projet via la manipulation possible et agr\u00e9able pour les utilisateurs.<\/li>\n<\/ul>\n<h3>\u00c9lectronique<\/h3>\n<h4>Capteur ultrason<\/h4>\n<p>Nous avons install\u00e9 des capteurs ultrasons HC-Sr04 sur la maquette qui mesurent la pr\u00e9sence ou non d\u2019un obstacle devant ceux-ci. Cela permet de savoir si la place est occup\u00e9e par une voiture.<\/p>\n<p>Chaque capteur a \u00e9t\u00e9 configur\u00e9 pour indiquer la pr\u00e9sence d\u2019un obstacle \u00e0 partir d\u2019une distance inf\u00e9rieure \u00e0 30 centim\u00e8tres.<\/p>\n<p>Pour plus d\u2019information concernant les branchements, merci de se r\u00e9f\u00e9rer au sch\u00e9ma ci-dessous.<\/p>\n<h4>LEDs<\/h4>\n<p>Chaque capteur est coupl\u00e9 avec une LED. Le r\u00f4le des LEDs est double.<\/p>\n<p>Du point de vue des d\u00e9veloppeurs elles servent \u00e0 indiquer visuellement et rapidement le bon fonctionnement des capteurs. Si il y a un obstacle devant le capteur la LED est rouge, sinon elle est verte. Du point de vue interne au projet, des LEDs pourraient servir aux conducteurs \u00e0 rep\u00e9rer facilement les places libres dans la rue (\u00e0 la mani\u00e8re de certains parkings souterrains).<\/p>\n<p>Pour plus d\u2019information concernant les branchements, merci de se r\u00e9f\u00e9rer au sch\u00e9ma ci-dessous.<\/p>\n<h4>Modules Bluetooth HC-05<\/h4>\n<p>Gr\u00e2ce aux modules Bluetooth HC-05 nous pouvons communiquer l\u2019\u00e9tat des capteurs \u00e0 l\u2019ordinateur qui nous sert de serveur.<\/p>\n<p>Les deux modules interagissent suivant une relation \u201cma\u00eetre-esclave\u201d.<\/p>\n<p>Cette solution a \u00e9t\u00e9 choisie car il nous \u00e9tait plus simple de transmettre de l\u2019information entre deux modules Bluetooth Arduino que d\u2019un module Bluetooth HC-05 \u00e0 l\u2019ordinateur directement. Avec du recul cette solution est en fin de compte une solution proche d\u2019une architecture \u00e0 taille r\u00e9elle, notre prototype repr\u00e9sente donc bien ce qui se ferait en r\u00e9alit\u00e9.<\/p>\n<p>Le module connect\u00e9 \u00e0 l\u2019Arduino g\u00e9rant les capteurs est le \u201cma\u00eetre\u201d et permet d\u2019envoyer la donn\u00e9e suivant le bon format. Le module \u201cesclave\u201d est connect\u00e9 \u00e0 la carte Arduino reli\u00e9e \u00e0 l\u2019ordinateur et sert \u00e0 capter la donn\u00e9e.<\/p>\n<p>Pour plus d\u2019information concernant les branchements, merci de se r\u00e9f\u00e9rer au sch\u00e9ma ci-dessous.<\/p>\n<p>Le module Bluetooth c\u00f4t\u00e9 ordinateur est branch\u00e9 suivant le m\u00eame principe que celui c\u00f4t\u00e9 capteurs.<\/p>\n<h3>Cartes Arduino et sch\u00e9ma des branchements<\/h3>\n<h4>Fonctionnement de la carte<\/h4>\n<p>Nous avons utilis\u00e9 une carte Arduino dans le but de lier capteurs, diodes et module bluetooth. En effet, il est possible de t\u00e9l\u00e9verser un code en C++ vers la carte. Cette derni\u00e8re r\u00e9alise le traitement. En l&rsquo;occurrence, d\u00e8s qu\u2019un capteur d\u00e9tecte un objet une commande d\u2019allumage est lanc\u00e9e vers la diode associ\u00e9e. Par la suite, l\u2019information binaire d\u2019occupation ou non de la place est envoy\u00e9e via le module bluetooth.<\/p>\n<p>Par ailleurs, la carte Arduino est aliment\u00e9 en \u00e9nergie par une batterie, ce qui fournit l\u2019\u00e9lectricit\u00e9 n\u00e9cessaire au fonctionnement des diff\u00e9rents composants.<\/p>\n<p>C\u2019est le composant central de notre syst\u00e8me. Il dirige et coordonne la maquette.<\/p>\n<p>Pour plus d\u2019information concernant les branchements, merci de se r\u00e9f\u00e9rer au sch\u00e9ma ci-dessous.<\/p>\n<h4>Code Arduino<\/h4>\n<p>Comme le projet contient plusieurs fonctionnalit\u00e9s, il ne semble pas tr\u00e8s pertinent de pr\u00e9senter l&rsquo;enti\u00e8ret\u00e9 du code Arduino\/C++ ici. D\u2019autant plus que les deux cartes Arduino n\u2019ont pas la m\u00eame fonction au sein de l\u2019architecture.<\/p>\n<p>Cependant, pour celles et ceux souhaitant l\u2019\u00e9tudier ou le r\u00e9utiliser pour poursuivre le projet, le code est disponible sur Github ici : https:\/\/github.com\/matthias-prevost\/coocopark<\/p>\n<h4>Sch\u00e9ma des branchements<\/h4>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2019\/12\/schema_elec.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-5831\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2019\/12\/schema_elec.png\" alt=\"\" width=\"1024\" height=\"749\" \/><\/a><\/p>\n<h2>Application React Native<\/h2>\n<h3>Code Source<\/h3>\n<p>https:\/\/github.com\/matthias-prevost\/coocopark<\/p>\n<h3>Description<\/h3>\n<p>Le langage de programmation est JavaScript. Nous utilisons la technologie React Native qui permet d\u2019interpr\u00e9ter le code source et de le faire tourner \u00e0 la fois sur un appareil Android et un appareil IOS. Le code source est compos\u00e9 de deux pages, la premi\u00e8re est une simple page d\u2019accueille o\u00f9 un slide permet d\u2019entrer sur la page principale. Cette derni\u00e8re pr\u00e9sente une carte centr\u00e9e sur la position de l\u2019utilisateur, \u00e0 la mani\u00e8re de google maps \u00e0 l\u2019aide de librairie React Native. Sur cette carte nous affichons des marqueurs correspondant aux 3 places fictives de notre maquette. Ces marqueurs sont de couleur rouge si une place est occup\u00e9e ou bien vert dans le cas contraire, ces donn\u00e9es sont les m\u00eames que celles capt\u00e9es par les capteurs de la maquette et mises \u00e0 jour en temps r\u00e9el. Nous affichons \u00e9galement les parkings de la ville de Brest, gr\u00e2ce aux diff\u00e9rentes API \u00e9voqu\u00e9es plus haut nous r\u00e9cup\u00e9rons un fichier geojson et la librairie react-native-geojson nous affichons automatiquement des marqueurs aux coordonn\u00e9es GPS des parkings r\u00e9cup\u00e9r\u00e9es dans le fichier geojson. De plus nous avons modifi\u00e9 cette librairie dans le but de personnaliser les marqueurs et d\u2019afficher les caract\u00e9ristiques g\u00e9n\u00e9rales des parkings (Nom, nombre de places totales, nombre de places PMR\u2026) de plus nous affichons les donn\u00e9es de disponibilit\u00e9 en temps r\u00e9el.<\/p>\n<h2>Mise en relation<\/h2>\n<p>La mise en relation des programmes et de l\u2019application se fait autour d\u2019une API flask qui est une librairie Python permettant de cr\u00e9er une API rapidement et de r\u00e9aliser des requ\u00eates GET et PUT pour transmettre ou recevoir des informations de l\u2019API. Ainsi depuis cette API nous mettons \u00e0 disposition deux fichiers json g\u00e9n\u00e9r\u00e9s continuellement avec des programmes Python qui r\u00e9cup\u00e8rent \u00e0 la fois les donn\u00e9es bluetooth des places de la maquette re\u00e7u par la carte Arduino reli\u00e9e \u00e0 l\u2019ordinateur ainsi que les donn\u00e9es de l\u2019API de Brest park pour conna\u00eetre les disponibilit\u00e9s en temps r\u00e9els des parkings de la ville de Brest. Enfin l\u2019application envoie des requ\u00eates de mani\u00e8re continu au serveur afin d\u2019avoir les donn\u00e9es utiles en temps r\u00e9el.<\/p>\n<h1>R\u00e9sultats<\/h1>\n<p>Le projet n&rsquo;est pas encore cl\u00f4tur\u00e9 pour plusieurs raisons, modifications et am\u00e9liorations \u00e0 apporter. N\u00e9anmoins, notre prototype est capable de r\u00e9aliser plusieurs cas d&rsquo;utilisations.<\/p>\n<p>D&rsquo;une part, tr\u00e8s concr\u00e8tement, gr\u00e2ce \u00e0 l&rsquo;application, vous pouvez conna\u00eetre le lieu et la disponibilit\u00e9 en temps r\u00e9el des diff\u00e9rents parkings brestois.<\/p>\n<p>D&rsquo;autre part, nous avons r\u00e9ussi \u00e0 connecter notre maquette physique \u00e0 l&rsquo;application et ainsi d\u00e9velopper une solution permettant l&rsquo;identification gr\u00e2ce \u00e0 des marqueurs des places disponibles ou non au sein des rues ou la solution est implant\u00e9e.<\/p>\n<p>Une utilisation concr\u00e8te de notre syst\u00e8me peut \u00eatre faites par l&rsquo;utilisateur. Cependant, certaines perspectives de d\u00e9veloppement sont encore possibles.<\/p>\n<h1>Perspectives<\/h1>\n<p>Malgr\u00e9 tout ce que nous avons r\u00e9alis\u00e9, le manque de temps nous a pouss\u00e9 \u00e0 prioriser certaines User Stories fasse \u00e0 d\u2019autres. Ainsi nous n\u2019avons pas eu le temps d\u2019int\u00e9grer une fonction de wayfinding \u00e0 l\u2019application c\u2019est \u00e0 dire afficher un trajet GPS de guidage entre deux rep\u00e8res sur la carte. De m\u00eame nous n\u2019avons pas eu le temps de cr\u00e9er le bouton Flashpark qui aurait permis de proposer un trajet vers l place de parking la plus proche de l\u2019utilisateur. Une fonction identique pourrait \u00eatre utilis\u00e9e pour s\u00e9lectionner la place de parking la plus proche du v\u00e9ritable lieu de destination de l\u2019utilisateur. Ces \u00e9l\u00e9ments nous semblent \u00eatre les premiers \u00e0 devoir \u00eatre ajout\u00e9s en cas de continuation du projet.<\/p>\n<p>Si le projet devait \u00eatre d\u00e9velopp\u00e9 de mani\u00e8re plus r\u00e9aliste il faudrait peut-\u00eatre revoir l\u2019utilisation de certains composants. En effet, avec un capteur ultrason \u00e0 environ 1\u20ac, une carte Arduino \u00e0 15\u20ac et un module Bluetooth HC-05 \u00e0 3\u20ac, cela revient \u00e0 un prix d\u2019environ 20\u20ac par place de parking. Et cela sans compter les probables syst\u00e8mes de relais ou le co\u00fbt des serveurs. Le syst\u00e8me actuel est donc peu scalable.<\/p>\n<p>Il serait peut-\u00eatre pertinent d\u2019utiliser un autre SBC que la Arduino Uno car elle est \u201ccher\u201d et nous ne l\u2019utilisons pas au maximum de ses capacit\u00e9s. Un simple processeur serait peut-\u00eatre suffisant pour r\u00e9aliser les calculs qui nous int\u00e9ressent.<\/p>\n<p>Aussi, pour une utilisation \u00e0 grande \u00e9chelle il vaudrait mieux utiliser la technologie de communication LoRa plut\u00f4t que Bluetooth car elle est plus adapt\u00e9e au domaine des objets connect\u00e9s. Il faudrait donc remplacer les modules HC-05 par des modems LoRa.<\/p>\n<p>Toutes ces remarques nous am\u00e8nent \u00e0 sugg\u00e9rer qu\u2019une solution \u00e0 base d\u2019une ou deux cam\u00e9ras par rue utilisant les technologies de Computer Vision et du Machine Learning serait peut-\u00eatre plus scalable. Mais on s\u2019\u00e9loigne alors pas mal de ce projet et on tombe sur des questions l\u00e9gislatives du droit \u00e0 l\u2019image.<\/p>\n<p>Malgr\u00e9 les points de critiques \u00e9voqu\u00e9s ci-dessus, nous sommes satisfaits de l\u2019architecture hardware que nous avons propos\u00e9 ici et notamment le c\u00f4t\u00e9 serveur (ordinateur) qui fait la liaison entre les capteurs et l\u2019application. En effet, dans la vraie vie il ne serait pas question que l\u2019application soit en lien direct avec les capteurs mais plut\u00f4t qu\u2019elle fasse des appels \u00e0 un serveur distant, \u00e0 la mani\u00e8re de nombreux services.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Auteurs : BOUSSARD Tristan, LANTRIN Julien, PREVOST Matthias, RUNACHER Oscar &nbsp; Contexte Dans le cadre de la TAF CoOC, les \u00e9l\u00e8ves doivent r\u00e9aliser un projet fil rouge de d\u00e9veloppement et de prototypage. C\u2019est dans ce contexte que nous avons propos\u00e9 notre propre projet : COOCOPARK. Pour ce projet nous souhaitons proposer une solution sous la [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":5829,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[113],"tags":[],"class_list":["post-5821","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couad"],"acf":{"article_projet":[10741]},"_links":{"self":[{"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/posts\/5821","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=5821"}],"version-history":[{"count":2,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/posts\/5821\/revisions"}],"predecessor-version":[{"id":10743,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/posts\/5821\/revisions\/10743"}],"acf:post":[{"embeddable":true,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/projet\/10741"}],"wp:attachment":[{"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/media?parent=5821"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/categories?post=5821"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/tags?post=5821"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}