Fabricarium - partage simplifié : Différence entre versions

De Wiki de Projets IMA
m (Étapes du projet)
 
(171 révisions intermédiaires par 5 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 +
<include nopre noesc src="/home/pedago/pimasc/include/video-FabricariumPartage-iframe.html" />
 
__TOC__
 
__TOC__
 
<br style="clear: both;"/>
 
<br style="clear: both;"/>
 +
 
==Cahier des charges==
 
==Cahier des charges==
 
===Présentation générale du projet===  
 
===Présentation générale du projet===  
Ligne 12 : Ligne 14 :
 
Concevoir et réaliser une “boite documentaire” permettant de partager facilement les réalisations et projets du Fabricarium (FabLab) de Polytech Lille.
 
Concevoir et réaliser une “boite documentaire” permettant de partager facilement les réalisations et projets du Fabricarium (FabLab) de Polytech Lille.
  
====Description du projet====
+
====Description initiale du projet====
  
 
Au Fabricarium comme dans tout fablab, il est nécessaire que les réalisations et projets faits au Fabricarium soient documentés et partagés au grand public. Ce public présente des origines très diverses ce qui impose à cette “boite documentaire” d’être la plus simple d’utilisation pour pouvoir partager simplement ses réalisation.
 
Au Fabricarium comme dans tout fablab, il est nécessaire que les réalisations et projets faits au Fabricarium soient documentés et partagés au grand public. Ce public présente des origines très diverses ce qui impose à cette “boite documentaire” d’être la plus simple d’utilisation pour pouvoir partager simplement ses réalisation.
Ligne 30 : Ligne 32 :
 
Une extension à cette boite documentaire sera une plateforme permettant aux utilisateurs plus avancés d’ajouter divers éléments à leur projet (textes, présentations, mise en forme, …).
 
Une extension à cette boite documentaire sera une plateforme permettant aux utilisateurs plus avancés d’ajouter divers éléments à leur projet (textes, présentations, mise en forme, …).
  
 +
<br><div style="float: center;">
 +
[[Image:Beteacornes.png‎|thumb|250px|Diagramme pieuvre]]</div>
 +
 +
<br>
 +
Un diagramme bête à corne permet de situer simplement notre système et répond au questions suivantes :
 +
<br>
 
; A qui notre projet profite-t-il ?
 
; A qui notre projet profite-t-il ?
 
:Au porteur de projet du Fabricarium
 
:Au porteur de projet du Fabricarium
Ligne 36 : Ligne 44 :
 
; Dans quel but ?
 
; Dans quel but ?
 
:Documenter le projet<br>
 
:Documenter le projet<br>
 +
<br><div style="float: center;">
 +
[[Image:Diagpieuvre.png|thumb|250px|Diagramme bête à corne]]</div>
 +
<br><br>
 +
Un diagramme pieuvre prend en compte l'environnement du système et permet d'établir la liste de fonctions suivante :
 +
<br>
 +
;Fonction principale :Permettre à l'utilisateur de documenter son projet<br>
 +
;Fonction contrainte 1 :Générer la documentation (audio, vidéo ou photo)<br>
 +
;Fonction contrainte 2 :Être très facile d'utilisation<br>
 +
;Fonction contrainte 3 :Archiver la documentation<br>
 +
<br>
  
; Notre boite de documentation doit :
+
====Choix techniques retenus : matériel et logiciel====
:Permettre à l'utilisateur de documenter son projet<br>
 
:Générer la documentation (audio, vidéo ou photo)<br>
 
:Être très facile d'utilisation<br>
 
:Archiver la documentation<br>
 
  
====Choix techniques retenus : matériel et logiciel====
+
'''Solution retenue'''
 +
 
 +
* Beagle Bone [http://beagleboard.org/bone lien] [<span style="color: green;">fournie le 16/02/2015</span>][<span style="color: green;">Récupéré le 18/05/2015</span>]
 +
* Batterie (Alimentation USB avec piles) [<span style="color: green;">fournie le 18/02/2015</span>][<span style="color: green;">Récupéré le 18/05/2015</span>]
 +
* Ecran LCD 7 à 12 pouces [http://www.gotronic.fr/art-ecran-lcd-10-1-lp101wh1-21345.htm Lien] [<span style="color: green;">fourni le 18/03/2015</span>][<span style="color: green;">Récupéré le 18/05/2015</span>]
 +
* Boutons poussoirs [http://www.gotronic.fr/art-bp-noir-ds663rn-4422.htm Lien] [<span style="color: green;">fournis le 18/03/2015</span>][<span style="color: green;">Récupéré le 18/05/2015</span>]
 +
* Webcam pan & tilt Logitech C270 [<span style="color: green;">fournie le 28/1/2015</span>][<span style="color: green;">Récupéré le 18/05/2015</span>]
 +
<!--* Module Grove NFC  [http://www.gotronic.fr/art-module-grove-nfc-811011001-21838.htm] [<span style="color: red;">à commander</span>]-->
  
* Raspberry Pi [<span style="color: red;">à commander</span>]
 
* Ecran LCD 8 à 12 pouces [<span style="color: red;">à commander</span>]
 
* Boutons physiques [<span style="color: red;">à commander</span>]
 
* Webcam pan & tilt (USB) [<span style="color: green;">fournie le 28/1/2015</span>]
 
* Clavier projetable [<span style="color: red;">à commander</span>]
 
<br>
 
 
<br>
 
<br>
  
 
==Étapes du projet==
 
==Étapes du projet==
===Étape 1 - Cahier des charges et choix techniques ===
+
===<span style="color: green;">Étape 1 </span>- Cahier des charges et choix techniques ===
  
 
* Élaboration du cahier des charges le plus précis possible
 
* Élaboration du cahier des charges le plus précis possible
 
* Segmentation du projet en 2 parties (hardware et software)
 
* Segmentation du projet en 2 parties (hardware et software)
 
* Choix du matériel et des technologies utilisées
 
* Choix du matériel et des technologies utilisées
 +
* [<span style="color: blue;"> pas plus que deux interrupteurs physiques pour une utilisation basique ;-) </span>]
  
===Étape 2 - Réalisation des parties hardware ===
+
===<span style="color: green;">Étape 2 </span>- Installation du Beaglebone ===
  
* Réalisation d'un prototype le plus rapidement possible
+
* Installation de l'OS et mise en réseau du Beaglebone
 +
* Configuration de l'interface graphique
 +
 
 +
===<span style="color: green;">Étape 3 </span>- Webcam, bouton et beaglebone ===
 +
* Contrôle de la webcam avec Gstreamer
 +
* Faire communiquer les évènements des boutons avec la prise de photo/vidéo
 +
 
 +
===<span style="color: green;">Étape 4 </span>- Programmation ===
 +
* Élaboration du programme du prototype
 +
* Capture d'une image et d'une vidéo
 +
* Valider le prototype software par les utilisateurs
 +
 
 +
===<span style="color: green;">Étape 5 </span>- Réalisation du boitier ===
 +
* Modélisation du boitier
 +
* Validation du modèle
 +
* Réalisation du boitier
 +
 
 +
===<span style="color: darkorange;">Étape 6 </span>- Mise en réseau ===
 +
* Réalisation de l'environnement pour les utilisateurs avancés
 +
* Mise en place du Wiki
 +
* Créer une spécification fonctionnelle pour les évolutions du projet.
 +
 
 +
<br>
 +
 
 +
==Avancement du Projet==
 +
 
 +
===Semaine 14 (04/05/2015)===
 +
* Réalisation de la vidéo
 +
N'ayant pas la possibilité de se retrouver pendant les vacances pour travailler ensemble sur la vidéo, nous avons chacun travaillé de notre côté sur le scénario. Julien a tourné la vidéo puisqu'il possédait la boite pour la démonstration, tandis que Jérémie a participé au montage et aux éventuelles modifications.
 +
 
 +
[[Fichier:ScreenVideo.png | 450 px | thumb | center]]
 +
 
 +
===Semaine 13 (27/04/2015)===
 +
* De par la complexité du programme gérant la capture de flux vidéo via la webcam, '''nous en sommes restés à la prise de photos'''.
 +
* Afin de satisfaire tous les utilisateurs, qu'ils soient étrangers ou français, '''un bouton supplémentaire a été ajouté afin de changer la langue de l'interface''' (Français/Anglais)
 +
Tout a été testé et fonctionne parfaitement.
 +
**L''''interface web''' où sont stockées les photos a aussi été modifiée en conséquences.
 +
* '''Afin d'éteindre proprement la "boite"''' (en réalité la Beagle Bone) et non d'arracher violemment le câble d'alimentation, '''un quatrième bouton a été mis en place'''.
 +
**Tout a été testé et fonctionne parfaitement.
 +
[[Fichier:Page_Lang.png | 400 px | thumb | center]]
 +
 
 +
* Côté interface web ([http://boitefablab.plil.net ici]), '''l'utilisateur peut télécharger et supprimer les photos''' qu'il souhaite.
 +
** Quelques appels de fonctions ont suffi à '''ajouter aux noms de fichiers la date et l'heure de capture'''. Ainsi l'utilisateur retrouve aisément ses photos.
 +
/!\ Par la suite, Il serait judicieux d'implanter un système de badge NFC afin que seules les photos prises par cette identification puissent être supprimées sur l'interface web ! (Avec bien entendu une authentification sur l'interface)
 +
<br><br>
 +
 
 +
'''Modification du nom de l'image avec ajout de date et heure (sur la BeagleBone)'''
 +
<pre>
 +
// On remplit la chaine avec le format choisi
 +
strftime(format, 128, "%Y_%m_%d__%X", &date);
 +
sprintf(commande, "mv pics.image.bmp pics/img_%s_UTC.bmp", format);
 +
system(commande);
 +
system(SCP_CMD) //SCP_CMD en "define" : ssh img* vers le serveur de Polytech où sont stockées toutes les images affichées sur le site
 +
system("rm pics/img*");
 +
</pre>
 +
 
 +
{|class="wikitable centre" style="text-align:center; width:40%;"
 +
|+Précisions sur quelques variables de time.h utilisées ci-dessus (source : [http://openclassrooms.com/courses/time-h-et-ses-fonctions OpenClassrooms])
 +
! scope="col" width="25%" | Symbole
 +
! scope="col" | Affichera
 +
! scope="col" | Exemple
 +
|-
 +
| align="left" | %Y || align="left" | L'année. || align="left" | 2005
 +
|-
 +
| align="left" | %m || align="left" | Numéro du mois. || align="left" | 12
 +
|-
 +
| align="left" | %d || align="left" | Numéro du jour dans le mois. || align="left" | 29
 +
|-
 +
| align="left" | %X || align="left" | Affiche l'heure (format hh:mm:ss). || align="left" | 12:34:56
 +
|}
 +
 
 +
[[Fichier:Page_1_FR.png |400 px|center|thumb|Prototype actuel]]
 +
 
 +
===Semaine 12 (20/04/2015)===
 +
* Finalisation du software
 +
** Mise en forme du code
 +
** Uniformisation des commentaires
 +
** Rédaction d'un README contenant les informations utiles
 +
** Compilation séparée et propre
 +
* Réalisation de la vidéo (par nous-même)
 +
 
 +
===Semaine 11 (13/04/2015)===
 +
 
 +
* '''Incrustation du flux vidéo dans une fenêtre SDL''' : Nous avons finalement choisi une résolution de 680x380 qui présente une latence quasi-inexistante. Le flux vidéo s'affiche très correctement.
 +
* '''Recherches sur l'ergonomie des poignées de la boites''' : Retour sur quelques idées de poignées
 +
 
 +
<gallery style="text-align:center;" perrow="4">
 +
Fichier:Poignee1.png|
 +
Fichier:Poignee2.png|
 +
</gallery>
 +
 
 +
===Semaine 10 (06/04/2015)===
 +
 
 +
* '''Problème d'alimentation un peu faible''' pour l'écran, résolu en changeant d'alimentation
 +
Explication : l'écran doit être alimenté avec un courant de 2A. Le transformateur utilisé délivrait 200 mA...
 +
* Tests de capture photo / vidéo
 +
** '''Problèmes de puissance de calcul de la board''' : le programme gérant l'affichage du flux de la webcam a besoin d'un CPU plus important que celui fourni par la BeagleBone. Alors le programme crash.
 +
** '''Problèmes de résolution de capture et de fps''' : Pour la même raison que juste au dessus, le CPU de la BeagleBone n'est certainement pas assez puissant. Nous ne pouvons donc pas afficher le flux webcam dans la résolution maximale de l'écran (1280x720) car si le programme ne crash pas, nous obtenons un décalage de '''3 secondes''' entre les mouvements faits devant la webcam et les mêmes mouvements vus à l'écran.
 +
 
 +
===Semaine 9 (30/03/2015)===
 +
 
 +
* Nouveau design temporaire plus spacieux
 +
* Avancée majeure sur la partie software
 +
** Réalisation des images BMP à afficher sur couche SDL
 +
 
 +
<gallery style="text-align:center;" perrow="4" caption="BMP créés">
 +
Fichier:Page_1.jpg|Page d'accueil / Choix de mode de prise
 +
Fichier:Page_2.png|Affichage temps réel du flux de la webcam
 +
Fichier:Page_3.jpg|Affichage de la photo prise
 +
Fichier:Page_4.jpg|Page finale précisant à l'utilisateur où trouver ses photos
 +
</gallery>
 +
 
 +
* Incrustation des différents scénarios d'utilisation selon le [http://boitefablab.plil.net/Page_Lang.php?page=1FR modèle validé]
 +
* Début de réflexion de l'incrustation vidéo
 +
 
 +
===Semaine 8 (23/03/2015)===
  
===Étape 3 - Implémentation de la partie software ===
+
* Connexion des 2 boutons à la Beaglebone et récupération des informations par scrutation pour naviguer dans l'interface logicielle
 +
[[Fichier:Beaglebone_overview.jpg| 250 px| thumb | left | Connexion des boutons avec résistance de pull-up]]
  
 +
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
 +
* Résolution du problème d'espace mémoire (problème temporaire) avec une nouvelle carte SD 4Go
 +
Nous pouvons au moins avoir de la marge permettant d'installer de nombreuses librairies nécessaires au développement du Software.
 +
* Recherches d'idée de prise en main de la boite, ergonomiques et réalisables
  
 +
===Semaine 7 (16/03/2015)===
  
===Étape 4 - Test et mises en situation ===
+
* Rencontre avec des utilisateurs du Fabricarium. Le prototype en carton est passé de mains en mains et de nombreuses idées en sont ressorties :
 +
** Pour une meilleure prise en main : poignées tout autour de la boîte (exemple : volant Wii) [[Fichier:WiiWheel.jpeg |250 px|center|thumb|Wii Wheel]]
 +
** Inclinaison caméra : possibilité d'installer un trépied d'appareil photo
 +
** Validation de la partie logicielle par tout le monde
  
 
<br>
 
<br>
 +
* Réalisation sans succès de différents tests pour afficher correctement l'interface de la Beaglebone sur l'écran reçu cette semaine.
 +
* Gestion totale du bouton par scrutation : Récupération de l'information des boutons
 +
En effet nous ne sommes pas parvenus à faire fonctionner les interruptions sur la board comme nous avons pu le faire avec un Arduino (le matériel étant différent)
 +
Mais la scrutation ne pose pas de soucis étant donné la faible précision recherchée
 +
* Problèmes de compilation avec les librairies Gstreamer
 +
* Problème d'espace mémoire disponible sur la beaglebone
 +
Nous pensons donc uploader les photos/Vidéos vers un serveur chaque fois qu'un nouveau fichier est présent sur la BeagleBone (et supprimer le fichier de la BeagleBone une fois le traitement fait).
 +
 +
===Semaine 6 (09/03/2015)===
 +
 +
* Réalisation du prototype de la boîte (en carton) '''à l'échelle'''
 +
* Choix de la nature de la boîte et emplacement des différents éléments
 +
Les boutons étaient principalement dessinés vers le bas, mais lors de la prise en main du prototype nous avons vu que l'équilibre de la boite entre les mains était bien plus confortable avec les boutons au milieu. D'où les flèches dessinées sur le carton.
 +
 +
[[Fichier:Boitier.jpg |350 px|center|thumb|Prototype en carton à l'échelle]]
 +
 +
===Semaine 5 (23/02/2015)===
 +
 +
* Découverte de la librairie graphique SDL
 +
** Manipulation sur l'ouverture de fenêtres, le chargement d'une image dans cette fenêtre, etc...
 +
 +
[[Image:sdl_exemple.png‎|thumb|left|200px|Exemple de fenêtre SDL avec fond personnalisé]]
 +
 +
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
 +
* Modélisation du boîtier par une [http://boitefablab.plil.net/Page_Lang.php?page=1FR interface Web]
 +
Nous avons fait en sorte que les boutons de la boite sur les images soient cliquables par l'utilisateur via une '''"image-map"''' :
 +
 +
<pre>
 +
<img width="1000" height="545" usemap="#map_default" alt="HOME" src="./photos_boite/Page_1_EN.png"></img>
 +
 +
<map name="map_default">
 +
    <area alt="pix" href="Page_2_Photo_EN.php" coords="188,300,30" shape="circle"></area>
 +
    <area alt="vid" href="Page_Lang.php?page=1EN" coords="408,481,30" shape="circle"></area>
 +
    <area alt="vid" href="Page_Switchoff_EN.php" coords="618,483,30" shape="circle"></area>
 +
</map>
 +
</pre>
 +
 +
===Semaine 4 (16/02/2015)===
 +
 +
* Poursuite des tests unitaires, création du prototype par GIF
 +
 +
<gallery style="text-align:center;" perrow="3" caption="Quelques exemples de GIFs créés">
 +
Fichier:Page_1.jpg|Page d'accueil / Choix de mode de prise
 +
Fichier:Page_3.jpg|Affichage de la photo prise
 +
Fichier:Page_4.jpg|Page finale précisant à l'utilisateur où trouver ses photos
 +
</gallery>
 
<br>
 
<br>
  
==Avancement du Projet==
+
* Problème d'utilisation de l'énergie (Contrainte de portativité du système). En effet, l'écran pouvant consommer beaucoup d'énergie. La batterie tiendrait que très peu de temps. L'utilisateur devrait donc recharger la boite très souvent, et cela peut être vite frustrant.
 +
* Installation de la BeagleBone Board, réalisation de l'étape 2 et début de l'étape 3 en attendant le matériel
 +
 
 +
===Semaine 3 (09/02/2015)===
 +
 
 +
* Recherche pour le matériel
 +
* Déroulement de différents scénarios, tests unitaires.
 +
** En se mettant dans la peau de différents utilisateurs, de différents horizons, de nouvelles problématiques se sont posées. En effet, l'utilisation d'un clavier par exemple ne peut être envisagée puisque tout le monde n'est pas à l'aise avec un clavier. Aussi, l'écran se doit d'être non tactile, c'est pourquoi nous nous sommes penchés sur l'utilisation de boutons de grosse taille.
 +
* Réalisation d'une maquette prototype qui illustre le fonctionnement
 +
** Après d'intenses réflexion sur une utilisation la plus simple possible de notre système (aucun clavier, 2 boutons max) nous avons pu commencer l'élaboration d'un prototype décrivant l'utilisation de notre système.
 +
* Prise en main de la webcam et de Gstreamer à travers uniquement des lignes de commandes
 +
 
 +
===Semaine 2 (02/02/2015)===
 +
* Recherche sur le contrôle de webcam '''Logitech C270''' sur Linux
 +
<!-- ''Idée'' : Commencer à contrôler la webcam (prise de son, photo, vidéo) sous Linux en vue d'adapter le contrôle sur la future Raspberry Pi que nous recevrons.<br><br>
 +
 
 +
* Un software léger (testable sous Linux) pourra-t-il fonctionner sur la Raspbian de la même manière ?
 +
**[http://heywhatsthebigidea.net/projects/pi-vision-a-raspberry-pi-camera-controller/ Pi Vision] est un software utilisable sous Linux à télécharger et décompresser sur la machine sur laquelle on travaille. Note : Il existe une version pour Raspberry Pi.
 +
**Après ouverture du soft : '''"/bin/sh: 1: raspistill: not found"''' : Il faut installer Raspistill !
 +
***[http://www.raspberrypi.org/documentation/usage/camera/raspicam/raspistill.md raspistill] ==> [http://www.framboise314.fr/premiere-image-de-la-camera/#more-2524 Branchement caméra et utilisation]
 +
**[http://www.framboise314.fr/docs/The-MagPi-issue-14-en.pdf Quelques commandes pour le contrôle de la caméra]
 +
<br> -->
 +
** Utilitaire retenu : [http://gstreamer.freedesktop.org/ Gstreamer]. Cet utilitaire va nous permettre de contrôler très précisément la webcam. L'utilisation peut se faire en ligne de commande donc l'utilisation à travers notre futur programme principale se fera aisément. Après de nombreux essais, on arrive à capturer des photos et vidéos en ligne de commande.
 +
* Début des recherches sur le matériel nécessaire
 +
* Quelques hésitations persistent sur le choix des technologies et du matériel à utiliser (tablette Android ? badge NFC ?)
  
 
===Semaine 1 (26/01/2015)===
 
===Semaine 1 (26/01/2015)===
 
 
Nous nous sommes interrogés sur les technologies à utiliser. Nous avons donc formulé cette liste de questions auxquelles nous allons répondre après entretien avec les responsables concernés.
 
Nous nous sommes interrogés sur les technologies à utiliser. Nous avons donc formulé cette liste de questions auxquelles nous allons répondre après entretien avec les responsables concernés.
 
+
Pour la boite documentaire :
+
Pour la boite documentaire :
* Support de publication (embarqué ou non, Arduino, Raspberry pi, ...)
+
* Support de publication (tablette Android, Arduino, Raspberry pi ...)
* Technologies sans fil (Bluetooth, WiFi ...)
+
* Technologies sans fil (Bluetooth, WiFi ...)
 
* Interaction avec l'utilisateur (clavier physique, clavier projeté, écran tactile)
 
* Interaction avec l'utilisateur (clavier physique, clavier projeté, écran tactile)
* Nécessité d'une plateforme mobile ? (partie photo/vidéo indépendante ?)
+
* Nécessité d'une plateforme mobile ? (partie photo/vidéo indépendante ?)
 
+
 
Pour la capture photo/vidéo :
 
Pour la capture photo/vidéo :
* Intégré à la boite ? (ou alors l'utilisateur amène sa vidéo déjà prête ?)
+
* Intégré à la boite ? (ou alors l'utilisateur amène sa vidéo déjà prête ?)
 
* Qualité d'image ?
 
* Qualité d'image ?
  
 
Pour l’extension pour les utilisateurs avancés :
 
Pour l’extension pour les utilisateurs avancés :
* Choix d'un Content Management System (Wiki, blog ...)
+
* Choix d'un ''Content Management System'' (Wiki, blog ...)
* Hiérarchisation (base de donnée, ou simple liste de "reportage" ?)
+
* Hiérarchisation (base de donnée, ou simple liste de "reportage" ?)<br><br>
 +
 
 +
Après une semaine de réflexion et de discussion avec nos encadrants, nous avons pu réaliser le cahier des charges et répondre à une bonne partie de ces questions.
  
===Semaine 2 (02/02/2015)===
+
== Liens externes ==
<!--
 
===Semaine 3 (09/02/2015)===
 
===Semaine 4 (16/02/2015)===
 
===Semaine 5 (23/02/2015)===
 
===Semaine 6 (09/03/2015)===
 
===Semaine 7 (16/03/2015)===
 
===Semaine 8 (23/03/2015)===
 
===Semaine 9 (30/03/2015)===
 
===Semaine 10 (06/04/2015)===
 
===Semaine 11 (13/04/2015)===
 
===Semaine 12 (20/04/2015)===
 
  
== Fichiers Rendus ==
+
[https://xavier.polytech-reseau.net:40068/ajaxservices/projets/index.php?instance=IMA4_2014&title=Projets%20IMA4%202014%2f2015 Les sujets de projets]
-->
+
<br>[http://boitefablab.plil.net/Page_Lang.php?page=1FR Prototype actuel de la boite]
 +
<br>Codes sources disponibles sur [https://github.com/Xillusionniste/fablab GitHub]
 +
<br>
  
== Liens externes ==
+
== Fichiers rendus ==
  
Lien vers les sujets de projet [https://xavier.polytech-reseau.net:40068/ajaxservices/projets/index.php?instance=IMA4_2014&title=Projets%20IMA4%202014%2f2015 URL]
+
Codes sources disponibles sur [https://github.com/Xillusionniste/fablab GitHub]
 +
<br>Vidéos disponibles sur [https://www.dropbox.com/sh/d2k13oi05l0kh6f/AABkySvwW572p8emvXhCIr8_a?lst Dropbox]
 +
<br>Rapport de projet : [[Fichier:Rapport_DENHER.pdf]]

Version actuelle datée du 15 juin 2015 à 19:14


Vidéo HD


Cahier des charges

Présentation générale du projet

Contexte

Dans le cadre de la création récente du fablab de Polytech Lille "le Fabricarium", il est nécessaire de documenter les réalisations qui y sont faites. Chacun de ces projets seront documentés dans une "boite documentaire" au Fabricarium. L'ajout et la modification de ces projets sera possible depuis plusieurs plateformes et pour tout public, sans connaissances préalables.

Objectif du projet

Concevoir et réaliser une “boite documentaire” permettant de partager facilement les réalisations et projets du Fabricarium (FabLab) de Polytech Lille.

Description initiale du projet

Au Fabricarium comme dans tout fablab, il est nécessaire que les réalisations et projets faits au Fabricarium soient documentés et partagés au grand public. Ce public présente des origines très diverses ce qui impose à cette “boite documentaire” d’être la plus simple d’utilisation pour pouvoir partager simplement ses réalisation.


Cette boite documentaire doit permettre de simplement :

  • prendre une vidéo d’une personne désirant expliquer sa réalisation,
  • prendre des photos des objets liés à son projet,
  • ajouter une légende,
  • publier le “reportage” réalisé sur différentes plateformes à l’aide d’un simple bouton.


Les différentes plateformes pourront être un site internet, un smartphone ou une tablette. Sur ces deux dernières plateformes, il pourra être envisagé la réalisation d’une application accessible par tous.

Cette boîte devra être utilisable de 7 à 77 ans, par un public très varié, sans connaissances préalables.

Une extension à cette boite documentaire sera une plateforme permettant aux utilisateurs plus avancés d’ajouter divers éléments à leur projet (textes, présentations, mise en forme, …).


Diagramme pieuvre


Un diagramme bête à corne permet de situer simplement notre système et répond au questions suivantes :

A qui notre projet profite-t-il ?
Au porteur de projet du Fabricarium
Sur quoi agit-il ?
Sur le projet du Fabricarium
Dans quel but ?
Documenter le projet

Diagramme bête à corne



Un diagramme pieuvre prend en compte l'environnement du système et permet d'établir la liste de fonctions suivante :

Fonction principale 
Permettre à l'utilisateur de documenter son projet
Fonction contrainte 1 
Générer la documentation (audio, vidéo ou photo)
Fonction contrainte 2 
Être très facile d'utilisation
Fonction contrainte 3 
Archiver la documentation


Choix techniques retenus : matériel et logiciel

Solution retenue

  • Beagle Bone lien [fournie le 16/02/2015][Récupéré le 18/05/2015]
  • Batterie (Alimentation USB avec piles) [fournie le 18/02/2015][Récupéré le 18/05/2015]
  • Ecran LCD 7 à 12 pouces Lien [fourni le 18/03/2015][Récupéré le 18/05/2015]
  • Boutons poussoirs Lien [fournis le 18/03/2015][Récupéré le 18/05/2015]
  • Webcam pan & tilt Logitech C270 [fournie le 28/1/2015][Récupéré le 18/05/2015]


Étapes du projet

Étape 1 - Cahier des charges et choix techniques

  • Élaboration du cahier des charges le plus précis possible
  • Segmentation du projet en 2 parties (hardware et software)
  • Choix du matériel et des technologies utilisées
  • [ pas plus que deux interrupteurs physiques pour une utilisation basique ;-) ]

Étape 2 - Installation du Beaglebone

  • Installation de l'OS et mise en réseau du Beaglebone
  • Configuration de l'interface graphique

Étape 3 - Webcam, bouton et beaglebone

  • Contrôle de la webcam avec Gstreamer
  • Faire communiquer les évènements des boutons avec la prise de photo/vidéo

Étape 4 - Programmation

  • Élaboration du programme du prototype
  • Capture d'une image et d'une vidéo
  • Valider le prototype software par les utilisateurs

Étape 5 - Réalisation du boitier

  • Modélisation du boitier
  • Validation du modèle
  • Réalisation du boitier

Étape 6 - Mise en réseau

  • Réalisation de l'environnement pour les utilisateurs avancés
  • Mise en place du Wiki
  • Créer une spécification fonctionnelle pour les évolutions du projet.


Avancement du Projet

Semaine 14 (04/05/2015)

  • Réalisation de la vidéo

N'ayant pas la possibilité de se retrouver pendant les vacances pour travailler ensemble sur la vidéo, nous avons chacun travaillé de notre côté sur le scénario. Julien a tourné la vidéo puisqu'il possédait la boite pour la démonstration, tandis que Jérémie a participé au montage et aux éventuelles modifications.

ScreenVideo.png

Semaine 13 (27/04/2015)

  • De par la complexité du programme gérant la capture de flux vidéo via la webcam, nous en sommes restés à la prise de photos.
  • Afin de satisfaire tous les utilisateurs, qu'ils soient étrangers ou français, un bouton supplémentaire a été ajouté afin de changer la langue de l'interface (Français/Anglais)

Tout a été testé et fonctionne parfaitement.

    • L'interface web où sont stockées les photos a aussi été modifiée en conséquences.
  • Afin d'éteindre proprement la "boite" (en réalité la Beagle Bone) et non d'arracher violemment le câble d'alimentation, un quatrième bouton a été mis en place.
    • Tout a été testé et fonctionne parfaitement.
Page Lang.png
  • Côté interface web (ici), l'utilisateur peut télécharger et supprimer les photos qu'il souhaite.
    • Quelques appels de fonctions ont suffi à ajouter aux noms de fichiers la date et l'heure de capture. Ainsi l'utilisateur retrouve aisément ses photos.

/!\ Par la suite, Il serait judicieux d'implanter un système de badge NFC afin que seules les photos prises par cette identification puissent être supprimées sur l'interface web ! (Avec bien entendu une authentification sur l'interface)

Modification du nom de l'image avec ajout de date et heure (sur la BeagleBone)

// On remplit la chaine avec le format choisi
strftime(format, 128, "%Y_%m_%d__%X", &date);
sprintf(commande, "mv pics.image.bmp pics/img_%s_UTC.bmp", format);
system(commande);
system(SCP_CMD) //SCP_CMD en "define" : ssh img* vers le serveur de Polytech où sont stockées toutes les images affichées sur le site
system("rm pics/img*");
Précisions sur quelques variables de time.h utilisées ci-dessus (source : OpenClassrooms)
Symbole Affichera Exemple
 %Y L'année. 2005
 %m Numéro du mois. 12
 %d Numéro du jour dans le mois. 29
 %X Affiche l'heure (format hh:mm:ss). 12:34:56
Prototype actuel

Semaine 12 (20/04/2015)

  • Finalisation du software
    • Mise en forme du code
    • Uniformisation des commentaires
    • Rédaction d'un README contenant les informations utiles
    • Compilation séparée et propre
  • Réalisation de la vidéo (par nous-même)

Semaine 11 (13/04/2015)

  • Incrustation du flux vidéo dans une fenêtre SDL : Nous avons finalement choisi une résolution de 680x380 qui présente une latence quasi-inexistante. Le flux vidéo s'affiche très correctement.
  • Recherches sur l'ergonomie des poignées de la boites : Retour sur quelques idées de poignées

Semaine 10 (06/04/2015)

  • Problème d'alimentation un peu faible pour l'écran, résolu en changeant d'alimentation

Explication : l'écran doit être alimenté avec un courant de 2A. Le transformateur utilisé délivrait 200 mA...

  • Tests de capture photo / vidéo
    • Problèmes de puissance de calcul de la board : le programme gérant l'affichage du flux de la webcam a besoin d'un CPU plus important que celui fourni par la BeagleBone. Alors le programme crash.
    • Problèmes de résolution de capture et de fps : Pour la même raison que juste au dessus, le CPU de la BeagleBone n'est certainement pas assez puissant. Nous ne pouvons donc pas afficher le flux webcam dans la résolution maximale de l'écran (1280x720) car si le programme ne crash pas, nous obtenons un décalage de 3 secondes entre les mouvements faits devant la webcam et les mêmes mouvements vus à l'écran.

Semaine 9 (30/03/2015)

  • Nouveau design temporaire plus spacieux
  • Avancée majeure sur la partie software
    • Réalisation des images BMP à afficher sur couche SDL
  • Incrustation des différents scénarios d'utilisation selon le modèle validé
  • Début de réflexion de l'incrustation vidéo

Semaine 8 (23/03/2015)

  • Connexion des 2 boutons à la Beaglebone et récupération des informations par scrutation pour naviguer dans l'interface logicielle
Connexion des boutons avec résistance de pull-up

















  • Résolution du problème d'espace mémoire (problème temporaire) avec une nouvelle carte SD 4Go

Nous pouvons au moins avoir de la marge permettant d'installer de nombreuses librairies nécessaires au développement du Software.

  • Recherches d'idée de prise en main de la boite, ergonomiques et réalisables

Semaine 7 (16/03/2015)

  • Rencontre avec des utilisateurs du Fabricarium. Le prototype en carton est passé de mains en mains et de nombreuses idées en sont ressorties :
    • Pour une meilleure prise en main : poignées tout autour de la boîte (exemple : volant Wii)
      Wii Wheel
    • Inclinaison caméra : possibilité d'installer un trépied d'appareil photo
    • Validation de la partie logicielle par tout le monde


  • Réalisation sans succès de différents tests pour afficher correctement l'interface de la Beaglebone sur l'écran reçu cette semaine.
  • Gestion totale du bouton par scrutation : Récupération de l'information des boutons

En effet nous ne sommes pas parvenus à faire fonctionner les interruptions sur la board comme nous avons pu le faire avec un Arduino (le matériel étant différent) Mais la scrutation ne pose pas de soucis étant donné la faible précision recherchée

  • Problèmes de compilation avec les librairies Gstreamer
  • Problème d'espace mémoire disponible sur la beaglebone

Nous pensons donc uploader les photos/Vidéos vers un serveur chaque fois qu'un nouveau fichier est présent sur la BeagleBone (et supprimer le fichier de la BeagleBone une fois le traitement fait).

Semaine 6 (09/03/2015)

  • Réalisation du prototype de la boîte (en carton) à l'échelle
  • Choix de la nature de la boîte et emplacement des différents éléments

Les boutons étaient principalement dessinés vers le bas, mais lors de la prise en main du prototype nous avons vu que l'équilibre de la boite entre les mains était bien plus confortable avec les boutons au milieu. D'où les flèches dessinées sur le carton.

Prototype en carton à l'échelle

Semaine 5 (23/02/2015)

  • Découverte de la librairie graphique SDL
    • Manipulation sur l'ouverture de fenêtres, le chargement d'une image dans cette fenêtre, etc...
Exemple de fenêtre SDL avec fond personnalisé
















Nous avons fait en sorte que les boutons de la boite sur les images soient cliquables par l'utilisateur via une "image-map" :

<img width="1000" height="545" usemap="#map_default" alt="HOME" src="./photos_boite/Page_1_EN.png"></img>

<map name="map_default">
    <area alt="pix" href="Page_2_Photo_EN.php" coords="188,300,30" shape="circle"></area>
    <area alt="vid" href="Page_Lang.php?page=1EN" coords="408,481,30" shape="circle"></area>
    <area alt="vid" href="Page_Switchoff_EN.php" coords="618,483,30" shape="circle"></area>
</map>

Semaine 4 (16/02/2015)

  • Poursuite des tests unitaires, création du prototype par GIF


  • Problème d'utilisation de l'énergie (Contrainte de portativité du système). En effet, l'écran pouvant consommer beaucoup d'énergie. La batterie tiendrait que très peu de temps. L'utilisateur devrait donc recharger la boite très souvent, et cela peut être vite frustrant.
  • Installation de la BeagleBone Board, réalisation de l'étape 2 et début de l'étape 3 en attendant le matériel

Semaine 3 (09/02/2015)

  • Recherche pour le matériel
  • Déroulement de différents scénarios, tests unitaires.
    • En se mettant dans la peau de différents utilisateurs, de différents horizons, de nouvelles problématiques se sont posées. En effet, l'utilisation d'un clavier par exemple ne peut être envisagée puisque tout le monde n'est pas à l'aise avec un clavier. Aussi, l'écran se doit d'être non tactile, c'est pourquoi nous nous sommes penchés sur l'utilisation de boutons de grosse taille.
  • Réalisation d'une maquette prototype qui illustre le fonctionnement
    • Après d'intenses réflexion sur une utilisation la plus simple possible de notre système (aucun clavier, 2 boutons max) nous avons pu commencer l'élaboration d'un prototype décrivant l'utilisation de notre système.
  • Prise en main de la webcam et de Gstreamer à travers uniquement des lignes de commandes

Semaine 2 (02/02/2015)

  • Recherche sur le contrôle de webcam Logitech C270 sur Linux
    • Utilitaire retenu : Gstreamer. Cet utilitaire va nous permettre de contrôler très précisément la webcam. L'utilisation peut se faire en ligne de commande donc l'utilisation à travers notre futur programme principale se fera aisément. Après de nombreux essais, on arrive à capturer des photos et vidéos en ligne de commande.
  • Début des recherches sur le matériel nécessaire
  • Quelques hésitations persistent sur le choix des technologies et du matériel à utiliser (tablette Android ? badge NFC ?)

Semaine 1 (26/01/2015)

Nous nous sommes interrogés sur les technologies à utiliser. Nous avons donc formulé cette liste de questions auxquelles nous allons répondre après entretien avec les responsables concernés.

Pour la boite documentaire :

  • Support de publication (tablette Android, Arduino, Raspberry pi ...)
  • Technologies sans fil (Bluetooth, WiFi ...)
  • Interaction avec l'utilisateur (clavier physique, clavier projeté, écran tactile)
  • Nécessité d'une plateforme mobile ? (partie photo/vidéo indépendante ?)

Pour la capture photo/vidéo :

  • Intégré à la boite ? (ou alors l'utilisateur amène sa vidéo déjà prête ?)
  • Qualité d'image ?

Pour l’extension pour les utilisateurs avancés :

  • Choix d'un Content Management System (Wiki, blog ...)
  • Hiérarchisation (base de donnée, ou simple liste de "reportage" ?)

Après une semaine de réflexion et de discussion avec nos encadrants, nous avons pu réaliser le cahier des charges et répondre à une bonne partie de ces questions.

Liens externes

Les sujets de projets
Prototype actuel de la boite
Codes sources disponibles sur GitHub

Fichiers rendus

Codes sources disponibles sur GitHub
Vidéos disponibles sur Dropbox
Rapport de projet : Fichier:Rapport DENHER.pdf