<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
		<id>https://wiki-ima.plil.fr/mediawiki//api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Flefevre</id>
		<title>Wiki d'activités IMA - Contributions de l’utilisateur [fr]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki-ima.plil.fr/mediawiki//api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Flefevre"/>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php/Sp%C3%A9cial:Contributions/Flefevre"/>
		<updated>2026-05-12T22:00:26Z</updated>
		<subtitle>Contributions de l’utilisateur</subtitle>
		<generator>MediaWiki 1.29.2</generator>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=42263</id>
		<title>IMA4 2016/2017 P46 : Aide anti-gaspillage alimentaire</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=42263"/>
				<updated>2017-05-15T17:50:59Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
En France, nous jetons en moyenne 21% des aliments que nous achetons, ce qui représente une perte de 100 à 160 euros par an par habitant. Cela est en partie dû à la date limite de consommation associée à chaque produit. En effet, à partir du moment où cette date sera dépassée le consommateur jettera les produits concernés sans réfléchir, même si ceux-ci peuvent parfois être encore mangeables. Plutôt que d'essayer de les convaincre du contraire, il serait judicieux de proposer aux adeptes du gaspillage une aide permettant de gérer tous les aliments dont ils disposent chez eux afin d'éviter la surprise de tomber sur plusieurs produits périmés lorsqu'ils ouvrent la porte de leur frigo. &lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Ce projet permet d'aider les utilisateurs d'une part à mémoriser les denrées périssables qu'ils disposent dans leur réserve alimentaire et d'autre part d'avertir l'utilisateur qu'un événement important a lieu. Ceci peut être une notification qu'un aliment va bientôt dépasser sa date de péremption, que la porte du frigidaire est restée ouverte ou encore que le nombre d'aliments dans la réserve devient critique et qu'il faudra de nouveau l'alimenter. Enfin, le système aidera l'utilisateur à trouver des idées de repas pouvant permettre de consommer les aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Notre prototype permettra d'éviter le gaspillage alimentaire ainsi que d'aider l'utilisateur dans sa gestion du stockage d'aliments.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
&lt;br /&gt;
Notre système sera composé de 3 éléments. &lt;br /&gt;
&lt;br /&gt;
Premièrement, un ou des smartphones appartenant aux utilisateurs. Ces derniers permettront de scanner grâce à son appareil photo, le code barre du produit ainsi que sa date de péremption. Il servira aussi d'interface utilisateur pour notre système. En effet, c'est par cet outil que l'utilisateur pourra lister tous les aliments que l'utilisateur a dans sa base et tout ça en les triant par date de péremption, ou encore voir les recettes possibles pour consommer des aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Deuxièmement, un serveur, de type Raspberry, qui permettra de stocker la base de donnée contenant les aliments de la réserve. Ce serveur sera connecté par wifi.&lt;br /&gt;
 &lt;br /&gt;
Troisièmement, un contrôleur (Rfduino) qui comportera une LED pour indiquer la mise sous tension du contrôleur, une LED pour prévenir l'utilisateur qu'un aliment va bientôt passer sa date de péremption et une dernière LED pour prévenir l'utilisateur que son niveau de réserve est critique ainsi qu'un buzzer et un accéléromètre pour buzzer quand la porte du frigo est restée trop longtemps ouverte. Ce dernier sera fixé au frigo par l'intermédiaire d'un dispositif adapté qui sera un système aimanté qui se pose sur le frigo.&lt;br /&gt;
&lt;br /&gt;
Nous implémenterons donc une application mobile Android qui fera le lien entre les 2 autres systèmes.&lt;br /&gt;
&lt;br /&gt;
Pour la partie électronique que nous aurons à réaliser, nous utiliserons une Breadboard pour faire des premiers tests puis nous créerons une carte PCB pour notre montage final.&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
On utilisera une Raspberry Pi en guise de serveur pour pouvoir s'occuper du stockage de toutes les données dans notre projet puisque notre contrôleur sera incapable de les contenir, ce n'est d'ailleurs pas son but ici.&lt;br /&gt;
&lt;br /&gt;
Notre smartphone fera donc le lien entre notre base de données et notre système embarqué par l'intermédiaire de l'application mobile.&lt;br /&gt;
&lt;br /&gt;
Nous prendrons ici un RFduino puisque celui-ci nous permet d'ajouter des modules comme bon nous semble afin d'adapter le système aux besoins de notre application. Il est également parfaitement compatible avec les applications Android. De plus, nous avons un Bluetooth directement intégré au RFduino pour s'assurer que les liaisons RFduino-application mobile se fassent correctement. &lt;br /&gt;
On notera également que ce contrôleur consomme peu de courant et ne demande qu'une faible tension d'alimentation, critères importants pour ce genre de projet. C'est la raison principale de son utilisation pour être utilisé comme interface physique sur le frigo, en ajoutant également sa taille réduite comparée à la Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
&lt;br /&gt;
Nous avons donc besoin du matériel suivant :&lt;br /&gt;
&lt;br /&gt;
*Raspberry Pi.&lt;br /&gt;
*Clef wifi&lt;br /&gt;
*RFduino (RFD22102 DIP Board, RFD22121 USB Shield, RFD22126 Dual AAA battery shield).&lt;br /&gt;
*2 piles AAA.&lt;br /&gt;
*3 leds tranversantes.&lt;br /&gt;
*3 Résistances 330 Ohm.&lt;br /&gt;
*1 Résistance 10 kOhm.&lt;br /&gt;
*Un buzzer.&lt;br /&gt;
*Accéléromètre.&lt;br /&gt;
*Aimants&lt;br /&gt;
*Un boîtier permettant d'intégrer la RFduino + fixation sur le frigo (modélisation à voir).&lt;br /&gt;
&lt;br /&gt;
Pour le buzzer, l'accéléromètre et les résistances, nous choisirons des composants CMS pour nous permettre d'avoir une carte plus petite.&lt;br /&gt;
&lt;br /&gt;
===Calendrier prévisionnel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Liste des tâches à effectuer====&lt;br /&gt;
&lt;br /&gt;
* Configurer la Raspberry :&lt;br /&gt;
** Installer et configurer le serveur.&lt;br /&gt;
** Créer le diagramme UML de notre future base de données.&lt;br /&gt;
** Créer la base sur le serveur.&lt;br /&gt;
** Configurer la connexion WiFi.&lt;br /&gt;
&lt;br /&gt;
* Monter et programmer la RFduino :&lt;br /&gt;
** Connecter les différents modules au RFduino (accéléromètre, LEDs, buzzer, Batterie, module Bluetooth).&lt;br /&gt;
** Récupérer les consignes du smartphone grâce au Bluetooth.&lt;br /&gt;
** Programmer le comportement du RFduino en fonction des consignes.&lt;br /&gt;
** Construire le boitier final.&lt;br /&gt;
&lt;br /&gt;
* Implémenter l'application mobile Android :&lt;br /&gt;
** Une première activité permettant de se connecter au RFduino et à la Raspberry.&lt;br /&gt;
** Scanner une date et un code barre.&lt;br /&gt;
** Ajout/suppression d'un aliment dans la base de donnée.&lt;br /&gt;
** Envoi d'une consigne au RFduino.&lt;br /&gt;
** Rendre l'interface utilisateur ergonomique (lister aliments, envoyer vers page de recettes avec l'utilisation des aliments bientôt périmés...).&lt;br /&gt;
&lt;br /&gt;
====Calendrier====&lt;br /&gt;
&lt;br /&gt;
Répartition du temps consacré au projet (120h *2) :&lt;br /&gt;
&lt;br /&gt;
*Partie Raspberry : 60h&lt;br /&gt;
*Partie RFduino : 60h&lt;br /&gt;
*Partie développement mobile : 120h&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
&lt;br /&gt;
===Feuille d'heures===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 !  !! Lundi 16-18h !! Mercredi 14-18h !! Jeudi 8-10h&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 1&lt;br /&gt;
&lt;br /&gt;
 | '''23/01''' :  &lt;br /&gt;
* Installation du logiciel Android Studio pour être prêt à commencer l'application mobile.&lt;br /&gt;
* Création du Repository Git sur GitHub : https://github.com/FrancoisLefevre12/Optali.git&lt;br /&gt;
* Réalisation de différents schémas fonctionnels pour se donner une idée du travail à effectuer, aussi bien du software que du hardware.&lt;br /&gt;
* Quelques précisions supplémentaires apportées sur le cahier des charges.&lt;br /&gt;
* Ajout de liens de référence pour la liste de matériel à acheter.&lt;br /&gt;
&lt;br /&gt;
 | '''25/01''' :  &lt;br /&gt;
* Précision des composants requis (accéléromètre, buzzer, LEDs, résistances).&lt;br /&gt;
* Écriture du montage à la main.&lt;br /&gt;
* Étude du fonctionnement de l'accéléromètre, du buzzer.&lt;br /&gt;
* Écriture de la structure de l'application à la main.&lt;br /&gt;
&lt;br /&gt;
 | '''26/01''' :&lt;br /&gt;
*Réalisation graphique de la première page de l'application.&lt;br /&gt;
*Conception du schéma électrique pour tous les composants connectés au RFduino.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 2&lt;br /&gt;
&lt;br /&gt;
 | '''30/01''' :&lt;br /&gt;
*Réalisation du diagramme UML de la base de données qui sera stockée sur la Raspberry Pi&lt;br /&gt;
*Installation de l'outil de développement mobile sur le second PC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 | '''01/02''' :&lt;br /&gt;
*Nous nous sommes d'abord rendus compte que la résistance entre un des GPIO et l'accéléromètre était inutile, nos premiers calculs étaient erronés. Nous ne la garderons donc pas sur notre schéma électrique final.&lt;br /&gt;
*Avancement sur la partie application mobile : réalisation de la page &amp;quot;Ajout&amp;quot; sur laquelle nous tomberons après avoir cliquer sur &amp;quot;ajout&amp;quot; sur la page principale de l'application. Nous avons étendu l'activité principale jusqu'à cette nouvelle activité &amp;quot;Ajout&amp;quot;.&lt;br /&gt;
*Nous avons récupéré notre Raspberry Pi pour commencer à installer notre base de données dessus. Nous avons actuellement quelques problèmes pour nous connecter sur la Raspberry. Nous travaillons sur ce point.&lt;br /&gt;
&lt;br /&gt;
 | '''02/02''' :&lt;br /&gt;
* Application mobile : Mise en place des LEDs sur la home page et de la zone de notification avec les messages associés.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 3&lt;br /&gt;
&lt;br /&gt;
 | '''06/02''' :&lt;br /&gt;
*Nous arrivons à accéder à la Raspberry via le port série de celle-ci. Nous avons également configuré sa connexion Ethernet afin de pouvoir télécharger des paquets dessus et installer notre base de données. &lt;br /&gt;
*Nous rencontrions des problèmes sur le second PC de travail pour récupérer le projet Optali sur Android Studio via notre dépôt GIT. Nous avons pu rectifier ce souci.&lt;br /&gt;
&lt;br /&gt;
 | '''08/02''' :&lt;br /&gt;
*Tentative d'établissement d'un point d'accès WiFi sur notre Raspberry. Nous n'avons pas réussi pour le moment.&lt;br /&gt;
*Restructuration du Repository git.&lt;br /&gt;
*Essai d'importation de la librairie Zxing qui permettra de décoder les code-barres.&lt;br /&gt;
 |&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 4&lt;br /&gt;
&lt;br /&gt;
 | '''13/02'''&lt;br /&gt;
*Configuration du wifi de la Raspberry. &lt;br /&gt;
*Étude d'une mise en place d'un service web via php.&lt;br /&gt;
&lt;br /&gt;
 | '''15/02'''&lt;br /&gt;
*Mise en place d'un lecteur de caractère sur l'application. On utilisera tesseract.&lt;br /&gt;
*Début de la création du PCB via Altium designer. Création d'une librairie pour l'accéléromètre qui est un composant CMS assez spécial. On pourra cependant utiliser des headers classiques pour le buzzer et les LEDs puisque ce sont des composants traversants.&lt;br /&gt;
*Création des premiers fichiers php de connection à la base de donnée et d'insertion d'aliments. Tous ces fichiers seront déposés de la même manière sur le dépôt git.&lt;br /&gt;
&lt;br /&gt;
 | '''16/02'''&lt;br /&gt;
*Adaptation avec prise en compte des cas du code php d'insertion de produits par requête sur la base de donnée.&lt;br /&gt;
*Ajout du code d'implantation de la base de donnée.&lt;br /&gt;
*Altium: Accéléromètre terminé, mise en place des résistances.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 5 (interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''22/02 (3 heures)'''&lt;br /&gt;
*Installation de l'OS de la raspberry.&lt;br /&gt;
*Installation d'Openssh-server, apache2, php5, iptables, mysql-server, php5-mysql.&lt;br /&gt;
*Redirection des ports du routeur vers la raspberry.&lt;br /&gt;
*Configuration de iptables de la raspberry.&lt;br /&gt;
&lt;br /&gt;
 | '''23/02 (2 heures)'''&lt;br /&gt;
*Implantation de la base de donnée sur la raspberry pi.&lt;br /&gt;
|&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 6&lt;br /&gt;
 | '''27/02'''&lt;br /&gt;
*Vérification de la syntaxe de l'insertion de valeurs dans la base de donnée.&lt;br /&gt;
*Création des premières requêtes sur la base de donnée.&lt;br /&gt;
*Finalisation du PCB de l'Optali Board.&lt;br /&gt;
&lt;br /&gt;
 | '''01/03'''&lt;br /&gt;
*Étude et ajout de la librairie volley pour communiquer avec le serveur.&lt;br /&gt;
*Implantation de la fonction d'envoi de données jusqu'au serveur.&lt;br /&gt;
*Après avoir vu avec un professeur, nous avons remarqué que le routage n'était pas adéquat et la disposition des composants n'était pas optimal. Du travail reste donc encore à effectuer.&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 7&lt;br /&gt;
 | '''06/03'''&lt;br /&gt;
*Correction du fichier post.php&lt;br /&gt;
*Finition du protocole d'ajout d'aliment sur la base de donnée. (Code php et page ajout terminée).&lt;br /&gt;
*PCB terminé.&lt;br /&gt;
*Installation d'arduino IDE, doc arduino collecté.&lt;br /&gt;
&lt;br /&gt;
 | '''08/03'''&lt;br /&gt;
*Implémentation de la page ListeIngredient.xml et de l'activité listActivity.java.&lt;br /&gt;
*Documentation sur la procédure de communication bluetooth entre la Rfduino et l'application mobile.&lt;br /&gt;
*Obtention de librairie en lien avec cela.&lt;br /&gt;
*Prise en main de programmation rfduino.&lt;br /&gt;
&lt;br /&gt;
 | '''09/03'''&lt;br /&gt;
*Nous nous sommes rendus compte qu'il était nécessaire de rajouter un bouton poussoir sur notre montage afin de permettre la réinitialisation de notre RFDuino si nécessaire. Nous devons également faire en sorte de pouvoir poser notre carte PCB directement sur notre RFDuino en utilisant des broches. Nous devons donc rajouter ces éléments-ci.&lt;br /&gt;
*Ecriture de la page get.php&lt;br /&gt;
*Premiers tests sur la ListView de l'activité ListActivity.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 8&lt;br /&gt;
 | '''13/03'''&lt;br /&gt;
*Recherche de pistes concernant la programmation RFDuino. Nous pouvons la détecter en bluetooth via un smartphone Android.&lt;br /&gt;
*Finition du Tablelayout et du code java associé sur la page ListActivity.&lt;br /&gt;
&lt;br /&gt;
 | '''15/03'''&lt;br /&gt;
*Ajout de la JsonArrayRequest dans la page ListActivity.&lt;br /&gt;
*Nous nous sommes rendus compte au moment de programmer la liaison I2C de l'accéléromètre avec la RFDuino que nous avions oublié de mettre des résistances pull-up entre l'alimentation du composant et les broches SDA et SCL. Les modifications ont donc été faites puis nous avons envoyé finalement notre PCB à la fabrication.&lt;br /&gt;
&lt;br /&gt;
 | '''16/03'''&lt;br /&gt;
*Changement de stratégie au niveau de la requête JsonArrayRequest. On récupère toute la base et ensuite le traitement sera effectuer dans l'application mobile.&lt;br /&gt;
*Rédaction de la partie Altium du wiki.&lt;br /&gt;
*Recherche de docs sur le système bluetooth du RFduino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 9&lt;br /&gt;
 | '''20/03'''&lt;br /&gt;
*Réalisation de différents réglages pour pouvoir utiliser l'application Optali sur l'Android phone fourni par notre professeur (LG G4c)&lt;br /&gt;
*Recherche de docs concernant la partie java responsable de la communication Bluetooth.&lt;br /&gt;
*Reprise de la solution Tesseract pour la lecture de caractères.&lt;br /&gt;
&lt;br /&gt;
 | '''21/03''' (séance supplémentaire de 3 heures)&lt;br /&gt;
*Début du développement de la partie communication entre RFDuino et l'appli mobile. Nous pouvons détecter le RFduino à partir de Android Studio mais nous n'arrivons pas encore à nous connecter dessus directement.&lt;br /&gt;
*Finition de la fonctionnalité tesseract. La lecture de caractères est donc maintenant possible.&lt;br /&gt;
&lt;br /&gt;
 | '''22/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity&lt;br /&gt;
*Connexion possible entre le RFduino et notre appli mobile. Il faut maintenant pouvoir assurer un échange de données via du GATT.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 10&lt;br /&gt;
 | '''27/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity (suite). Utilisation de la solution postman.&lt;br /&gt;
*Mise à jour du wiki pour la partie Altium.&lt;br /&gt;
*Gestion du dépôt git.&lt;br /&gt;
*Récupération de la carte PCB au service EEI.&lt;br /&gt;
&lt;br /&gt;
 | '''29/03'''&lt;br /&gt;
*Mise en place du tri des Produits avec un critère d'ordonnabilité variable&lt;br /&gt;
*Implémentation du champs recherche et action sur la liste&lt;br /&gt;
*Écriture des pages Php consume.php et delete.php pour décrémenter le nombre d'aliment dans le frigo ou le supprimer&lt;br /&gt;
*Récupération des composants&lt;br /&gt;
*Passage au four pour souder les premiers composants en CMS&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 11&lt;br /&gt;
&lt;br /&gt;
 | '''03/04'''&lt;br /&gt;
*Dé-soudage et resoudage de l'accéléromètre.&lt;br /&gt;
*Soudure des composants&lt;br /&gt;
&lt;br /&gt;
 | '''05/04'''&lt;br /&gt;
*Test du Buzzer&lt;br /&gt;
*Code de l'accéléromètre&lt;br /&gt;
*Création de l'Optali box (la boite qui contient le RFduino fixé au frigo)&lt;br /&gt;
*Finition de la fonction 'delete'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 | '''06/04'''&lt;br /&gt;
*Problème pour faire fonctionner le code de l'accéléro. Il faudra le tester électriquement.&lt;br /&gt;
*Implantation du logo de l'appli &lt;br /&gt;
*Debuggage d'une requête de la page 'list'&lt;br /&gt;
*Documentation sur les listes déroulantes sous les EditTexts.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 12 (Interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''11/04''' (3 heures)&lt;br /&gt;
*Après avoir remarqué que le code de l'accéléro ne fonctionnait pas alors qu'il paraît correct, nous avons décidez de vérifier les propriétés électriques de notre montage.&lt;br /&gt;
En observant à l'analyseur logique, il semblerait que l'horloge de la liaison i2C n'est en fait qu'un signal bruité. Il faudra donc retenter de souder le composant quand cela sera possible.&lt;br /&gt;
&lt;br /&gt;
 | '''13/04''' (6 heures)&lt;br /&gt;
*Terminaison du programme RFduino qui fonctionne théoriquement, nous attendons de terminer les dernières soudures pour pouvoir le tester physiquement.&lt;br /&gt;
*En attendant de pouvoir réaliser des soudures, nous avons repris la partie communication bluetooth entre le RFduino et l'appli. Après avoir tenté d'utiliser un programme permettant de gérer le protocole GATT sans savoir envoyer ou recevoir de données, nous nous sommes orientés sur une communication plus basique basée sur de nombreux exemples que l'on peut voir sur le web.&lt;br /&gt;
&lt;br /&gt;
 | '''15/04''' (6 heures)&lt;br /&gt;
*Après s'être rendu compte que la communication plus &amp;quot;basique&amp;quot; que nous voulions utiliser n'était pas compatible avec le BLE, nous sommes une fois de plus repartis de zéro pour cette partie.&lt;br /&gt;
*Après quelques recherches, nous avons trouvé un programme réalisant la gestion d'un socket BLE sur le principe du protocole GATT. Grâce à celui-ci, il nous est possible de recevoir et d'envoyer des données via BLE sur RFduino ainsi que sur l'appli mobile.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 13 (Interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''17/04 (4 heures)'''&lt;br /&gt;
*Ajout du singleton Etat pour partager l'état des aliments dans la réserve alimentaire&lt;br /&gt;
*Transfert des requêtes de la base de donnée vers le singleton pour optimiser l'actualisation et le partage des données.&lt;br /&gt;
*Actualisation automatique des données sur la page principale.&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Semaine 14&lt;br /&gt;
| '''24/04'''&lt;br /&gt;
*Modification de la présentation du wiki&lt;br /&gt;
*Modification de la fonctionnalité du bouton actualiser en changement d'activité&lt;br /&gt;
&lt;br /&gt;
| '''26/04'''&lt;br /&gt;
*Ajout de la page liste recette&lt;br /&gt;
&lt;br /&gt;
| '''27/04''' (3 heures)&lt;br /&gt;
*Ajout des listes recettes dans ListeRecette&lt;br /&gt;
*Ajout des requêtes des recettes sur ListeRecette.java&lt;br /&gt;
*Création du fichier listeRecette.php sur le serveur pour faire la requête SQL et envoyer sur l'application.&lt;br /&gt;
*Soudure des derniers composants pour terminer le PCB. Tout est soudé sauf le bouton poussoir qui devait permettre un reset du RFduino. En cherchant d'ailleurs à souder ce bouton, nous avons retiré malencontreusement la piste de cuivre permettant de répartir le 3.3V du RFduino sur notre PCB. Notre accéléromètre qui ne marchait déjà pas vraiment n'est plus alimenté. Nous ferons sans notre accéléromètre pour le rendu final. &lt;br /&gt;
|-&lt;br /&gt;
|Semaine 15&lt;br /&gt;
|'''02/05'''&lt;br /&gt;
*Réalisation de la vidéo de présentation du projet avec Laurent Engels.&lt;br /&gt;
|'''03/05'''&lt;br /&gt;
*Remplacement de la LED &amp;quot;LED_Perim&amp;quot; qui était défaillante et ne s'allumait pas quand il le fallait.&lt;br /&gt;
*Début de la réalisation du rapport de projet.&lt;br /&gt;
|'''04/05'''&lt;br /&gt;
*Débuggage de la &amp;quot;LED_Perim&amp;quot;. Le problème n'était donc pas électrique mais bien au niveau software. Il existait un conflit entre l'allumage de cette LED et la pin TX de la liaison série qui était défini sur la même broche.&lt;br /&gt;
*Débuggage de l'appli pour éviter les quelques plantages que l'on peut avoir parfois.&lt;br /&gt;
|-&lt;br /&gt;
|Semaine 16&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===Premières idées===&lt;br /&gt;
&lt;br /&gt;
Voici les premières idées de l'application mobile et du composant fixé sur le frigo.&lt;br /&gt;
[[Fichier:Optali_v1.jpg|400px|thumb|left|Optali version 1]]&lt;br /&gt;
[[Fichier:OptaliBox_v1.jpg|400px|thumb|center|OptaliBox version 1]]&lt;br /&gt;
[[Fichier:P46_schema.jpg|400px|thumb|center|Schéma électrique version 1]]&lt;br /&gt;
&lt;br /&gt;
En s'intéressant aux différentes datasheets ou données constructeur des composants que nous voulons utiliser, nous trouvons indispensable d'utiliser des résistances de 330 Ohms pour l'utilisation des LEDs, pour éviter de les griller.&lt;br /&gt;
&lt;br /&gt;
Edit : Retrait de la résistance R2.&lt;br /&gt;
&lt;br /&gt;
Concernant l'accéléromètre, nous avons choisi un modèle qui nous permet de brancher directement ce module sur une broche du RFDuino. On branchera directement les GPIOs de la RFduino sur les ports SDA et SCL de l'accéléromètre qui correspondent à l'interface I2C pour pouvoir communiquer. On utilisera aussi la broche INT1 pour pouvoir générer des interruptions directement depuis l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
On connectera le buzzer directement à une broche de la RFduino aussi. Concernant celui-ci il reste une incertitude puisqu'on ne trouve aucune information sur le courant à fournir pour l'alimentation de ce composant sur sa datasheet. Après différentes recherches sur Internet, il pourrait être nécessaire d'utiliser un montage amplificateur à transistor comme un émetteur commun pour booster le courant en sortie d'une broche GPIO. Quelques buzzers trouvés avec des données constructeur montrent que ce type de composant nécessite généralement un courant d'environ 30 mA. Nous verrons dans la pratique si cela sera vraiment nécessaire. Par sécurité, on ajoutera un transistor bipolaire dans la liste de matériel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:screen_LED.png|400px|thumb|left|Données constructeur pour LEDs]]&lt;br /&gt;
[[Fichier:screen_accel.png|400px|thumb|center|Datasheet de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
====Configuration école====&lt;br /&gt;
&lt;br /&gt;
*Pour configurer notre Raspberry Pi, nous utilisons son port série et &amp;quot;minicom&amp;quot;. Pour pouvoir télécharger des paquets, il fallait la connecter au réseau. Nous lui avons donc affecté une adresse IP fixe avec le fichier /etc/network/interfaces. Voici les modifications qui ont été apportées : &lt;br /&gt;
&lt;br /&gt;
   auto eth0&lt;br /&gt;
   iface eth0 inet static&lt;br /&gt;
   address 172.26.78.15&lt;br /&gt;
   netmask 255.255.240.0&lt;br /&gt;
   gateway 172.26.79.254&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il a également fallu ajouter la commande &amp;quot;export http_proxy=http://proxy.polytech-lille.fr:3128&amp;quot; (il faudra effectuer cette commande à chaque démarrage de la Pi) pour pouvoir utiliser le proxy de l'école. &lt;br /&gt;
Nous avons de plus modifier le fichier /etc/resolv.conf avec la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
   nameserver 193.48.57.34&lt;br /&gt;
&lt;br /&gt;
Malgré cela, nous avions des soucis pour nous connecter au réseau. Il y avait en fait un processus dhcp en tâche de fond qui nous empêchait de garder le contenu de resolv.conf. Il a donc fallu trouver ce processus pour le &amp;quot;kill&amp;quot; et pouvoir accéder correctement au réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons du coup pu installer postgresql pour pouvoir configurer une base de données sur notre Pi.&lt;br /&gt;
&lt;br /&gt;
====Configuration à domicile====&lt;br /&gt;
&lt;br /&gt;
Pour nous mettre dans une situation plus fidèle à notre projet, nous avons configuré la raspberry à domicile.&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abords installé Raspbian, puis installé les paquets nécessaire au fonctionnement du serveur.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Openssh-server''': permettre d'accès à distance à la raspberry pour pouvoir y accéder depuis l'école.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Iptables''': pour sécuriser les ports non utilisé et libérer l'accès aux ports qui nous intéressent (ssh 22,http 80,https 443).&amp;lt;br&amp;gt;&lt;br /&gt;
- '''apache2, php5, mysql-server''' : pour mettre en place notre service web.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons rediriger les ports 80 et 22 du routeur pour pouvoir accéder à la raspberry de l'extérieur.&lt;br /&gt;
&lt;br /&gt;
Pour finir, nous avons créer un fichier de config iptables permettant de sécuriser un minimum la base de donnée et de permettre d'autoriser la communication des ports 22, 80 et 443 correspondants aux ports ssh, http et https. le fichier de configuration a été déposé dans le dépôt git. Il nous a fallut le rendre exécutable via un chmod. Puis pour l'exécuter à chaque démarrage du system, dans le fichier /etc/init.d/ taper : &lt;br /&gt;
&lt;br /&gt;
    sudo update-rc.d firewall defaults (si notrefichier s'appelle firewall et s'il est dans init.d)&lt;br /&gt;
&lt;br /&gt;
===Base de donnée===&lt;br /&gt;
&lt;br /&gt;
Nos données alimentaires disponibles par toute la famille doivent être stocké sur un serveur de base de donnée externe (tel une Raspberry pi). Nous nous proposons de créer le diagramme UML représentant cette future base de donnée.&lt;br /&gt;
[[Fichier:Optali_UML.jpg|700px|thumb|center|Diagramme UML base de donnée]]&lt;br /&gt;
&lt;br /&gt;
On créera donc 3 entités. Date, Product et Recipe. &lt;br /&gt;
&lt;br /&gt;
- Product rassemble les aliments qui sont ou ont été dans la réserve alimentaire. NbProdIn permet de connaître le nombre de produits identiques (possibilité de date différentes mais pas de doublons et on garde l'information de quantité. NbProdBought donne une information sur le nombre de produits identique ayant été acheté depuis la mise en service de la base de donnée. Ainsi nous pourrons par la suite proposer une liste de course à l'utilisateur en fonction de la fréquence d'achat des produits.&lt;br /&gt;
&lt;br /&gt;
- Recipe contient les recettes que pourra rentrer l'utilisateur sur l'application. L'utilisateur pourra ainsi se voir proposer des recettes en fonction de ce qu'il a dans son frigo et de ses recettes personnelles.&lt;br /&gt;
&lt;br /&gt;
'''''Edit : On ajoutera une valeur entière dans les tables Date et Unity pour gérer le cas où il existe plusieurs produits (différents ou identiques) avec une date de péremption équivalente. On les appellera NbDate la valeur dans la table Date et NbUnity dans la table Unity. On leur ajoutera de même une clef primaire IdUnity et IdListProduct'''''&lt;br /&gt;
&lt;br /&gt;
On utilisera MySql pour la gestion de nos bases de données. &lt;br /&gt;
La syntaxe pour l'implanter dans la base de donnée à été jointe au dépôt git.&lt;br /&gt;
&lt;br /&gt;
Pour lancer my SQL, on tapera:&lt;br /&gt;
&lt;br /&gt;
   mysql -h localhost -u root -p&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Web service===&lt;br /&gt;
&lt;br /&gt;
====Page init.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet d'initier l'accès à la base de donnée sur le serveur. Elle est requise pour les pages qui suivent.&lt;br /&gt;
&lt;br /&gt;
====Page post.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet l'insertion d'un produit et d'une date via l'application mobile. Elle prend donc ces deux arguments et les insère dans les tables Unity, Product et Date.&lt;br /&gt;
&lt;br /&gt;
====Page get.php====&lt;br /&gt;
&lt;br /&gt;
Page qui envoie la liste des aliments avec leur nom, leur date, leur quantité dans le frigo, la quantité d'exemplaires acheté en tout depuis la mise en place de l'appareil. Le tri se fera directement dans l'application mobile. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Application Mobile===&lt;br /&gt;
&lt;br /&gt;
====Home page====&lt;br /&gt;
&lt;br /&gt;
Page d'accueil permettant d'accéder aux pages d'ajout et de liste des produits disponibles. &amp;lt;br&amp;gt;&lt;br /&gt;
La page permet aussi d'effectuer la connexion entre la rfduino et l'application mobile. Elle montre les alertes (signaux) à l'utilisateur &lt;br /&gt;
et écrit leur signification.&lt;br /&gt;
&lt;br /&gt;
====Page d'ajout====&lt;br /&gt;
&lt;br /&gt;
Pour ajouter un produit et lire une date on utilisera un champ editText pour permettre à l'utilisateur d'écrire &amp;quot;Manuellement&amp;quot; dedans grâce au clavier du smartphone.&amp;lt;br&amp;gt;&lt;br /&gt;
De plus on utilise un bouton qui appellera la caméra pour détecter les caractères d'un produit ou d'une date. Au début nous voulions utiliser un détecteur de code barre, nous l'avons implémenté mais nous avons remarqué que la mise au point sur une surface non plane prend du temps d'autant plus qu'il faut questionner une base de donnée contenant tous les numéro de codes barres utilisés. Nous avons donc prit la décision d'utiliser uniquement la lecture de caractère et nous créerons une liste déroulante sous l'editText pour faciliter l'insertion d'un produit qui a déjà été ajouté. Pour la lecture de caractère, nous utilisons la librairie tesseract.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'envoi, nous utilisons la librairie Volley développé par google.&lt;br /&gt;
&lt;br /&gt;
====Page Liste====&lt;br /&gt;
&lt;br /&gt;
Permet de lister les produits dans la base de donnée. Une série de boutons radio permettent de trier les produits par ordre alphabétique, par date de péremption, par nombre d’occurrence dans la réserve alimentaire, par nombre d'achat depuis la mise en place du système.&amp;lt;br&amp;gt;&lt;br /&gt;
Une colonne permet de sélectionner les aliments désirés (par checkBox) pour ensuite les supprimer via un button &amp;quot;suppr&amp;quot; ou les choisir pour trouver des recettes qui les utilisent.&amp;lt;br&amp;gt;&lt;br /&gt;
Un EditText permet d'effectuer une recherche sur la base de donnée.&lt;br /&gt;
&lt;br /&gt;
===Altium Designer===&lt;br /&gt;
&lt;br /&gt;
Pour permettre au RFDuino de communiquer avec les différents composants, nous aurons besoin de quelques composants électroniques. Afin que cela soit plus esthétique pour la modélisation finale, nous allons créer une carte PCB pour rassembler tous ces composants dessus. On utilisera le logiciel Altium Designer pour cela.&lt;br /&gt;
&lt;br /&gt;
Avant de représenter notre circuit général, nous allons commencer par créer une librairie rassemblant tous les composants que nous utiliserons par la suite, en particulier nos composants CMS (accéléromètre et résistances). Pour ce qui est des LEDs et du buzzer, qui sont traversants, nous pourrons utiliser des headers classiques.&lt;br /&gt;
&lt;br /&gt;
Il a donc fallu créer le schematic ainsi que l'empreinte de nos composants CMS. Voici un exemple avec notre accéléromètre :&lt;br /&gt;
[[Fichier:Accelerosch.PNG|500px|thumb|left|Schematic de l'accéléromètre]]&lt;br /&gt;
[[Fichier:Acceleropcb.PNG|500px|thumb|center|Empreinte PCB de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les fichiers Altium sont disponibles sur notre dépôt GIT. Après cela, nous pouvons maintenant construire notre schematic du montage entier et ensuite le fichier PCB afin de pouvoir graver notre circuit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après quelques modifications sur le montage prévu initialement, c'est-à-dire en enlevant une résistance entre un GPIO et l'alimentation de l'accéléromètre ainsi qu'en rajoutant des résistances pull-up sur les broches de notre liaison i2C (SDA et SCL) et un bouton poussoir en plus pour permettre un reset du RFDuino, nous avons pu créer notre schematic global pour en faire un PCB et l'exporter au format Gerber. De ce fait, le service EEI de Polytech pourra réaliser la gravure de notre carte PCB.&lt;br /&gt;
&lt;br /&gt;
Voici quelques photos pour illustrer notre projet sur Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Finalproto_sch.PNG|400px|thumb|left|Schematic du montage final]]&lt;br /&gt;
[[Fichier:Finalproto_pcb.PNG|400px|thumb|center|PCB du montage final]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On retrouve sur notre PCB final les headers, respectivement de 8 et 5 pins, de part et d'autre de la carte, qui représentent le RFDuino, où nous souderons des broches pour qu'elles puissent être intégrées au RFDuino. On note la présence de 5 autres headers de 2 pins, dont 3 pour des LEDs puis les 2 autres pour le buzzer et le bouton poussoir. Ce qui reste sont les composants CMS avec plusieurs composants à 2 pattes qui sont toutes les résistances de notre montage, celles de protection pour les LEDs et les pull-ups pour l'accéléromètre. Le dernier composant à 8 pattes est donc bien l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quelques difficultés ont été rencontrées durant ce travail notamment concernant les contraintes de construction sur le PCB final. En effet, les composants CMS choisis (surtout l'accéléromètre) étant parfois très petits, Altium n'accepte pas forcément le faible espacement entre les différentes pattes des composants, ce qui pose problème lors de la compilation. De plus, le plan de masse ne prenait pas en compte tous les éléments devant être rattachés à la masse. Il a fallu légèrement déplacer les headers représentant le RFDuino pour que cela soit possible. Il faudra alors peut-être légèrement plier les broches qui viendront s'intégrer sur le RFDuino pour ajouter notre PCB sur le RFDuino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons envoyé nos fichiers Altium au service EEI afin qu'il puisse réaliser physiquement notre carte. Nous nous retrouvons donc avec notre carte PCB récupérée auprès du service EEI. Voici le rendu :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:P46_carte.jpg|400px|thumb|center|Fabrication de notre carte PCB]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir souder nos différents composants, nous avons été rendre visite à Thierry Flamen, responsable du service EEI, afin de passer nos composants CMS au four (résistances et accéléromètre). En effet il était presque impossible de souder tous ces composants manuellement. Après ce passage au four, il nous restait les composants traversants à souder, c'est-à-dire les pins, les LEDs et notre buzzer. Voici le rendu après nos soudures :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:pcbfinal1_p46.jpg|200px|thumb|left|Vue du dessous de notre carte]]&lt;br /&gt;
[[Fichier:pcbfinal2_p46.jpg|200px|thumb|center|Vue du dessus de notre carte]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il manque sur la carte finale notre bouton poussoir qui permettait le reset de notre RFduino. Malheureusement en essayant de souder celui-ci, nous avons retiré du cuivre de la carte, ce qui nous empêche de pouvoir faire circuler le courant dans ce bouton. De plus, la piste avec du cuivre manquant était également responsable de l'alimentation de notre accéléromètre ainsi que d'une LED indiquant la mise sous-tension du contrôleur. Pour le rendu final, nous souderons un fil sur la LED pour pouvoir l'alimenter, cependant il serait plus complexe d'alimenter l'accéléromètre. Celui-ci ne fonctionnait déjà pas correctement de manière électrique. La soudure de ce composant demandait une grande précision puisqu'il est de taille minuscule. Nous n'utiliserons donc pas ce composant dans notre montage final.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== RFduino ===&lt;br /&gt;
&lt;br /&gt;
Après avoir conçu notre carte PCB, nous avons pu aborder la programmation de notre contrôleur pour qu'il puisse discuter via BLE avec l'application ainsi qu'interagir avec les composants du PCB. Pour cela, nous utiliserons l'IDE Arduino et principalement deux bibliothèques qui sont &amp;lt;Wire.h&amp;gt; et &amp;lt;RFduinoBLE.h&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Avant d'attaquer cet aspect, nous avons d'abord pris le temps de comprendre comment fonctionnait le protocole GATT, qui est associé au BLE, mais également le protocole i2C pour la communication avec l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
Tout notre programme est fourni en fin de Wiki. &lt;br /&gt;
&lt;br /&gt;
=== OptaliBox ===&lt;br /&gt;
&lt;br /&gt;
Notre interface utilisateur à fixer sur le frigo est maintenant prête. Nous devions donc réfléchir au dispositif que nous allions fixer avec des aimants sur la porte du frigo.&lt;br /&gt;
&lt;br /&gt;
Nous avons opté pour un boîtier que nous avons pu concevoir au Fabricarium de l'école. Voici le rendu final : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Yo2.jpg|200px|thumb|left|Fabrication du boîtier OptaliBox]]&lt;br /&gt;
[[Fichier:Yo1.png|300px|thumb|center|OptaliBox contenant notre interface utilisateur]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;br /&gt;
&lt;br /&gt;
=== Rapport de projet ===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Compte_rendu_projet_final_P46.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Codes et fichiers du projet ===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Optali-master.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Liens vers dépôt GIT ===&lt;br /&gt;
&lt;br /&gt;
* dépôt GIT de l'école : https://archives.plil.fr/ahuet/P46-Aide-anti-gaspillage-alimentaire&lt;br /&gt;
* dépôt GitHub : https://github.com/FrancoisLefevre12/Optali&lt;br /&gt;
&lt;br /&gt;
== Bibliographie ==&lt;br /&gt;
&lt;br /&gt;
* Programmation BLE RFduino : http://www.rfduino.com/wp-content/uploads/2014/03/rfduino.ble_.programming.reference.pdf&lt;br /&gt;
* Programmation BLE Android : https://github.com/lann/RFDuinoTest&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Yo2.jpg&amp;diff=42262</id>
		<title>Fichier:Yo2.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Yo2.jpg&amp;diff=42262"/>
				<updated>2017-05-15T17:46:17Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Yo1.png&amp;diff=42261</id>
		<title>Fichier:Yo1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Yo1.png&amp;diff=42261"/>
				<updated>2017-05-15T17:45:57Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=42260</id>
		<title>IMA4 2016/2017 P46 : Aide anti-gaspillage alimentaire</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=42260"/>
				<updated>2017-05-15T17:34:20Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : /* Avancement du Projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
En France, nous jetons en moyenne 21% des aliments que nous achetons, ce qui représente une perte de 100 à 160 euros par an par habitant. Cela est en partie dû à la date limite de consommation associée à chaque produit. En effet, à partir du moment où cette date sera dépassée le consommateur jettera les produits concernés sans réfléchir, même si ceux-ci peuvent parfois être encore mangeables. Plutôt que d'essayer de les convaincre du contraire, il serait judicieux de proposer aux adeptes du gaspillage une aide permettant de gérer tous les aliments dont ils disposent chez eux afin d'éviter la surprise de tomber sur plusieurs produits périmés lorsqu'ils ouvrent la porte de leur frigo. &lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Ce projet permet d'aider les utilisateurs d'une part à mémoriser les denrées périssables qu'ils disposent dans leur réserve alimentaire et d'autre part d'avertir l'utilisateur qu'un événement important a lieu. Ceci peut être une notification qu'un aliment va bientôt dépasser sa date de péremption, que la porte du frigidaire est restée ouverte ou encore que le nombre d'aliments dans la réserve devient critique et qu'il faudra de nouveau l'alimenter. Enfin, le système aidera l'utilisateur à trouver des idées de repas pouvant permettre de consommer les aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Notre prototype permettra d'éviter le gaspillage alimentaire ainsi que d'aider l'utilisateur dans sa gestion du stockage d'aliments.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
&lt;br /&gt;
Notre système sera composé de 3 éléments. &lt;br /&gt;
&lt;br /&gt;
Premièrement, un ou des smartphones appartenant aux utilisateurs. Ces derniers permettront de scanner grâce à son appareil photo, le code barre du produit ainsi que sa date de péremption. Il servira aussi d'interface utilisateur pour notre système. En effet, c'est par cet outil que l'utilisateur pourra lister tous les aliments que l'utilisateur a dans sa base et tout ça en les triant par date de péremption, ou encore voir les recettes possibles pour consommer des aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Deuxièmement, un serveur, de type Raspberry, qui permettra de stocker la base de donnée contenant les aliments de la réserve. Ce serveur sera connecté par wifi.&lt;br /&gt;
 &lt;br /&gt;
Troisièmement, un contrôleur (Rfduino) qui comportera une LED pour indiquer la mise sous tension du contrôleur, une LED pour prévenir l'utilisateur qu'un aliment va bientôt passer sa date de péremption et une dernière LED pour prévenir l'utilisateur que son niveau de réserve est critique ainsi qu'un buzzer et un accéléromètre pour buzzer quand la porte du frigo est restée trop longtemps ouverte. Ce dernier sera fixé au frigo par l'intermédiaire d'un dispositif adapté qui sera un système aimanté qui se pose sur le frigo.&lt;br /&gt;
&lt;br /&gt;
Nous implémenterons donc une application mobile Android qui fera le lien entre les 2 autres systèmes.&lt;br /&gt;
&lt;br /&gt;
Pour la partie électronique que nous aurons à réaliser, nous utiliserons une Breadboard pour faire des premiers tests puis nous créerons une carte PCB pour notre montage final.&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
On utilisera une Raspberry Pi en guise de serveur pour pouvoir s'occuper du stockage de toutes les données dans notre projet puisque notre contrôleur sera incapable de les contenir, ce n'est d'ailleurs pas son but ici.&lt;br /&gt;
&lt;br /&gt;
Notre smartphone fera donc le lien entre notre base de données et notre système embarqué par l'intermédiaire de l'application mobile.&lt;br /&gt;
&lt;br /&gt;
Nous prendrons ici un RFduino puisque celui-ci nous permet d'ajouter des modules comme bon nous semble afin d'adapter le système aux besoins de notre application. Il est également parfaitement compatible avec les applications Android. De plus, nous avons un Bluetooth directement intégré au RFduino pour s'assurer que les liaisons RFduino-application mobile se fassent correctement. &lt;br /&gt;
On notera également que ce contrôleur consomme peu de courant et ne demande qu'une faible tension d'alimentation, critères importants pour ce genre de projet. C'est la raison principale de son utilisation pour être utilisé comme interface physique sur le frigo, en ajoutant également sa taille réduite comparée à la Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
&lt;br /&gt;
Nous avons donc besoin du matériel suivant :&lt;br /&gt;
&lt;br /&gt;
*Raspberry Pi.&lt;br /&gt;
*Clef wifi&lt;br /&gt;
*RFduino (RFD22102 DIP Board, RFD22121 USB Shield, RFD22126 Dual AAA battery shield).&lt;br /&gt;
*2 piles AAA.&lt;br /&gt;
*3 leds tranversantes.&lt;br /&gt;
*3 Résistances 330 Ohm.&lt;br /&gt;
*1 Résistance 10 kOhm.&lt;br /&gt;
*Un buzzer.&lt;br /&gt;
*Accéléromètre.&lt;br /&gt;
*Aimants&lt;br /&gt;
*Un boîtier permettant d'intégrer la RFduino + fixation sur le frigo (modélisation à voir).&lt;br /&gt;
&lt;br /&gt;
Pour le buzzer, l'accéléromètre et les résistances, nous choisirons des composants CMS pour nous permettre d'avoir une carte plus petite.&lt;br /&gt;
&lt;br /&gt;
===Calendrier prévisionnel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Liste des tâches à effectuer====&lt;br /&gt;
&lt;br /&gt;
* Configurer la Raspberry :&lt;br /&gt;
** Installer et configurer le serveur.&lt;br /&gt;
** Créer le diagramme UML de notre future base de données.&lt;br /&gt;
** Créer la base sur le serveur.&lt;br /&gt;
** Configurer la connexion WiFi.&lt;br /&gt;
&lt;br /&gt;
* Monter et programmer la RFduino :&lt;br /&gt;
** Connecter les différents modules au RFduino (accéléromètre, LEDs, buzzer, Batterie, module Bluetooth).&lt;br /&gt;
** Récupérer les consignes du smartphone grâce au Bluetooth.&lt;br /&gt;
** Programmer le comportement du RFduino en fonction des consignes.&lt;br /&gt;
** Construire le boitier final.&lt;br /&gt;
&lt;br /&gt;
* Implémenter l'application mobile Android :&lt;br /&gt;
** Une première activité permettant de se connecter au RFduino et à la Raspberry.&lt;br /&gt;
** Scanner une date et un code barre.&lt;br /&gt;
** Ajout/suppression d'un aliment dans la base de donnée.&lt;br /&gt;
** Envoi d'une consigne au RFduino.&lt;br /&gt;
** Rendre l'interface utilisateur ergonomique (lister aliments, envoyer vers page de recettes avec l'utilisation des aliments bientôt périmés...).&lt;br /&gt;
&lt;br /&gt;
====Calendrier====&lt;br /&gt;
&lt;br /&gt;
Répartition du temps consacré au projet (120h *2) :&lt;br /&gt;
&lt;br /&gt;
*Partie Raspberry : 60h&lt;br /&gt;
*Partie RFduino : 60h&lt;br /&gt;
*Partie développement mobile : 120h&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
&lt;br /&gt;
===Feuille d'heures===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 !  !! Lundi 16-18h !! Mercredi 14-18h !! Jeudi 8-10h&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 1&lt;br /&gt;
&lt;br /&gt;
 | '''23/01''' :  &lt;br /&gt;
* Installation du logiciel Android Studio pour être prêt à commencer l'application mobile.&lt;br /&gt;
* Création du Repository Git sur GitHub : https://github.com/FrancoisLefevre12/Optali.git&lt;br /&gt;
* Réalisation de différents schémas fonctionnels pour se donner une idée du travail à effectuer, aussi bien du software que du hardware.&lt;br /&gt;
* Quelques précisions supplémentaires apportées sur le cahier des charges.&lt;br /&gt;
* Ajout de liens de référence pour la liste de matériel à acheter.&lt;br /&gt;
&lt;br /&gt;
 | '''25/01''' :  &lt;br /&gt;
* Précision des composants requis (accéléromètre, buzzer, LEDs, résistances).&lt;br /&gt;
* Écriture du montage à la main.&lt;br /&gt;
* Étude du fonctionnement de l'accéléromètre, du buzzer.&lt;br /&gt;
* Écriture de la structure de l'application à la main.&lt;br /&gt;
&lt;br /&gt;
 | '''26/01''' :&lt;br /&gt;
*Réalisation graphique de la première page de l'application.&lt;br /&gt;
*Conception du schéma électrique pour tous les composants connectés au RFduino.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 2&lt;br /&gt;
&lt;br /&gt;
 | '''30/01''' :&lt;br /&gt;
*Réalisation du diagramme UML de la base de données qui sera stockée sur la Raspberry Pi&lt;br /&gt;
*Installation de l'outil de développement mobile sur le second PC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 | '''01/02''' :&lt;br /&gt;
*Nous nous sommes d'abord rendus compte que la résistance entre un des GPIO et l'accéléromètre était inutile, nos premiers calculs étaient erronés. Nous ne la garderons donc pas sur notre schéma électrique final.&lt;br /&gt;
*Avancement sur la partie application mobile : réalisation de la page &amp;quot;Ajout&amp;quot; sur laquelle nous tomberons après avoir cliquer sur &amp;quot;ajout&amp;quot; sur la page principale de l'application. Nous avons étendu l'activité principale jusqu'à cette nouvelle activité &amp;quot;Ajout&amp;quot;.&lt;br /&gt;
*Nous avons récupéré notre Raspberry Pi pour commencer à installer notre base de données dessus. Nous avons actuellement quelques problèmes pour nous connecter sur la Raspberry. Nous travaillons sur ce point.&lt;br /&gt;
&lt;br /&gt;
 | '''02/02''' :&lt;br /&gt;
* Application mobile : Mise en place des LEDs sur la home page et de la zone de notification avec les messages associés.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 3&lt;br /&gt;
&lt;br /&gt;
 | '''06/02''' :&lt;br /&gt;
*Nous arrivons à accéder à la Raspberry via le port série de celle-ci. Nous avons également configuré sa connexion Ethernet afin de pouvoir télécharger des paquets dessus et installer notre base de données. &lt;br /&gt;
*Nous rencontrions des problèmes sur le second PC de travail pour récupérer le projet Optali sur Android Studio via notre dépôt GIT. Nous avons pu rectifier ce souci.&lt;br /&gt;
&lt;br /&gt;
 | '''08/02''' :&lt;br /&gt;
*Tentative d'établissement d'un point d'accès WiFi sur notre Raspberry. Nous n'avons pas réussi pour le moment.&lt;br /&gt;
*Restructuration du Repository git.&lt;br /&gt;
*Essai d'importation de la librairie Zxing qui permettra de décoder les code-barres.&lt;br /&gt;
 |&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 4&lt;br /&gt;
&lt;br /&gt;
 | '''13/02'''&lt;br /&gt;
*Configuration du wifi de la Raspberry. &lt;br /&gt;
*Étude d'une mise en place d'un service web via php.&lt;br /&gt;
&lt;br /&gt;
 | '''15/02'''&lt;br /&gt;
*Mise en place d'un lecteur de caractère sur l'application. On utilisera tesseract.&lt;br /&gt;
*Début de la création du PCB via Altium designer. Création d'une librairie pour l'accéléromètre qui est un composant CMS assez spécial. On pourra cependant utiliser des headers classiques pour le buzzer et les LEDs puisque ce sont des composants traversants.&lt;br /&gt;
*Création des premiers fichiers php de connection à la base de donnée et d'insertion d'aliments. Tous ces fichiers seront déposés de la même manière sur le dépôt git.&lt;br /&gt;
&lt;br /&gt;
 | '''16/02'''&lt;br /&gt;
*Adaptation avec prise en compte des cas du code php d'insertion de produits par requête sur la base de donnée.&lt;br /&gt;
*Ajout du code d'implantation de la base de donnée.&lt;br /&gt;
*Altium: Accéléromètre terminé, mise en place des résistances.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 5 (interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''22/02 (3 heures)'''&lt;br /&gt;
*Installation de l'OS de la raspberry.&lt;br /&gt;
*Installation d'Openssh-server, apache2, php5, iptables, mysql-server, php5-mysql.&lt;br /&gt;
*Redirection des ports du routeur vers la raspberry.&lt;br /&gt;
*Configuration de iptables de la raspberry.&lt;br /&gt;
&lt;br /&gt;
 | '''23/02 (2 heures)'''&lt;br /&gt;
*Implantation de la base de donnée sur la raspberry pi.&lt;br /&gt;
|&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 6&lt;br /&gt;
 | '''27/02'''&lt;br /&gt;
*Vérification de la syntaxe de l'insertion de valeurs dans la base de donnée.&lt;br /&gt;
*Création des premières requêtes sur la base de donnée.&lt;br /&gt;
*Finalisation du PCB de l'Optali Board.&lt;br /&gt;
&lt;br /&gt;
 | '''01/03'''&lt;br /&gt;
*Étude et ajout de la librairie volley pour communiquer avec le serveur.&lt;br /&gt;
*Implantation de la fonction d'envoi de données jusqu'au serveur.&lt;br /&gt;
*Après avoir vu avec un professeur, nous avons remarqué que le routage n'était pas adéquat et la disposition des composants n'était pas optimal. Du travail reste donc encore à effectuer.&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 7&lt;br /&gt;
 | '''06/03'''&lt;br /&gt;
*Correction du fichier post.php&lt;br /&gt;
*Finition du protocole d'ajout d'aliment sur la base de donnée. (Code php et page ajout terminée).&lt;br /&gt;
*PCB terminé.&lt;br /&gt;
*Installation d'arduino IDE, doc arduino collecté.&lt;br /&gt;
&lt;br /&gt;
 | '''08/03'''&lt;br /&gt;
*Implémentation de la page ListeIngredient.xml et de l'activité listActivity.java.&lt;br /&gt;
*Documentation sur la procédure de communication bluetooth entre la Rfduino et l'application mobile.&lt;br /&gt;
*Obtention de librairie en lien avec cela.&lt;br /&gt;
*Prise en main de programmation rfduino.&lt;br /&gt;
&lt;br /&gt;
 | '''09/03'''&lt;br /&gt;
*Nous nous sommes rendus compte qu'il était nécessaire de rajouter un bouton poussoir sur notre montage afin de permettre la réinitialisation de notre RFDuino si nécessaire. Nous devons également faire en sorte de pouvoir poser notre carte PCB directement sur notre RFDuino en utilisant des broches. Nous devons donc rajouter ces éléments-ci.&lt;br /&gt;
*Ecriture de la page get.php&lt;br /&gt;
*Premiers tests sur la ListView de l'activité ListActivity.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 8&lt;br /&gt;
 | '''13/03'''&lt;br /&gt;
*Recherche de pistes concernant la programmation RFDuino. Nous pouvons la détecter en bluetooth via un smartphone Android.&lt;br /&gt;
*Finition du Tablelayout et du code java associé sur la page ListActivity.&lt;br /&gt;
&lt;br /&gt;
 | '''15/03'''&lt;br /&gt;
*Ajout de la JsonArrayRequest dans la page ListActivity.&lt;br /&gt;
*Nous nous sommes rendus compte au moment de programmer la liaison I2C de l'accéléromètre avec la RFDuino que nous avions oublié de mettre des résistances pull-up entre l'alimentation du composant et les broches SDA et SCL. Les modifications ont donc été faites puis nous avons envoyé finalement notre PCB à la fabrication.&lt;br /&gt;
&lt;br /&gt;
 | '''16/03'''&lt;br /&gt;
*Changement de stratégie au niveau de la requête JsonArrayRequest. On récupère toute la base et ensuite le traitement sera effectuer dans l'application mobile.&lt;br /&gt;
*Rédaction de la partie Altium du wiki.&lt;br /&gt;
*Recherche de docs sur le système bluetooth du RFduino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 9&lt;br /&gt;
 | '''20/03'''&lt;br /&gt;
*Réalisation de différents réglages pour pouvoir utiliser l'application Optali sur l'Android phone fourni par notre professeur (LG G4c)&lt;br /&gt;
*Recherche de docs concernant la partie java responsable de la communication Bluetooth.&lt;br /&gt;
*Reprise de la solution Tesseract pour la lecture de caractères.&lt;br /&gt;
&lt;br /&gt;
 | '''21/03''' (séance supplémentaire de 3 heures)&lt;br /&gt;
*Début du développement de la partie communication entre RFDuino et l'appli mobile. Nous pouvons détecter le RFduino à partir de Android Studio mais nous n'arrivons pas encore à nous connecter dessus directement.&lt;br /&gt;
*Finition de la fonctionnalité tesseract. La lecture de caractères est donc maintenant possible.&lt;br /&gt;
&lt;br /&gt;
 | '''22/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity&lt;br /&gt;
*Connexion possible entre le RFduino et notre appli mobile. Il faut maintenant pouvoir assurer un échange de données via du GATT.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 10&lt;br /&gt;
 | '''27/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity (suite). Utilisation de la solution postman.&lt;br /&gt;
*Mise à jour du wiki pour la partie Altium.&lt;br /&gt;
*Gestion du dépôt git.&lt;br /&gt;
*Récupération de la carte PCB au service EEI.&lt;br /&gt;
&lt;br /&gt;
 | '''29/03'''&lt;br /&gt;
*Mise en place du tri des Produits avec un critère d'ordonnabilité variable&lt;br /&gt;
*Implémentation du champs recherche et action sur la liste&lt;br /&gt;
*Écriture des pages Php consume.php et delete.php pour décrémenter le nombre d'aliment dans le frigo ou le supprimer&lt;br /&gt;
*Récupération des composants&lt;br /&gt;
*Passage au four pour souder les premiers composants en CMS&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 11&lt;br /&gt;
&lt;br /&gt;
 | '''03/04'''&lt;br /&gt;
*Dé-soudage et resoudage de l'accéléromètre.&lt;br /&gt;
*Soudure des composants&lt;br /&gt;
&lt;br /&gt;
 | '''05/04'''&lt;br /&gt;
*Test du Buzzer&lt;br /&gt;
*Code de l'accéléromètre&lt;br /&gt;
*Création de l'Optali box (la boite qui contient le RFduino fixé au frigo)&lt;br /&gt;
*Finition de la fonction 'delete'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 | '''06/04'''&lt;br /&gt;
*Problème pour faire fonctionner le code de l'accéléro. Il faudra le tester électriquement.&lt;br /&gt;
*Implantation du logo de l'appli &lt;br /&gt;
*Debuggage d'une requête de la page 'list'&lt;br /&gt;
*Documentation sur les listes déroulantes sous les EditTexts.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 12 (Interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''11/04''' (3 heures)&lt;br /&gt;
*Après avoir remarqué que le code de l'accéléro ne fonctionnait pas alors qu'il paraît correct, nous avons décidez de vérifier les propriétés électriques de notre montage.&lt;br /&gt;
En observant à l'analyseur logique, il semblerait que l'horloge de la liaison i2C n'est en fait qu'un signal bruité. Il faudra donc retenter de souder le composant quand cela sera possible.&lt;br /&gt;
&lt;br /&gt;
 | '''13/04''' (6 heures)&lt;br /&gt;
*Terminaison du programme RFduino qui fonctionne théoriquement, nous attendons de terminer les dernières soudures pour pouvoir le tester physiquement.&lt;br /&gt;
*En attendant de pouvoir réaliser des soudures, nous avons repris la partie communication bluetooth entre le RFduino et l'appli. Après avoir tenté d'utiliser un programme permettant de gérer le protocole GATT sans savoir envoyer ou recevoir de données, nous nous sommes orientés sur une communication plus basique basée sur de nombreux exemples que l'on peut voir sur le web.&lt;br /&gt;
&lt;br /&gt;
 | '''15/04''' (6 heures)&lt;br /&gt;
*Après s'être rendu compte que la communication plus &amp;quot;basique&amp;quot; que nous voulions utiliser n'était pas compatible avec le BLE, nous sommes une fois de plus repartis de zéro pour cette partie.&lt;br /&gt;
*Après quelques recherches, nous avons trouvé un programme réalisant la gestion d'un socket BLE sur le principe du protocole GATT. Grâce à celui-ci, il nous est possible de recevoir et d'envoyer des données via BLE sur RFduino ainsi que sur l'appli mobile.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 13 (Interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''17/04 (4 heures)'''&lt;br /&gt;
*Ajout du singleton Etat pour partager l'état des aliments dans la réserve alimentaire&lt;br /&gt;
*Transfert des requêtes de la base de donnée vers le singleton pour optimiser l'actualisation et le partage des données.&lt;br /&gt;
*Actualisation automatique des données sur la page principale.&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Semaine 14&lt;br /&gt;
| '''24/04'''&lt;br /&gt;
*Modification de la présentation du wiki&lt;br /&gt;
*Modification de la fonctionnalité du bouton actualiser en changement d'activité&lt;br /&gt;
&lt;br /&gt;
| '''26/04'''&lt;br /&gt;
*Ajout de la page liste recette&lt;br /&gt;
&lt;br /&gt;
| '''27/04''' (3 heures)&lt;br /&gt;
*Ajout des listes recettes dans ListeRecette&lt;br /&gt;
*Ajout des requêtes des recettes sur ListeRecette.java&lt;br /&gt;
*Création du fichier listeRecette.php sur le serveur pour faire la requête SQL et envoyer sur l'application.&lt;br /&gt;
*Soudure des derniers composants pour terminer le PCB. Tout est soudé sauf le bouton poussoir qui devait permettre un reset du RFduino. En cherchant d'ailleurs à souder ce bouton, nous avons retiré malencontreusement la piste de cuivre permettant de répartir le 3.3V du RFduino sur notre PCB. Notre accéléromètre qui ne marchait déjà pas vraiment n'est plus alimenté. Nous ferons sans notre accéléromètre pour le rendu final. &lt;br /&gt;
|-&lt;br /&gt;
|Semaine 15&lt;br /&gt;
|'''02/05'''&lt;br /&gt;
*Réalisation de la vidéo de présentation du projet avec Laurent Engels.&lt;br /&gt;
|'''03/05'''&lt;br /&gt;
*Remplacement de la LED &amp;quot;LED_Perim&amp;quot; qui était défaillante et ne s'allumait pas quand il le fallait.&lt;br /&gt;
*Début de la réalisation du rapport de projet.&lt;br /&gt;
|'''04/05'''&lt;br /&gt;
*Débuggage de la &amp;quot;LED_Perim&amp;quot;. Le problème n'était donc pas électrique mais bien au niveau software. Il existait un conflit entre l'allumage de cette LED et la pin TX de la liaison série qui était défini sur la même broche.&lt;br /&gt;
*Débuggage de l'appli pour éviter les quelques plantages que l'on peut avoir parfois.&lt;br /&gt;
|-&lt;br /&gt;
|Semaine 16&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===Premières idées===&lt;br /&gt;
&lt;br /&gt;
Voici les premières idées de l'application mobile et du composant fixé sur le frigo.&lt;br /&gt;
[[Fichier:Optali_v1.jpg|400px|thumb|left|Optali version 1]]&lt;br /&gt;
[[Fichier:OptaliBox_v1.jpg|400px|thumb|center|OptaliBox version 1]]&lt;br /&gt;
[[Fichier:P46_schema.jpg|400px|thumb|center|Schéma électrique version 1]]&lt;br /&gt;
&lt;br /&gt;
En s'intéressant aux différentes datasheets ou données constructeur des composants que nous voulons utiliser, nous trouvons indispensable d'utiliser des résistances de 330 Ohms pour l'utilisation des LEDs, pour éviter de les griller.&lt;br /&gt;
&lt;br /&gt;
Edit : Retrait de la résistance R2.&lt;br /&gt;
&lt;br /&gt;
Concernant l'accéléromètre, nous avons choisi un modèle qui nous permet de brancher directement ce module sur une broche du RFDuino. On branchera directement les GPIOs de la RFduino sur les ports SDA et SCL de l'accéléromètre qui correspondent à l'interface I2C pour pouvoir communiquer. On utilisera aussi la broche INT1 pour pouvoir générer des interruptions directement depuis l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
On connectera le buzzer directement à une broche de la RFduino aussi. Concernant celui-ci il reste une incertitude puisqu'on ne trouve aucune information sur le courant à fournir pour l'alimentation de ce composant sur sa datasheet. Après différentes recherches sur Internet, il pourrait être nécessaire d'utiliser un montage amplificateur à transistor comme un émetteur commun pour booster le courant en sortie d'une broche GPIO. Quelques buzzers trouvés avec des données constructeur montrent que ce type de composant nécessite généralement un courant d'environ 30 mA. Nous verrons dans la pratique si cela sera vraiment nécessaire. Par sécurité, on ajoutera un transistor bipolaire dans la liste de matériel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:screen_LED.png|400px|thumb|left|Données constructeur pour LEDs]]&lt;br /&gt;
[[Fichier:screen_accel.png|400px|thumb|center|Datasheet de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
====Configuration école====&lt;br /&gt;
&lt;br /&gt;
*Pour configurer notre Raspberry Pi, nous utilisons son port série et &amp;quot;minicom&amp;quot;. Pour pouvoir télécharger des paquets, il fallait la connecter au réseau. Nous lui avons donc affecté une adresse IP fixe avec le fichier /etc/network/interfaces. Voici les modifications qui ont été apportées : &lt;br /&gt;
&lt;br /&gt;
   auto eth0&lt;br /&gt;
   iface eth0 inet static&lt;br /&gt;
   address 172.26.78.15&lt;br /&gt;
   netmask 255.255.240.0&lt;br /&gt;
   gateway 172.26.79.254&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il a également fallu ajouter la commande &amp;quot;export http_proxy=http://proxy.polytech-lille.fr:3128&amp;quot; (il faudra effectuer cette commande à chaque démarrage de la Pi) pour pouvoir utiliser le proxy de l'école. &lt;br /&gt;
Nous avons de plus modifier le fichier /etc/resolv.conf avec la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
   nameserver 193.48.57.34&lt;br /&gt;
&lt;br /&gt;
Malgré cela, nous avions des soucis pour nous connecter au réseau. Il y avait en fait un processus dhcp en tâche de fond qui nous empêchait de garder le contenu de resolv.conf. Il a donc fallu trouver ce processus pour le &amp;quot;kill&amp;quot; et pouvoir accéder correctement au réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons du coup pu installer postgresql pour pouvoir configurer une base de données sur notre Pi.&lt;br /&gt;
&lt;br /&gt;
====Configuration à domicile====&lt;br /&gt;
&lt;br /&gt;
Pour nous mettre dans une situation plus fidèle à notre projet, nous avons configuré la raspberry à domicile.&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abords installé Raspbian, puis installé les paquets nécessaire au fonctionnement du serveur.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Openssh-server''': permettre d'accès à distance à la raspberry pour pouvoir y accéder depuis l'école.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Iptables''': pour sécuriser les ports non utilisé et libérer l'accès aux ports qui nous intéressent (ssh 22,http 80,https 443).&amp;lt;br&amp;gt;&lt;br /&gt;
- '''apache2, php5, mysql-server''' : pour mettre en place notre service web.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons rediriger les ports 80 et 22 du routeur pour pouvoir accéder à la raspberry de l'extérieur.&lt;br /&gt;
&lt;br /&gt;
Pour finir, nous avons créer un fichier de config iptables permettant de sécuriser un minimum la base de donnée et de permettre d'autoriser la communication des ports 22, 80 et 443 correspondants aux ports ssh, http et https. le fichier de configuration a été déposé dans le dépôt git. Il nous a fallut le rendre exécutable via un chmod. Puis pour l'exécuter à chaque démarrage du system, dans le fichier /etc/init.d/ taper : &lt;br /&gt;
&lt;br /&gt;
    sudo update-rc.d firewall defaults (si notrefichier s'appelle firewall et s'il est dans init.d)&lt;br /&gt;
&lt;br /&gt;
===Base de donnée===&lt;br /&gt;
&lt;br /&gt;
Nos données alimentaires disponibles par toute la famille doivent être stocké sur un serveur de base de donnée externe (tel une Raspberry pi). Nous nous proposons de créer le diagramme UML représentant cette future base de donnée.&lt;br /&gt;
[[Fichier:Optali_UML.jpg|700px|thumb|center|Diagramme UML base de donnée]]&lt;br /&gt;
&lt;br /&gt;
On créera donc 3 entités. Date, Product et Recipe. &lt;br /&gt;
&lt;br /&gt;
- Product rassemble les aliments qui sont ou ont été dans la réserve alimentaire. NbProdIn permet de connaître le nombre de produits identiques (possibilité de date différentes mais pas de doublons et on garde l'information de quantité. NbProdBought donne une information sur le nombre de produits identique ayant été acheté depuis la mise en service de la base de donnée. Ainsi nous pourrons par la suite proposer une liste de course à l'utilisateur en fonction de la fréquence d'achat des produits.&lt;br /&gt;
&lt;br /&gt;
- Recipe contient les recettes que pourra rentrer l'utilisateur sur l'application. L'utilisateur pourra ainsi se voir proposer des recettes en fonction de ce qu'il a dans son frigo et de ses recettes personnelles.&lt;br /&gt;
&lt;br /&gt;
'''''Edit : On ajoutera une valeur entière dans les tables Date et Unity pour gérer le cas où il existe plusieurs produits (différents ou identiques) avec une date de péremption équivalente. On les appellera NbDate la valeur dans la table Date et NbUnity dans la table Unity. On leur ajoutera de même une clef primaire IdUnity et IdListProduct'''''&lt;br /&gt;
&lt;br /&gt;
On utilisera MySql pour la gestion de nos bases de données. &lt;br /&gt;
La syntaxe pour l'implanter dans la base de donnée à été jointe au dépôt git.&lt;br /&gt;
&lt;br /&gt;
Pour lancer my SQL, on tapera:&lt;br /&gt;
&lt;br /&gt;
   mysql -h localhost -u root -p&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Web service===&lt;br /&gt;
&lt;br /&gt;
====Page init.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet d'initier l'accès à la base de donnée sur le serveur. Elle est requise pour les pages qui suivent.&lt;br /&gt;
&lt;br /&gt;
====Page post.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet l'insertion d'un produit et d'une date via l'application mobile. Elle prend donc ces deux arguments et les insère dans les tables Unity, Product et Date.&lt;br /&gt;
&lt;br /&gt;
====Page get.php====&lt;br /&gt;
&lt;br /&gt;
Page qui envoie la liste des aliments avec leur nom, leur date, leur quantité dans le frigo, la quantité d'exemplaires acheté en tout depuis la mise en place de l'appareil. Le tri se fera directement dans l'application mobile. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Application Mobile===&lt;br /&gt;
&lt;br /&gt;
====Home page====&lt;br /&gt;
&lt;br /&gt;
Page d'accueil permettant d'accéder aux pages d'ajout et de liste des produits disponibles. &amp;lt;br&amp;gt;&lt;br /&gt;
La page permet aussi d'effectuer la connexion entre la rfduino et l'application mobile. Elle montre les alertes (signaux) à l'utilisateur &lt;br /&gt;
et écrit leur signification.&lt;br /&gt;
&lt;br /&gt;
====Page d'ajout====&lt;br /&gt;
&lt;br /&gt;
Pour ajouter un produit et lire une date on utilisera un champ editText pour permettre à l'utilisateur d'écrire &amp;quot;Manuellement&amp;quot; dedans grâce au clavier du smartphone.&amp;lt;br&amp;gt;&lt;br /&gt;
De plus on utilise un bouton qui appellera la caméra pour détecter les caractères d'un produit ou d'une date. Au début nous voulions utiliser un détecteur de code barre, nous l'avons implémenté mais nous avons remarqué que la mise au point sur une surface non plane prend du temps d'autant plus qu'il faut questionner une base de donnée contenant tous les numéro de codes barres utilisés. Nous avons donc prit la décision d'utiliser uniquement la lecture de caractère et nous créerons une liste déroulante sous l'editText pour faciliter l'insertion d'un produit qui a déjà été ajouté. Pour la lecture de caractère, nous utilisons la librairie tesseract.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'envoi, nous utilisons la librairie Volley développé par google.&lt;br /&gt;
&lt;br /&gt;
====Page Liste====&lt;br /&gt;
&lt;br /&gt;
Permet de lister les produits dans la base de donnée. Une série de boutons radio permettent de trier les produits par ordre alphabétique, par date de péremption, par nombre d’occurrence dans la réserve alimentaire, par nombre d'achat depuis la mise en place du système.&amp;lt;br&amp;gt;&lt;br /&gt;
Une colonne permet de sélectionner les aliments désirés (par checkBox) pour ensuite les supprimer via un button &amp;quot;suppr&amp;quot; ou les choisir pour trouver des recettes qui les utilisent.&amp;lt;br&amp;gt;&lt;br /&gt;
Un EditText permet d'effectuer une recherche sur la base de donnée.&lt;br /&gt;
&lt;br /&gt;
===Altium Designer===&lt;br /&gt;
&lt;br /&gt;
Pour permettre au RFDuino de communiquer avec les différents composants, nous aurons besoin de quelques composants électroniques. Afin que cela soit plus esthétique pour la modélisation finale, nous allons créer une carte PCB pour rassembler tous ces composants dessus. On utilisera le logiciel Altium Designer pour cela.&lt;br /&gt;
&lt;br /&gt;
Avant de représenter notre circuit général, nous allons commencer par créer une librairie rassemblant tous les composants que nous utiliserons par la suite, en particulier nos composants CMS (accéléromètre et résistances). Pour ce qui est des LEDs et du buzzer, qui sont traversants, nous pourrons utiliser des headers classiques.&lt;br /&gt;
&lt;br /&gt;
Il a donc fallu créer le schematic ainsi que l'empreinte de nos composants CMS. Voici un exemple avec notre accéléromètre :&lt;br /&gt;
[[Fichier:Accelerosch.PNG|500px|thumb|left|Schematic de l'accéléromètre]]&lt;br /&gt;
[[Fichier:Acceleropcb.PNG|500px|thumb|center|Empreinte PCB de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les fichiers Altium sont disponibles sur notre dépôt GIT. Après cela, nous pouvons maintenant construire notre schematic du montage entier et ensuite le fichier PCB afin de pouvoir graver notre circuit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après quelques modifications sur le montage prévu initialement, c'est-à-dire en enlevant une résistance entre un GPIO et l'alimentation de l'accéléromètre ainsi qu'en rajoutant des résistances pull-up sur les broches de notre liaison i2C (SDA et SCL) et un bouton poussoir en plus pour permettre un reset du RFDuino, nous avons pu créer notre schematic global pour en faire un PCB et l'exporter au format Gerber. De ce fait, le service EEI de Polytech pourra réaliser la gravure de notre carte PCB.&lt;br /&gt;
&lt;br /&gt;
Voici quelques photos pour illustrer notre projet sur Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Finalproto_sch.PNG|400px|thumb|left|Schematic du montage final]]&lt;br /&gt;
[[Fichier:Finalproto_pcb.PNG|400px|thumb|center|PCB du montage final]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On retrouve sur notre PCB final les headers, respectivement de 8 et 5 pins, de part et d'autre de la carte, qui représentent le RFDuino, où nous souderons des broches pour qu'elles puissent être intégrées au RFDuino. On note la présence de 5 autres headers de 2 pins, dont 3 pour des LEDs puis les 2 autres pour le buzzer et le bouton poussoir. Ce qui reste sont les composants CMS avec plusieurs composants à 2 pattes qui sont toutes les résistances de notre montage, celles de protection pour les LEDs et les pull-ups pour l'accéléromètre. Le dernier composant à 8 pattes est donc bien l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quelques difficultés ont été rencontrées durant ce travail notamment concernant les contraintes de construction sur le PCB final. En effet, les composants CMS choisis (surtout l'accéléromètre) étant parfois très petits, Altium n'accepte pas forcément le faible espacement entre les différentes pattes des composants, ce qui pose problème lors de la compilation. De plus, le plan de masse ne prenait pas en compte tous les éléments devant être rattachés à la masse. Il a fallu légèrement déplacer les headers représentant le RFDuino pour que cela soit possible. Il faudra alors peut-être légèrement plier les broches qui viendront s'intégrer sur le RFDuino pour ajouter notre PCB sur le RFDuino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons envoyé nos fichiers Altium au service EEI afin qu'il puisse réaliser physiquement notre carte. Nous nous retrouvons donc avec notre carte PCB récupérée auprès du service EEI. Voici le rendu :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:P46_carte.jpg|400px|thumb|center|Fabrication de notre carte PCB]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir souder nos différents composants, nous avons été rendre visite à Thierry Flamen, responsable du service EEI, afin de passer nos composants CMS au four (résistances et accéléromètre). En effet il était presque impossible de souder tous ces composants manuellement. Après ce passage au four, il nous restait les composants traversants à souder, c'est-à-dire les pins, les LEDs et notre buzzer. Voici le rendu après nos soudures :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:pcbfinal1_p46.jpg|200px|thumb|left|Vue du dessous de notre carte]]&lt;br /&gt;
[[Fichier:pcbfinal2_p46.jpg|200px|thumb|center|Vue du dessus de notre carte]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il manque sur la carte finale notre bouton poussoir qui permettait le reset de notre RFduino. Malheureusement en essayant de souder celui-ci, nous avons retiré du cuivre de la carte, ce qui nous empêche de pouvoir faire circuler le courant dans ce bouton. De plus, la piste avec du cuivre manquant était également responsable de l'alimentation de notre accéléromètre ainsi que d'une LED indiquant la mise sous-tension du contrôleur. Pour le rendu final, nous souderons un fil sur la LED pour pouvoir l'alimenter, cependant il serait plus complexe d'alimenter l'accéléromètre. Celui-ci ne fonctionnait déjà pas correctement de manière électrique. La soudure de ce composant demandait une grande précision puisqu'il est de taille minuscule. Nous n'utiliserons donc pas ce composant dans notre montage final.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== RFduino ===&lt;br /&gt;
&lt;br /&gt;
Après avoir conçu notre carte PCB, nous avons pu aborder la programmation de notre contrôleur pour qu'il puisse discuter via BLE avec l'application ainsi qu'interagir avec les composants du PCB. Pour cela, nous utiliserons l'IDE Arduino et principalement deux bibliothèques qui sont &amp;lt;Wire.h&amp;gt; et &amp;lt;RFduinoBLE.h&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Avant d'attaquer cet aspect, nous avons d'abord pris le temps de comprendre comment fonctionnait le protocole GATT, qui est associé au BLE, mais également le protocole i2C pour la communication avec l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
Tout notre programme est fourni en fin de Wiki. &lt;br /&gt;
&lt;br /&gt;
=== OptaliBox ===&lt;br /&gt;
&lt;br /&gt;
Notre interface utilisateur à fixer sur le frigo est maintenant prête. Nous devions donc réfléchir au dispositif que nous allions fixer avec des aimants sur la porte du frigo.&lt;br /&gt;
&lt;br /&gt;
Nous avons opté pour un boîtier que nous avons pu concevoir au Fabricarium de l'école. Voici le rendu final : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Accelerosch.PNG|500px|thumb|left|Fabrication du boîtier OptaliBox]]&lt;br /&gt;
[[Fichier:Accelerosch.PNG|500px|thumb|left|OptaliBox contenant notre interface utilisateur]]&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;br /&gt;
&lt;br /&gt;
=== Rapport de projet ===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Compte_rendu_projet_final_P46.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Codes et fichiers du projet ===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Optali-master.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Liens vers dépôt GIT ===&lt;br /&gt;
&lt;br /&gt;
* dépôt GIT de l'école : https://archives.plil.fr/ahuet/P46-Aide-anti-gaspillage-alimentaire&lt;br /&gt;
* dépôt GitHub : https://github.com/FrancoisLefevre12/Optali&lt;br /&gt;
&lt;br /&gt;
== Bibliographie ==&lt;br /&gt;
&lt;br /&gt;
* Programmation BLE RFduino : http://www.rfduino.com/wp-content/uploads/2014/03/rfduino.ble_.programming.reference.pdf&lt;br /&gt;
* Programmation BLE Android : https://github.com/lann/RFDuinoTest&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=42259</id>
		<title>IMA4 2016/2017 P46 : Aide anti-gaspillage alimentaire</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=42259"/>
				<updated>2017-05-15T17:17:17Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : /* Bibliographie */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
En France, nous jetons en moyenne 21% des aliments que nous achetons, ce qui représente une perte de 100 à 160 euros par an par habitant. Cela est en partie dû à la date limite de consommation associée à chaque produit. En effet, à partir du moment où cette date sera dépassée le consommateur jettera les produits concernés sans réfléchir, même si ceux-ci peuvent parfois être encore mangeables. Plutôt que d'essayer de les convaincre du contraire, il serait judicieux de proposer aux adeptes du gaspillage une aide permettant de gérer tous les aliments dont ils disposent chez eux afin d'éviter la surprise de tomber sur plusieurs produits périmés lorsqu'ils ouvrent la porte de leur frigo. &lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Ce projet permet d'aider les utilisateurs d'une part à mémoriser les denrées périssables qu'ils disposent dans leur réserve alimentaire et d'autre part d'avertir l'utilisateur qu'un événement important a lieu. Ceci peut être une notification qu'un aliment va bientôt dépasser sa date de péremption, que la porte du frigidaire est restée ouverte ou encore que le nombre d'aliments dans la réserve devient critique et qu'il faudra de nouveau l'alimenter. Enfin, le système aidera l'utilisateur à trouver des idées de repas pouvant permettre de consommer les aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Notre prototype permettra d'éviter le gaspillage alimentaire ainsi que d'aider l'utilisateur dans sa gestion du stockage d'aliments.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
&lt;br /&gt;
Notre système sera composé de 3 éléments. &lt;br /&gt;
&lt;br /&gt;
Premièrement, un ou des smartphones appartenant aux utilisateurs. Ces derniers permettront de scanner grâce à son appareil photo, le code barre du produit ainsi que sa date de péremption. Il servira aussi d'interface utilisateur pour notre système. En effet, c'est par cet outil que l'utilisateur pourra lister tous les aliments que l'utilisateur a dans sa base et tout ça en les triant par date de péremption, ou encore voir les recettes possibles pour consommer des aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Deuxièmement, un serveur, de type Raspberry, qui permettra de stocker la base de donnée contenant les aliments de la réserve. Ce serveur sera connecté par wifi.&lt;br /&gt;
 &lt;br /&gt;
Troisièmement, un contrôleur (Rfduino) qui comportera une LED pour indiquer la mise sous tension du contrôleur, une LED pour prévenir l'utilisateur qu'un aliment va bientôt passer sa date de péremption et une dernière LED pour prévenir l'utilisateur que son niveau de réserve est critique ainsi qu'un buzzer et un accéléromètre pour buzzer quand la porte du frigo est restée trop longtemps ouverte. Ce dernier sera fixé au frigo par l'intermédiaire d'un dispositif adapté qui sera un système aimanté qui se pose sur le frigo.&lt;br /&gt;
&lt;br /&gt;
Nous implémenterons donc une application mobile Android qui fera le lien entre les 2 autres systèmes.&lt;br /&gt;
&lt;br /&gt;
Pour la partie électronique que nous aurons à réaliser, nous utiliserons une Breadboard pour faire des premiers tests puis nous créerons une carte PCB pour notre montage final.&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
On utilisera une Raspberry Pi en guise de serveur pour pouvoir s'occuper du stockage de toutes les données dans notre projet puisque notre contrôleur sera incapable de les contenir, ce n'est d'ailleurs pas son but ici.&lt;br /&gt;
&lt;br /&gt;
Notre smartphone fera donc le lien entre notre base de données et notre système embarqué par l'intermédiaire de l'application mobile.&lt;br /&gt;
&lt;br /&gt;
Nous prendrons ici un RFduino puisque celui-ci nous permet d'ajouter des modules comme bon nous semble afin d'adapter le système aux besoins de notre application. Il est également parfaitement compatible avec les applications Android. De plus, nous avons un Bluetooth directement intégré au RFduino pour s'assurer que les liaisons RFduino-application mobile se fassent correctement. &lt;br /&gt;
On notera également que ce contrôleur consomme peu de courant et ne demande qu'une faible tension d'alimentation, critères importants pour ce genre de projet. C'est la raison principale de son utilisation pour être utilisé comme interface physique sur le frigo, en ajoutant également sa taille réduite comparée à la Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
&lt;br /&gt;
Nous avons donc besoin du matériel suivant :&lt;br /&gt;
&lt;br /&gt;
*Raspberry Pi.&lt;br /&gt;
*Clef wifi&lt;br /&gt;
*RFduino (RFD22102 DIP Board, RFD22121 USB Shield, RFD22126 Dual AAA battery shield).&lt;br /&gt;
*2 piles AAA.&lt;br /&gt;
*3 leds tranversantes.&lt;br /&gt;
*3 Résistances 330 Ohm.&lt;br /&gt;
*1 Résistance 10 kOhm.&lt;br /&gt;
*Un buzzer.&lt;br /&gt;
*Accéléromètre.&lt;br /&gt;
*Aimants&lt;br /&gt;
*Un boîtier permettant d'intégrer la RFduino + fixation sur le frigo (modélisation à voir).&lt;br /&gt;
&lt;br /&gt;
Pour le buzzer, l'accéléromètre et les résistances, nous choisirons des composants CMS pour nous permettre d'avoir une carte plus petite.&lt;br /&gt;
&lt;br /&gt;
===Calendrier prévisionnel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Liste des tâches à effectuer====&lt;br /&gt;
&lt;br /&gt;
* Configurer la Raspberry :&lt;br /&gt;
** Installer et configurer le serveur.&lt;br /&gt;
** Créer le diagramme UML de notre future base de données.&lt;br /&gt;
** Créer la base sur le serveur.&lt;br /&gt;
** Configurer la connexion WiFi.&lt;br /&gt;
&lt;br /&gt;
* Monter et programmer la RFduino :&lt;br /&gt;
** Connecter les différents modules au RFduino (accéléromètre, LEDs, buzzer, Batterie, module Bluetooth).&lt;br /&gt;
** Récupérer les consignes du smartphone grâce au Bluetooth.&lt;br /&gt;
** Programmer le comportement du RFduino en fonction des consignes.&lt;br /&gt;
** Construire le boitier final.&lt;br /&gt;
&lt;br /&gt;
* Implémenter l'application mobile Android :&lt;br /&gt;
** Une première activité permettant de se connecter au RFduino et à la Raspberry.&lt;br /&gt;
** Scanner une date et un code barre.&lt;br /&gt;
** Ajout/suppression d'un aliment dans la base de donnée.&lt;br /&gt;
** Envoi d'une consigne au RFduino.&lt;br /&gt;
** Rendre l'interface utilisateur ergonomique (lister aliments, envoyer vers page de recettes avec l'utilisation des aliments bientôt périmés...).&lt;br /&gt;
&lt;br /&gt;
====Calendrier====&lt;br /&gt;
&lt;br /&gt;
Répartition du temps consacré au projet (120h *2) :&lt;br /&gt;
&lt;br /&gt;
*Partie Raspberry : 60h&lt;br /&gt;
*Partie RFduino : 60h&lt;br /&gt;
*Partie développement mobile : 120h&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
&lt;br /&gt;
===Feuille d'heures===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 !  !! Lundi 16-18h !! Mercredi 14-18h !! Jeudi 8-10h&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 1&lt;br /&gt;
&lt;br /&gt;
 | '''23/01''' :  &lt;br /&gt;
* Installation du logiciel Android Studio pour être prêt à commencer l'application mobile.&lt;br /&gt;
* Création du Repository Git sur GitHub : https://github.com/FrancoisLefevre12/Optali.git&lt;br /&gt;
* Réalisation de différents schémas fonctionnels pour se donner une idée du travail à effectuer, aussi bien du software que du hardware.&lt;br /&gt;
* Quelques précisions supplémentaires apportées sur le cahier des charges.&lt;br /&gt;
* Ajout de liens de référence pour la liste de matériel à acheter.&lt;br /&gt;
&lt;br /&gt;
 | '''25/01''' :  &lt;br /&gt;
* Précision des composants requis (accéléromètre, buzzer, LEDs, résistances).&lt;br /&gt;
* Écriture du montage à la main.&lt;br /&gt;
* Étude du fonctionnement de l'accéléromètre, du buzzer.&lt;br /&gt;
* Écriture de la structure de l'application à la main.&lt;br /&gt;
&lt;br /&gt;
 | '''26/01''' :&lt;br /&gt;
*Réalisation graphique de la première page de l'application.&lt;br /&gt;
*Conception du schéma électrique pour tous les composants connectés au RFduino.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 2&lt;br /&gt;
&lt;br /&gt;
 | '''30/01''' :&lt;br /&gt;
*Réalisation du diagramme UML de la base de données qui sera stockée sur la Raspberry Pi&lt;br /&gt;
*Installation de l'outil de développement mobile sur le second PC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 | '''01/02''' :&lt;br /&gt;
*Nous nous sommes d'abord rendus compte que la résistance entre un des GPIO et l'accéléromètre était inutile, nos premiers calculs étaient erronés. Nous ne la garderons donc pas sur notre schéma électrique final.&lt;br /&gt;
*Avancement sur la partie application mobile : réalisation de la page &amp;quot;Ajout&amp;quot; sur laquelle nous tomberons après avoir cliquer sur &amp;quot;ajout&amp;quot; sur la page principale de l'application. Nous avons étendu l'activité principale jusqu'à cette nouvelle activité &amp;quot;Ajout&amp;quot;.&lt;br /&gt;
*Nous avons récupéré notre Raspberry Pi pour commencer à installer notre base de données dessus. Nous avons actuellement quelques problèmes pour nous connecter sur la Raspberry. Nous travaillons sur ce point.&lt;br /&gt;
&lt;br /&gt;
 | '''02/02''' :&lt;br /&gt;
* Application mobile : Mise en place des LEDs sur la home page et de la zone de notification avec les messages associés.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 3&lt;br /&gt;
&lt;br /&gt;
 | '''06/02''' :&lt;br /&gt;
*Nous arrivons à accéder à la Raspberry via le port série de celle-ci. Nous avons également configuré sa connexion Ethernet afin de pouvoir télécharger des paquets dessus et installer notre base de données. &lt;br /&gt;
*Nous rencontrions des problèmes sur le second PC de travail pour récupérer le projet Optali sur Android Studio via notre dépôt GIT. Nous avons pu rectifier ce souci.&lt;br /&gt;
&lt;br /&gt;
 | '''08/02''' :&lt;br /&gt;
*Tentative d'établissement d'un point d'accès WiFi sur notre Raspberry. Nous n'avons pas réussi pour le moment.&lt;br /&gt;
*Restructuration du Repository git.&lt;br /&gt;
*Essai d'importation de la librairie Zxing qui permettra de décoder les code-barres.&lt;br /&gt;
 |&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 4&lt;br /&gt;
&lt;br /&gt;
 | '''13/02'''&lt;br /&gt;
*Configuration du wifi de la Raspberry. &lt;br /&gt;
*Étude d'une mise en place d'un service web via php.&lt;br /&gt;
&lt;br /&gt;
 | '''15/02'''&lt;br /&gt;
*Mise en place d'un lecteur de caractère sur l'application. On utilisera tesseract.&lt;br /&gt;
*Début de la création du PCB via Altium designer. Création d'une librairie pour l'accéléromètre qui est un composant CMS assez spécial. On pourra cependant utiliser des headers classiques pour le buzzer et les LEDs puisque ce sont des composants traversants.&lt;br /&gt;
*Création des premiers fichiers php de connection à la base de donnée et d'insertion d'aliments. Tous ces fichiers seront déposés de la même manière sur le dépôt git.&lt;br /&gt;
&lt;br /&gt;
 | '''16/02'''&lt;br /&gt;
*Adaptation avec prise en compte des cas du code php d'insertion de produits par requête sur la base de donnée.&lt;br /&gt;
*Ajout du code d'implantation de la base de donnée.&lt;br /&gt;
*Altium: Accéléromètre terminé, mise en place des résistances.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 5 (interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''22/02 (3 heures)'''&lt;br /&gt;
*Installation de l'OS de la raspberry.&lt;br /&gt;
*Installation d'Openssh-server, apache2, php5, iptables, mysql-server, php5-mysql.&lt;br /&gt;
*Redirection des ports du routeur vers la raspberry.&lt;br /&gt;
*Configuration de iptables de la raspberry.&lt;br /&gt;
&lt;br /&gt;
 | '''23/02 (2 heures)'''&lt;br /&gt;
*Implantation de la base de donnée sur la raspberry pi.&lt;br /&gt;
|&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 6&lt;br /&gt;
 | '''27/02'''&lt;br /&gt;
*Vérification de la syntaxe de l'insertion de valeurs dans la base de donnée.&lt;br /&gt;
*Création des premières requêtes sur la base de donnée.&lt;br /&gt;
*Finalisation du PCB de l'Optali Board.&lt;br /&gt;
&lt;br /&gt;
 | '''01/03'''&lt;br /&gt;
*Étude et ajout de la librairie volley pour communiquer avec le serveur.&lt;br /&gt;
*Implantation de la fonction d'envoi de données jusqu'au serveur.&lt;br /&gt;
*Après avoir vu avec un professeur, nous avons remarqué que le routage n'était pas adéquat et la disposition des composants n'était pas optimal. Du travail reste donc encore à effectuer.&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 7&lt;br /&gt;
 | '''06/03'''&lt;br /&gt;
*Correction du fichier post.php&lt;br /&gt;
*Finition du protocole d'ajout d'aliment sur la base de donnée. (Code php et page ajout terminée).&lt;br /&gt;
*PCB terminé.&lt;br /&gt;
*Installation d'arduino IDE, doc arduino collecté.&lt;br /&gt;
&lt;br /&gt;
 | '''08/03'''&lt;br /&gt;
*Implémentation de la page ListeIngredient.xml et de l'activité listActivity.java.&lt;br /&gt;
*Documentation sur la procédure de communication bluetooth entre la Rfduino et l'application mobile.&lt;br /&gt;
*Obtention de librairie en lien avec cela.&lt;br /&gt;
*Prise en main de programmation rfduino.&lt;br /&gt;
&lt;br /&gt;
 | '''09/03'''&lt;br /&gt;
*Nous nous sommes rendus compte qu'il était nécessaire de rajouter un bouton poussoir sur notre montage afin de permettre la réinitialisation de notre RFDuino si nécessaire. Nous devons également faire en sorte de pouvoir poser notre carte PCB directement sur notre RFDuino en utilisant des broches. Nous devons donc rajouter ces éléments-ci.&lt;br /&gt;
*Ecriture de la page get.php&lt;br /&gt;
*Premiers tests sur la ListView de l'activité ListActivity.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 8&lt;br /&gt;
 | '''13/03'''&lt;br /&gt;
*Recherche de pistes concernant la programmation RFDuino. Nous pouvons la détecter en bluetooth via un smartphone Android.&lt;br /&gt;
*Finition du Tablelayout et du code java associé sur la page ListActivity.&lt;br /&gt;
&lt;br /&gt;
 | '''15/03'''&lt;br /&gt;
*Ajout de la JsonArrayRequest dans la page ListActivity.&lt;br /&gt;
*Nous nous sommes rendus compte au moment de programmer la liaison I2C de l'accéléromètre avec la RFDuino que nous avions oublié de mettre des résistances pull-up entre l'alimentation du composant et les broches SDA et SCL. Les modifications ont donc été faites puis nous avons envoyé finalement notre PCB à la fabrication.&lt;br /&gt;
&lt;br /&gt;
 | '''16/03'''&lt;br /&gt;
*Changement de stratégie au niveau de la requête JsonArrayRequest. On récupère toute la base et ensuite le traitement sera effectuer dans l'application mobile.&lt;br /&gt;
*Rédaction de la partie Altium du wiki.&lt;br /&gt;
*Recherche de docs sur le système bluetooth du RFduino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 9&lt;br /&gt;
 | '''20/03'''&lt;br /&gt;
*Réalisation de différents réglages pour pouvoir utiliser l'application Optali sur l'Android phone fourni par notre professeur (LG G4c)&lt;br /&gt;
*Recherche de docs concernant la partie java responsable de la communication Bluetooth.&lt;br /&gt;
*Reprise de la solution Tesseract pour la lecture de caractères.&lt;br /&gt;
&lt;br /&gt;
 | '''21/03''' (séance supplémentaire de 3 heures)&lt;br /&gt;
*Début du développement de la partie communication entre RFDuino et l'appli mobile. Nous pouvons détecter le RFduino à partir de Android Studio mais nous n'arrivons pas encore à nous connecter dessus directement.&lt;br /&gt;
*Finition de la fonctionnalité tesseract. La lecture de caractères est donc maintenant possible.&lt;br /&gt;
&lt;br /&gt;
 | '''22/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity&lt;br /&gt;
*Connexion possible entre le RFduino et notre appli mobile. Il faut maintenant pouvoir assurer un échange de données via du GATT.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 10&lt;br /&gt;
 | '''27/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity (suite). Utilisation de la solution postman.&lt;br /&gt;
*Mise à jour du wiki pour la partie Altium.&lt;br /&gt;
*Gestion du dépôt git.&lt;br /&gt;
*Récupération de la carte PCB au service EEI.&lt;br /&gt;
&lt;br /&gt;
 | '''29/03'''&lt;br /&gt;
*Mise en place du tri des Produits avec un critère d'ordonnabilité variable&lt;br /&gt;
*Implémentation du champs recherche et action sur la liste&lt;br /&gt;
*Écriture des pages Php consume.php et delete.php pour décrémenter le nombre d'aliment dans le frigo ou le supprimer&lt;br /&gt;
*Récupération des composants&lt;br /&gt;
*Passage au four pour souder les premiers composants en CMS&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 11&lt;br /&gt;
&lt;br /&gt;
 | '''03/04'''&lt;br /&gt;
*Dé-soudage et resoudage de l'accéléromètre.&lt;br /&gt;
*Soudure des composants&lt;br /&gt;
&lt;br /&gt;
 | '''05/04'''&lt;br /&gt;
*Test du Buzzer&lt;br /&gt;
*Code de l'accéléromètre&lt;br /&gt;
*Création de l'Optali box (la boite qui contient le RFduino fixé au frigo)&lt;br /&gt;
*Finition de la fonction 'delete'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 | '''06/04'''&lt;br /&gt;
*Problème pour faire fonctionner le code de l'accéléro. Il faudra le tester électriquement.&lt;br /&gt;
*Implantation du logo de l'appli &lt;br /&gt;
*Debuggage d'une requête de la page 'list'&lt;br /&gt;
*Documentation sur les listes déroulantes sous les EditTexts.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 12 (Interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''11/04''' (3 heures)&lt;br /&gt;
*Après avoir remarqué que le code de l'accéléro ne fonctionnait pas alors qu'il paraît correct, nous avons décidez de vérifier les propriétés électriques de notre montage.&lt;br /&gt;
En observant à l'analyseur logique, il semblerait que l'horloge de la liaison i2C n'est en fait qu'un signal bruité. Il faudra donc retenter de souder le composant quand cela sera possible.&lt;br /&gt;
&lt;br /&gt;
 | '''13/04''' (6 heures)&lt;br /&gt;
*Terminaison du programme RFduino qui fonctionne théoriquement, nous attendons de terminer les dernières soudures pour pouvoir le tester physiquement.&lt;br /&gt;
*En attendant de pouvoir réaliser des soudures, nous avons repris la partie communication bluetooth entre le RFduino et l'appli. Après avoir tenté d'utiliser un programme permettant de gérer le protocole GATT sans savoir envoyer ou recevoir de données, nous nous sommes orientés sur une communication plus basique basée sur de nombreux exemples que l'on peut voir sur le web.&lt;br /&gt;
&lt;br /&gt;
 | '''15/04''' (6 heures)&lt;br /&gt;
*Après s'être rendu compte que la communication plus &amp;quot;basique&amp;quot; que nous voulions utiliser n'était pas compatible avec le BLE, nous sommes une fois de plus repartis de zéro pour cette partie.&lt;br /&gt;
*Après quelques recherches, nous avons trouvé un programme réalisant la gestion d'un socket BLE sur le principe du protocole GATT. Grâce à celui-ci, il nous est possible de recevoir et d'envoyer des données via BLE sur RFduino ainsi que sur l'appli mobile.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 13 (Interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''17/04 (4 heures)'''&lt;br /&gt;
*Ajout du singleton Etat pour partager l'état des aliments dans la réserve alimentaire&lt;br /&gt;
*Transfert des requêtes de la base de donnée vers le singleton pour optimiser l'actualisation et le partage des données.&lt;br /&gt;
*Actualisation automatique des données sur la page principale.&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Semaine 14&lt;br /&gt;
| '''24/04'''&lt;br /&gt;
*Modification de la présentation du wiki&lt;br /&gt;
*Modification de la fonctionnalité du bouton actualiser en changement d'activité&lt;br /&gt;
&lt;br /&gt;
| '''26/04'''&lt;br /&gt;
*Ajout de la page liste recette&lt;br /&gt;
&lt;br /&gt;
| '''27/04''' (3 heures)&lt;br /&gt;
*Ajout des listes recettes dans ListeRecette&lt;br /&gt;
*Ajout des requêtes des recettes sur ListeRecette.java&lt;br /&gt;
*Création du fichier listeRecette.php sur le serveur pour faire la requête SQL et envoyer sur l'application.&lt;br /&gt;
*Soudure des derniers composants pour terminer le PCB. Tout est soudé sauf le bouton poussoir qui devait permettre un reset du RFduino. En cherchant d'ailleurs à souder ce bouton, nous avons retiré malencontreusement la piste de cuivre permettant de répartir le 3.3V du RFduino sur notre PCB. Notre accéléromètre qui ne marchait déjà pas vraiment n'est plus alimenté. Nous ferons sans notre accéléromètre pour le rendu final. &lt;br /&gt;
|-&lt;br /&gt;
|Semaine 15&lt;br /&gt;
|'''02/05'''&lt;br /&gt;
*Réalisation de la vidéo de présentation du projet avec Laurent Engels.&lt;br /&gt;
|'''03/05'''&lt;br /&gt;
*Remplacement de la LED &amp;quot;LED_Perim&amp;quot; qui était défaillante et ne s'allumait pas quand il le fallait.&lt;br /&gt;
*Début de la réalisation du rapport de projet.&lt;br /&gt;
|'''04/05'''&lt;br /&gt;
*Débuggage de la &amp;quot;LED_Perim&amp;quot;. Le problème n'était donc pas électrique mais bien au niveau software. Il existait un conflit entre l'allumage de cette LED et la pin TX de la liaison série qui était défini sur la même broche.&lt;br /&gt;
*Débuggage de l'appli pour éviter les quelques plantages que l'on peut avoir parfois.&lt;br /&gt;
|-&lt;br /&gt;
|Semaine 16&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===Premières idées===&lt;br /&gt;
&lt;br /&gt;
Voici les premières idées de l'application mobile et du composant fixé sur le frigo.&lt;br /&gt;
[[Fichier:Optali_v1.jpg|400px|thumb|left|Optali version 1]]&lt;br /&gt;
[[Fichier:OptaliBox_v1.jpg|400px|thumb|center|OptaliBox version 1]]&lt;br /&gt;
[[Fichier:P46_schema.jpg|400px|thumb|center|Schéma électrique version 1]]&lt;br /&gt;
&lt;br /&gt;
En s'intéressant aux différentes datasheets ou données constructeur des composants que nous voulons utiliser, nous trouvons indispensable d'utiliser des résistances de 330 Ohms pour l'utilisation des LEDs, pour éviter de les griller.&lt;br /&gt;
&lt;br /&gt;
Edit : Retrait de la résistance R2.&lt;br /&gt;
&lt;br /&gt;
Concernant l'accéléromètre, nous avons choisi un modèle qui nous permet de brancher directement ce module sur une broche du RFDuino. On branchera directement les GPIOs de la RFduino sur les ports SDA et SCL de l'accéléromètre qui correspondent à l'interface I2C pour pouvoir communiquer. On utilisera aussi la broche INT1 pour pouvoir générer des interruptions directement depuis l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
On connectera le buzzer directement à une broche de la RFduino aussi. Concernant celui-ci il reste une incertitude puisqu'on ne trouve aucune information sur le courant à fournir pour l'alimentation de ce composant sur sa datasheet. Après différentes recherches sur Internet, il pourrait être nécessaire d'utiliser un montage amplificateur à transistor comme un émetteur commun pour booster le courant en sortie d'une broche GPIO. Quelques buzzers trouvés avec des données constructeur montrent que ce type de composant nécessite généralement un courant d'environ 30 mA. Nous verrons dans la pratique si cela sera vraiment nécessaire. Par sécurité, on ajoutera un transistor bipolaire dans la liste de matériel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:screen_LED.png|400px|thumb|left|Données constructeur pour LEDs]]&lt;br /&gt;
[[Fichier:screen_accel.png|400px|thumb|center|Datasheet de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
====Configuration école====&lt;br /&gt;
&lt;br /&gt;
*Pour configurer notre Raspberry Pi, nous utilisons son port série et &amp;quot;minicom&amp;quot;. Pour pouvoir télécharger des paquets, il fallait la connecter au réseau. Nous lui avons donc affecté une adresse IP fixe avec le fichier /etc/network/interfaces. Voici les modifications qui ont été apportées : &lt;br /&gt;
&lt;br /&gt;
   auto eth0&lt;br /&gt;
   iface eth0 inet static&lt;br /&gt;
   address 172.26.78.15&lt;br /&gt;
   netmask 255.255.240.0&lt;br /&gt;
   gateway 172.26.79.254&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il a également fallu ajouter la commande &amp;quot;export http_proxy=http://proxy.polytech-lille.fr:3128&amp;quot; (il faudra effectuer cette commande à chaque démarrage de la Pi) pour pouvoir utiliser le proxy de l'école. &lt;br /&gt;
Nous avons de plus modifier le fichier /etc/resolv.conf avec la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
   nameserver 193.48.57.34&lt;br /&gt;
&lt;br /&gt;
Malgré cela, nous avions des soucis pour nous connecter au réseau. Il y avait en fait un processus dhcp en tâche de fond qui nous empêchait de garder le contenu de resolv.conf. Il a donc fallu trouver ce processus pour le &amp;quot;kill&amp;quot; et pouvoir accéder correctement au réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons du coup pu installer postgresql pour pouvoir configurer une base de données sur notre Pi.&lt;br /&gt;
&lt;br /&gt;
====Configuration à domicile====&lt;br /&gt;
&lt;br /&gt;
Pour nous mettre dans une situation plus fidèle à notre projet, nous avons configuré la raspberry à domicile.&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abords installé Raspbian, puis installé les paquets nécessaire au fonctionnement du serveur.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Openssh-server''': permettre d'accès à distance à la raspberry pour pouvoir y accéder depuis l'école.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Iptables''': pour sécuriser les ports non utilisé et libérer l'accès aux ports qui nous intéressent (ssh 22,http 80,https 443).&amp;lt;br&amp;gt;&lt;br /&gt;
- '''apache2, php5, mysql-server''' : pour mettre en place notre service web.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons rediriger les ports 80 et 22 du routeur pour pouvoir accéder à la raspberry de l'extérieur.&lt;br /&gt;
&lt;br /&gt;
Pour finir, nous avons créer un fichier de config iptables permettant de sécuriser un minimum la base de donnée et de permettre d'autoriser la communication des ports 22, 80 et 443 correspondants aux ports ssh, http et https. le fichier de configuration a été déposé dans le dépôt git. Il nous a fallut le rendre exécutable via un chmod. Puis pour l'exécuter à chaque démarrage du system, dans le fichier /etc/init.d/ taper : &lt;br /&gt;
&lt;br /&gt;
    sudo update-rc.d firewall defaults (si notrefichier s'appelle firewall et s'il est dans init.d)&lt;br /&gt;
&lt;br /&gt;
===Base de donnée===&lt;br /&gt;
&lt;br /&gt;
Nos données alimentaires disponibles par toute la famille doivent être stocké sur un serveur de base de donnée externe (tel une Raspberry pi). Nous nous proposons de créer le diagramme UML représentant cette future base de donnée.&lt;br /&gt;
[[Fichier:Optali_UML.jpg|700px|thumb|center|Diagramme UML base de donnée]]&lt;br /&gt;
&lt;br /&gt;
On créera donc 3 entités. Date, Product et Recipe. &lt;br /&gt;
&lt;br /&gt;
- Product rassemble les aliments qui sont ou ont été dans la réserve alimentaire. NbProdIn permet de connaître le nombre de produits identiques (possibilité de date différentes mais pas de doublons et on garde l'information de quantité. NbProdBought donne une information sur le nombre de produits identique ayant été acheté depuis la mise en service de la base de donnée. Ainsi nous pourrons par la suite proposer une liste de course à l'utilisateur en fonction de la fréquence d'achat des produits.&lt;br /&gt;
&lt;br /&gt;
- Recipe contient les recettes que pourra rentrer l'utilisateur sur l'application. L'utilisateur pourra ainsi se voir proposer des recettes en fonction de ce qu'il a dans son frigo et de ses recettes personnelles.&lt;br /&gt;
&lt;br /&gt;
'''''Edit : On ajoutera une valeur entière dans les tables Date et Unity pour gérer le cas où il existe plusieurs produits (différents ou identiques) avec une date de péremption équivalente. On les appellera NbDate la valeur dans la table Date et NbUnity dans la table Unity. On leur ajoutera de même une clef primaire IdUnity et IdListProduct'''''&lt;br /&gt;
&lt;br /&gt;
On utilisera MySql pour la gestion de nos bases de données. &lt;br /&gt;
La syntaxe pour l'implanter dans la base de donnée à été jointe au dépôt git.&lt;br /&gt;
&lt;br /&gt;
Pour lancer my SQL, on tapera:&lt;br /&gt;
&lt;br /&gt;
   mysql -h localhost -u root -p&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Web service===&lt;br /&gt;
&lt;br /&gt;
====Page init.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet d'initier l'accès à la base de donnée sur le serveur. Elle est requise pour les pages qui suivent.&lt;br /&gt;
&lt;br /&gt;
====Page post.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet l'insertion d'un produit et d'une date via l'application mobile. Elle prend donc ces deux arguments et les insère dans les tables Unity, Product et Date.&lt;br /&gt;
&lt;br /&gt;
====Page get.php====&lt;br /&gt;
&lt;br /&gt;
Page qui envoie la liste des aliments avec leur nom, leur date, leur quantité dans le frigo, la quantité d'exemplaires acheté en tout depuis la mise en place de l'appareil. Le tri se fera directement dans l'application mobile. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Application Mobile===&lt;br /&gt;
&lt;br /&gt;
====Home page====&lt;br /&gt;
&lt;br /&gt;
Page d'accueil permettant d'accéder aux pages d'ajout et de liste des produits disponibles. &amp;lt;br&amp;gt;&lt;br /&gt;
La page permet aussi d'effectuer la connexion entre la rfduino et l'application mobile. Elle montre les alertes (signaux) à l'utilisateur &lt;br /&gt;
et écrit leur signification.&lt;br /&gt;
&lt;br /&gt;
====Page d'ajout====&lt;br /&gt;
&lt;br /&gt;
Pour ajouter un produit et lire une date on utilisera un champ editText pour permettre à l'utilisateur d'écrire &amp;quot;Manuellement&amp;quot; dedans grâce au clavier du smartphone.&amp;lt;br&amp;gt;&lt;br /&gt;
De plus on utilise un bouton qui appellera la caméra pour détecter les caractères d'un produit ou d'une date. Au début nous voulions utiliser un détecteur de code barre, nous l'avons implémenté mais nous avons remarqué que la mise au point sur une surface non plane prend du temps d'autant plus qu'il faut questionner une base de donnée contenant tous les numéro de codes barres utilisés. Nous avons donc prit la décision d'utiliser uniquement la lecture de caractère et nous créerons une liste déroulante sous l'editText pour faciliter l'insertion d'un produit qui a déjà été ajouté. Pour la lecture de caractère, nous utilisons la librairie tesseract.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'envoi, nous utilisons la librairie Volley développé par google.&lt;br /&gt;
&lt;br /&gt;
====Page Liste====&lt;br /&gt;
&lt;br /&gt;
Permet de lister les produits dans la base de donnée. Une série de boutons radio permettent de trier les produits par ordre alphabétique, par date de péremption, par nombre d’occurrence dans la réserve alimentaire, par nombre d'achat depuis la mise en place du système.&amp;lt;br&amp;gt;&lt;br /&gt;
Une colonne permet de sélectionner les aliments désirés (par checkBox) pour ensuite les supprimer via un button &amp;quot;suppr&amp;quot; ou les choisir pour trouver des recettes qui les utilisent.&amp;lt;br&amp;gt;&lt;br /&gt;
Un EditText permet d'effectuer une recherche sur la base de donnée.&lt;br /&gt;
&lt;br /&gt;
===Altium Designer===&lt;br /&gt;
&lt;br /&gt;
Pour permettre au RFDuino de communiquer avec les différents composants, nous aurons besoin de quelques composants électroniques. Afin que cela soit plus esthétique pour la modélisation finale, nous allons créer une carte PCB pour rassembler tous ces composants dessus. On utilisera le logiciel Altium Designer pour cela.&lt;br /&gt;
&lt;br /&gt;
Avant de représenter notre circuit général, nous allons commencer par créer une librairie rassemblant tous les composants que nous utiliserons par la suite, en particulier nos composants CMS (accéléromètre et résistances). Pour ce qui est des LEDs et du buzzer, qui sont traversants, nous pourrons utiliser des headers classiques.&lt;br /&gt;
&lt;br /&gt;
Il a donc fallu créer le schematic ainsi que l'empreinte de nos composants CMS. Voici un exemple avec notre accéléromètre :&lt;br /&gt;
[[Fichier:Accelerosch.PNG|500px|thumb|left|Schematic de l'accéléromètre]]&lt;br /&gt;
[[Fichier:Acceleropcb.PNG|500px|thumb|center|Empreinte PCB de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les fichiers Altium sont disponibles sur notre dépôt GIT. Après cela, nous pouvons maintenant construire notre schematic du montage entier et ensuite le fichier PCB afin de pouvoir graver notre circuit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après quelques modifications sur le montage prévu initialement, c'est-à-dire en enlevant une résistance entre un GPIO et l'alimentation de l'accéléromètre ainsi qu'en rajoutant des résistances pull-up sur les broches de notre liaison i2C (SDA et SCL) et un bouton poussoir en plus pour permettre un reset du RFDuino, nous avons pu créer notre schematic global pour en faire un PCB et l'exporter au format Gerber. De ce fait, le service EEI de Polytech pourra réaliser la gravure de notre carte PCB.&lt;br /&gt;
&lt;br /&gt;
Voici quelques photos pour illustrer notre projet sur Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Finalproto_sch.PNG|400px|thumb|left|Schematic du montage final]]&lt;br /&gt;
[[Fichier:Finalproto_pcb.PNG|400px|thumb|center|PCB du montage final]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On retrouve sur notre PCB final les headers, respectivement de 8 et 5 pins, de part et d'autre de la carte, qui représentent le RFDuino, où nous souderons des broches pour qu'elles puissent être intégrées au RFDuino. On note la présence de 5 autres headers de 2 pins, dont 3 pour des LEDs puis les 2 autres pour le buzzer et le bouton poussoir. Ce qui reste sont les composants CMS avec plusieurs composants à 2 pattes qui sont toutes les résistances de notre montage, celles de protection pour les LEDs et les pull-ups pour l'accéléromètre. Le dernier composant à 8 pattes est donc bien l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quelques difficultés ont été rencontrées durant ce travail notamment concernant les contraintes de construction sur le PCB final. En effet, les composants CMS choisis (surtout l'accéléromètre) étant parfois très petits, Altium n'accepte pas forcément le faible espacement entre les différentes pattes des composants, ce qui pose problème lors de la compilation. De plus, le plan de masse ne prenait pas en compte tous les éléments devant être rattachés à la masse. Il a fallu légèrement déplacer les headers représentant le RFDuino pour que cela soit possible. Il faudra alors peut-être légèrement plier les broches qui viendront s'intégrer sur le RFDuino pour ajouter notre PCB sur le RFDuino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons envoyé nos fichiers Altium au service EEI afin qu'il puisse réaliser physiquement notre carte. Nous nous retrouvons donc avec notre carte PCB récupérée auprès du service EEI. Voici le rendu :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:P46_carte.jpg|400px|thumb|center|Fabrication de notre carte PCB]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir souder nos différents composants, nous avons été rendre visite à Thierry Flamen, responsable du service EEI, afin de passer nos composants CMS au four (résistances et accéléromètre). En effet il était presque impossible de souder tous ces composants manuellement. Après ce passage au four, il nous restait les composants traversants à souder, c'est-à-dire les pins, les LEDs et notre buzzer. Voici le rendu après nos soudures :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:pcbfinal1_p46.jpg|200px|thumb|left|Vue du dessous de notre carte]]&lt;br /&gt;
[[Fichier:pcbfinal2_p46.jpg|200px|thumb|center|Vue du dessus de notre carte]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il manque sur la carte finale notre bouton poussoir qui permettait le reset de notre RFduino. Malheureusement en essayant de souder celui-ci, nous avons retiré du cuivre de la carte, ce qui nous empêche de pouvoir faire circuler le courant dans ce bouton. De plus, la piste avec du cuivre manquant était également responsable de l'alimentation de notre accéléromètre ainsi que d'une LED indiquant la mise sous-tension du contrôleur. Pour le rendu final, nous souderons un fil sur la LED pour pouvoir l'alimenter, cependant il serait plus complexe d'alimenter l'accéléromètre. Celui-ci ne fonctionnait déjà pas correctement de manière électrique. La soudure de ce composant demandait une grande précision puisqu'il est de taille minuscule. Nous n'utiliserons donc pas ce composant dans notre montage final.&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;br /&gt;
&lt;br /&gt;
=== Rapport de projet ===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Compte_rendu_projet_final_P46.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Codes et fichiers du projet ===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Optali-master.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Liens vers dépôt GIT ===&lt;br /&gt;
&lt;br /&gt;
* dépôt GIT de l'école : https://archives.plil.fr/ahuet/P46-Aide-anti-gaspillage-alimentaire&lt;br /&gt;
* dépôt GitHub : https://github.com/FrancoisLefevre12/Optali&lt;br /&gt;
&lt;br /&gt;
== Bibliographie ==&lt;br /&gt;
&lt;br /&gt;
* Programmation BLE RFduino : http://www.rfduino.com/wp-content/uploads/2014/03/rfduino.ble_.programming.reference.pdf&lt;br /&gt;
* Programmation BLE Android : https://github.com/lann/RFDuinoTest&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=42258</id>
		<title>IMA4 2016/2017 P46 : Aide anti-gaspillage alimentaire</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=42258"/>
				<updated>2017-05-15T17:03:48Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : /* Avancement du Projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
En France, nous jetons en moyenne 21% des aliments que nous achetons, ce qui représente une perte de 100 à 160 euros par an par habitant. Cela est en partie dû à la date limite de consommation associée à chaque produit. En effet, à partir du moment où cette date sera dépassée le consommateur jettera les produits concernés sans réfléchir, même si ceux-ci peuvent parfois être encore mangeables. Plutôt que d'essayer de les convaincre du contraire, il serait judicieux de proposer aux adeptes du gaspillage une aide permettant de gérer tous les aliments dont ils disposent chez eux afin d'éviter la surprise de tomber sur plusieurs produits périmés lorsqu'ils ouvrent la porte de leur frigo. &lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Ce projet permet d'aider les utilisateurs d'une part à mémoriser les denrées périssables qu'ils disposent dans leur réserve alimentaire et d'autre part d'avertir l'utilisateur qu'un événement important a lieu. Ceci peut être une notification qu'un aliment va bientôt dépasser sa date de péremption, que la porte du frigidaire est restée ouverte ou encore que le nombre d'aliments dans la réserve devient critique et qu'il faudra de nouveau l'alimenter. Enfin, le système aidera l'utilisateur à trouver des idées de repas pouvant permettre de consommer les aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Notre prototype permettra d'éviter le gaspillage alimentaire ainsi que d'aider l'utilisateur dans sa gestion du stockage d'aliments.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
&lt;br /&gt;
Notre système sera composé de 3 éléments. &lt;br /&gt;
&lt;br /&gt;
Premièrement, un ou des smartphones appartenant aux utilisateurs. Ces derniers permettront de scanner grâce à son appareil photo, le code barre du produit ainsi que sa date de péremption. Il servira aussi d'interface utilisateur pour notre système. En effet, c'est par cet outil que l'utilisateur pourra lister tous les aliments que l'utilisateur a dans sa base et tout ça en les triant par date de péremption, ou encore voir les recettes possibles pour consommer des aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Deuxièmement, un serveur, de type Raspberry, qui permettra de stocker la base de donnée contenant les aliments de la réserve. Ce serveur sera connecté par wifi.&lt;br /&gt;
 &lt;br /&gt;
Troisièmement, un contrôleur (Rfduino) qui comportera une LED pour indiquer la mise sous tension du contrôleur, une LED pour prévenir l'utilisateur qu'un aliment va bientôt passer sa date de péremption et une dernière LED pour prévenir l'utilisateur que son niveau de réserve est critique ainsi qu'un buzzer et un accéléromètre pour buzzer quand la porte du frigo est restée trop longtemps ouverte. Ce dernier sera fixé au frigo par l'intermédiaire d'un dispositif adapté qui sera un système aimanté qui se pose sur le frigo.&lt;br /&gt;
&lt;br /&gt;
Nous implémenterons donc une application mobile Android qui fera le lien entre les 2 autres systèmes.&lt;br /&gt;
&lt;br /&gt;
Pour la partie électronique que nous aurons à réaliser, nous utiliserons une Breadboard pour faire des premiers tests puis nous créerons une carte PCB pour notre montage final.&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
On utilisera une Raspberry Pi en guise de serveur pour pouvoir s'occuper du stockage de toutes les données dans notre projet puisque notre contrôleur sera incapable de les contenir, ce n'est d'ailleurs pas son but ici.&lt;br /&gt;
&lt;br /&gt;
Notre smartphone fera donc le lien entre notre base de données et notre système embarqué par l'intermédiaire de l'application mobile.&lt;br /&gt;
&lt;br /&gt;
Nous prendrons ici un RFduino puisque celui-ci nous permet d'ajouter des modules comme bon nous semble afin d'adapter le système aux besoins de notre application. Il est également parfaitement compatible avec les applications Android. De plus, nous avons un Bluetooth directement intégré au RFduino pour s'assurer que les liaisons RFduino-application mobile se fassent correctement. &lt;br /&gt;
On notera également que ce contrôleur consomme peu de courant et ne demande qu'une faible tension d'alimentation, critères importants pour ce genre de projet. C'est la raison principale de son utilisation pour être utilisé comme interface physique sur le frigo, en ajoutant également sa taille réduite comparée à la Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
&lt;br /&gt;
Nous avons donc besoin du matériel suivant :&lt;br /&gt;
&lt;br /&gt;
*Raspberry Pi.&lt;br /&gt;
*Clef wifi&lt;br /&gt;
*RFduino (RFD22102 DIP Board, RFD22121 USB Shield, RFD22126 Dual AAA battery shield).&lt;br /&gt;
*2 piles AAA.&lt;br /&gt;
*3 leds tranversantes.&lt;br /&gt;
*3 Résistances 330 Ohm.&lt;br /&gt;
*1 Résistance 10 kOhm.&lt;br /&gt;
*Un buzzer.&lt;br /&gt;
*Accéléromètre.&lt;br /&gt;
*Aimants&lt;br /&gt;
*Un boîtier permettant d'intégrer la RFduino + fixation sur le frigo (modélisation à voir).&lt;br /&gt;
&lt;br /&gt;
Pour le buzzer, l'accéléromètre et les résistances, nous choisirons des composants CMS pour nous permettre d'avoir une carte plus petite.&lt;br /&gt;
&lt;br /&gt;
===Calendrier prévisionnel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Liste des tâches à effectuer====&lt;br /&gt;
&lt;br /&gt;
* Configurer la Raspberry :&lt;br /&gt;
** Installer et configurer le serveur.&lt;br /&gt;
** Créer le diagramme UML de notre future base de données.&lt;br /&gt;
** Créer la base sur le serveur.&lt;br /&gt;
** Configurer la connexion WiFi.&lt;br /&gt;
&lt;br /&gt;
* Monter et programmer la RFduino :&lt;br /&gt;
** Connecter les différents modules au RFduino (accéléromètre, LEDs, buzzer, Batterie, module Bluetooth).&lt;br /&gt;
** Récupérer les consignes du smartphone grâce au Bluetooth.&lt;br /&gt;
** Programmer le comportement du RFduino en fonction des consignes.&lt;br /&gt;
** Construire le boitier final.&lt;br /&gt;
&lt;br /&gt;
* Implémenter l'application mobile Android :&lt;br /&gt;
** Une première activité permettant de se connecter au RFduino et à la Raspberry.&lt;br /&gt;
** Scanner une date et un code barre.&lt;br /&gt;
** Ajout/suppression d'un aliment dans la base de donnée.&lt;br /&gt;
** Envoi d'une consigne au RFduino.&lt;br /&gt;
** Rendre l'interface utilisateur ergonomique (lister aliments, envoyer vers page de recettes avec l'utilisation des aliments bientôt périmés...).&lt;br /&gt;
&lt;br /&gt;
====Calendrier====&lt;br /&gt;
&lt;br /&gt;
Répartition du temps consacré au projet (120h *2) :&lt;br /&gt;
&lt;br /&gt;
*Partie Raspberry : 60h&lt;br /&gt;
*Partie RFduino : 60h&lt;br /&gt;
*Partie développement mobile : 120h&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
&lt;br /&gt;
===Feuille d'heures===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 !  !! Lundi 16-18h !! Mercredi 14-18h !! Jeudi 8-10h&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 1&lt;br /&gt;
&lt;br /&gt;
 | '''23/01''' :  &lt;br /&gt;
* Installation du logiciel Android Studio pour être prêt à commencer l'application mobile.&lt;br /&gt;
* Création du Repository Git sur GitHub : https://github.com/FrancoisLefevre12/Optali.git&lt;br /&gt;
* Réalisation de différents schémas fonctionnels pour se donner une idée du travail à effectuer, aussi bien du software que du hardware.&lt;br /&gt;
* Quelques précisions supplémentaires apportées sur le cahier des charges.&lt;br /&gt;
* Ajout de liens de référence pour la liste de matériel à acheter.&lt;br /&gt;
&lt;br /&gt;
 | '''25/01''' :  &lt;br /&gt;
* Précision des composants requis (accéléromètre, buzzer, LEDs, résistances).&lt;br /&gt;
* Écriture du montage à la main.&lt;br /&gt;
* Étude du fonctionnement de l'accéléromètre, du buzzer.&lt;br /&gt;
* Écriture de la structure de l'application à la main.&lt;br /&gt;
&lt;br /&gt;
 | '''26/01''' :&lt;br /&gt;
*Réalisation graphique de la première page de l'application.&lt;br /&gt;
*Conception du schéma électrique pour tous les composants connectés au RFduino.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 2&lt;br /&gt;
&lt;br /&gt;
 | '''30/01''' :&lt;br /&gt;
*Réalisation du diagramme UML de la base de données qui sera stockée sur la Raspberry Pi&lt;br /&gt;
*Installation de l'outil de développement mobile sur le second PC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 | '''01/02''' :&lt;br /&gt;
*Nous nous sommes d'abord rendus compte que la résistance entre un des GPIO et l'accéléromètre était inutile, nos premiers calculs étaient erronés. Nous ne la garderons donc pas sur notre schéma électrique final.&lt;br /&gt;
*Avancement sur la partie application mobile : réalisation de la page &amp;quot;Ajout&amp;quot; sur laquelle nous tomberons après avoir cliquer sur &amp;quot;ajout&amp;quot; sur la page principale de l'application. Nous avons étendu l'activité principale jusqu'à cette nouvelle activité &amp;quot;Ajout&amp;quot;.&lt;br /&gt;
*Nous avons récupéré notre Raspberry Pi pour commencer à installer notre base de données dessus. Nous avons actuellement quelques problèmes pour nous connecter sur la Raspberry. Nous travaillons sur ce point.&lt;br /&gt;
&lt;br /&gt;
 | '''02/02''' :&lt;br /&gt;
* Application mobile : Mise en place des LEDs sur la home page et de la zone de notification avec les messages associés.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 3&lt;br /&gt;
&lt;br /&gt;
 | '''06/02''' :&lt;br /&gt;
*Nous arrivons à accéder à la Raspberry via le port série de celle-ci. Nous avons également configuré sa connexion Ethernet afin de pouvoir télécharger des paquets dessus et installer notre base de données. &lt;br /&gt;
*Nous rencontrions des problèmes sur le second PC de travail pour récupérer le projet Optali sur Android Studio via notre dépôt GIT. Nous avons pu rectifier ce souci.&lt;br /&gt;
&lt;br /&gt;
 | '''08/02''' :&lt;br /&gt;
*Tentative d'établissement d'un point d'accès WiFi sur notre Raspberry. Nous n'avons pas réussi pour le moment.&lt;br /&gt;
*Restructuration du Repository git.&lt;br /&gt;
*Essai d'importation de la librairie Zxing qui permettra de décoder les code-barres.&lt;br /&gt;
 |&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 4&lt;br /&gt;
&lt;br /&gt;
 | '''13/02'''&lt;br /&gt;
*Configuration du wifi de la Raspberry. &lt;br /&gt;
*Étude d'une mise en place d'un service web via php.&lt;br /&gt;
&lt;br /&gt;
 | '''15/02'''&lt;br /&gt;
*Mise en place d'un lecteur de caractère sur l'application. On utilisera tesseract.&lt;br /&gt;
*Début de la création du PCB via Altium designer. Création d'une librairie pour l'accéléromètre qui est un composant CMS assez spécial. On pourra cependant utiliser des headers classiques pour le buzzer et les LEDs puisque ce sont des composants traversants.&lt;br /&gt;
*Création des premiers fichiers php de connection à la base de donnée et d'insertion d'aliments. Tous ces fichiers seront déposés de la même manière sur le dépôt git.&lt;br /&gt;
&lt;br /&gt;
 | '''16/02'''&lt;br /&gt;
*Adaptation avec prise en compte des cas du code php d'insertion de produits par requête sur la base de donnée.&lt;br /&gt;
*Ajout du code d'implantation de la base de donnée.&lt;br /&gt;
*Altium: Accéléromètre terminé, mise en place des résistances.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 5 (interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''22/02 (3 heures)'''&lt;br /&gt;
*Installation de l'OS de la raspberry.&lt;br /&gt;
*Installation d'Openssh-server, apache2, php5, iptables, mysql-server, php5-mysql.&lt;br /&gt;
*Redirection des ports du routeur vers la raspberry.&lt;br /&gt;
*Configuration de iptables de la raspberry.&lt;br /&gt;
&lt;br /&gt;
 | '''23/02 (2 heures)'''&lt;br /&gt;
*Implantation de la base de donnée sur la raspberry pi.&lt;br /&gt;
|&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 6&lt;br /&gt;
 | '''27/02'''&lt;br /&gt;
*Vérification de la syntaxe de l'insertion de valeurs dans la base de donnée.&lt;br /&gt;
*Création des premières requêtes sur la base de donnée.&lt;br /&gt;
*Finalisation du PCB de l'Optali Board.&lt;br /&gt;
&lt;br /&gt;
 | '''01/03'''&lt;br /&gt;
*Étude et ajout de la librairie volley pour communiquer avec le serveur.&lt;br /&gt;
*Implantation de la fonction d'envoi de données jusqu'au serveur.&lt;br /&gt;
*Après avoir vu avec un professeur, nous avons remarqué que le routage n'était pas adéquat et la disposition des composants n'était pas optimal. Du travail reste donc encore à effectuer.&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 7&lt;br /&gt;
 | '''06/03'''&lt;br /&gt;
*Correction du fichier post.php&lt;br /&gt;
*Finition du protocole d'ajout d'aliment sur la base de donnée. (Code php et page ajout terminée).&lt;br /&gt;
*PCB terminé.&lt;br /&gt;
*Installation d'arduino IDE, doc arduino collecté.&lt;br /&gt;
&lt;br /&gt;
 | '''08/03'''&lt;br /&gt;
*Implémentation de la page ListeIngredient.xml et de l'activité listActivity.java.&lt;br /&gt;
*Documentation sur la procédure de communication bluetooth entre la Rfduino et l'application mobile.&lt;br /&gt;
*Obtention de librairie en lien avec cela.&lt;br /&gt;
*Prise en main de programmation rfduino.&lt;br /&gt;
&lt;br /&gt;
 | '''09/03'''&lt;br /&gt;
*Nous nous sommes rendus compte qu'il était nécessaire de rajouter un bouton poussoir sur notre montage afin de permettre la réinitialisation de notre RFDuino si nécessaire. Nous devons également faire en sorte de pouvoir poser notre carte PCB directement sur notre RFDuino en utilisant des broches. Nous devons donc rajouter ces éléments-ci.&lt;br /&gt;
*Ecriture de la page get.php&lt;br /&gt;
*Premiers tests sur la ListView de l'activité ListActivity.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 8&lt;br /&gt;
 | '''13/03'''&lt;br /&gt;
*Recherche de pistes concernant la programmation RFDuino. Nous pouvons la détecter en bluetooth via un smartphone Android.&lt;br /&gt;
*Finition du Tablelayout et du code java associé sur la page ListActivity.&lt;br /&gt;
&lt;br /&gt;
 | '''15/03'''&lt;br /&gt;
*Ajout de la JsonArrayRequest dans la page ListActivity.&lt;br /&gt;
*Nous nous sommes rendus compte au moment de programmer la liaison I2C de l'accéléromètre avec la RFDuino que nous avions oublié de mettre des résistances pull-up entre l'alimentation du composant et les broches SDA et SCL. Les modifications ont donc été faites puis nous avons envoyé finalement notre PCB à la fabrication.&lt;br /&gt;
&lt;br /&gt;
 | '''16/03'''&lt;br /&gt;
*Changement de stratégie au niveau de la requête JsonArrayRequest. On récupère toute la base et ensuite le traitement sera effectuer dans l'application mobile.&lt;br /&gt;
*Rédaction de la partie Altium du wiki.&lt;br /&gt;
*Recherche de docs sur le système bluetooth du RFduino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 9&lt;br /&gt;
 | '''20/03'''&lt;br /&gt;
*Réalisation de différents réglages pour pouvoir utiliser l'application Optali sur l'Android phone fourni par notre professeur (LG G4c)&lt;br /&gt;
*Recherche de docs concernant la partie java responsable de la communication Bluetooth.&lt;br /&gt;
*Reprise de la solution Tesseract pour la lecture de caractères.&lt;br /&gt;
&lt;br /&gt;
 | '''21/03''' (séance supplémentaire de 3 heures)&lt;br /&gt;
*Début du développement de la partie communication entre RFDuino et l'appli mobile. Nous pouvons détecter le RFduino à partir de Android Studio mais nous n'arrivons pas encore à nous connecter dessus directement.&lt;br /&gt;
*Finition de la fonctionnalité tesseract. La lecture de caractères est donc maintenant possible.&lt;br /&gt;
&lt;br /&gt;
 | '''22/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity&lt;br /&gt;
*Connexion possible entre le RFduino et notre appli mobile. Il faut maintenant pouvoir assurer un échange de données via du GATT.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 10&lt;br /&gt;
 | '''27/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity (suite). Utilisation de la solution postman.&lt;br /&gt;
*Mise à jour du wiki pour la partie Altium.&lt;br /&gt;
*Gestion du dépôt git.&lt;br /&gt;
*Récupération de la carte PCB au service EEI.&lt;br /&gt;
&lt;br /&gt;
 | '''29/03'''&lt;br /&gt;
*Mise en place du tri des Produits avec un critère d'ordonnabilité variable&lt;br /&gt;
*Implémentation du champs recherche et action sur la liste&lt;br /&gt;
*Écriture des pages Php consume.php et delete.php pour décrémenter le nombre d'aliment dans le frigo ou le supprimer&lt;br /&gt;
*Récupération des composants&lt;br /&gt;
*Passage au four pour souder les premiers composants en CMS&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 11&lt;br /&gt;
&lt;br /&gt;
 | '''03/04'''&lt;br /&gt;
*Dé-soudage et resoudage de l'accéléromètre.&lt;br /&gt;
*Soudure des composants&lt;br /&gt;
&lt;br /&gt;
 | '''05/04'''&lt;br /&gt;
*Test du Buzzer&lt;br /&gt;
*Code de l'accéléromètre&lt;br /&gt;
*Création de l'Optali box (la boite qui contient le RFduino fixé au frigo)&lt;br /&gt;
*Finition de la fonction 'delete'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 | '''06/04'''&lt;br /&gt;
*Problème pour faire fonctionner le code de l'accéléro. Il faudra le tester électriquement.&lt;br /&gt;
*Implantation du logo de l'appli &lt;br /&gt;
*Debuggage d'une requête de la page 'list'&lt;br /&gt;
*Documentation sur les listes déroulantes sous les EditTexts.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 12 (Interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''11/04''' (3 heures)&lt;br /&gt;
*Après avoir remarqué que le code de l'accéléro ne fonctionnait pas alors qu'il paraît correct, nous avons décidez de vérifier les propriétés électriques de notre montage.&lt;br /&gt;
En observant à l'analyseur logique, il semblerait que l'horloge de la liaison i2C n'est en fait qu'un signal bruité. Il faudra donc retenter de souder le composant quand cela sera possible.&lt;br /&gt;
&lt;br /&gt;
 | '''13/04''' (6 heures)&lt;br /&gt;
*Terminaison du programme RFduino qui fonctionne théoriquement, nous attendons de terminer les dernières soudures pour pouvoir le tester physiquement.&lt;br /&gt;
*En attendant de pouvoir réaliser des soudures, nous avons repris la partie communication bluetooth entre le RFduino et l'appli. Après avoir tenté d'utiliser un programme permettant de gérer le protocole GATT sans savoir envoyer ou recevoir de données, nous nous sommes orientés sur une communication plus basique basée sur de nombreux exemples que l'on peut voir sur le web.&lt;br /&gt;
&lt;br /&gt;
 | '''15/04''' (6 heures)&lt;br /&gt;
*Après s'être rendu compte que la communication plus &amp;quot;basique&amp;quot; que nous voulions utiliser n'était pas compatible avec le BLE, nous sommes une fois de plus repartis de zéro pour cette partie.&lt;br /&gt;
*Après quelques recherches, nous avons trouvé un programme réalisant la gestion d'un socket BLE sur le principe du protocole GATT. Grâce à celui-ci, il nous est possible de recevoir et d'envoyer des données via BLE sur RFduino ainsi que sur l'appli mobile.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 13 (Interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''17/04 (4 heures)'''&lt;br /&gt;
*Ajout du singleton Etat pour partager l'état des aliments dans la réserve alimentaire&lt;br /&gt;
*Transfert des requêtes de la base de donnée vers le singleton pour optimiser l'actualisation et le partage des données.&lt;br /&gt;
*Actualisation automatique des données sur la page principale.&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Semaine 14&lt;br /&gt;
| '''24/04'''&lt;br /&gt;
*Modification de la présentation du wiki&lt;br /&gt;
*Modification de la fonctionnalité du bouton actualiser en changement d'activité&lt;br /&gt;
&lt;br /&gt;
| '''26/04'''&lt;br /&gt;
*Ajout de la page liste recette&lt;br /&gt;
&lt;br /&gt;
| '''27/04''' (3 heures)&lt;br /&gt;
*Ajout des listes recettes dans ListeRecette&lt;br /&gt;
*Ajout des requêtes des recettes sur ListeRecette.java&lt;br /&gt;
*Création du fichier listeRecette.php sur le serveur pour faire la requête SQL et envoyer sur l'application.&lt;br /&gt;
*Soudure des derniers composants pour terminer le PCB. Tout est soudé sauf le bouton poussoir qui devait permettre un reset du RFduino. En cherchant d'ailleurs à souder ce bouton, nous avons retiré malencontreusement la piste de cuivre permettant de répartir le 3.3V du RFduino sur notre PCB. Notre accéléromètre qui ne marchait déjà pas vraiment n'est plus alimenté. Nous ferons sans notre accéléromètre pour le rendu final. &lt;br /&gt;
|-&lt;br /&gt;
|Semaine 15&lt;br /&gt;
|'''02/05'''&lt;br /&gt;
*Réalisation de la vidéo de présentation du projet avec Laurent Engels.&lt;br /&gt;
|'''03/05'''&lt;br /&gt;
*Remplacement de la LED &amp;quot;LED_Perim&amp;quot; qui était défaillante et ne s'allumait pas quand il le fallait.&lt;br /&gt;
*Début de la réalisation du rapport de projet.&lt;br /&gt;
|'''04/05'''&lt;br /&gt;
*Débuggage de la &amp;quot;LED_Perim&amp;quot;. Le problème n'était donc pas électrique mais bien au niveau software. Il existait un conflit entre l'allumage de cette LED et la pin TX de la liaison série qui était défini sur la même broche.&lt;br /&gt;
*Débuggage de l'appli pour éviter les quelques plantages que l'on peut avoir parfois.&lt;br /&gt;
|-&lt;br /&gt;
|Semaine 16&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===Premières idées===&lt;br /&gt;
&lt;br /&gt;
Voici les premières idées de l'application mobile et du composant fixé sur le frigo.&lt;br /&gt;
[[Fichier:Optali_v1.jpg|400px|thumb|left|Optali version 1]]&lt;br /&gt;
[[Fichier:OptaliBox_v1.jpg|400px|thumb|center|OptaliBox version 1]]&lt;br /&gt;
[[Fichier:P46_schema.jpg|400px|thumb|center|Schéma électrique version 1]]&lt;br /&gt;
&lt;br /&gt;
En s'intéressant aux différentes datasheets ou données constructeur des composants que nous voulons utiliser, nous trouvons indispensable d'utiliser des résistances de 330 Ohms pour l'utilisation des LEDs, pour éviter de les griller.&lt;br /&gt;
&lt;br /&gt;
Edit : Retrait de la résistance R2.&lt;br /&gt;
&lt;br /&gt;
Concernant l'accéléromètre, nous avons choisi un modèle qui nous permet de brancher directement ce module sur une broche du RFDuino. On branchera directement les GPIOs de la RFduino sur les ports SDA et SCL de l'accéléromètre qui correspondent à l'interface I2C pour pouvoir communiquer. On utilisera aussi la broche INT1 pour pouvoir générer des interruptions directement depuis l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
On connectera le buzzer directement à une broche de la RFduino aussi. Concernant celui-ci il reste une incertitude puisqu'on ne trouve aucune information sur le courant à fournir pour l'alimentation de ce composant sur sa datasheet. Après différentes recherches sur Internet, il pourrait être nécessaire d'utiliser un montage amplificateur à transistor comme un émetteur commun pour booster le courant en sortie d'une broche GPIO. Quelques buzzers trouvés avec des données constructeur montrent que ce type de composant nécessite généralement un courant d'environ 30 mA. Nous verrons dans la pratique si cela sera vraiment nécessaire. Par sécurité, on ajoutera un transistor bipolaire dans la liste de matériel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:screen_LED.png|400px|thumb|left|Données constructeur pour LEDs]]&lt;br /&gt;
[[Fichier:screen_accel.png|400px|thumb|center|Datasheet de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
====Configuration école====&lt;br /&gt;
&lt;br /&gt;
*Pour configurer notre Raspberry Pi, nous utilisons son port série et &amp;quot;minicom&amp;quot;. Pour pouvoir télécharger des paquets, il fallait la connecter au réseau. Nous lui avons donc affecté une adresse IP fixe avec le fichier /etc/network/interfaces. Voici les modifications qui ont été apportées : &lt;br /&gt;
&lt;br /&gt;
   auto eth0&lt;br /&gt;
   iface eth0 inet static&lt;br /&gt;
   address 172.26.78.15&lt;br /&gt;
   netmask 255.255.240.0&lt;br /&gt;
   gateway 172.26.79.254&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il a également fallu ajouter la commande &amp;quot;export http_proxy=http://proxy.polytech-lille.fr:3128&amp;quot; (il faudra effectuer cette commande à chaque démarrage de la Pi) pour pouvoir utiliser le proxy de l'école. &lt;br /&gt;
Nous avons de plus modifier le fichier /etc/resolv.conf avec la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
   nameserver 193.48.57.34&lt;br /&gt;
&lt;br /&gt;
Malgré cela, nous avions des soucis pour nous connecter au réseau. Il y avait en fait un processus dhcp en tâche de fond qui nous empêchait de garder le contenu de resolv.conf. Il a donc fallu trouver ce processus pour le &amp;quot;kill&amp;quot; et pouvoir accéder correctement au réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons du coup pu installer postgresql pour pouvoir configurer une base de données sur notre Pi.&lt;br /&gt;
&lt;br /&gt;
====Configuration à domicile====&lt;br /&gt;
&lt;br /&gt;
Pour nous mettre dans une situation plus fidèle à notre projet, nous avons configuré la raspberry à domicile.&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abords installé Raspbian, puis installé les paquets nécessaire au fonctionnement du serveur.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Openssh-server''': permettre d'accès à distance à la raspberry pour pouvoir y accéder depuis l'école.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Iptables''': pour sécuriser les ports non utilisé et libérer l'accès aux ports qui nous intéressent (ssh 22,http 80,https 443).&amp;lt;br&amp;gt;&lt;br /&gt;
- '''apache2, php5, mysql-server''' : pour mettre en place notre service web.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons rediriger les ports 80 et 22 du routeur pour pouvoir accéder à la raspberry de l'extérieur.&lt;br /&gt;
&lt;br /&gt;
Pour finir, nous avons créer un fichier de config iptables permettant de sécuriser un minimum la base de donnée et de permettre d'autoriser la communication des ports 22, 80 et 443 correspondants aux ports ssh, http et https. le fichier de configuration a été déposé dans le dépôt git. Il nous a fallut le rendre exécutable via un chmod. Puis pour l'exécuter à chaque démarrage du system, dans le fichier /etc/init.d/ taper : &lt;br /&gt;
&lt;br /&gt;
    sudo update-rc.d firewall defaults (si notrefichier s'appelle firewall et s'il est dans init.d)&lt;br /&gt;
&lt;br /&gt;
===Base de donnée===&lt;br /&gt;
&lt;br /&gt;
Nos données alimentaires disponibles par toute la famille doivent être stocké sur un serveur de base de donnée externe (tel une Raspberry pi). Nous nous proposons de créer le diagramme UML représentant cette future base de donnée.&lt;br /&gt;
[[Fichier:Optali_UML.jpg|700px|thumb|center|Diagramme UML base de donnée]]&lt;br /&gt;
&lt;br /&gt;
On créera donc 3 entités. Date, Product et Recipe. &lt;br /&gt;
&lt;br /&gt;
- Product rassemble les aliments qui sont ou ont été dans la réserve alimentaire. NbProdIn permet de connaître le nombre de produits identiques (possibilité de date différentes mais pas de doublons et on garde l'information de quantité. NbProdBought donne une information sur le nombre de produits identique ayant été acheté depuis la mise en service de la base de donnée. Ainsi nous pourrons par la suite proposer une liste de course à l'utilisateur en fonction de la fréquence d'achat des produits.&lt;br /&gt;
&lt;br /&gt;
- Recipe contient les recettes que pourra rentrer l'utilisateur sur l'application. L'utilisateur pourra ainsi se voir proposer des recettes en fonction de ce qu'il a dans son frigo et de ses recettes personnelles.&lt;br /&gt;
&lt;br /&gt;
'''''Edit : On ajoutera une valeur entière dans les tables Date et Unity pour gérer le cas où il existe plusieurs produits (différents ou identiques) avec une date de péremption équivalente. On les appellera NbDate la valeur dans la table Date et NbUnity dans la table Unity. On leur ajoutera de même une clef primaire IdUnity et IdListProduct'''''&lt;br /&gt;
&lt;br /&gt;
On utilisera MySql pour la gestion de nos bases de données. &lt;br /&gt;
La syntaxe pour l'implanter dans la base de donnée à été jointe au dépôt git.&lt;br /&gt;
&lt;br /&gt;
Pour lancer my SQL, on tapera:&lt;br /&gt;
&lt;br /&gt;
   mysql -h localhost -u root -p&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Web service===&lt;br /&gt;
&lt;br /&gt;
====Page init.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet d'initier l'accès à la base de donnée sur le serveur. Elle est requise pour les pages qui suivent.&lt;br /&gt;
&lt;br /&gt;
====Page post.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet l'insertion d'un produit et d'une date via l'application mobile. Elle prend donc ces deux arguments et les insère dans les tables Unity, Product et Date.&lt;br /&gt;
&lt;br /&gt;
====Page get.php====&lt;br /&gt;
&lt;br /&gt;
Page qui envoie la liste des aliments avec leur nom, leur date, leur quantité dans le frigo, la quantité d'exemplaires acheté en tout depuis la mise en place de l'appareil. Le tri se fera directement dans l'application mobile. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Application Mobile===&lt;br /&gt;
&lt;br /&gt;
====Home page====&lt;br /&gt;
&lt;br /&gt;
Page d'accueil permettant d'accéder aux pages d'ajout et de liste des produits disponibles. &amp;lt;br&amp;gt;&lt;br /&gt;
La page permet aussi d'effectuer la connexion entre la rfduino et l'application mobile. Elle montre les alertes (signaux) à l'utilisateur &lt;br /&gt;
et écrit leur signification.&lt;br /&gt;
&lt;br /&gt;
====Page d'ajout====&lt;br /&gt;
&lt;br /&gt;
Pour ajouter un produit et lire une date on utilisera un champ editText pour permettre à l'utilisateur d'écrire &amp;quot;Manuellement&amp;quot; dedans grâce au clavier du smartphone.&amp;lt;br&amp;gt;&lt;br /&gt;
De plus on utilise un bouton qui appellera la caméra pour détecter les caractères d'un produit ou d'une date. Au début nous voulions utiliser un détecteur de code barre, nous l'avons implémenté mais nous avons remarqué que la mise au point sur une surface non plane prend du temps d'autant plus qu'il faut questionner une base de donnée contenant tous les numéro de codes barres utilisés. Nous avons donc prit la décision d'utiliser uniquement la lecture de caractère et nous créerons une liste déroulante sous l'editText pour faciliter l'insertion d'un produit qui a déjà été ajouté. Pour la lecture de caractère, nous utilisons la librairie tesseract.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'envoi, nous utilisons la librairie Volley développé par google.&lt;br /&gt;
&lt;br /&gt;
====Page Liste====&lt;br /&gt;
&lt;br /&gt;
Permet de lister les produits dans la base de donnée. Une série de boutons radio permettent de trier les produits par ordre alphabétique, par date de péremption, par nombre d’occurrence dans la réserve alimentaire, par nombre d'achat depuis la mise en place du système.&amp;lt;br&amp;gt;&lt;br /&gt;
Une colonne permet de sélectionner les aliments désirés (par checkBox) pour ensuite les supprimer via un button &amp;quot;suppr&amp;quot; ou les choisir pour trouver des recettes qui les utilisent.&amp;lt;br&amp;gt;&lt;br /&gt;
Un EditText permet d'effectuer une recherche sur la base de donnée.&lt;br /&gt;
&lt;br /&gt;
===Altium Designer===&lt;br /&gt;
&lt;br /&gt;
Pour permettre au RFDuino de communiquer avec les différents composants, nous aurons besoin de quelques composants électroniques. Afin que cela soit plus esthétique pour la modélisation finale, nous allons créer une carte PCB pour rassembler tous ces composants dessus. On utilisera le logiciel Altium Designer pour cela.&lt;br /&gt;
&lt;br /&gt;
Avant de représenter notre circuit général, nous allons commencer par créer une librairie rassemblant tous les composants que nous utiliserons par la suite, en particulier nos composants CMS (accéléromètre et résistances). Pour ce qui est des LEDs et du buzzer, qui sont traversants, nous pourrons utiliser des headers classiques.&lt;br /&gt;
&lt;br /&gt;
Il a donc fallu créer le schematic ainsi que l'empreinte de nos composants CMS. Voici un exemple avec notre accéléromètre :&lt;br /&gt;
[[Fichier:Accelerosch.PNG|500px|thumb|left|Schematic de l'accéléromètre]]&lt;br /&gt;
[[Fichier:Acceleropcb.PNG|500px|thumb|center|Empreinte PCB de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les fichiers Altium sont disponibles sur notre dépôt GIT. Après cela, nous pouvons maintenant construire notre schematic du montage entier et ensuite le fichier PCB afin de pouvoir graver notre circuit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après quelques modifications sur le montage prévu initialement, c'est-à-dire en enlevant une résistance entre un GPIO et l'alimentation de l'accéléromètre ainsi qu'en rajoutant des résistances pull-up sur les broches de notre liaison i2C (SDA et SCL) et un bouton poussoir en plus pour permettre un reset du RFDuino, nous avons pu créer notre schematic global pour en faire un PCB et l'exporter au format Gerber. De ce fait, le service EEI de Polytech pourra réaliser la gravure de notre carte PCB.&lt;br /&gt;
&lt;br /&gt;
Voici quelques photos pour illustrer notre projet sur Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Finalproto_sch.PNG|400px|thumb|left|Schematic du montage final]]&lt;br /&gt;
[[Fichier:Finalproto_pcb.PNG|400px|thumb|center|PCB du montage final]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On retrouve sur notre PCB final les headers, respectivement de 8 et 5 pins, de part et d'autre de la carte, qui représentent le RFDuino, où nous souderons des broches pour qu'elles puissent être intégrées au RFDuino. On note la présence de 5 autres headers de 2 pins, dont 3 pour des LEDs puis les 2 autres pour le buzzer et le bouton poussoir. Ce qui reste sont les composants CMS avec plusieurs composants à 2 pattes qui sont toutes les résistances de notre montage, celles de protection pour les LEDs et les pull-ups pour l'accéléromètre. Le dernier composant à 8 pattes est donc bien l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quelques difficultés ont été rencontrées durant ce travail notamment concernant les contraintes de construction sur le PCB final. En effet, les composants CMS choisis (surtout l'accéléromètre) étant parfois très petits, Altium n'accepte pas forcément le faible espacement entre les différentes pattes des composants, ce qui pose problème lors de la compilation. De plus, le plan de masse ne prenait pas en compte tous les éléments devant être rattachés à la masse. Il a fallu légèrement déplacer les headers représentant le RFDuino pour que cela soit possible. Il faudra alors peut-être légèrement plier les broches qui viendront s'intégrer sur le RFDuino pour ajouter notre PCB sur le RFDuino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons envoyé nos fichiers Altium au service EEI afin qu'il puisse réaliser physiquement notre carte. Nous nous retrouvons donc avec notre carte PCB récupérée auprès du service EEI. Voici le rendu :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:P46_carte.jpg|400px|thumb|center|Fabrication de notre carte PCB]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir souder nos différents composants, nous avons été rendre visite à Thierry Flamen, responsable du service EEI, afin de passer nos composants CMS au four (résistances et accéléromètre). En effet il était presque impossible de souder tous ces composants manuellement. Après ce passage au four, il nous restait les composants traversants à souder, c'est-à-dire les pins, les LEDs et notre buzzer. Voici le rendu après nos soudures :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:pcbfinal1_p46.jpg|200px|thumb|left|Vue du dessous de notre carte]]&lt;br /&gt;
[[Fichier:pcbfinal2_p46.jpg|200px|thumb|center|Vue du dessus de notre carte]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il manque sur la carte finale notre bouton poussoir qui permettait le reset de notre RFduino. Malheureusement en essayant de souder celui-ci, nous avons retiré du cuivre de la carte, ce qui nous empêche de pouvoir faire circuler le courant dans ce bouton. De plus, la piste avec du cuivre manquant était également responsable de l'alimentation de notre accéléromètre ainsi que d'une LED indiquant la mise sous-tension du contrôleur. Pour le rendu final, nous souderons un fil sur la LED pour pouvoir l'alimenter, cependant il serait plus complexe d'alimenter l'accéléromètre. Celui-ci ne fonctionnait déjà pas correctement de manière électrique. La soudure de ce composant demandait une grande précision puisqu'il est de taille minuscule. Nous n'utiliserons donc pas ce composant dans notre montage final.&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;br /&gt;
&lt;br /&gt;
=== Rapport de projet ===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Compte_rendu_projet_final_P46.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Codes et fichiers du projet ===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Optali-master.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Liens vers dépôt GIT ===&lt;br /&gt;
&lt;br /&gt;
* dépôt GIT de l'école : https://archives.plil.fr/ahuet/P46-Aide-anti-gaspillage-alimentaire&lt;br /&gt;
* dépôt GitHub : https://github.com/FrancoisLefevre12/Optali&lt;br /&gt;
&lt;br /&gt;
== Bibliographie ==&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=42257</id>
		<title>IMA4 2016/2017 P46 : Aide anti-gaspillage alimentaire</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=42257"/>
				<updated>2017-05-15T17:02:41Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : /* Codes et fichiers du projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
En France, nous jetons en moyenne 21% des aliments que nous achetons, ce qui représente une perte de 100 à 160 euros par an par habitant. Cela est en partie dû à la date limite de consommation associée à chaque produit. En effet, à partir du moment où cette date sera dépassée le consommateur jettera les produits concernés sans réfléchir, même si ceux-ci peuvent parfois être encore mangeables. Plutôt que d'essayer de les convaincre du contraire, il serait judicieux de proposer aux adeptes du gaspillage une aide permettant de gérer tous les aliments dont ils disposent chez eux afin d'éviter la surprise de tomber sur plusieurs produits périmés lorsqu'ils ouvrent la porte de leur frigo. &lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Ce projet permet d'aider les utilisateurs d'une part à mémoriser les denrées périssables qu'ils disposent dans leur réserve alimentaire et d'autre part d'avertir l'utilisateur qu'un événement important a lieu. Ceci peut être une notification qu'un aliment va bientôt dépasser sa date de péremption, que la porte du frigidaire est restée ouverte ou encore que le nombre d'aliments dans la réserve devient critique et qu'il faudra de nouveau l'alimenter. Enfin, le système aidera l'utilisateur à trouver des idées de repas pouvant permettre de consommer les aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Notre prototype permettra d'éviter le gaspillage alimentaire ainsi que d'aider l'utilisateur dans sa gestion du stockage d'aliments.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
&lt;br /&gt;
Notre système sera composé de 3 éléments. &lt;br /&gt;
&lt;br /&gt;
Premièrement, un ou des smartphones appartenant aux utilisateurs. Ces derniers permettront de scanner grâce à son appareil photo, le code barre du produit ainsi que sa date de péremption. Il servira aussi d'interface utilisateur pour notre système. En effet, c'est par cet outil que l'utilisateur pourra lister tous les aliments que l'utilisateur a dans sa base et tout ça en les triant par date de péremption, ou encore voir les recettes possibles pour consommer des aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Deuxièmement, un serveur, de type Raspberry, qui permettra de stocker la base de donnée contenant les aliments de la réserve. Ce serveur sera connecté par wifi.&lt;br /&gt;
 &lt;br /&gt;
Troisièmement, un contrôleur (Rfduino) qui comportera une LED pour indiquer la mise sous tension du contrôleur, une LED pour prévenir l'utilisateur qu'un aliment va bientôt passer sa date de péremption et une dernière LED pour prévenir l'utilisateur que son niveau de réserve est critique ainsi qu'un buzzer et un accéléromètre pour buzzer quand la porte du frigo est restée trop longtemps ouverte. Ce dernier sera fixé au frigo par l'intermédiaire d'un dispositif adapté qui sera un système aimanté qui se pose sur le frigo.&lt;br /&gt;
&lt;br /&gt;
Nous implémenterons donc une application mobile Android qui fera le lien entre les 2 autres systèmes.&lt;br /&gt;
&lt;br /&gt;
Pour la partie électronique que nous aurons à réaliser, nous utiliserons une Breadboard pour faire des premiers tests puis nous créerons une carte PCB pour notre montage final.&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
On utilisera une Raspberry Pi en guise de serveur pour pouvoir s'occuper du stockage de toutes les données dans notre projet puisque notre contrôleur sera incapable de les contenir, ce n'est d'ailleurs pas son but ici.&lt;br /&gt;
&lt;br /&gt;
Notre smartphone fera donc le lien entre notre base de données et notre système embarqué par l'intermédiaire de l'application mobile.&lt;br /&gt;
&lt;br /&gt;
Nous prendrons ici un RFduino puisque celui-ci nous permet d'ajouter des modules comme bon nous semble afin d'adapter le système aux besoins de notre application. Il est également parfaitement compatible avec les applications Android. De plus, nous avons un Bluetooth directement intégré au RFduino pour s'assurer que les liaisons RFduino-application mobile se fassent correctement. &lt;br /&gt;
On notera également que ce contrôleur consomme peu de courant et ne demande qu'une faible tension d'alimentation, critères importants pour ce genre de projet. C'est la raison principale de son utilisation pour être utilisé comme interface physique sur le frigo, en ajoutant également sa taille réduite comparée à la Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
&lt;br /&gt;
Nous avons donc besoin du matériel suivant :&lt;br /&gt;
&lt;br /&gt;
*Raspberry Pi.&lt;br /&gt;
*Clef wifi&lt;br /&gt;
*RFduino (RFD22102 DIP Board, RFD22121 USB Shield, RFD22126 Dual AAA battery shield).&lt;br /&gt;
*2 piles AAA.&lt;br /&gt;
*3 leds tranversantes.&lt;br /&gt;
*3 Résistances 330 Ohm.&lt;br /&gt;
*1 Résistance 10 kOhm.&lt;br /&gt;
*Un buzzer.&lt;br /&gt;
*Accéléromètre.&lt;br /&gt;
*Aimants&lt;br /&gt;
*Un boîtier permettant d'intégrer la RFduino + fixation sur le frigo (modélisation à voir).&lt;br /&gt;
&lt;br /&gt;
Pour le buzzer, l'accéléromètre et les résistances, nous choisirons des composants CMS pour nous permettre d'avoir une carte plus petite.&lt;br /&gt;
&lt;br /&gt;
===Calendrier prévisionnel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Liste des tâches à effectuer====&lt;br /&gt;
&lt;br /&gt;
* Configurer la Raspberry :&lt;br /&gt;
** Installer et configurer le serveur.&lt;br /&gt;
** Créer le diagramme UML de notre future base de données.&lt;br /&gt;
** Créer la base sur le serveur.&lt;br /&gt;
** Configurer la connexion WiFi.&lt;br /&gt;
&lt;br /&gt;
* Monter et programmer la RFduino :&lt;br /&gt;
** Connecter les différents modules au RFduino (accéléromètre, LEDs, buzzer, Batterie, module Bluetooth).&lt;br /&gt;
** Récupérer les consignes du smartphone grâce au Bluetooth.&lt;br /&gt;
** Programmer le comportement du RFduino en fonction des consignes.&lt;br /&gt;
** Construire le boitier final.&lt;br /&gt;
&lt;br /&gt;
* Implémenter l'application mobile Android :&lt;br /&gt;
** Une première activité permettant de se connecter au RFduino et à la Raspberry.&lt;br /&gt;
** Scanner une date et un code barre.&lt;br /&gt;
** Ajout/suppression d'un aliment dans la base de donnée.&lt;br /&gt;
** Envoi d'une consigne au RFduino.&lt;br /&gt;
** Rendre l'interface utilisateur ergonomique (lister aliments, envoyer vers page de recettes avec l'utilisation des aliments bientôt périmés...).&lt;br /&gt;
&lt;br /&gt;
====Calendrier====&lt;br /&gt;
&lt;br /&gt;
Répartition du temps consacré au projet (120h *2) :&lt;br /&gt;
&lt;br /&gt;
*Partie Raspberry : 60h&lt;br /&gt;
*Partie RFduino : 60h&lt;br /&gt;
*Partie développement mobile : 120h&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
&lt;br /&gt;
===Feuille d'heures===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 !  !! Lundi 16-18h !! Mercredi 14-18h !! Jeudi 8-10h&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 1&lt;br /&gt;
&lt;br /&gt;
 | '''23/01''' :  &lt;br /&gt;
* Installation du logiciel Android Studio pour être prêt à commencer l'application mobile.&lt;br /&gt;
* Création du Repository Git sur GitHub : https://github.com/FrancoisLefevre12/Optali.git&lt;br /&gt;
* Réalisation de différents schémas fonctionnels pour se donner une idée du travail à effectuer, aussi bien du software que du hardware.&lt;br /&gt;
* Quelques précisions supplémentaires apportées sur le cahier des charges.&lt;br /&gt;
* Ajout de liens de référence pour la liste de matériel à acheter.&lt;br /&gt;
&lt;br /&gt;
 | '''25/01''' :  &lt;br /&gt;
* Précision des composants requis (accéléromètre, buzzer, LEDs, résistances).&lt;br /&gt;
* Écriture du montage à la main.&lt;br /&gt;
* Étude du fonctionnement de l'accéléromètre, du buzzer.&lt;br /&gt;
* Écriture de la structure de l'application à la main.&lt;br /&gt;
&lt;br /&gt;
 | '''26/01''' :&lt;br /&gt;
*Réalisation graphique de la première page de l'application.&lt;br /&gt;
*Conception du schéma électrique pour tous les composants connectés au RFduino.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 2&lt;br /&gt;
&lt;br /&gt;
 | '''30/01''' :&lt;br /&gt;
*Réalisation du diagramme UML de la base de données qui sera stockée sur la Raspberry Pi&lt;br /&gt;
*Installation de l'outil de développement mobile sur le second PC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 | '''01/02''' :&lt;br /&gt;
*Nous nous sommes d'abord rendus compte que la résistance entre un des GPIO et l'accéléromètre était inutile, nos premiers calculs étaient erronés. Nous ne la garderons donc pas sur notre schéma électrique final.&lt;br /&gt;
*Avancement sur la partie application mobile : réalisation de la page &amp;quot;Ajout&amp;quot; sur laquelle nous tomberons après avoir cliquer sur &amp;quot;ajout&amp;quot; sur la page principale de l'application. Nous avons étendu l'activité principale jusqu'à cette nouvelle activité &amp;quot;Ajout&amp;quot;.&lt;br /&gt;
*Nous avons récupéré notre Raspberry Pi pour commencer à installer notre base de données dessus. Nous avons actuellement quelques problèmes pour nous connecter sur la Raspberry. Nous travaillons sur ce point.&lt;br /&gt;
&lt;br /&gt;
 | '''02/02''' :&lt;br /&gt;
* Application mobile : Mise en place des LEDs sur la home page et de la zone de notification avec les messages associés.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 3&lt;br /&gt;
&lt;br /&gt;
 | '''06/02''' :&lt;br /&gt;
*Nous arrivons à accéder à la Raspberry via le port série de celle-ci. Nous avons également configuré sa connexion Ethernet afin de pouvoir télécharger des paquets dessus et installer notre base de données. &lt;br /&gt;
*Nous rencontrions des problèmes sur le second PC de travail pour récupérer le projet Optali sur Android Studio via notre dépôt GIT. Nous avons pu rectifier ce souci.&lt;br /&gt;
&lt;br /&gt;
 | '''08/02''' :&lt;br /&gt;
*Tentative d'établissement d'un point d'accès WiFi sur notre Raspberry. Nous n'avons pas réussi pour le moment.&lt;br /&gt;
*Restructuration du Repository git.&lt;br /&gt;
*Essai d'importation de la librairie Zxing qui permettra de décoder les code-barres.&lt;br /&gt;
 |&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 4&lt;br /&gt;
&lt;br /&gt;
 | '''13/02'''&lt;br /&gt;
*Configuration du wifi de la Raspberry. &lt;br /&gt;
*Étude d'une mise en place d'un service web via php.&lt;br /&gt;
&lt;br /&gt;
 | '''15/02'''&lt;br /&gt;
*Mise en place d'un lecteur de caractère sur l'application. On utilisera tesseract.&lt;br /&gt;
*Début de la création du PCB via Altium designer. Création d'une librairie pour l'accéléromètre qui est un composant CMS assez spécial. On pourra cependant utiliser des headers classiques pour le buzzer et les LEDs puisque ce sont des composants traversants.&lt;br /&gt;
*Création des premiers fichiers php de connection à la base de donnée et d'insertion d'aliments. Tous ces fichiers seront déposés de la même manière sur le dépôt git.&lt;br /&gt;
&lt;br /&gt;
 | '''16/02'''&lt;br /&gt;
*Adaptation avec prise en compte des cas du code php d'insertion de produits par requête sur la base de donnée.&lt;br /&gt;
*Ajout du code d'implantation de la base de donnée.&lt;br /&gt;
*Altium: Accéléromètre terminé, mise en place des résistances.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 5 (interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''22/02 (3 heures)'''&lt;br /&gt;
*Installation de l'OS de la raspberry.&lt;br /&gt;
*Installation d'Openssh-server, apache2, php5, iptables, mysql-server, php5-mysql.&lt;br /&gt;
*Redirection des ports du routeur vers la raspberry.&lt;br /&gt;
*Configuration de iptables de la raspberry.&lt;br /&gt;
&lt;br /&gt;
 | '''23/02 (2 heures)'''&lt;br /&gt;
*Implantation de la base de donnée sur la raspberry pi.&lt;br /&gt;
|&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 6&lt;br /&gt;
 | '''27/02'''&lt;br /&gt;
*Vérification de la syntaxe de l'insertion de valeurs dans la base de donnée.&lt;br /&gt;
*Création des premières requêtes sur la base de donnée.&lt;br /&gt;
*Finalisation du PCB de l'Optali Board.&lt;br /&gt;
&lt;br /&gt;
 | '''01/03'''&lt;br /&gt;
*Étude et ajout de la librairie volley pour communiquer avec le serveur.&lt;br /&gt;
*Implantation de la fonction d'envoi de données jusqu'au serveur.&lt;br /&gt;
*Après avoir vu avec un professeur, nous avons remarqué que le routage n'était pas adéquat et la disposition des composants n'était pas optimal. Du travail reste donc encore à effectuer.&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 7&lt;br /&gt;
 | '''06/03'''&lt;br /&gt;
*Correction du fichier post.php&lt;br /&gt;
*Finition du protocole d'ajout d'aliment sur la base de donnée. (Code php et page ajout terminée).&lt;br /&gt;
*PCB terminé.&lt;br /&gt;
*Installation d'arduino IDE, doc arduino collecté.&lt;br /&gt;
&lt;br /&gt;
 | '''08/03'''&lt;br /&gt;
*Implémentation de la page ListeIngredient.xml et de l'activité listActivity.java.&lt;br /&gt;
*Documentation sur la procédure de communication bluetooth entre la Rfduino et l'application mobile.&lt;br /&gt;
*Obtention de librairie en lien avec cela.&lt;br /&gt;
*Prise en main de programmation rfduino.&lt;br /&gt;
&lt;br /&gt;
 | '''09/03'''&lt;br /&gt;
*Nous nous sommes rendus compte qu'il était nécessaire de rajouter un bouton poussoir sur notre montage afin de permettre la réinitialisation de notre RFDuino si nécessaire. Nous devons également faire en sorte de pouvoir poser notre carte PCB directement sur notre RFDuino en utilisant des broches. Nous devons donc rajouter ces éléments-ci.&lt;br /&gt;
*Ecriture de la page get.php&lt;br /&gt;
*Premiers tests sur la ListView de l'activité ListActivity.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 8&lt;br /&gt;
 | '''13/03'''&lt;br /&gt;
*Recherche de pistes concernant la programmation RFDuino. Nous pouvons la détecter en bluetooth via un smartphone Android.&lt;br /&gt;
*Finition du Tablelayout et du code java associé sur la page ListActivity.&lt;br /&gt;
&lt;br /&gt;
 | '''15/03'''&lt;br /&gt;
*Ajout de la JsonArrayRequest dans la page ListActivity.&lt;br /&gt;
*Nous nous sommes rendus compte au moment de programmer la liaison I2C de l'accéléromètre avec la RFDuino que nous avions oublié de mettre des résistances pull-up entre l'alimentation du composant et les broches SDA et SCL. Les modifications ont donc été faites puis nous avons envoyé finalement notre PCB à la fabrication.&lt;br /&gt;
&lt;br /&gt;
 | '''16/03'''&lt;br /&gt;
*Changement de stratégie au niveau de la requête JsonArrayRequest. On récupère toute la base et ensuite le traitement sera effectuer dans l'application mobile.&lt;br /&gt;
*Rédaction de la partie Altium du wiki.&lt;br /&gt;
*Recherche de docs sur le système bluetooth du RFduino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 9&lt;br /&gt;
 | '''20/03'''&lt;br /&gt;
*Réalisation de différents réglages pour pouvoir utiliser l'application Optali sur l'Android phone fourni par notre professeur (LG G4c)&lt;br /&gt;
*Recherche de docs concernant la partie java responsable de la communication Bluetooth.&lt;br /&gt;
*Reprise de la solution Tesseract pour la lecture de caractères.&lt;br /&gt;
&lt;br /&gt;
 | '''21/03''' (séance supplémentaire de 3 heures)&lt;br /&gt;
*Début du développement de la partie communication entre RFDuino et l'appli mobile. Nous pouvons détecter le RFduino à partir de Android Studio mais nous n'arrivons pas encore à nous connecter dessus directement.&lt;br /&gt;
*Finition de la fonctionnalité tesseract. La lecture de caractères est donc maintenant possible.&lt;br /&gt;
&lt;br /&gt;
 | '''22/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity&lt;br /&gt;
*Connexion possible entre le RFduino et notre appli mobile. Il faut maintenant pouvoir assurer un échange de données via du GATT.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 10&lt;br /&gt;
 | '''27/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity (suite). Utilisation de la solution postman.&lt;br /&gt;
*Mise à jour du wiki pour la partie Altium.&lt;br /&gt;
*Gestion du dépôt git.&lt;br /&gt;
*Récupération de la carte PCB au service EEI.&lt;br /&gt;
&lt;br /&gt;
 | '''29/03'''&lt;br /&gt;
*Mise en place du tri des Produits avec un critère d'ordonnabilité variable&lt;br /&gt;
*Implémentation du champs recherche et action sur la liste&lt;br /&gt;
*Écriture des pages Php consume.php et delete.php pour décrémenter le nombre d'aliment dans le frigo ou le supprimer&lt;br /&gt;
*Récupération des composants&lt;br /&gt;
*Passage au four pour souder les premiers composants en CMS&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 11&lt;br /&gt;
&lt;br /&gt;
 | '''03/04'''&lt;br /&gt;
*Dé-soudage et resoudage de l'accéléromètre.&lt;br /&gt;
*Soudure des composants&lt;br /&gt;
&lt;br /&gt;
 | '''05/04'''&lt;br /&gt;
*Test du Buzzer&lt;br /&gt;
*Code de l'accéléromètre&lt;br /&gt;
*Création de l'Optali box (la boite qui contient le RFduino fixé au frigo)&lt;br /&gt;
*Finition de la fonction 'delete'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 | '''06/04'''&lt;br /&gt;
*Problème pour faire fonctionner le code de l'accéléro. Il faudra le tester électriquement.&lt;br /&gt;
*Implantation du logo de l'appli &lt;br /&gt;
*Debuggage d'une requête de la page 'list'&lt;br /&gt;
*Documentation sur les listes déroulantes sous les EditTexts.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 12 (Interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''11/04''' (3 heures)&lt;br /&gt;
*Après avoir remarqué que le code de l'accéléro ne fonctionnait pas alors qu'il paraît correct, nous avons décidez de vérifier les propriétés électriques de notre montage.&lt;br /&gt;
En observant à l'analyseur logique, il semblerait que l'horloge de la liaison i2C n'est en fait qu'un signal bruité. Il faudra donc retenter de souder le composant quand cela sera possible.&lt;br /&gt;
&lt;br /&gt;
 | '''13/04''' (6 heures)&lt;br /&gt;
*Terminaison du programme RFduino qui fonctionne théoriquement, nous attendons de terminer les dernières soudures pour pouvoir le tester physiquement.&lt;br /&gt;
*En attendant de pouvoir réaliser des soudures, nous avons repris la partie communication bluetooth entre le RFduino et l'appli. Après avoir tenté d'utiliser un programme permettant de gérer le protocole GATT sans savoir envoyer ou recevoir de données, nous nous sommes orientés sur une communication plus basique basée sur de nombreux exemples que l'on peut voir sur le web.&lt;br /&gt;
&lt;br /&gt;
 | '''15/04''' (6 heures)&lt;br /&gt;
*Après s'être rendu compte que la communication plus &amp;quot;basique&amp;quot; que nous voulions utiliser n'était pas compatible avec le BLE, nous sommes une fois de plus repartis de zéro pour cette partie.&lt;br /&gt;
*Après quelques recherches, nous avons trouvé un programme réalisant la gestion d'un socket BLE sur le principe du protocole GATT. Grâce à celui-ci, il nous est possible de recevoir et d'envoyer des données via BLE sur RFduino ainsi que sur l'appli mobile.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 13 (Interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''17/04 (4 heures)'''&lt;br /&gt;
*Ajout du singleton Etat pour partager l'état des aliments dans la réserve alimentaire&lt;br /&gt;
*Transfert des requêtes de la base de donnée vers le singleton pour optimiser l'actualisation et le partage des données.&lt;br /&gt;
*Actualisation automatique des données sur la page principale.&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Semaine 14&lt;br /&gt;
| '''24/04'''&lt;br /&gt;
*Modification de la présentation du wiki&lt;br /&gt;
*Modification de la fonctionnalité du bouton actualiser en changement d'activité&lt;br /&gt;
&lt;br /&gt;
| '''26/04'''&lt;br /&gt;
*Ajout de la page liste recette&lt;br /&gt;
&lt;br /&gt;
| '''27/04''' (3 heures)&lt;br /&gt;
*Ajout des listes recettes dans ListeRecette&lt;br /&gt;
*Ajout des requêtes des recettes sur ListeRecette.java&lt;br /&gt;
*Création du fichier listeRecette.php sur le serveur pour faire la requête SQL et envoyer sur l'application.&lt;br /&gt;
*Soudure des derniers composants pour terminer le PCB. Tout est soudé sauf le bouton poussoir qui devait permettre un reset du RFduino. En cherchant d'ailleurs à souder ce bouton, nous avons retiré malencontreusement la piste de cuivre permettant de répartir le 3.3V du RFduino sur notre PCB. Notre accéléromètre qui ne marchait déjà pas vraiment n'est plus alimenté. Nous ferons sans notre accéléromètre pour le rendu final. &lt;br /&gt;
|-&lt;br /&gt;
|Semaine 15&lt;br /&gt;
|'''02/05'''&lt;br /&gt;
*Réalisation de la vidéo de présentation du projet avec Laurent Engels.&lt;br /&gt;
|'''03/05'''&lt;br /&gt;
*Remplacement de la LED &amp;quot;LED_Perim&amp;quot; qui était défaillante et ne s'allumait pas quand il le fallait.&lt;br /&gt;
*Début de la réalisation du rapport de projet.&lt;br /&gt;
|'''04/05'''&lt;br /&gt;
*Débuggage de la &amp;quot;LED_Perim&amp;quot;. Le problème n'était donc pas électrique mais bien au niveau software. Il existait un conflit entre l'allumage de cette LED et la pin TX de la liaison série qui était défini sur la même broche.&lt;br /&gt;
*Débuggage de l'appli pour éviter les quelques plantages que l'on peut avoir parfois.&lt;br /&gt;
|-&lt;br /&gt;
|Semaine 16&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===Premières idées===&lt;br /&gt;
&lt;br /&gt;
Voici les premières idées de l'application mobile et du composant fixé sur le frigo.&lt;br /&gt;
[[Fichier:Optali_v1.jpg|400px|thumb|left|Optali version 1]]&lt;br /&gt;
[[Fichier:OptaliBox_v1.jpg|400px|thumb|center|OptaliBox version 1]]&lt;br /&gt;
[[Fichier:P46_schema.jpg|400px|thumb|center|Schéma électrique version 1]]&lt;br /&gt;
&lt;br /&gt;
En s'intéressant aux différentes datasheets ou données constructeur des composants que nous voulons utiliser, nous trouvons indispensable d'utiliser des résistances de 330 Ohms pour l'utilisation des LEDs, pour éviter de les griller.&lt;br /&gt;
&lt;br /&gt;
Edit : Retrait de la résistance R2.&lt;br /&gt;
&lt;br /&gt;
Concernant l'accéléromètre, nous avons choisi un modèle qui nous permet de brancher directement ce module sur une broche du RFDuino. On branchera directement les GPIOs de la RFduino sur les ports SDA et SCL de l'accéléromètre qui correspondent à l'interface I2C pour pouvoir communiquer. On utilisera aussi la broche INT1 pour pouvoir générer des interruptions directement depuis l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
On connectera le buzzer directement à une broche de la RFduino aussi. Concernant celui-ci il reste une incertitude puisqu'on ne trouve aucune information sur le courant à fournir pour l'alimentation de ce composant sur sa datasheet. Après différentes recherches sur Internet, il pourrait être nécessaire d'utiliser un montage amplificateur à transistor comme un émetteur commun pour booster le courant en sortie d'une broche GPIO. Quelques buzzers trouvés avec des données constructeur montrent que ce type de composant nécessite généralement un courant d'environ 30 mA. Nous verrons dans la pratique si cela sera vraiment nécessaire. Par sécurité, on ajoutera un transistor bipolaire dans la liste de matériel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:screen_LED.png|400px|thumb|left|Données constructeur pour LEDs]]&lt;br /&gt;
[[Fichier:screen_accel.png|400px|thumb|center|Datasheet de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
====Configuration école====&lt;br /&gt;
&lt;br /&gt;
*Pour configurer notre Raspberry Pi, nous utilisons son port série et &amp;quot;minicom&amp;quot;. Pour pouvoir télécharger des paquets, il fallait la connecter au réseau. Nous lui avons donc affecté une adresse IP fixe avec le fichier /etc/network/interfaces. Voici les modifications qui ont été apportées : &lt;br /&gt;
&lt;br /&gt;
   auto eth0&lt;br /&gt;
   iface eth0 inet static&lt;br /&gt;
   address 172.26.78.15&lt;br /&gt;
   netmask 255.255.240.0&lt;br /&gt;
   gateway 172.26.79.254&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il a également fallu ajouter la commande &amp;quot;export http_proxy=http://proxy.polytech-lille.fr:3128&amp;quot; (il faudra effectuer cette commande à chaque démarrage de la Pi) pour pouvoir utiliser le proxy de l'école. &lt;br /&gt;
Nous avons de plus modifier le fichier /etc/resolv.conf avec la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
   nameserver 193.48.57.34&lt;br /&gt;
&lt;br /&gt;
Malgré cela, nous avions des soucis pour nous connecter au réseau. Il y avait en fait un processus dhcp en tâche de fond qui nous empêchait de garder le contenu de resolv.conf. Il a donc fallu trouver ce processus pour le &amp;quot;kill&amp;quot; et pouvoir accéder correctement au réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons du coup pu installer postgresql pour pouvoir configurer une base de données sur notre Pi.&lt;br /&gt;
&lt;br /&gt;
====Configuration à domicile====&lt;br /&gt;
&lt;br /&gt;
Pour nous mettre dans une situation plus fidèle à notre projet, nous avons configuré la raspberry à domicile.&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abords installé Raspbian, puis installé les paquets nécessaire au fonctionnement du serveur.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Openssh-server''': permettre d'accès à distance à la raspberry pour pouvoir y accéder depuis l'école.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Iptables''': pour sécuriser les ports non utilisé et libérer l'accès aux ports qui nous intéressent (ssh 22,http 80,https 443).&amp;lt;br&amp;gt;&lt;br /&gt;
- '''apache2, php5, mysql-server''' : pour mettre en place notre service web.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons rediriger les ports 80 et 22 du routeur pour pouvoir accéder à la raspberry de l'extérieur.&lt;br /&gt;
&lt;br /&gt;
Pour finir, nous avons créer un fichier de config iptables permettant de sécuriser un minimum la base de donnée et de permettre d'autoriser la communication des ports 22, 80 et 443 correspondants aux ports ssh, http et https. le fichier de configuration a été déposé dans le dépôt git. Il nous a fallut le rendre exécutable via un chmod. Puis pour l'exécuter à chaque démarrage du system, dans le fichier /etc/init.d/ taper : &lt;br /&gt;
&lt;br /&gt;
    sudo update-rc.d firewall defaults (si notrefichier s'appelle firewall et s'il est dans init.d)&lt;br /&gt;
&lt;br /&gt;
===Base de donnée===&lt;br /&gt;
&lt;br /&gt;
Nos données alimentaires disponibles par toute la famille doivent être stocké sur un serveur de base de donnée externe (tel une Raspberry pi). Nous nous proposons de créer le diagramme UML représentant cette future base de donnée.&lt;br /&gt;
[[Fichier:Optali_UML.jpg|700px|thumb|center|Diagramme UML base de donnée]]&lt;br /&gt;
&lt;br /&gt;
On créera donc 3 entités. Date, Product et Recipe. &lt;br /&gt;
&lt;br /&gt;
- Product rassemble les aliments qui sont ou ont été dans la réserve alimentaire. NbProdIn permet de connaître le nombre de produits identiques (possibilité de date différentes mais pas de doublons et on garde l'information de quantité. NbProdBought donne une information sur le nombre de produits identique ayant été acheté depuis la mise en service de la base de donnée. Ainsi nous pourrons par la suite proposer une liste de course à l'utilisateur en fonction de la fréquence d'achat des produits.&lt;br /&gt;
&lt;br /&gt;
- Recipe contient les recettes que pourra rentrer l'utilisateur sur l'application. L'utilisateur pourra ainsi se voir proposer des recettes en fonction de ce qu'il a dans son frigo et de ses recettes personnelles.&lt;br /&gt;
&lt;br /&gt;
'''''Edit : On ajoutera une valeur entière dans les tables Date et Unity pour gérer le cas où il existe plusieurs produits (différents ou identiques) avec une date de péremption équivalente. On les appellera NbDate la valeur dans la table Date et NbUnity dans la table Unity. On leur ajoutera de même une clef primaire IdUnity et IdListProduct'''''&lt;br /&gt;
&lt;br /&gt;
On utilisera MySql pour la gestion de nos bases de données. &lt;br /&gt;
La syntaxe pour l'implanter dans la base de donnée à été jointe au dépôt git.&lt;br /&gt;
&lt;br /&gt;
Pour lancer my SQL, on tapera:&lt;br /&gt;
&lt;br /&gt;
   mysql -h localhost -u root -p&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Web service===&lt;br /&gt;
&lt;br /&gt;
====Page init.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet d'initier l'accès à la base de donnée sur le serveur. Elle est requise pour les pages qui suivent.&lt;br /&gt;
&lt;br /&gt;
====Page post.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet l'insertion d'un produit et d'une date via l'application mobile. Elle prend donc ces deux arguments et les insère dans les tables Unity, Product et Date.&lt;br /&gt;
&lt;br /&gt;
====Page get.php====&lt;br /&gt;
&lt;br /&gt;
Page qui envoie la liste des aliments avec leur nom, leur date, leur quantité dans le frigo, la quantité d'exemplaires acheté en tout depuis la mise en place de l'appareil. Le tri se fera directement dans l'application mobile. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Application Mobile===&lt;br /&gt;
&lt;br /&gt;
====Home page====&lt;br /&gt;
&lt;br /&gt;
Page d'accueil permettant d'accéder aux pages d'ajout et de liste des produits disponibles. &amp;lt;br&amp;gt;&lt;br /&gt;
La page permet aussi d'effectuer la connexion entre la rfduino et l'application mobile. Elle montre les alertes (signaux) à l'utilisateur &lt;br /&gt;
et écrit leur signification.&lt;br /&gt;
&lt;br /&gt;
====Page d'ajout====&lt;br /&gt;
&lt;br /&gt;
Pour ajouter un produit et lire une date on utilisera un champ editText pour permettre à l'utilisateur d'écrire &amp;quot;Manuellement&amp;quot; dedans grâce au clavier du smartphone.&amp;lt;br&amp;gt;&lt;br /&gt;
De plus on utilise un bouton qui appellera la caméra pour détecter les caractères d'un produit ou d'une date. Au début nous voulions utiliser un détecteur de code barre, nous l'avons implémenté mais nous avons remarqué que la mise au point sur une surface non plane prend du temps d'autant plus qu'il faut questionner une base de donnée contenant tous les numéro de codes barres utilisés. Nous avons donc prit la décision d'utiliser uniquement la lecture de caractère et nous créerons une liste déroulante sous l'editText pour faciliter l'insertion d'un produit qui a déjà été ajouté. Pour la lecture de caractère, nous utilisons la librairie tesseract.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'envoi, nous utilisons la librairie Volley développé par google.&lt;br /&gt;
&lt;br /&gt;
====Page Liste====&lt;br /&gt;
&lt;br /&gt;
Permet de lister les produits dans la base de donnée. Une série de boutons radio permettent de trier les produits par ordre alphabétique, par date de péremption, par nombre d’occurrence dans la réserve alimentaire, par nombre d'achat depuis la mise en place du système.&amp;lt;br&amp;gt;&lt;br /&gt;
Une colonne permet de sélectionner les aliments désirés (par checkBox) pour ensuite les supprimer via un button &amp;quot;suppr&amp;quot; ou les choisir pour trouver des recettes qui les utilisent.&amp;lt;br&amp;gt;&lt;br /&gt;
Un EditText permet d'effectuer une recherche sur la base de donnée.&lt;br /&gt;
&lt;br /&gt;
===Altium Designer===&lt;br /&gt;
&lt;br /&gt;
Pour permettre au RFDuino de communiquer avec les différents composants, nous aurons besoin de quelques composants électroniques. Afin que cela soit plus esthétique pour la modélisation finale, nous allons créer une carte PCB pour rassembler tous ces composants dessus. On utilisera le logiciel Altium Designer pour cela.&lt;br /&gt;
&lt;br /&gt;
Avant de représenter notre circuit général, nous allons commencer par créer une librairie rassemblant tous les composants que nous utiliserons par la suite, en particulier nos composants CMS (accéléromètre et résistances). Pour ce qui est des LEDs et du buzzer, qui sont traversants, nous pourrons utiliser des headers classiques.&lt;br /&gt;
&lt;br /&gt;
Il a donc fallu créer le schematic ainsi que l'empreinte de nos composants CMS. Voici un exemple avec notre accéléromètre :&lt;br /&gt;
[[Fichier:Accelerosch.PNG|500px|thumb|left|Schematic de l'accéléromètre]]&lt;br /&gt;
[[Fichier:Acceleropcb.PNG|500px|thumb|center|Empreinte PCB de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les fichiers Altium sont disponibles sur notre dépôt GIT. Après cela, nous pouvons maintenant construire notre schematic du montage entier et ensuite le fichier PCB afin de pouvoir graver notre circuit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après quelques modifications sur le montage prévu initialement, c'est-à-dire en enlevant une résistance entre un GPIO et l'alimentation de l'accéléromètre ainsi qu'en rajoutant des résistances pull-up sur les broches de notre liaison i2C (SDA et SCL) et un bouton poussoir en plus pour permettre un reset du RFDuino, nous avons pu créer notre schematic global pour en faire un PCB et l'exporter au format Gerber. De ce fait, le service EEI de Polytech pourra réaliser la gravure de notre carte PCB.&lt;br /&gt;
&lt;br /&gt;
Voici quelques photos pour illustrer notre projet sur Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Finalproto_sch.PNG|400px|thumb|left|Schematic du montage final]]&lt;br /&gt;
[[Fichier:Finalproto_pcb.PNG|400px|thumb|center|PCB du montage final]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On retrouve sur notre PCB final les headers, respectivement de 8 et 5 pins, de part et d'autre de la carte, qui représentent le RFDuino, où nous souderons des broches pour qu'elles puissent être intégrées au RFDuino. On note la présence de 5 autres headers de 2 pins, dont 3 pour des LEDs puis les 2 autres pour le buzzer et le bouton poussoir. Ce qui reste sont les composants CMS avec plusieurs composants à 2 pattes qui sont toutes les résistances de notre montage, celles de protection pour les LEDs et les pull-ups pour l'accéléromètre. Le dernier composant à 8 pattes est donc bien l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quelques difficultés ont été rencontrées durant ce travail notamment concernant les contraintes de construction sur le PCB final. En effet, les composants CMS choisis (surtout l'accéléromètre) étant parfois très petits, Altium n'accepte pas forcément le faible espacement entre les différentes pattes des composants, ce qui pose problème lors de la compilation. De plus, le plan de masse ne prenait pas en compte tous les éléments devant être rattachés à la masse. Il a fallu légèrement déplacer les headers représentant le RFDuino pour que cela soit possible. Il faudra alors peut-être légèrement plier les broches qui viendront s'intégrer sur le RFDuino pour ajouter notre PCB sur le RFDuino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons envoyé nos fichiers Altium au service EEI afin qu'il puisse réaliser physiquement notre carte. Nous nous retrouvons donc avec notre carte PCB récupérée auprès du service EEI. Voici le rendu :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:P46_carte.jpg|400px|thumb|center|Fabrication de notre carte PCB]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir souder nos différents composants, nous avons été rendre visite à Thierry Flamen, responsable du service EEI, afin de passer nos composants CMS au four (résistances et accéléromètre). En effet il était presque impossible de souder tous ces composants manuellement. Après ce passage au four, il nous restait les composants traversants à souder, c'est-à-dire les pins, les LEDs et notre buzzer. Voici le rendu après nos soudures :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:pcbfinal1_p46.jpg|200px|thumb|left|Vue du dessous de notre carte]]&lt;br /&gt;
[[Fichier:pcbfinal2_p46.jpg|200px|thumb|center|Vue du dessus de notre carte]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il manque sur la carte finale notre bouton poussoir qui permettait le reset de notre RFduino. Malheureusement en essayant de souder celui-ci, nous avons retiré du cuivre de la carte, ce qui nous empêche de pouvoir faire circuler le courant dans ce bouton. De plus, la piste avec du cuivre manquant était également responsable de l'alimentation de notre accéléromètre ainsi que d'une LED indiquant la mise sous-tension du contrôleur. Pour le rendu final, nous souderons un fil sur la LED pour pouvoir l'alimenter, cependant il serait plus complexe d'alimenter l'accéléromètre. Celui-ci ne fonctionnait déjà pas correctement de manière électrique. La soudure de ce composant demandait une grande précision puisqu'il est de taille minuscule. Nous n'utiliserons donc pas ce composant dans notre montage final.&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;br /&gt;
&lt;br /&gt;
=== Rapport de projet ===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Compte_rendu_projet_final_P46.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Codes et fichiers du projet ===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Optali-master.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Liens vers dépôt GIT ===&lt;br /&gt;
&lt;br /&gt;
* dépôt GIT de l'école : https://archives.plil.fr/ahuet/P46-Aide-anti-gaspillage-alimentaire&lt;br /&gt;
* dépôt GitHub : https://github.com/FrancoisLefevre12/Optali&lt;br /&gt;
&lt;br /&gt;
== Bibliographie ==&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=42256</id>
		<title>IMA4 2016/2017 P46 : Aide anti-gaspillage alimentaire</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=42256"/>
				<updated>2017-05-15T17:02:01Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : /* Codes et fichiers du projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
En France, nous jetons en moyenne 21% des aliments que nous achetons, ce qui représente une perte de 100 à 160 euros par an par habitant. Cela est en partie dû à la date limite de consommation associée à chaque produit. En effet, à partir du moment où cette date sera dépassée le consommateur jettera les produits concernés sans réfléchir, même si ceux-ci peuvent parfois être encore mangeables. Plutôt que d'essayer de les convaincre du contraire, il serait judicieux de proposer aux adeptes du gaspillage une aide permettant de gérer tous les aliments dont ils disposent chez eux afin d'éviter la surprise de tomber sur plusieurs produits périmés lorsqu'ils ouvrent la porte de leur frigo. &lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Ce projet permet d'aider les utilisateurs d'une part à mémoriser les denrées périssables qu'ils disposent dans leur réserve alimentaire et d'autre part d'avertir l'utilisateur qu'un événement important a lieu. Ceci peut être une notification qu'un aliment va bientôt dépasser sa date de péremption, que la porte du frigidaire est restée ouverte ou encore que le nombre d'aliments dans la réserve devient critique et qu'il faudra de nouveau l'alimenter. Enfin, le système aidera l'utilisateur à trouver des idées de repas pouvant permettre de consommer les aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Notre prototype permettra d'éviter le gaspillage alimentaire ainsi que d'aider l'utilisateur dans sa gestion du stockage d'aliments.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
&lt;br /&gt;
Notre système sera composé de 3 éléments. &lt;br /&gt;
&lt;br /&gt;
Premièrement, un ou des smartphones appartenant aux utilisateurs. Ces derniers permettront de scanner grâce à son appareil photo, le code barre du produit ainsi que sa date de péremption. Il servira aussi d'interface utilisateur pour notre système. En effet, c'est par cet outil que l'utilisateur pourra lister tous les aliments que l'utilisateur a dans sa base et tout ça en les triant par date de péremption, ou encore voir les recettes possibles pour consommer des aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Deuxièmement, un serveur, de type Raspberry, qui permettra de stocker la base de donnée contenant les aliments de la réserve. Ce serveur sera connecté par wifi.&lt;br /&gt;
 &lt;br /&gt;
Troisièmement, un contrôleur (Rfduino) qui comportera une LED pour indiquer la mise sous tension du contrôleur, une LED pour prévenir l'utilisateur qu'un aliment va bientôt passer sa date de péremption et une dernière LED pour prévenir l'utilisateur que son niveau de réserve est critique ainsi qu'un buzzer et un accéléromètre pour buzzer quand la porte du frigo est restée trop longtemps ouverte. Ce dernier sera fixé au frigo par l'intermédiaire d'un dispositif adapté qui sera un système aimanté qui se pose sur le frigo.&lt;br /&gt;
&lt;br /&gt;
Nous implémenterons donc une application mobile Android qui fera le lien entre les 2 autres systèmes.&lt;br /&gt;
&lt;br /&gt;
Pour la partie électronique que nous aurons à réaliser, nous utiliserons une Breadboard pour faire des premiers tests puis nous créerons une carte PCB pour notre montage final.&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
On utilisera une Raspberry Pi en guise de serveur pour pouvoir s'occuper du stockage de toutes les données dans notre projet puisque notre contrôleur sera incapable de les contenir, ce n'est d'ailleurs pas son but ici.&lt;br /&gt;
&lt;br /&gt;
Notre smartphone fera donc le lien entre notre base de données et notre système embarqué par l'intermédiaire de l'application mobile.&lt;br /&gt;
&lt;br /&gt;
Nous prendrons ici un RFduino puisque celui-ci nous permet d'ajouter des modules comme bon nous semble afin d'adapter le système aux besoins de notre application. Il est également parfaitement compatible avec les applications Android. De plus, nous avons un Bluetooth directement intégré au RFduino pour s'assurer que les liaisons RFduino-application mobile se fassent correctement. &lt;br /&gt;
On notera également que ce contrôleur consomme peu de courant et ne demande qu'une faible tension d'alimentation, critères importants pour ce genre de projet. C'est la raison principale de son utilisation pour être utilisé comme interface physique sur le frigo, en ajoutant également sa taille réduite comparée à la Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
&lt;br /&gt;
Nous avons donc besoin du matériel suivant :&lt;br /&gt;
&lt;br /&gt;
*Raspberry Pi.&lt;br /&gt;
*Clef wifi&lt;br /&gt;
*RFduino (RFD22102 DIP Board, RFD22121 USB Shield, RFD22126 Dual AAA battery shield).&lt;br /&gt;
*2 piles AAA.&lt;br /&gt;
*3 leds tranversantes.&lt;br /&gt;
*3 Résistances 330 Ohm.&lt;br /&gt;
*1 Résistance 10 kOhm.&lt;br /&gt;
*Un buzzer.&lt;br /&gt;
*Accéléromètre.&lt;br /&gt;
*Aimants&lt;br /&gt;
*Un boîtier permettant d'intégrer la RFduino + fixation sur le frigo (modélisation à voir).&lt;br /&gt;
&lt;br /&gt;
Pour le buzzer, l'accéléromètre et les résistances, nous choisirons des composants CMS pour nous permettre d'avoir une carte plus petite.&lt;br /&gt;
&lt;br /&gt;
===Calendrier prévisionnel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Liste des tâches à effectuer====&lt;br /&gt;
&lt;br /&gt;
* Configurer la Raspberry :&lt;br /&gt;
** Installer et configurer le serveur.&lt;br /&gt;
** Créer le diagramme UML de notre future base de données.&lt;br /&gt;
** Créer la base sur le serveur.&lt;br /&gt;
** Configurer la connexion WiFi.&lt;br /&gt;
&lt;br /&gt;
* Monter et programmer la RFduino :&lt;br /&gt;
** Connecter les différents modules au RFduino (accéléromètre, LEDs, buzzer, Batterie, module Bluetooth).&lt;br /&gt;
** Récupérer les consignes du smartphone grâce au Bluetooth.&lt;br /&gt;
** Programmer le comportement du RFduino en fonction des consignes.&lt;br /&gt;
** Construire le boitier final.&lt;br /&gt;
&lt;br /&gt;
* Implémenter l'application mobile Android :&lt;br /&gt;
** Une première activité permettant de se connecter au RFduino et à la Raspberry.&lt;br /&gt;
** Scanner une date et un code barre.&lt;br /&gt;
** Ajout/suppression d'un aliment dans la base de donnée.&lt;br /&gt;
** Envoi d'une consigne au RFduino.&lt;br /&gt;
** Rendre l'interface utilisateur ergonomique (lister aliments, envoyer vers page de recettes avec l'utilisation des aliments bientôt périmés...).&lt;br /&gt;
&lt;br /&gt;
====Calendrier====&lt;br /&gt;
&lt;br /&gt;
Répartition du temps consacré au projet (120h *2) :&lt;br /&gt;
&lt;br /&gt;
*Partie Raspberry : 60h&lt;br /&gt;
*Partie RFduino : 60h&lt;br /&gt;
*Partie développement mobile : 120h&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
&lt;br /&gt;
===Feuille d'heures===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 !  !! Lundi 16-18h !! Mercredi 14-18h !! Jeudi 8-10h&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 1&lt;br /&gt;
&lt;br /&gt;
 | '''23/01''' :  &lt;br /&gt;
* Installation du logiciel Android Studio pour être prêt à commencer l'application mobile.&lt;br /&gt;
* Création du Repository Git sur GitHub : https://github.com/FrancoisLefevre12/Optali.git&lt;br /&gt;
* Réalisation de différents schémas fonctionnels pour se donner une idée du travail à effectuer, aussi bien du software que du hardware.&lt;br /&gt;
* Quelques précisions supplémentaires apportées sur le cahier des charges.&lt;br /&gt;
* Ajout de liens de référence pour la liste de matériel à acheter.&lt;br /&gt;
&lt;br /&gt;
 | '''25/01''' :  &lt;br /&gt;
* Précision des composants requis (accéléromètre, buzzer, LEDs, résistances).&lt;br /&gt;
* Écriture du montage à la main.&lt;br /&gt;
* Étude du fonctionnement de l'accéléromètre, du buzzer.&lt;br /&gt;
* Écriture de la structure de l'application à la main.&lt;br /&gt;
&lt;br /&gt;
 | '''26/01''' :&lt;br /&gt;
*Réalisation graphique de la première page de l'application.&lt;br /&gt;
*Conception du schéma électrique pour tous les composants connectés au RFduino.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 2&lt;br /&gt;
&lt;br /&gt;
 | '''30/01''' :&lt;br /&gt;
*Réalisation du diagramme UML de la base de données qui sera stockée sur la Raspberry Pi&lt;br /&gt;
*Installation de l'outil de développement mobile sur le second PC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 | '''01/02''' :&lt;br /&gt;
*Nous nous sommes d'abord rendus compte que la résistance entre un des GPIO et l'accéléromètre était inutile, nos premiers calculs étaient erronés. Nous ne la garderons donc pas sur notre schéma électrique final.&lt;br /&gt;
*Avancement sur la partie application mobile : réalisation de la page &amp;quot;Ajout&amp;quot; sur laquelle nous tomberons après avoir cliquer sur &amp;quot;ajout&amp;quot; sur la page principale de l'application. Nous avons étendu l'activité principale jusqu'à cette nouvelle activité &amp;quot;Ajout&amp;quot;.&lt;br /&gt;
*Nous avons récupéré notre Raspberry Pi pour commencer à installer notre base de données dessus. Nous avons actuellement quelques problèmes pour nous connecter sur la Raspberry. Nous travaillons sur ce point.&lt;br /&gt;
&lt;br /&gt;
 | '''02/02''' :&lt;br /&gt;
* Application mobile : Mise en place des LEDs sur la home page et de la zone de notification avec les messages associés.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 3&lt;br /&gt;
&lt;br /&gt;
 | '''06/02''' :&lt;br /&gt;
*Nous arrivons à accéder à la Raspberry via le port série de celle-ci. Nous avons également configuré sa connexion Ethernet afin de pouvoir télécharger des paquets dessus et installer notre base de données. &lt;br /&gt;
*Nous rencontrions des problèmes sur le second PC de travail pour récupérer le projet Optali sur Android Studio via notre dépôt GIT. Nous avons pu rectifier ce souci.&lt;br /&gt;
&lt;br /&gt;
 | '''08/02''' :&lt;br /&gt;
*Tentative d'établissement d'un point d'accès WiFi sur notre Raspberry. Nous n'avons pas réussi pour le moment.&lt;br /&gt;
*Restructuration du Repository git.&lt;br /&gt;
*Essai d'importation de la librairie Zxing qui permettra de décoder les code-barres.&lt;br /&gt;
 |&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 4&lt;br /&gt;
&lt;br /&gt;
 | '''13/02'''&lt;br /&gt;
*Configuration du wifi de la Raspberry. &lt;br /&gt;
*Étude d'une mise en place d'un service web via php.&lt;br /&gt;
&lt;br /&gt;
 | '''15/02'''&lt;br /&gt;
*Mise en place d'un lecteur de caractère sur l'application. On utilisera tesseract.&lt;br /&gt;
*Début de la création du PCB via Altium designer. Création d'une librairie pour l'accéléromètre qui est un composant CMS assez spécial. On pourra cependant utiliser des headers classiques pour le buzzer et les LEDs puisque ce sont des composants traversants.&lt;br /&gt;
*Création des premiers fichiers php de connection à la base de donnée et d'insertion d'aliments. Tous ces fichiers seront déposés de la même manière sur le dépôt git.&lt;br /&gt;
&lt;br /&gt;
 | '''16/02'''&lt;br /&gt;
*Adaptation avec prise en compte des cas du code php d'insertion de produits par requête sur la base de donnée.&lt;br /&gt;
*Ajout du code d'implantation de la base de donnée.&lt;br /&gt;
*Altium: Accéléromètre terminé, mise en place des résistances.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 5 (interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''22/02 (3 heures)'''&lt;br /&gt;
*Installation de l'OS de la raspberry.&lt;br /&gt;
*Installation d'Openssh-server, apache2, php5, iptables, mysql-server, php5-mysql.&lt;br /&gt;
*Redirection des ports du routeur vers la raspberry.&lt;br /&gt;
*Configuration de iptables de la raspberry.&lt;br /&gt;
&lt;br /&gt;
 | '''23/02 (2 heures)'''&lt;br /&gt;
*Implantation de la base de donnée sur la raspberry pi.&lt;br /&gt;
|&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 6&lt;br /&gt;
 | '''27/02'''&lt;br /&gt;
*Vérification de la syntaxe de l'insertion de valeurs dans la base de donnée.&lt;br /&gt;
*Création des premières requêtes sur la base de donnée.&lt;br /&gt;
*Finalisation du PCB de l'Optali Board.&lt;br /&gt;
&lt;br /&gt;
 | '''01/03'''&lt;br /&gt;
*Étude et ajout de la librairie volley pour communiquer avec le serveur.&lt;br /&gt;
*Implantation de la fonction d'envoi de données jusqu'au serveur.&lt;br /&gt;
*Après avoir vu avec un professeur, nous avons remarqué que le routage n'était pas adéquat et la disposition des composants n'était pas optimal. Du travail reste donc encore à effectuer.&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 7&lt;br /&gt;
 | '''06/03'''&lt;br /&gt;
*Correction du fichier post.php&lt;br /&gt;
*Finition du protocole d'ajout d'aliment sur la base de donnée. (Code php et page ajout terminée).&lt;br /&gt;
*PCB terminé.&lt;br /&gt;
*Installation d'arduino IDE, doc arduino collecté.&lt;br /&gt;
&lt;br /&gt;
 | '''08/03'''&lt;br /&gt;
*Implémentation de la page ListeIngredient.xml et de l'activité listActivity.java.&lt;br /&gt;
*Documentation sur la procédure de communication bluetooth entre la Rfduino et l'application mobile.&lt;br /&gt;
*Obtention de librairie en lien avec cela.&lt;br /&gt;
*Prise en main de programmation rfduino.&lt;br /&gt;
&lt;br /&gt;
 | '''09/03'''&lt;br /&gt;
*Nous nous sommes rendus compte qu'il était nécessaire de rajouter un bouton poussoir sur notre montage afin de permettre la réinitialisation de notre RFDuino si nécessaire. Nous devons également faire en sorte de pouvoir poser notre carte PCB directement sur notre RFDuino en utilisant des broches. Nous devons donc rajouter ces éléments-ci.&lt;br /&gt;
*Ecriture de la page get.php&lt;br /&gt;
*Premiers tests sur la ListView de l'activité ListActivity.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 8&lt;br /&gt;
 | '''13/03'''&lt;br /&gt;
*Recherche de pistes concernant la programmation RFDuino. Nous pouvons la détecter en bluetooth via un smartphone Android.&lt;br /&gt;
*Finition du Tablelayout et du code java associé sur la page ListActivity.&lt;br /&gt;
&lt;br /&gt;
 | '''15/03'''&lt;br /&gt;
*Ajout de la JsonArrayRequest dans la page ListActivity.&lt;br /&gt;
*Nous nous sommes rendus compte au moment de programmer la liaison I2C de l'accéléromètre avec la RFDuino que nous avions oublié de mettre des résistances pull-up entre l'alimentation du composant et les broches SDA et SCL. Les modifications ont donc été faites puis nous avons envoyé finalement notre PCB à la fabrication.&lt;br /&gt;
&lt;br /&gt;
 | '''16/03'''&lt;br /&gt;
*Changement de stratégie au niveau de la requête JsonArrayRequest. On récupère toute la base et ensuite le traitement sera effectuer dans l'application mobile.&lt;br /&gt;
*Rédaction de la partie Altium du wiki.&lt;br /&gt;
*Recherche de docs sur le système bluetooth du RFduino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 9&lt;br /&gt;
 | '''20/03'''&lt;br /&gt;
*Réalisation de différents réglages pour pouvoir utiliser l'application Optali sur l'Android phone fourni par notre professeur (LG G4c)&lt;br /&gt;
*Recherche de docs concernant la partie java responsable de la communication Bluetooth.&lt;br /&gt;
*Reprise de la solution Tesseract pour la lecture de caractères.&lt;br /&gt;
&lt;br /&gt;
 | '''21/03''' (séance supplémentaire de 3 heures)&lt;br /&gt;
*Début du développement de la partie communication entre RFDuino et l'appli mobile. Nous pouvons détecter le RFduino à partir de Android Studio mais nous n'arrivons pas encore à nous connecter dessus directement.&lt;br /&gt;
*Finition de la fonctionnalité tesseract. La lecture de caractères est donc maintenant possible.&lt;br /&gt;
&lt;br /&gt;
 | '''22/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity&lt;br /&gt;
*Connexion possible entre le RFduino et notre appli mobile. Il faut maintenant pouvoir assurer un échange de données via du GATT.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 10&lt;br /&gt;
 | '''27/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity (suite). Utilisation de la solution postman.&lt;br /&gt;
*Mise à jour du wiki pour la partie Altium.&lt;br /&gt;
*Gestion du dépôt git.&lt;br /&gt;
*Récupération de la carte PCB au service EEI.&lt;br /&gt;
&lt;br /&gt;
 | '''29/03'''&lt;br /&gt;
*Mise en place du tri des Produits avec un critère d'ordonnabilité variable&lt;br /&gt;
*Implémentation du champs recherche et action sur la liste&lt;br /&gt;
*Écriture des pages Php consume.php et delete.php pour décrémenter le nombre d'aliment dans le frigo ou le supprimer&lt;br /&gt;
*Récupération des composants&lt;br /&gt;
*Passage au four pour souder les premiers composants en CMS&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 11&lt;br /&gt;
&lt;br /&gt;
 | '''03/04'''&lt;br /&gt;
*Dé-soudage et resoudage de l'accéléromètre.&lt;br /&gt;
*Soudure des composants&lt;br /&gt;
&lt;br /&gt;
 | '''05/04'''&lt;br /&gt;
*Test du Buzzer&lt;br /&gt;
*Code de l'accéléromètre&lt;br /&gt;
*Création de l'Optali box (la boite qui contient le RFduino fixé au frigo)&lt;br /&gt;
*Finition de la fonction 'delete'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 | '''06/04'''&lt;br /&gt;
*Problème pour faire fonctionner le code de l'accéléro. Il faudra le tester électriquement.&lt;br /&gt;
*Implantation du logo de l'appli &lt;br /&gt;
*Debuggage d'une requête de la page 'list'&lt;br /&gt;
*Documentation sur les listes déroulantes sous les EditTexts.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 12 (Interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''11/04''' (3 heures)&lt;br /&gt;
*Après avoir remarqué que le code de l'accéléro ne fonctionnait pas alors qu'il paraît correct, nous avons décidez de vérifier les propriétés électriques de notre montage.&lt;br /&gt;
En observant à l'analyseur logique, il semblerait que l'horloge de la liaison i2C n'est en fait qu'un signal bruité. Il faudra donc retenter de souder le composant quand cela sera possible.&lt;br /&gt;
&lt;br /&gt;
 | '''13/04''' (6 heures)&lt;br /&gt;
*Terminaison du programme RFduino qui fonctionne théoriquement, nous attendons de terminer les dernières soudures pour pouvoir le tester physiquement.&lt;br /&gt;
*En attendant de pouvoir réaliser des soudures, nous avons repris la partie communication bluetooth entre le RFduino et l'appli. Après avoir tenté d'utiliser un programme permettant de gérer le protocole GATT sans savoir envoyer ou recevoir de données, nous nous sommes orientés sur une communication plus basique basée sur de nombreux exemples que l'on peut voir sur le web.&lt;br /&gt;
&lt;br /&gt;
 | '''15/04''' (6 heures)&lt;br /&gt;
*Après s'être rendu compte que la communication plus &amp;quot;basique&amp;quot; que nous voulions utiliser n'était pas compatible avec le BLE, nous sommes une fois de plus repartis de zéro pour cette partie.&lt;br /&gt;
*Après quelques recherches, nous avons trouvé un programme réalisant la gestion d'un socket BLE sur le principe du protocole GATT. Grâce à celui-ci, il nous est possible de recevoir et d'envoyer des données via BLE sur RFduino ainsi que sur l'appli mobile.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 13 (Interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''17/04 (4 heures)'''&lt;br /&gt;
*Ajout du singleton Etat pour partager l'état des aliments dans la réserve alimentaire&lt;br /&gt;
*Transfert des requêtes de la base de donnée vers le singleton pour optimiser l'actualisation et le partage des données.&lt;br /&gt;
*Actualisation automatique des données sur la page principale.&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Semaine 14&lt;br /&gt;
| '''24/04'''&lt;br /&gt;
*Modification de la présentation du wiki&lt;br /&gt;
*Modification de la fonctionnalité du bouton actualiser en changement d'activité&lt;br /&gt;
&lt;br /&gt;
| '''26/04'''&lt;br /&gt;
*Ajout de la page liste recette&lt;br /&gt;
&lt;br /&gt;
| '''27/04''' (3 heures)&lt;br /&gt;
*Ajout des listes recettes dans ListeRecette&lt;br /&gt;
*Ajout des requêtes des recettes sur ListeRecette.java&lt;br /&gt;
*Création du fichier listeRecette.php sur le serveur pour faire la requête SQL et envoyer sur l'application.&lt;br /&gt;
*Soudure des derniers composants pour terminer le PCB. Tout est soudé sauf le bouton poussoir qui devait permettre un reset du RFduino. En cherchant d'ailleurs à souder ce bouton, nous avons retiré malencontreusement la piste de cuivre permettant de répartir le 3.3V du RFduino sur notre PCB. Notre accéléromètre qui ne marchait déjà pas vraiment n'est plus alimenté. Nous ferons sans notre accéléromètre pour le rendu final. &lt;br /&gt;
|-&lt;br /&gt;
|Semaine 15&lt;br /&gt;
|'''02/05'''&lt;br /&gt;
*Réalisation de la vidéo de présentation du projet avec Laurent Engels.&lt;br /&gt;
|'''03/05'''&lt;br /&gt;
*Remplacement de la LED &amp;quot;LED_Perim&amp;quot; qui était défaillante et ne s'allumait pas quand il le fallait.&lt;br /&gt;
*Début de la réalisation du rapport de projet.&lt;br /&gt;
|'''04/05'''&lt;br /&gt;
*Débuggage de la &amp;quot;LED_Perim&amp;quot;. Le problème n'était donc pas électrique mais bien au niveau software. Il existait un conflit entre l'allumage de cette LED et la pin TX de la liaison série qui était défini sur la même broche.&lt;br /&gt;
*Débuggage de l'appli pour éviter les quelques plantages que l'on peut avoir parfois.&lt;br /&gt;
|-&lt;br /&gt;
|Semaine 16&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===Premières idées===&lt;br /&gt;
&lt;br /&gt;
Voici les premières idées de l'application mobile et du composant fixé sur le frigo.&lt;br /&gt;
[[Fichier:Optali_v1.jpg|400px|thumb|left|Optali version 1]]&lt;br /&gt;
[[Fichier:OptaliBox_v1.jpg|400px|thumb|center|OptaliBox version 1]]&lt;br /&gt;
[[Fichier:P46_schema.jpg|400px|thumb|center|Schéma électrique version 1]]&lt;br /&gt;
&lt;br /&gt;
En s'intéressant aux différentes datasheets ou données constructeur des composants que nous voulons utiliser, nous trouvons indispensable d'utiliser des résistances de 330 Ohms pour l'utilisation des LEDs, pour éviter de les griller.&lt;br /&gt;
&lt;br /&gt;
Edit : Retrait de la résistance R2.&lt;br /&gt;
&lt;br /&gt;
Concernant l'accéléromètre, nous avons choisi un modèle qui nous permet de brancher directement ce module sur une broche du RFDuino. On branchera directement les GPIOs de la RFduino sur les ports SDA et SCL de l'accéléromètre qui correspondent à l'interface I2C pour pouvoir communiquer. On utilisera aussi la broche INT1 pour pouvoir générer des interruptions directement depuis l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
On connectera le buzzer directement à une broche de la RFduino aussi. Concernant celui-ci il reste une incertitude puisqu'on ne trouve aucune information sur le courant à fournir pour l'alimentation de ce composant sur sa datasheet. Après différentes recherches sur Internet, il pourrait être nécessaire d'utiliser un montage amplificateur à transistor comme un émetteur commun pour booster le courant en sortie d'une broche GPIO. Quelques buzzers trouvés avec des données constructeur montrent que ce type de composant nécessite généralement un courant d'environ 30 mA. Nous verrons dans la pratique si cela sera vraiment nécessaire. Par sécurité, on ajoutera un transistor bipolaire dans la liste de matériel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:screen_LED.png|400px|thumb|left|Données constructeur pour LEDs]]&lt;br /&gt;
[[Fichier:screen_accel.png|400px|thumb|center|Datasheet de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
====Configuration école====&lt;br /&gt;
&lt;br /&gt;
*Pour configurer notre Raspberry Pi, nous utilisons son port série et &amp;quot;minicom&amp;quot;. Pour pouvoir télécharger des paquets, il fallait la connecter au réseau. Nous lui avons donc affecté une adresse IP fixe avec le fichier /etc/network/interfaces. Voici les modifications qui ont été apportées : &lt;br /&gt;
&lt;br /&gt;
   auto eth0&lt;br /&gt;
   iface eth0 inet static&lt;br /&gt;
   address 172.26.78.15&lt;br /&gt;
   netmask 255.255.240.0&lt;br /&gt;
   gateway 172.26.79.254&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il a également fallu ajouter la commande &amp;quot;export http_proxy=http://proxy.polytech-lille.fr:3128&amp;quot; (il faudra effectuer cette commande à chaque démarrage de la Pi) pour pouvoir utiliser le proxy de l'école. &lt;br /&gt;
Nous avons de plus modifier le fichier /etc/resolv.conf avec la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
   nameserver 193.48.57.34&lt;br /&gt;
&lt;br /&gt;
Malgré cela, nous avions des soucis pour nous connecter au réseau. Il y avait en fait un processus dhcp en tâche de fond qui nous empêchait de garder le contenu de resolv.conf. Il a donc fallu trouver ce processus pour le &amp;quot;kill&amp;quot; et pouvoir accéder correctement au réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons du coup pu installer postgresql pour pouvoir configurer une base de données sur notre Pi.&lt;br /&gt;
&lt;br /&gt;
====Configuration à domicile====&lt;br /&gt;
&lt;br /&gt;
Pour nous mettre dans une situation plus fidèle à notre projet, nous avons configuré la raspberry à domicile.&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abords installé Raspbian, puis installé les paquets nécessaire au fonctionnement du serveur.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Openssh-server''': permettre d'accès à distance à la raspberry pour pouvoir y accéder depuis l'école.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Iptables''': pour sécuriser les ports non utilisé et libérer l'accès aux ports qui nous intéressent (ssh 22,http 80,https 443).&amp;lt;br&amp;gt;&lt;br /&gt;
- '''apache2, php5, mysql-server''' : pour mettre en place notre service web.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons rediriger les ports 80 et 22 du routeur pour pouvoir accéder à la raspberry de l'extérieur.&lt;br /&gt;
&lt;br /&gt;
Pour finir, nous avons créer un fichier de config iptables permettant de sécuriser un minimum la base de donnée et de permettre d'autoriser la communication des ports 22, 80 et 443 correspondants aux ports ssh, http et https. le fichier de configuration a été déposé dans le dépôt git. Il nous a fallut le rendre exécutable via un chmod. Puis pour l'exécuter à chaque démarrage du system, dans le fichier /etc/init.d/ taper : &lt;br /&gt;
&lt;br /&gt;
    sudo update-rc.d firewall defaults (si notrefichier s'appelle firewall et s'il est dans init.d)&lt;br /&gt;
&lt;br /&gt;
===Base de donnée===&lt;br /&gt;
&lt;br /&gt;
Nos données alimentaires disponibles par toute la famille doivent être stocké sur un serveur de base de donnée externe (tel une Raspberry pi). Nous nous proposons de créer le diagramme UML représentant cette future base de donnée.&lt;br /&gt;
[[Fichier:Optali_UML.jpg|700px|thumb|center|Diagramme UML base de donnée]]&lt;br /&gt;
&lt;br /&gt;
On créera donc 3 entités. Date, Product et Recipe. &lt;br /&gt;
&lt;br /&gt;
- Product rassemble les aliments qui sont ou ont été dans la réserve alimentaire. NbProdIn permet de connaître le nombre de produits identiques (possibilité de date différentes mais pas de doublons et on garde l'information de quantité. NbProdBought donne une information sur le nombre de produits identique ayant été acheté depuis la mise en service de la base de donnée. Ainsi nous pourrons par la suite proposer une liste de course à l'utilisateur en fonction de la fréquence d'achat des produits.&lt;br /&gt;
&lt;br /&gt;
- Recipe contient les recettes que pourra rentrer l'utilisateur sur l'application. L'utilisateur pourra ainsi se voir proposer des recettes en fonction de ce qu'il a dans son frigo et de ses recettes personnelles.&lt;br /&gt;
&lt;br /&gt;
'''''Edit : On ajoutera une valeur entière dans les tables Date et Unity pour gérer le cas où il existe plusieurs produits (différents ou identiques) avec une date de péremption équivalente. On les appellera NbDate la valeur dans la table Date et NbUnity dans la table Unity. On leur ajoutera de même une clef primaire IdUnity et IdListProduct'''''&lt;br /&gt;
&lt;br /&gt;
On utilisera MySql pour la gestion de nos bases de données. &lt;br /&gt;
La syntaxe pour l'implanter dans la base de donnée à été jointe au dépôt git.&lt;br /&gt;
&lt;br /&gt;
Pour lancer my SQL, on tapera:&lt;br /&gt;
&lt;br /&gt;
   mysql -h localhost -u root -p&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Web service===&lt;br /&gt;
&lt;br /&gt;
====Page init.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet d'initier l'accès à la base de donnée sur le serveur. Elle est requise pour les pages qui suivent.&lt;br /&gt;
&lt;br /&gt;
====Page post.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet l'insertion d'un produit et d'une date via l'application mobile. Elle prend donc ces deux arguments et les insère dans les tables Unity, Product et Date.&lt;br /&gt;
&lt;br /&gt;
====Page get.php====&lt;br /&gt;
&lt;br /&gt;
Page qui envoie la liste des aliments avec leur nom, leur date, leur quantité dans le frigo, la quantité d'exemplaires acheté en tout depuis la mise en place de l'appareil. Le tri se fera directement dans l'application mobile. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Application Mobile===&lt;br /&gt;
&lt;br /&gt;
====Home page====&lt;br /&gt;
&lt;br /&gt;
Page d'accueil permettant d'accéder aux pages d'ajout et de liste des produits disponibles. &amp;lt;br&amp;gt;&lt;br /&gt;
La page permet aussi d'effectuer la connexion entre la rfduino et l'application mobile. Elle montre les alertes (signaux) à l'utilisateur &lt;br /&gt;
et écrit leur signification.&lt;br /&gt;
&lt;br /&gt;
====Page d'ajout====&lt;br /&gt;
&lt;br /&gt;
Pour ajouter un produit et lire une date on utilisera un champ editText pour permettre à l'utilisateur d'écrire &amp;quot;Manuellement&amp;quot; dedans grâce au clavier du smartphone.&amp;lt;br&amp;gt;&lt;br /&gt;
De plus on utilise un bouton qui appellera la caméra pour détecter les caractères d'un produit ou d'une date. Au début nous voulions utiliser un détecteur de code barre, nous l'avons implémenté mais nous avons remarqué que la mise au point sur une surface non plane prend du temps d'autant plus qu'il faut questionner une base de donnée contenant tous les numéro de codes barres utilisés. Nous avons donc prit la décision d'utiliser uniquement la lecture de caractère et nous créerons une liste déroulante sous l'editText pour faciliter l'insertion d'un produit qui a déjà été ajouté. Pour la lecture de caractère, nous utilisons la librairie tesseract.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'envoi, nous utilisons la librairie Volley développé par google.&lt;br /&gt;
&lt;br /&gt;
====Page Liste====&lt;br /&gt;
&lt;br /&gt;
Permet de lister les produits dans la base de donnée. Une série de boutons radio permettent de trier les produits par ordre alphabétique, par date de péremption, par nombre d’occurrence dans la réserve alimentaire, par nombre d'achat depuis la mise en place du système.&amp;lt;br&amp;gt;&lt;br /&gt;
Une colonne permet de sélectionner les aliments désirés (par checkBox) pour ensuite les supprimer via un button &amp;quot;suppr&amp;quot; ou les choisir pour trouver des recettes qui les utilisent.&amp;lt;br&amp;gt;&lt;br /&gt;
Un EditText permet d'effectuer une recherche sur la base de donnée.&lt;br /&gt;
&lt;br /&gt;
===Altium Designer===&lt;br /&gt;
&lt;br /&gt;
Pour permettre au RFDuino de communiquer avec les différents composants, nous aurons besoin de quelques composants électroniques. Afin que cela soit plus esthétique pour la modélisation finale, nous allons créer une carte PCB pour rassembler tous ces composants dessus. On utilisera le logiciel Altium Designer pour cela.&lt;br /&gt;
&lt;br /&gt;
Avant de représenter notre circuit général, nous allons commencer par créer une librairie rassemblant tous les composants que nous utiliserons par la suite, en particulier nos composants CMS (accéléromètre et résistances). Pour ce qui est des LEDs et du buzzer, qui sont traversants, nous pourrons utiliser des headers classiques.&lt;br /&gt;
&lt;br /&gt;
Il a donc fallu créer le schematic ainsi que l'empreinte de nos composants CMS. Voici un exemple avec notre accéléromètre :&lt;br /&gt;
[[Fichier:Accelerosch.PNG|500px|thumb|left|Schematic de l'accéléromètre]]&lt;br /&gt;
[[Fichier:Acceleropcb.PNG|500px|thumb|center|Empreinte PCB de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les fichiers Altium sont disponibles sur notre dépôt GIT. Après cela, nous pouvons maintenant construire notre schematic du montage entier et ensuite le fichier PCB afin de pouvoir graver notre circuit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après quelques modifications sur le montage prévu initialement, c'est-à-dire en enlevant une résistance entre un GPIO et l'alimentation de l'accéléromètre ainsi qu'en rajoutant des résistances pull-up sur les broches de notre liaison i2C (SDA et SCL) et un bouton poussoir en plus pour permettre un reset du RFDuino, nous avons pu créer notre schematic global pour en faire un PCB et l'exporter au format Gerber. De ce fait, le service EEI de Polytech pourra réaliser la gravure de notre carte PCB.&lt;br /&gt;
&lt;br /&gt;
Voici quelques photos pour illustrer notre projet sur Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Finalproto_sch.PNG|400px|thumb|left|Schematic du montage final]]&lt;br /&gt;
[[Fichier:Finalproto_pcb.PNG|400px|thumb|center|PCB du montage final]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On retrouve sur notre PCB final les headers, respectivement de 8 et 5 pins, de part et d'autre de la carte, qui représentent le RFDuino, où nous souderons des broches pour qu'elles puissent être intégrées au RFDuino. On note la présence de 5 autres headers de 2 pins, dont 3 pour des LEDs puis les 2 autres pour le buzzer et le bouton poussoir. Ce qui reste sont les composants CMS avec plusieurs composants à 2 pattes qui sont toutes les résistances de notre montage, celles de protection pour les LEDs et les pull-ups pour l'accéléromètre. Le dernier composant à 8 pattes est donc bien l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quelques difficultés ont été rencontrées durant ce travail notamment concernant les contraintes de construction sur le PCB final. En effet, les composants CMS choisis (surtout l'accéléromètre) étant parfois très petits, Altium n'accepte pas forcément le faible espacement entre les différentes pattes des composants, ce qui pose problème lors de la compilation. De plus, le plan de masse ne prenait pas en compte tous les éléments devant être rattachés à la masse. Il a fallu légèrement déplacer les headers représentant le RFDuino pour que cela soit possible. Il faudra alors peut-être légèrement plier les broches qui viendront s'intégrer sur le RFDuino pour ajouter notre PCB sur le RFDuino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons envoyé nos fichiers Altium au service EEI afin qu'il puisse réaliser physiquement notre carte. Nous nous retrouvons donc avec notre carte PCB récupérée auprès du service EEI. Voici le rendu :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:P46_carte.jpg|400px|thumb|center|Fabrication de notre carte PCB]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir souder nos différents composants, nous avons été rendre visite à Thierry Flamen, responsable du service EEI, afin de passer nos composants CMS au four (résistances et accéléromètre). En effet il était presque impossible de souder tous ces composants manuellement. Après ce passage au four, il nous restait les composants traversants à souder, c'est-à-dire les pins, les LEDs et notre buzzer. Voici le rendu après nos soudures :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:pcbfinal1_p46.jpg|200px|thumb|left|Vue du dessous de notre carte]]&lt;br /&gt;
[[Fichier:pcbfinal2_p46.jpg|200px|thumb|center|Vue du dessus de notre carte]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il manque sur la carte finale notre bouton poussoir qui permettait le reset de notre RFduino. Malheureusement en essayant de souder celui-ci, nous avons retiré du cuivre de la carte, ce qui nous empêche de pouvoir faire circuler le courant dans ce bouton. De plus, la piste avec du cuivre manquant était également responsable de l'alimentation de notre accéléromètre ainsi que d'une LED indiquant la mise sous-tension du contrôleur. Pour le rendu final, nous souderons un fil sur la LED pour pouvoir l'alimenter, cependant il serait plus complexe d'alimenter l'accéléromètre. Celui-ci ne fonctionnait déjà pas correctement de manière électrique. La soudure de ce composant demandait une grande précision puisqu'il est de taille minuscule. Nous n'utiliserons donc pas ce composant dans notre montage final.&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;br /&gt;
&lt;br /&gt;
=== Rapport de projet ===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Compte_rendu_projet_final_P46.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Codes et fichiers du projet ===&lt;br /&gt;
&lt;br /&gt;
Archive ZIP :&lt;br /&gt;
&lt;br /&gt;
=== Liens vers dépôt GIT ===&lt;br /&gt;
&lt;br /&gt;
* dépôt GIT de l'école : https://archives.plil.fr/ahuet/P46-Aide-anti-gaspillage-alimentaire&lt;br /&gt;
* dépôt GitHub : https://github.com/FrancoisLefevre12/Optali&lt;br /&gt;
&lt;br /&gt;
== Bibliographie ==&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Optali-master.zip&amp;diff=42255</id>
		<title>Fichier:Optali-master.zip</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Optali-master.zip&amp;diff=42255"/>
				<updated>2017-05-15T17:01:09Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=42253</id>
		<title>IMA4 2016/2017 P46 : Aide anti-gaspillage alimentaire</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=42253"/>
				<updated>2017-05-15T16:59:40Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : /* Fichiers Rendus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
En France, nous jetons en moyenne 21% des aliments que nous achetons, ce qui représente une perte de 100 à 160 euros par an par habitant. Cela est en partie dû à la date limite de consommation associée à chaque produit. En effet, à partir du moment où cette date sera dépassée le consommateur jettera les produits concernés sans réfléchir, même si ceux-ci peuvent parfois être encore mangeables. Plutôt que d'essayer de les convaincre du contraire, il serait judicieux de proposer aux adeptes du gaspillage une aide permettant de gérer tous les aliments dont ils disposent chez eux afin d'éviter la surprise de tomber sur plusieurs produits périmés lorsqu'ils ouvrent la porte de leur frigo. &lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Ce projet permet d'aider les utilisateurs d'une part à mémoriser les denrées périssables qu'ils disposent dans leur réserve alimentaire et d'autre part d'avertir l'utilisateur qu'un événement important a lieu. Ceci peut être une notification qu'un aliment va bientôt dépasser sa date de péremption, que la porte du frigidaire est restée ouverte ou encore que le nombre d'aliments dans la réserve devient critique et qu'il faudra de nouveau l'alimenter. Enfin, le système aidera l'utilisateur à trouver des idées de repas pouvant permettre de consommer les aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Notre prototype permettra d'éviter le gaspillage alimentaire ainsi que d'aider l'utilisateur dans sa gestion du stockage d'aliments.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
&lt;br /&gt;
Notre système sera composé de 3 éléments. &lt;br /&gt;
&lt;br /&gt;
Premièrement, un ou des smartphones appartenant aux utilisateurs. Ces derniers permettront de scanner grâce à son appareil photo, le code barre du produit ainsi que sa date de péremption. Il servira aussi d'interface utilisateur pour notre système. En effet, c'est par cet outil que l'utilisateur pourra lister tous les aliments que l'utilisateur a dans sa base et tout ça en les triant par date de péremption, ou encore voir les recettes possibles pour consommer des aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Deuxièmement, un serveur, de type Raspberry, qui permettra de stocker la base de donnée contenant les aliments de la réserve. Ce serveur sera connecté par wifi.&lt;br /&gt;
 &lt;br /&gt;
Troisièmement, un contrôleur (Rfduino) qui comportera une LED pour indiquer la mise sous tension du contrôleur, une LED pour prévenir l'utilisateur qu'un aliment va bientôt passer sa date de péremption et une dernière LED pour prévenir l'utilisateur que son niveau de réserve est critique ainsi qu'un buzzer et un accéléromètre pour buzzer quand la porte du frigo est restée trop longtemps ouverte. Ce dernier sera fixé au frigo par l'intermédiaire d'un dispositif adapté qui sera un système aimanté qui se pose sur le frigo.&lt;br /&gt;
&lt;br /&gt;
Nous implémenterons donc une application mobile Android qui fera le lien entre les 2 autres systèmes.&lt;br /&gt;
&lt;br /&gt;
Pour la partie électronique que nous aurons à réaliser, nous utiliserons une Breadboard pour faire des premiers tests puis nous créerons une carte PCB pour notre montage final.&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
On utilisera une Raspberry Pi en guise de serveur pour pouvoir s'occuper du stockage de toutes les données dans notre projet puisque notre contrôleur sera incapable de les contenir, ce n'est d'ailleurs pas son but ici.&lt;br /&gt;
&lt;br /&gt;
Notre smartphone fera donc le lien entre notre base de données et notre système embarqué par l'intermédiaire de l'application mobile.&lt;br /&gt;
&lt;br /&gt;
Nous prendrons ici un RFduino puisque celui-ci nous permet d'ajouter des modules comme bon nous semble afin d'adapter le système aux besoins de notre application. Il est également parfaitement compatible avec les applications Android. De plus, nous avons un Bluetooth directement intégré au RFduino pour s'assurer que les liaisons RFduino-application mobile se fassent correctement. &lt;br /&gt;
On notera également que ce contrôleur consomme peu de courant et ne demande qu'une faible tension d'alimentation, critères importants pour ce genre de projet. C'est la raison principale de son utilisation pour être utilisé comme interface physique sur le frigo, en ajoutant également sa taille réduite comparée à la Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
&lt;br /&gt;
Nous avons donc besoin du matériel suivant :&lt;br /&gt;
&lt;br /&gt;
*Raspberry Pi.&lt;br /&gt;
*Clef wifi&lt;br /&gt;
*RFduino (RFD22102 DIP Board, RFD22121 USB Shield, RFD22126 Dual AAA battery shield).&lt;br /&gt;
*2 piles AAA.&lt;br /&gt;
*3 leds tranversantes.&lt;br /&gt;
*3 Résistances 330 Ohm.&lt;br /&gt;
*1 Résistance 10 kOhm.&lt;br /&gt;
*Un buzzer.&lt;br /&gt;
*Accéléromètre.&lt;br /&gt;
*Aimants&lt;br /&gt;
*Un boîtier permettant d'intégrer la RFduino + fixation sur le frigo (modélisation à voir).&lt;br /&gt;
&lt;br /&gt;
Pour le buzzer, l'accéléromètre et les résistances, nous choisirons des composants CMS pour nous permettre d'avoir une carte plus petite.&lt;br /&gt;
&lt;br /&gt;
===Calendrier prévisionnel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Liste des tâches à effectuer====&lt;br /&gt;
&lt;br /&gt;
* Configurer la Raspberry :&lt;br /&gt;
** Installer et configurer le serveur.&lt;br /&gt;
** Créer le diagramme UML de notre future base de données.&lt;br /&gt;
** Créer la base sur le serveur.&lt;br /&gt;
** Configurer la connexion WiFi.&lt;br /&gt;
&lt;br /&gt;
* Monter et programmer la RFduino :&lt;br /&gt;
** Connecter les différents modules au RFduino (accéléromètre, LEDs, buzzer, Batterie, module Bluetooth).&lt;br /&gt;
** Récupérer les consignes du smartphone grâce au Bluetooth.&lt;br /&gt;
** Programmer le comportement du RFduino en fonction des consignes.&lt;br /&gt;
** Construire le boitier final.&lt;br /&gt;
&lt;br /&gt;
* Implémenter l'application mobile Android :&lt;br /&gt;
** Une première activité permettant de se connecter au RFduino et à la Raspberry.&lt;br /&gt;
** Scanner une date et un code barre.&lt;br /&gt;
** Ajout/suppression d'un aliment dans la base de donnée.&lt;br /&gt;
** Envoi d'une consigne au RFduino.&lt;br /&gt;
** Rendre l'interface utilisateur ergonomique (lister aliments, envoyer vers page de recettes avec l'utilisation des aliments bientôt périmés...).&lt;br /&gt;
&lt;br /&gt;
====Calendrier====&lt;br /&gt;
&lt;br /&gt;
Répartition du temps consacré au projet (120h *2) :&lt;br /&gt;
&lt;br /&gt;
*Partie Raspberry : 60h&lt;br /&gt;
*Partie RFduino : 60h&lt;br /&gt;
*Partie développement mobile : 120h&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
&lt;br /&gt;
===Feuille d'heures===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 !  !! Lundi 16-18h !! Mercredi 14-18h !! Jeudi 8-10h&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 1&lt;br /&gt;
&lt;br /&gt;
 | '''23/01''' :  &lt;br /&gt;
* Installation du logiciel Android Studio pour être prêt à commencer l'application mobile.&lt;br /&gt;
* Création du Repository Git sur GitHub : https://github.com/FrancoisLefevre12/Optali.git&lt;br /&gt;
* Réalisation de différents schémas fonctionnels pour se donner une idée du travail à effectuer, aussi bien du software que du hardware.&lt;br /&gt;
* Quelques précisions supplémentaires apportées sur le cahier des charges.&lt;br /&gt;
* Ajout de liens de référence pour la liste de matériel à acheter.&lt;br /&gt;
&lt;br /&gt;
 | '''25/01''' :  &lt;br /&gt;
* Précision des composants requis (accéléromètre, buzzer, LEDs, résistances).&lt;br /&gt;
* Écriture du montage à la main.&lt;br /&gt;
* Étude du fonctionnement de l'accéléromètre, du buzzer.&lt;br /&gt;
* Écriture de la structure de l'application à la main.&lt;br /&gt;
&lt;br /&gt;
 | '''26/01''' :&lt;br /&gt;
*Réalisation graphique de la première page de l'application.&lt;br /&gt;
*Conception du schéma électrique pour tous les composants connectés au RFduino.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 2&lt;br /&gt;
&lt;br /&gt;
 | '''30/01''' :&lt;br /&gt;
*Réalisation du diagramme UML de la base de données qui sera stockée sur la Raspberry Pi&lt;br /&gt;
*Installation de l'outil de développement mobile sur le second PC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 | '''01/02''' :&lt;br /&gt;
*Nous nous sommes d'abord rendus compte que la résistance entre un des GPIO et l'accéléromètre était inutile, nos premiers calculs étaient erronés. Nous ne la garderons donc pas sur notre schéma électrique final.&lt;br /&gt;
*Avancement sur la partie application mobile : réalisation de la page &amp;quot;Ajout&amp;quot; sur laquelle nous tomberons après avoir cliquer sur &amp;quot;ajout&amp;quot; sur la page principale de l'application. Nous avons étendu l'activité principale jusqu'à cette nouvelle activité &amp;quot;Ajout&amp;quot;.&lt;br /&gt;
*Nous avons récupéré notre Raspberry Pi pour commencer à installer notre base de données dessus. Nous avons actuellement quelques problèmes pour nous connecter sur la Raspberry. Nous travaillons sur ce point.&lt;br /&gt;
&lt;br /&gt;
 | '''02/02''' :&lt;br /&gt;
* Application mobile : Mise en place des LEDs sur la home page et de la zone de notification avec les messages associés.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 3&lt;br /&gt;
&lt;br /&gt;
 | '''06/02''' :&lt;br /&gt;
*Nous arrivons à accéder à la Raspberry via le port série de celle-ci. Nous avons également configuré sa connexion Ethernet afin de pouvoir télécharger des paquets dessus et installer notre base de données. &lt;br /&gt;
*Nous rencontrions des problèmes sur le second PC de travail pour récupérer le projet Optali sur Android Studio via notre dépôt GIT. Nous avons pu rectifier ce souci.&lt;br /&gt;
&lt;br /&gt;
 | '''08/02''' :&lt;br /&gt;
*Tentative d'établissement d'un point d'accès WiFi sur notre Raspberry. Nous n'avons pas réussi pour le moment.&lt;br /&gt;
*Restructuration du Repository git.&lt;br /&gt;
*Essai d'importation de la librairie Zxing qui permettra de décoder les code-barres.&lt;br /&gt;
 |&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 4&lt;br /&gt;
&lt;br /&gt;
 | '''13/02'''&lt;br /&gt;
*Configuration du wifi de la Raspberry. &lt;br /&gt;
*Étude d'une mise en place d'un service web via php.&lt;br /&gt;
&lt;br /&gt;
 | '''15/02'''&lt;br /&gt;
*Mise en place d'un lecteur de caractère sur l'application. On utilisera tesseract.&lt;br /&gt;
*Début de la création du PCB via Altium designer. Création d'une librairie pour l'accéléromètre qui est un composant CMS assez spécial. On pourra cependant utiliser des headers classiques pour le buzzer et les LEDs puisque ce sont des composants traversants.&lt;br /&gt;
*Création des premiers fichiers php de connection à la base de donnée et d'insertion d'aliments. Tous ces fichiers seront déposés de la même manière sur le dépôt git.&lt;br /&gt;
&lt;br /&gt;
 | '''16/02'''&lt;br /&gt;
*Adaptation avec prise en compte des cas du code php d'insertion de produits par requête sur la base de donnée.&lt;br /&gt;
*Ajout du code d'implantation de la base de donnée.&lt;br /&gt;
*Altium: Accéléromètre terminé, mise en place des résistances.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 5 (interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''22/02 (3 heures)'''&lt;br /&gt;
*Installation de l'OS de la raspberry.&lt;br /&gt;
*Installation d'Openssh-server, apache2, php5, iptables, mysql-server, php5-mysql.&lt;br /&gt;
*Redirection des ports du routeur vers la raspberry.&lt;br /&gt;
*Configuration de iptables de la raspberry.&lt;br /&gt;
&lt;br /&gt;
 | '''23/02 (2 heures)'''&lt;br /&gt;
*Implantation de la base de donnée sur la raspberry pi.&lt;br /&gt;
|&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 6&lt;br /&gt;
 | '''27/02'''&lt;br /&gt;
*Vérification de la syntaxe de l'insertion de valeurs dans la base de donnée.&lt;br /&gt;
*Création des premières requêtes sur la base de donnée.&lt;br /&gt;
*Finalisation du PCB de l'Optali Board.&lt;br /&gt;
&lt;br /&gt;
 | '''01/03'''&lt;br /&gt;
*Étude et ajout de la librairie volley pour communiquer avec le serveur.&lt;br /&gt;
*Implantation de la fonction d'envoi de données jusqu'au serveur.&lt;br /&gt;
*Après avoir vu avec un professeur, nous avons remarqué que le routage n'était pas adéquat et la disposition des composants n'était pas optimal. Du travail reste donc encore à effectuer.&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 7&lt;br /&gt;
 | '''06/03'''&lt;br /&gt;
*Correction du fichier post.php&lt;br /&gt;
*Finition du protocole d'ajout d'aliment sur la base de donnée. (Code php et page ajout terminée).&lt;br /&gt;
*PCB terminé.&lt;br /&gt;
*Installation d'arduino IDE, doc arduino collecté.&lt;br /&gt;
&lt;br /&gt;
 | '''08/03'''&lt;br /&gt;
*Implémentation de la page ListeIngredient.xml et de l'activité listActivity.java.&lt;br /&gt;
*Documentation sur la procédure de communication bluetooth entre la Rfduino et l'application mobile.&lt;br /&gt;
*Obtention de librairie en lien avec cela.&lt;br /&gt;
*Prise en main de programmation rfduino.&lt;br /&gt;
&lt;br /&gt;
 | '''09/03'''&lt;br /&gt;
*Nous nous sommes rendus compte qu'il était nécessaire de rajouter un bouton poussoir sur notre montage afin de permettre la réinitialisation de notre RFDuino si nécessaire. Nous devons également faire en sorte de pouvoir poser notre carte PCB directement sur notre RFDuino en utilisant des broches. Nous devons donc rajouter ces éléments-ci.&lt;br /&gt;
*Ecriture de la page get.php&lt;br /&gt;
*Premiers tests sur la ListView de l'activité ListActivity.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 8&lt;br /&gt;
 | '''13/03'''&lt;br /&gt;
*Recherche de pistes concernant la programmation RFDuino. Nous pouvons la détecter en bluetooth via un smartphone Android.&lt;br /&gt;
*Finition du Tablelayout et du code java associé sur la page ListActivity.&lt;br /&gt;
&lt;br /&gt;
 | '''15/03'''&lt;br /&gt;
*Ajout de la JsonArrayRequest dans la page ListActivity.&lt;br /&gt;
*Nous nous sommes rendus compte au moment de programmer la liaison I2C de l'accéléromètre avec la RFDuino que nous avions oublié de mettre des résistances pull-up entre l'alimentation du composant et les broches SDA et SCL. Les modifications ont donc été faites puis nous avons envoyé finalement notre PCB à la fabrication.&lt;br /&gt;
&lt;br /&gt;
 | '''16/03'''&lt;br /&gt;
*Changement de stratégie au niveau de la requête JsonArrayRequest. On récupère toute la base et ensuite le traitement sera effectuer dans l'application mobile.&lt;br /&gt;
*Rédaction de la partie Altium du wiki.&lt;br /&gt;
*Recherche de docs sur le système bluetooth du RFduino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 9&lt;br /&gt;
 | '''20/03'''&lt;br /&gt;
*Réalisation de différents réglages pour pouvoir utiliser l'application Optali sur l'Android phone fourni par notre professeur (LG G4c)&lt;br /&gt;
*Recherche de docs concernant la partie java responsable de la communication Bluetooth.&lt;br /&gt;
*Reprise de la solution Tesseract pour la lecture de caractères.&lt;br /&gt;
&lt;br /&gt;
 | '''21/03''' (séance supplémentaire de 3 heures)&lt;br /&gt;
*Début du développement de la partie communication entre RFDuino et l'appli mobile. Nous pouvons détecter le RFduino à partir de Android Studio mais nous n'arrivons pas encore à nous connecter dessus directement.&lt;br /&gt;
*Finition de la fonctionnalité tesseract. La lecture de caractères est donc maintenant possible.&lt;br /&gt;
&lt;br /&gt;
 | '''22/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity&lt;br /&gt;
*Connexion possible entre le RFduino et notre appli mobile. Il faut maintenant pouvoir assurer un échange de données via du GATT.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 10&lt;br /&gt;
 | '''27/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity (suite). Utilisation de la solution postman.&lt;br /&gt;
*Mise à jour du wiki pour la partie Altium.&lt;br /&gt;
*Gestion du dépôt git.&lt;br /&gt;
*Récupération de la carte PCB au service EEI.&lt;br /&gt;
&lt;br /&gt;
 | '''29/03'''&lt;br /&gt;
*Mise en place du tri des Produits avec un critère d'ordonnabilité variable&lt;br /&gt;
*Implémentation du champs recherche et action sur la liste&lt;br /&gt;
*Écriture des pages Php consume.php et delete.php pour décrémenter le nombre d'aliment dans le frigo ou le supprimer&lt;br /&gt;
*Récupération des composants&lt;br /&gt;
*Passage au four pour souder les premiers composants en CMS&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 11&lt;br /&gt;
&lt;br /&gt;
 | '''03/04'''&lt;br /&gt;
*Dé-soudage et resoudage de l'accéléromètre.&lt;br /&gt;
*Soudure des composants&lt;br /&gt;
&lt;br /&gt;
 | '''05/04'''&lt;br /&gt;
*Test du Buzzer&lt;br /&gt;
*Code de l'accéléromètre&lt;br /&gt;
*Création de l'Optali box (la boite qui contient le RFduino fixé au frigo)&lt;br /&gt;
*Finition de la fonction 'delete'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 | '''06/04'''&lt;br /&gt;
*Problème pour faire fonctionner le code de l'accéléro. Il faudra le tester électriquement.&lt;br /&gt;
*Implantation du logo de l'appli &lt;br /&gt;
*Debuggage d'une requête de la page 'list'&lt;br /&gt;
*Documentation sur les listes déroulantes sous les EditTexts.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 12 (Interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''11/04''' (3 heures)&lt;br /&gt;
*Après avoir remarqué que le code de l'accéléro ne fonctionnait pas alors qu'il paraît correct, nous avons décidez de vérifier les propriétés électriques de notre montage.&lt;br /&gt;
En observant à l'analyseur logique, il semblerait que l'horloge de la liaison i2C n'est en fait qu'un signal bruité. Il faudra donc retenter de souder le composant quand cela sera possible.&lt;br /&gt;
&lt;br /&gt;
 | '''13/04''' (6 heures)&lt;br /&gt;
*Terminaison du programme RFduino qui fonctionne théoriquement, nous attendons de terminer les dernières soudures pour pouvoir le tester physiquement.&lt;br /&gt;
*En attendant de pouvoir réaliser des soudures, nous avons repris la partie communication bluetooth entre le RFduino et l'appli. Après avoir tenté d'utiliser un programme permettant de gérer le protocole GATT sans savoir envoyer ou recevoir de données, nous nous sommes orientés sur une communication plus basique basée sur de nombreux exemples que l'on peut voir sur le web.&lt;br /&gt;
&lt;br /&gt;
 | '''15/04''' (6 heures)&lt;br /&gt;
*Après s'être rendu compte que la communication plus &amp;quot;basique&amp;quot; que nous voulions utiliser n'était pas compatible avec le BLE, nous sommes une fois de plus repartis de zéro pour cette partie.&lt;br /&gt;
*Après quelques recherches, nous avons trouvé un programme réalisant la gestion d'un socket BLE sur le principe du protocole GATT. Grâce à celui-ci, il nous est possible de recevoir et d'envoyer des données via BLE sur RFduino ainsi que sur l'appli mobile.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 13 (Interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''17/04 (4 heures)'''&lt;br /&gt;
*Ajout du singleton Etat pour partager l'état des aliments dans la réserve alimentaire&lt;br /&gt;
*Transfert des requêtes de la base de donnée vers le singleton pour optimiser l'actualisation et le partage des données.&lt;br /&gt;
*Actualisation automatique des données sur la page principale.&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Semaine 14&lt;br /&gt;
| '''24/04'''&lt;br /&gt;
*Modification de la présentation du wiki&lt;br /&gt;
*Modification de la fonctionnalité du bouton actualiser en changement d'activité&lt;br /&gt;
&lt;br /&gt;
| '''26/04'''&lt;br /&gt;
*Ajout de la page liste recette&lt;br /&gt;
&lt;br /&gt;
| '''27/04''' (3 heures)&lt;br /&gt;
*Ajout des listes recettes dans ListeRecette&lt;br /&gt;
*Ajout des requêtes des recettes sur ListeRecette.java&lt;br /&gt;
*Création du fichier listeRecette.php sur le serveur pour faire la requête SQL et envoyer sur l'application.&lt;br /&gt;
*Soudure des derniers composants pour terminer le PCB. Tout est soudé sauf le bouton poussoir qui devait permettre un reset du RFduino. En cherchant d'ailleurs à souder ce bouton, nous avons retiré malencontreusement la piste de cuivre permettant de répartir le 3.3V du RFduino sur notre PCB. Notre accéléromètre qui ne marchait déjà pas vraiment n'est plus alimenté. Nous ferons sans notre accéléromètre pour le rendu final. &lt;br /&gt;
|-&lt;br /&gt;
|Semaine 15&lt;br /&gt;
|'''02/05'''&lt;br /&gt;
*Réalisation de la vidéo de présentation du projet avec Laurent Engels.&lt;br /&gt;
|'''03/05'''&lt;br /&gt;
*Remplacement de la LED &amp;quot;LED_Perim&amp;quot; qui était défaillante et ne s'allumait pas quand il le fallait.&lt;br /&gt;
*Début de la réalisation du rapport de projet.&lt;br /&gt;
|'''04/05'''&lt;br /&gt;
*Débuggage de la &amp;quot;LED_Perim&amp;quot;. Le problème n'était donc pas électrique mais bien au niveau software. Il existait un conflit entre l'allumage de cette LED et la pin TX de la liaison série qui était défini sur la même broche.&lt;br /&gt;
*Débuggage de l'appli pour éviter les quelques plantages que l'on peut avoir parfois.&lt;br /&gt;
|-&lt;br /&gt;
|Semaine 16&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===Premières idées===&lt;br /&gt;
&lt;br /&gt;
Voici les premières idées de l'application mobile et du composant fixé sur le frigo.&lt;br /&gt;
[[Fichier:Optali_v1.jpg|400px|thumb|left|Optali version 1]]&lt;br /&gt;
[[Fichier:OptaliBox_v1.jpg|400px|thumb|center|OptaliBox version 1]]&lt;br /&gt;
[[Fichier:P46_schema.jpg|400px|thumb|center|Schéma électrique version 1]]&lt;br /&gt;
&lt;br /&gt;
En s'intéressant aux différentes datasheets ou données constructeur des composants que nous voulons utiliser, nous trouvons indispensable d'utiliser des résistances de 330 Ohms pour l'utilisation des LEDs, pour éviter de les griller.&lt;br /&gt;
&lt;br /&gt;
Edit : Retrait de la résistance R2.&lt;br /&gt;
&lt;br /&gt;
Concernant l'accéléromètre, nous avons choisi un modèle qui nous permet de brancher directement ce module sur une broche du RFDuino. On branchera directement les GPIOs de la RFduino sur les ports SDA et SCL de l'accéléromètre qui correspondent à l'interface I2C pour pouvoir communiquer. On utilisera aussi la broche INT1 pour pouvoir générer des interruptions directement depuis l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
On connectera le buzzer directement à une broche de la RFduino aussi. Concernant celui-ci il reste une incertitude puisqu'on ne trouve aucune information sur le courant à fournir pour l'alimentation de ce composant sur sa datasheet. Après différentes recherches sur Internet, il pourrait être nécessaire d'utiliser un montage amplificateur à transistor comme un émetteur commun pour booster le courant en sortie d'une broche GPIO. Quelques buzzers trouvés avec des données constructeur montrent que ce type de composant nécessite généralement un courant d'environ 30 mA. Nous verrons dans la pratique si cela sera vraiment nécessaire. Par sécurité, on ajoutera un transistor bipolaire dans la liste de matériel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:screen_LED.png|400px|thumb|left|Données constructeur pour LEDs]]&lt;br /&gt;
[[Fichier:screen_accel.png|400px|thumb|center|Datasheet de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
====Configuration école====&lt;br /&gt;
&lt;br /&gt;
*Pour configurer notre Raspberry Pi, nous utilisons son port série et &amp;quot;minicom&amp;quot;. Pour pouvoir télécharger des paquets, il fallait la connecter au réseau. Nous lui avons donc affecté une adresse IP fixe avec le fichier /etc/network/interfaces. Voici les modifications qui ont été apportées : &lt;br /&gt;
&lt;br /&gt;
   auto eth0&lt;br /&gt;
   iface eth0 inet static&lt;br /&gt;
   address 172.26.78.15&lt;br /&gt;
   netmask 255.255.240.0&lt;br /&gt;
   gateway 172.26.79.254&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il a également fallu ajouter la commande &amp;quot;export http_proxy=http://proxy.polytech-lille.fr:3128&amp;quot; (il faudra effectuer cette commande à chaque démarrage de la Pi) pour pouvoir utiliser le proxy de l'école. &lt;br /&gt;
Nous avons de plus modifier le fichier /etc/resolv.conf avec la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
   nameserver 193.48.57.34&lt;br /&gt;
&lt;br /&gt;
Malgré cela, nous avions des soucis pour nous connecter au réseau. Il y avait en fait un processus dhcp en tâche de fond qui nous empêchait de garder le contenu de resolv.conf. Il a donc fallu trouver ce processus pour le &amp;quot;kill&amp;quot; et pouvoir accéder correctement au réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons du coup pu installer postgresql pour pouvoir configurer une base de données sur notre Pi.&lt;br /&gt;
&lt;br /&gt;
====Configuration à domicile====&lt;br /&gt;
&lt;br /&gt;
Pour nous mettre dans une situation plus fidèle à notre projet, nous avons configuré la raspberry à domicile.&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abords installé Raspbian, puis installé les paquets nécessaire au fonctionnement du serveur.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Openssh-server''': permettre d'accès à distance à la raspberry pour pouvoir y accéder depuis l'école.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Iptables''': pour sécuriser les ports non utilisé et libérer l'accès aux ports qui nous intéressent (ssh 22,http 80,https 443).&amp;lt;br&amp;gt;&lt;br /&gt;
- '''apache2, php5, mysql-server''' : pour mettre en place notre service web.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons rediriger les ports 80 et 22 du routeur pour pouvoir accéder à la raspberry de l'extérieur.&lt;br /&gt;
&lt;br /&gt;
Pour finir, nous avons créer un fichier de config iptables permettant de sécuriser un minimum la base de donnée et de permettre d'autoriser la communication des ports 22, 80 et 443 correspondants aux ports ssh, http et https. le fichier de configuration a été déposé dans le dépôt git. Il nous a fallut le rendre exécutable via un chmod. Puis pour l'exécuter à chaque démarrage du system, dans le fichier /etc/init.d/ taper : &lt;br /&gt;
&lt;br /&gt;
    sudo update-rc.d firewall defaults (si notrefichier s'appelle firewall et s'il est dans init.d)&lt;br /&gt;
&lt;br /&gt;
===Base de donnée===&lt;br /&gt;
&lt;br /&gt;
Nos données alimentaires disponibles par toute la famille doivent être stocké sur un serveur de base de donnée externe (tel une Raspberry pi). Nous nous proposons de créer le diagramme UML représentant cette future base de donnée.&lt;br /&gt;
[[Fichier:Optali_UML.jpg|700px|thumb|center|Diagramme UML base de donnée]]&lt;br /&gt;
&lt;br /&gt;
On créera donc 3 entités. Date, Product et Recipe. &lt;br /&gt;
&lt;br /&gt;
- Product rassemble les aliments qui sont ou ont été dans la réserve alimentaire. NbProdIn permet de connaître le nombre de produits identiques (possibilité de date différentes mais pas de doublons et on garde l'information de quantité. NbProdBought donne une information sur le nombre de produits identique ayant été acheté depuis la mise en service de la base de donnée. Ainsi nous pourrons par la suite proposer une liste de course à l'utilisateur en fonction de la fréquence d'achat des produits.&lt;br /&gt;
&lt;br /&gt;
- Recipe contient les recettes que pourra rentrer l'utilisateur sur l'application. L'utilisateur pourra ainsi se voir proposer des recettes en fonction de ce qu'il a dans son frigo et de ses recettes personnelles.&lt;br /&gt;
&lt;br /&gt;
'''''Edit : On ajoutera une valeur entière dans les tables Date et Unity pour gérer le cas où il existe plusieurs produits (différents ou identiques) avec une date de péremption équivalente. On les appellera NbDate la valeur dans la table Date et NbUnity dans la table Unity. On leur ajoutera de même une clef primaire IdUnity et IdListProduct'''''&lt;br /&gt;
&lt;br /&gt;
On utilisera MySql pour la gestion de nos bases de données. &lt;br /&gt;
La syntaxe pour l'implanter dans la base de donnée à été jointe au dépôt git.&lt;br /&gt;
&lt;br /&gt;
Pour lancer my SQL, on tapera:&lt;br /&gt;
&lt;br /&gt;
   mysql -h localhost -u root -p&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Web service===&lt;br /&gt;
&lt;br /&gt;
====Page init.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet d'initier l'accès à la base de donnée sur le serveur. Elle est requise pour les pages qui suivent.&lt;br /&gt;
&lt;br /&gt;
====Page post.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet l'insertion d'un produit et d'une date via l'application mobile. Elle prend donc ces deux arguments et les insère dans les tables Unity, Product et Date.&lt;br /&gt;
&lt;br /&gt;
====Page get.php====&lt;br /&gt;
&lt;br /&gt;
Page qui envoie la liste des aliments avec leur nom, leur date, leur quantité dans le frigo, la quantité d'exemplaires acheté en tout depuis la mise en place de l'appareil. Le tri se fera directement dans l'application mobile. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Application Mobile===&lt;br /&gt;
&lt;br /&gt;
====Home page====&lt;br /&gt;
&lt;br /&gt;
Page d'accueil permettant d'accéder aux pages d'ajout et de liste des produits disponibles. &amp;lt;br&amp;gt;&lt;br /&gt;
La page permet aussi d'effectuer la connexion entre la rfduino et l'application mobile. Elle montre les alertes (signaux) à l'utilisateur &lt;br /&gt;
et écrit leur signification.&lt;br /&gt;
&lt;br /&gt;
====Page d'ajout====&lt;br /&gt;
&lt;br /&gt;
Pour ajouter un produit et lire une date on utilisera un champ editText pour permettre à l'utilisateur d'écrire &amp;quot;Manuellement&amp;quot; dedans grâce au clavier du smartphone.&amp;lt;br&amp;gt;&lt;br /&gt;
De plus on utilise un bouton qui appellera la caméra pour détecter les caractères d'un produit ou d'une date. Au début nous voulions utiliser un détecteur de code barre, nous l'avons implémenté mais nous avons remarqué que la mise au point sur une surface non plane prend du temps d'autant plus qu'il faut questionner une base de donnée contenant tous les numéro de codes barres utilisés. Nous avons donc prit la décision d'utiliser uniquement la lecture de caractère et nous créerons une liste déroulante sous l'editText pour faciliter l'insertion d'un produit qui a déjà été ajouté. Pour la lecture de caractère, nous utilisons la librairie tesseract.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'envoi, nous utilisons la librairie Volley développé par google.&lt;br /&gt;
&lt;br /&gt;
====Page Liste====&lt;br /&gt;
&lt;br /&gt;
Permet de lister les produits dans la base de donnée. Une série de boutons radio permettent de trier les produits par ordre alphabétique, par date de péremption, par nombre d’occurrence dans la réserve alimentaire, par nombre d'achat depuis la mise en place du système.&amp;lt;br&amp;gt;&lt;br /&gt;
Une colonne permet de sélectionner les aliments désirés (par checkBox) pour ensuite les supprimer via un button &amp;quot;suppr&amp;quot; ou les choisir pour trouver des recettes qui les utilisent.&amp;lt;br&amp;gt;&lt;br /&gt;
Un EditText permet d'effectuer une recherche sur la base de donnée.&lt;br /&gt;
&lt;br /&gt;
===Altium Designer===&lt;br /&gt;
&lt;br /&gt;
Pour permettre au RFDuino de communiquer avec les différents composants, nous aurons besoin de quelques composants électroniques. Afin que cela soit plus esthétique pour la modélisation finale, nous allons créer une carte PCB pour rassembler tous ces composants dessus. On utilisera le logiciel Altium Designer pour cela.&lt;br /&gt;
&lt;br /&gt;
Avant de représenter notre circuit général, nous allons commencer par créer une librairie rassemblant tous les composants que nous utiliserons par la suite, en particulier nos composants CMS (accéléromètre et résistances). Pour ce qui est des LEDs et du buzzer, qui sont traversants, nous pourrons utiliser des headers classiques.&lt;br /&gt;
&lt;br /&gt;
Il a donc fallu créer le schematic ainsi que l'empreinte de nos composants CMS. Voici un exemple avec notre accéléromètre :&lt;br /&gt;
[[Fichier:Accelerosch.PNG|500px|thumb|left|Schematic de l'accéléromètre]]&lt;br /&gt;
[[Fichier:Acceleropcb.PNG|500px|thumb|center|Empreinte PCB de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les fichiers Altium sont disponibles sur notre dépôt GIT. Après cela, nous pouvons maintenant construire notre schematic du montage entier et ensuite le fichier PCB afin de pouvoir graver notre circuit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après quelques modifications sur le montage prévu initialement, c'est-à-dire en enlevant une résistance entre un GPIO et l'alimentation de l'accéléromètre ainsi qu'en rajoutant des résistances pull-up sur les broches de notre liaison i2C (SDA et SCL) et un bouton poussoir en plus pour permettre un reset du RFDuino, nous avons pu créer notre schematic global pour en faire un PCB et l'exporter au format Gerber. De ce fait, le service EEI de Polytech pourra réaliser la gravure de notre carte PCB.&lt;br /&gt;
&lt;br /&gt;
Voici quelques photos pour illustrer notre projet sur Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Finalproto_sch.PNG|400px|thumb|left|Schematic du montage final]]&lt;br /&gt;
[[Fichier:Finalproto_pcb.PNG|400px|thumb|center|PCB du montage final]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On retrouve sur notre PCB final les headers, respectivement de 8 et 5 pins, de part et d'autre de la carte, qui représentent le RFDuino, où nous souderons des broches pour qu'elles puissent être intégrées au RFDuino. On note la présence de 5 autres headers de 2 pins, dont 3 pour des LEDs puis les 2 autres pour le buzzer et le bouton poussoir. Ce qui reste sont les composants CMS avec plusieurs composants à 2 pattes qui sont toutes les résistances de notre montage, celles de protection pour les LEDs et les pull-ups pour l'accéléromètre. Le dernier composant à 8 pattes est donc bien l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quelques difficultés ont été rencontrées durant ce travail notamment concernant les contraintes de construction sur le PCB final. En effet, les composants CMS choisis (surtout l'accéléromètre) étant parfois très petits, Altium n'accepte pas forcément le faible espacement entre les différentes pattes des composants, ce qui pose problème lors de la compilation. De plus, le plan de masse ne prenait pas en compte tous les éléments devant être rattachés à la masse. Il a fallu légèrement déplacer les headers représentant le RFDuino pour que cela soit possible. Il faudra alors peut-être légèrement plier les broches qui viendront s'intégrer sur le RFDuino pour ajouter notre PCB sur le RFDuino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons envoyé nos fichiers Altium au service EEI afin qu'il puisse réaliser physiquement notre carte. Nous nous retrouvons donc avec notre carte PCB récupérée auprès du service EEI. Voici le rendu :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:P46_carte.jpg|400px|thumb|center|Fabrication de notre carte PCB]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir souder nos différents composants, nous avons été rendre visite à Thierry Flamen, responsable du service EEI, afin de passer nos composants CMS au four (résistances et accéléromètre). En effet il était presque impossible de souder tous ces composants manuellement. Après ce passage au four, il nous restait les composants traversants à souder, c'est-à-dire les pins, les LEDs et notre buzzer. Voici le rendu après nos soudures :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:pcbfinal1_p46.jpg|200px|thumb|left|Vue du dessous de notre carte]]&lt;br /&gt;
[[Fichier:pcbfinal2_p46.jpg|200px|thumb|center|Vue du dessus de notre carte]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il manque sur la carte finale notre bouton poussoir qui permettait le reset de notre RFduino. Malheureusement en essayant de souder celui-ci, nous avons retiré du cuivre de la carte, ce qui nous empêche de pouvoir faire circuler le courant dans ce bouton. De plus, la piste avec du cuivre manquant était également responsable de l'alimentation de notre accéléromètre ainsi que d'une LED indiquant la mise sous-tension du contrôleur. Pour le rendu final, nous souderons un fil sur la LED pour pouvoir l'alimenter, cependant il serait plus complexe d'alimenter l'accéléromètre. Celui-ci ne fonctionnait déjà pas correctement de manière électrique. La soudure de ce composant demandait une grande précision puisqu'il est de taille minuscule. Nous n'utiliserons donc pas ce composant dans notre montage final.&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;br /&gt;
&lt;br /&gt;
=== Rapport de projet ===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Compte_rendu_projet_final_P46.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Codes et fichiers du projet ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Liens vers dépôt GIT ===&lt;br /&gt;
&lt;br /&gt;
* dépôt GIT de l'école : https://archives.plil.fr/ahuet/P46-Aide-anti-gaspillage-alimentaire&lt;br /&gt;
* dépôt GitHub : https://github.com/FrancoisLefevre12/Optali&lt;br /&gt;
&lt;br /&gt;
== Bibliographie ==&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=42075</id>
		<title>IMA4 2016/2017 P46 : Aide anti-gaspillage alimentaire</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=42075"/>
				<updated>2017-05-11T14:40:15Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : /* Rapport de projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
En France, nous jetons en moyenne 21% des aliments que nous achetons, ce qui représente une perte de 100 à 160 euros par an par habitant. Cela est en partie dû à la date limite de consommation associée à chaque produit. En effet, à partir du moment où cette date sera dépassée le consommateur jettera les produits concernés sans réfléchir, même si ceux-ci peuvent parfois être encore mangeables. Plutôt que d'essayer de les convaincre du contraire, il serait judicieux de proposer aux adeptes du gaspillage une aide permettant de gérer tous les aliments dont ils disposent chez eux afin d'éviter la surprise de tomber sur plusieurs produits périmés lorsqu'ils ouvrent la porte de leur frigo. &lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Ce projet permet d'aider les utilisateurs d'une part à mémoriser les denrées périssables qu'ils disposent dans leur réserve alimentaire et d'autre part d'avertir l'utilisateur qu'un événement important a lieu. Ceci peut être une notification qu'un aliment va bientôt dépasser sa date de péremption, que la porte du frigidaire est restée ouverte ou encore que le nombre d'aliments dans la réserve devient critique et qu'il faudra de nouveau l'alimenter. Enfin, le système aidera l'utilisateur à trouver des idées de repas pouvant permettre de consommer les aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Notre prototype permettra d'éviter le gaspillage alimentaire ainsi que d'aider l'utilisateur dans sa gestion du stockage d'aliments.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
&lt;br /&gt;
Notre système sera composé de 3 éléments. &lt;br /&gt;
&lt;br /&gt;
Premièrement, un ou des smartphones appartenant aux utilisateurs. Ces derniers permettront de scanner grâce à son appareil photo, le code barre du produit ainsi que sa date de péremption. Il servira aussi d'interface utilisateur pour notre système. En effet, c'est par cet outil que l'utilisateur pourra lister tous les aliments que l'utilisateur a dans sa base et tout ça en les triant par date de péremption, ou encore voir les recettes possibles pour consommer des aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Deuxièmement, un serveur, de type Raspberry, qui permettra de stocker la base de donnée contenant les aliments de la réserve. Ce serveur sera connecté par wifi.&lt;br /&gt;
 &lt;br /&gt;
Troisièmement, un contrôleur (Rfduino) qui comportera une LED pour indiquer la mise sous tension du contrôleur, une LED pour prévenir l'utilisateur qu'un aliment va bientôt passer sa date de péremption et une dernière LED pour prévenir l'utilisateur que son niveau de réserve est critique ainsi qu'un buzzer et un accéléromètre pour buzzer quand la porte du frigo est restée trop longtemps ouverte. Ce dernier sera fixé au frigo par l'intermédiaire d'un dispositif adapté qui sera un système aimanté qui se pose sur le frigo.&lt;br /&gt;
&lt;br /&gt;
Nous implémenterons donc une application mobile Android qui fera le lien entre les 2 autres systèmes.&lt;br /&gt;
&lt;br /&gt;
Pour la partie électronique que nous aurons à réaliser, nous utiliserons une Breadboard pour faire des premiers tests puis nous créerons une carte PCB pour notre montage final.&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
On utilisera une Raspberry Pi en guise de serveur pour pouvoir s'occuper du stockage de toutes les données dans notre projet puisque notre contrôleur sera incapable de les contenir, ce n'est d'ailleurs pas son but ici.&lt;br /&gt;
&lt;br /&gt;
Notre smartphone fera donc le lien entre notre base de données et notre système embarqué par l'intermédiaire de l'application mobile.&lt;br /&gt;
&lt;br /&gt;
Nous prendrons ici un RFduino puisque celui-ci nous permet d'ajouter des modules comme bon nous semble afin d'adapter le système aux besoins de notre application. Il est également parfaitement compatible avec les applications Android. De plus, nous avons un Bluetooth directement intégré au RFduino pour s'assurer que les liaisons RFduino-application mobile se fassent correctement. &lt;br /&gt;
On notera également que ce contrôleur consomme peu de courant et ne demande qu'une faible tension d'alimentation, critères importants pour ce genre de projet. C'est la raison principale de son utilisation pour être utilisé comme interface physique sur le frigo, en ajoutant également sa taille réduite comparée à la Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
&lt;br /&gt;
Nous avons donc besoin du matériel suivant :&lt;br /&gt;
&lt;br /&gt;
*Raspberry Pi.&lt;br /&gt;
*Clef wifi&lt;br /&gt;
*RFduino (RFD22102 DIP Board, RFD22121 USB Shield, RFD22126 Dual AAA battery shield).&lt;br /&gt;
*2 piles AAA.&lt;br /&gt;
*3 leds tranversantes.&lt;br /&gt;
*3 Résistances 330 Ohm.&lt;br /&gt;
*1 Résistance 10 kOhm.&lt;br /&gt;
*Un buzzer.&lt;br /&gt;
*Accéléromètre.&lt;br /&gt;
*Aimants&lt;br /&gt;
*Un boîtier permettant d'intégrer la RFduino + fixation sur le frigo (modélisation à voir).&lt;br /&gt;
&lt;br /&gt;
Pour le buzzer, l'accéléromètre et les résistances, nous choisirons des composants CMS pour nous permettre d'avoir une carte plus petite.&lt;br /&gt;
&lt;br /&gt;
===Calendrier prévisionnel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Liste des tâches à effectuer====&lt;br /&gt;
&lt;br /&gt;
* Configurer la Raspberry :&lt;br /&gt;
** Installer et configurer le serveur.&lt;br /&gt;
** Créer le diagramme UML de notre future base de données.&lt;br /&gt;
** Créer la base sur le serveur.&lt;br /&gt;
** Configurer la connexion WiFi.&lt;br /&gt;
&lt;br /&gt;
* Monter et programmer la RFduino :&lt;br /&gt;
** Connecter les différents modules au RFduino (accéléromètre, LEDs, buzzer, Batterie, module Bluetooth).&lt;br /&gt;
** Récupérer les consignes du smartphone grâce au Bluetooth.&lt;br /&gt;
** Programmer le comportement du RFduino en fonction des consignes.&lt;br /&gt;
** Construire le boitier final.&lt;br /&gt;
&lt;br /&gt;
* Implémenter l'application mobile Android :&lt;br /&gt;
** Une première activité permettant de se connecter au RFduino et à la Raspberry.&lt;br /&gt;
** Scanner une date et un code barre.&lt;br /&gt;
** Ajout/suppression d'un aliment dans la base de donnée.&lt;br /&gt;
** Envoi d'une consigne au RFduino.&lt;br /&gt;
** Rendre l'interface utilisateur ergonomique (lister aliments, envoyer vers page de recettes avec l'utilisation des aliments bientôt périmés...).&lt;br /&gt;
&lt;br /&gt;
====Calendrier====&lt;br /&gt;
&lt;br /&gt;
Répartition du temps consacré au projet (120h *2) :&lt;br /&gt;
&lt;br /&gt;
*Partie Raspberry : 60h&lt;br /&gt;
*Partie RFduino : 60h&lt;br /&gt;
*Partie développement mobile : 120h&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
&lt;br /&gt;
===Feuille d'heures===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 !  !! Lundi 16-18h !! Mercredi 14-18h !! Jeudi 8-10h&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 1&lt;br /&gt;
&lt;br /&gt;
 | '''23/01''' :  &lt;br /&gt;
* Installation du logiciel Android Studio pour être prêt à commencer l'application mobile.&lt;br /&gt;
* Création du Repository Git sur GitHub : https://github.com/FrancoisLefevre12/Optali.git&lt;br /&gt;
* Réalisation de différents schémas fonctionnels pour se donner une idée du travail à effectuer, aussi bien du software que du hardware.&lt;br /&gt;
* Quelques précisions supplémentaires apportées sur le cahier des charges.&lt;br /&gt;
* Ajout de liens de référence pour la liste de matériel à acheter.&lt;br /&gt;
&lt;br /&gt;
 | '''25/01''' :  &lt;br /&gt;
* Précision des composants requis (accéléromètre, buzzer, LEDs, résistances).&lt;br /&gt;
* Écriture du montage à la main.&lt;br /&gt;
* Étude du fonctionnement de l'accéléromètre, du buzzer.&lt;br /&gt;
* Écriture de la structure de l'application à la main.&lt;br /&gt;
&lt;br /&gt;
 | '''26/01''' :&lt;br /&gt;
*Réalisation graphique de la première page de l'application.&lt;br /&gt;
*Conception du schéma électrique pour tous les composants connectés au RFduino.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 2&lt;br /&gt;
&lt;br /&gt;
 | '''30/01''' :&lt;br /&gt;
*Réalisation du diagramme UML de la base de données qui sera stockée sur la Raspberry Pi&lt;br /&gt;
*Installation de l'outil de développement mobile sur le second PC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 | '''01/02''' :&lt;br /&gt;
*Nous nous sommes d'abord rendus compte que la résistance entre un des GPIO et l'accéléromètre était inutile, nos premiers calculs étaient erronés. Nous ne la garderons donc pas sur notre schéma électrique final.&lt;br /&gt;
*Avancement sur la partie application mobile : réalisation de la page &amp;quot;Ajout&amp;quot; sur laquelle nous tomberons après avoir cliquer sur &amp;quot;ajout&amp;quot; sur la page principale de l'application. Nous avons étendu l'activité principale jusqu'à cette nouvelle activité &amp;quot;Ajout&amp;quot;.&lt;br /&gt;
*Nous avons récupéré notre Raspberry Pi pour commencer à installer notre base de données dessus. Nous avons actuellement quelques problèmes pour nous connecter sur la Raspberry. Nous travaillons sur ce point.&lt;br /&gt;
&lt;br /&gt;
 | '''02/02''' :&lt;br /&gt;
* Application mobile : Mise en place des LEDs sur la home page et de la zone de notification avec les messages associés.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 3&lt;br /&gt;
&lt;br /&gt;
 | '''06/02''' :&lt;br /&gt;
*Nous arrivons à accéder à la Raspberry via le port série de celle-ci. Nous avons également configuré sa connexion Ethernet afin de pouvoir télécharger des paquets dessus et installer notre base de données. &lt;br /&gt;
*Nous rencontrions des problèmes sur le second PC de travail pour récupérer le projet Optali sur Android Studio via notre dépôt GIT. Nous avons pu rectifier ce souci.&lt;br /&gt;
&lt;br /&gt;
 | '''08/02''' :&lt;br /&gt;
*Tentative d'établissement d'un point d'accès WiFi sur notre Raspberry. Nous n'avons pas réussi pour le moment.&lt;br /&gt;
*Restructuration du Repository git.&lt;br /&gt;
*Essai d'importation de la librairie Zxing qui permettra de décoder les code-barres.&lt;br /&gt;
 |&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 4&lt;br /&gt;
&lt;br /&gt;
 | '''13/02'''&lt;br /&gt;
*Configuration du wifi de la Raspberry. &lt;br /&gt;
*Étude d'une mise en place d'un service web via php.&lt;br /&gt;
&lt;br /&gt;
 | '''15/02'''&lt;br /&gt;
*Mise en place d'un lecteur de caractère sur l'application. On utilisera tesseract.&lt;br /&gt;
*Début de la création du PCB via Altium designer. Création d'une librairie pour l'accéléromètre qui est un composant CMS assez spécial. On pourra cependant utiliser des headers classiques pour le buzzer et les LEDs puisque ce sont des composants traversants.&lt;br /&gt;
*Création des premiers fichiers php de connection à la base de donnée et d'insertion d'aliments. Tous ces fichiers seront déposés de la même manière sur le dépôt git.&lt;br /&gt;
&lt;br /&gt;
 | '''16/02'''&lt;br /&gt;
*Adaptation avec prise en compte des cas du code php d'insertion de produits par requête sur la base de donnée.&lt;br /&gt;
*Ajout du code d'implantation de la base de donnée.&lt;br /&gt;
*Altium: Accéléromètre terminé, mise en place des résistances.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 5 (interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''22/02 (3 heures)'''&lt;br /&gt;
*Installation de l'OS de la raspberry.&lt;br /&gt;
*Installation d'Openssh-server, apache2, php5, iptables, mysql-server, php5-mysql.&lt;br /&gt;
*Redirection des ports du routeur vers la raspberry.&lt;br /&gt;
*Configuration de iptables de la raspberry.&lt;br /&gt;
&lt;br /&gt;
 | '''23/02 (2 heures)'''&lt;br /&gt;
*Implantation de la base de donnée sur la raspberry pi.&lt;br /&gt;
|&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 6&lt;br /&gt;
 | '''27/02'''&lt;br /&gt;
*Vérification de la syntaxe de l'insertion de valeurs dans la base de donnée.&lt;br /&gt;
*Création des premières requêtes sur la base de donnée.&lt;br /&gt;
*Finalisation du PCB de l'Optali Board.&lt;br /&gt;
&lt;br /&gt;
 | '''01/03'''&lt;br /&gt;
*Étude et ajout de la librairie volley pour communiquer avec le serveur.&lt;br /&gt;
*Implantation de la fonction d'envoi de données jusqu'au serveur.&lt;br /&gt;
*Après avoir vu avec un professeur, nous avons remarqué que le routage n'était pas adéquat et la disposition des composants n'était pas optimal. Du travail reste donc encore à effectuer.&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 7&lt;br /&gt;
 | '''06/03'''&lt;br /&gt;
*Correction du fichier post.php&lt;br /&gt;
*Finition du protocole d'ajout d'aliment sur la base de donnée. (Code php et page ajout terminée).&lt;br /&gt;
*PCB terminé.&lt;br /&gt;
*Installation d'arduino IDE, doc arduino collecté.&lt;br /&gt;
&lt;br /&gt;
 | '''08/03'''&lt;br /&gt;
*Implémentation de la page ListeIngredient.xml et de l'activité listActivity.java.&lt;br /&gt;
*Documentation sur la procédure de communication bluetooth entre la Rfduino et l'application mobile.&lt;br /&gt;
*Obtention de librairie en lien avec cela.&lt;br /&gt;
*Prise en main de programmation rfduino.&lt;br /&gt;
&lt;br /&gt;
 | '''09/03'''&lt;br /&gt;
*Nous nous sommes rendus compte qu'il était nécessaire de rajouter un bouton poussoir sur notre montage afin de permettre la réinitialisation de notre RFDuino si nécessaire. Nous devons également faire en sorte de pouvoir poser notre carte PCB directement sur notre RFDuino en utilisant des broches. Nous devons donc rajouter ces éléments-ci.&lt;br /&gt;
*Ecriture de la page get.php&lt;br /&gt;
*Premiers tests sur la ListView de l'activité ListActivity.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 8&lt;br /&gt;
 | '''13/03'''&lt;br /&gt;
*Recherche de pistes concernant la programmation RFDuino. Nous pouvons la détecter en bluetooth via un smartphone Android.&lt;br /&gt;
*Finition du Tablelayout et du code java associé sur la page ListActivity.&lt;br /&gt;
&lt;br /&gt;
 | '''15/03'''&lt;br /&gt;
*Ajout de la JsonArrayRequest dans la page ListActivity.&lt;br /&gt;
*Nous nous sommes rendus compte au moment de programmer la liaison I2C de l'accéléromètre avec la RFDuino que nous avions oublié de mettre des résistances pull-up entre l'alimentation du composant et les broches SDA et SCL. Les modifications ont donc été faites puis nous avons envoyé finalement notre PCB à la fabrication.&lt;br /&gt;
&lt;br /&gt;
 | '''16/03'''&lt;br /&gt;
*Changement de stratégie au niveau de la requête JsonArrayRequest. On récupère toute la base et ensuite le traitement sera effectuer dans l'application mobile.&lt;br /&gt;
*Rédaction de la partie Altium du wiki.&lt;br /&gt;
*Recherche de docs sur le système bluetooth du RFduino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 9&lt;br /&gt;
 | '''20/03'''&lt;br /&gt;
*Réalisation de différents réglages pour pouvoir utiliser l'application Optali sur l'Android phone fourni par notre professeur (LG G4c)&lt;br /&gt;
*Recherche de docs concernant la partie java responsable de la communication Bluetooth.&lt;br /&gt;
*Reprise de la solution Tesseract pour la lecture de caractères.&lt;br /&gt;
&lt;br /&gt;
 | '''21/03''' (séance supplémentaire de 3 heures)&lt;br /&gt;
*Début du développement de la partie communication entre RFDuino et l'appli mobile. Nous pouvons détecter le RFduino à partir de Android Studio mais nous n'arrivons pas encore à nous connecter dessus directement.&lt;br /&gt;
*Finition de la fonctionnalité tesseract. La lecture de caractères est donc maintenant possible.&lt;br /&gt;
&lt;br /&gt;
 | '''22/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity&lt;br /&gt;
*Connexion possible entre le RFduino et notre appli mobile. Il faut maintenant pouvoir assurer un échange de données via du GATT.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 10&lt;br /&gt;
 | '''27/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity (suite). Utilisation de la solution postman.&lt;br /&gt;
*Mise à jour du wiki pour la partie Altium.&lt;br /&gt;
*Gestion du dépôt git.&lt;br /&gt;
*Récupération de la carte PCB au service EEI.&lt;br /&gt;
&lt;br /&gt;
 | '''29/03'''&lt;br /&gt;
*Mise en place du tri des Produits avec un critère d'ordonnabilité variable&lt;br /&gt;
*Implémentation du champs recherche et action sur la liste&lt;br /&gt;
*Écriture des pages Php consume.php et delete.php pour décrémenter le nombre d'aliment dans le frigo ou le supprimer&lt;br /&gt;
*Récupération des composants&lt;br /&gt;
*Passage au four pour souder les premiers composants en CMS&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 11&lt;br /&gt;
&lt;br /&gt;
 | '''03/04'''&lt;br /&gt;
*Dé-soudage et resoudage de l'accéléromètre.&lt;br /&gt;
*Soudure des composants&lt;br /&gt;
&lt;br /&gt;
 | '''05/04'''&lt;br /&gt;
*Test du Buzzer&lt;br /&gt;
*Code de l'accéléromètre&lt;br /&gt;
*Création de l'Optali box (la boite qui contient le RFduino fixé au frigo)&lt;br /&gt;
*Finition de la fonction 'delete'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 | '''06/04'''&lt;br /&gt;
*Problème pour faire fonctionner le code de l'accéléro. Il faudra le tester électriquement.&lt;br /&gt;
*Implantation du logo de l'appli &lt;br /&gt;
*Debuggage d'une requête de la page 'list'&lt;br /&gt;
*Documentation sur les listes déroulantes sous les EditTexts.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 12 (Interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''11/04''' (3 heures)&lt;br /&gt;
*Après avoir remarqué que le code de l'accéléro ne fonctionnait pas alors qu'il paraît correct, nous avons décidez de vérifier les propriétés électriques de notre montage.&lt;br /&gt;
En observant à l'analyseur logique, il semblerait que l'horloge de la liaison i2C n'est en fait qu'un signal bruité. Il faudra donc retenter de souder le composant quand cela sera possible.&lt;br /&gt;
&lt;br /&gt;
 | '''13/04''' (6 heures)&lt;br /&gt;
*Terminaison du programme RFduino qui fonctionne théoriquement, nous attendons de terminer les dernières soudures pour pouvoir le tester physiquement.&lt;br /&gt;
*En attendant de pouvoir réaliser des soudures, nous avons repris la partie communication bluetooth entre le RFduino et l'appli. Après avoir tenté d'utiliser un programme permettant de gérer le protocole GATT sans savoir envoyer ou recevoir de données, nous nous sommes orientés sur une communication plus basique basée sur de nombreux exemples que l'on peut voir sur le web.&lt;br /&gt;
&lt;br /&gt;
 | '''15/04''' (6 heures)&lt;br /&gt;
*Après s'être rendu compte que la communication plus &amp;quot;basique&amp;quot; que nous voulions utiliser n'était pas compatible avec le BLE, nous sommes une fois de plus repartis de zéro pour cette partie.&lt;br /&gt;
*Après quelques recherches, nous avons trouvé un programme réalisant la gestion d'un socket BLE sur le principe du protocole GATT. Grâce à celui-ci, il nous est possible de recevoir et d'envoyer des données via BLE sur RFduino ainsi que sur l'appli mobile.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 13 (Interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''17/04 (4 heures)'''&lt;br /&gt;
*Ajout du singleton Etat pour partager l'état des aliments dans la réserve alimentaire&lt;br /&gt;
*Transfert des requêtes de la base de donnée vers le singleton pour optimiser l'actualisation et le partage des données.&lt;br /&gt;
*Actualisation automatique des données sur la page principale.&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Semaine 14&lt;br /&gt;
| '''24/04'''&lt;br /&gt;
*Modification de la présentation du wiki&lt;br /&gt;
*Modification de la fonctionnalité du bouton actualiser en changement d'activité&lt;br /&gt;
&lt;br /&gt;
| '''26/04'''&lt;br /&gt;
*Ajout de la page liste recette&lt;br /&gt;
&lt;br /&gt;
| '''27/04''' (3 heures)&lt;br /&gt;
*Ajout des listes recettes dans ListeRecette&lt;br /&gt;
*Ajout des requêtes des recettes sur ListeRecette.java&lt;br /&gt;
*Création du fichier listeRecette.php sur le serveur pour faire la requête SQL et envoyer sur l'application.&lt;br /&gt;
*Soudure des derniers composants pour terminer le PCB. Tout est soudé sauf le bouton poussoir qui devait permettre un reset du RFduino. En cherchant d'ailleurs à souder ce bouton, nous avons retiré malencontreusement la piste de cuivre permettant de répartir le 3.3V du RFduino sur notre PCB. Notre accéléromètre qui ne marchait déjà pas vraiment n'est plus alimenté. Nous ferons sans notre accéléromètre pour le rendu final. &lt;br /&gt;
|-&lt;br /&gt;
|Semaine 15&lt;br /&gt;
|'''02/05'''&lt;br /&gt;
*Réalisation de la vidéo de présentation du projet avec Laurent Engels.&lt;br /&gt;
|'''03/05'''&lt;br /&gt;
*Remplacement de la LED &amp;quot;LED_Perim&amp;quot; qui était défaillante et ne s'allumait pas quand il le fallait.&lt;br /&gt;
*Début de la réalisation du rapport de projet.&lt;br /&gt;
|'''04/05'''&lt;br /&gt;
*Débuggage de la &amp;quot;LED_Perim&amp;quot;. Le problème n'était donc pas électrique mais bien au niveau software. Il existait un conflit entre l'allumage de cette LED et la pin TX de la liaison série qui était défini sur la même broche.&lt;br /&gt;
*Débuggage de l'appli pour éviter les quelques plantages que l'on peut avoir parfois.&lt;br /&gt;
|-&lt;br /&gt;
|Semaine 16&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===Premières idées===&lt;br /&gt;
&lt;br /&gt;
Voici les premières idées de l'application mobile et du composant fixé sur le frigo.&lt;br /&gt;
[[Fichier:Optali_v1.jpg|400px|thumb|left|Optali version 1]]&lt;br /&gt;
[[Fichier:OptaliBox_v1.jpg|400px|thumb|center|OptaliBox version 1]]&lt;br /&gt;
[[Fichier:P46_schema.jpg|400px|thumb|center|Schéma électrique version 1]]&lt;br /&gt;
&lt;br /&gt;
En s'intéressant aux différentes datasheets ou données constructeur des composants que nous voulons utiliser, nous trouvons indispensable d'utiliser des résistances de 330 Ohms pour l'utilisation des LEDs, pour éviter de les griller.&lt;br /&gt;
&lt;br /&gt;
Edit : Retrait de la résistance R2.&lt;br /&gt;
&lt;br /&gt;
Concernant l'accéléromètre, nous avons choisi un modèle qui nous permet de brancher directement ce module sur une broche du RFDuino. On branchera directement les GPIOs de la RFduino sur les ports SDA et SCL de l'accéléromètre qui correspondent à l'interface I2C pour pouvoir communiquer. On utilisera aussi la broche INT1 pour pouvoir générer des interruptions directement depuis l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
On connectera le buzzer directement à une broche de la RFduino aussi. Concernant celui-ci il reste une incertitude puisqu'on ne trouve aucune information sur le courant à fournir pour l'alimentation de ce composant sur sa datasheet. Après différentes recherches sur Internet, il pourrait être nécessaire d'utiliser un montage amplificateur à transistor comme un émetteur commun pour booster le courant en sortie d'une broche GPIO. Quelques buzzers trouvés avec des données constructeur montrent que ce type de composant nécessite généralement un courant d'environ 30 mA. Nous verrons dans la pratique si cela sera vraiment nécessaire. Par sécurité, on ajoutera un transistor bipolaire dans la liste de matériel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:screen_LED.png|400px|thumb|left|Données constructeur pour LEDs]]&lt;br /&gt;
[[Fichier:screen_accel.png|400px|thumb|center|Datasheet de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
====Configuration école====&lt;br /&gt;
&lt;br /&gt;
*Pour configurer notre Raspberry Pi, nous utilisons son port série et &amp;quot;minicom&amp;quot;. Pour pouvoir télécharger des paquets, il fallait la connecter au réseau. Nous lui avons donc affecté une adresse IP fixe avec le fichier /etc/network/interfaces. Voici les modifications qui ont été apportées : &lt;br /&gt;
&lt;br /&gt;
   auto eth0&lt;br /&gt;
   iface eth0 inet static&lt;br /&gt;
   address 172.26.78.15&lt;br /&gt;
   netmask 255.255.240.0&lt;br /&gt;
   gateway 172.26.79.254&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il a également fallu ajouter la commande &amp;quot;export http_proxy=http://proxy.polytech-lille.fr:3128&amp;quot; (il faudra effectuer cette commande à chaque démarrage de la Pi) pour pouvoir utiliser le proxy de l'école. &lt;br /&gt;
Nous avons de plus modifier le fichier /etc/resolv.conf avec la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
   nameserver 193.48.57.34&lt;br /&gt;
&lt;br /&gt;
Malgré cela, nous avions des soucis pour nous connecter au réseau. Il y avait en fait un processus dhcp en tâche de fond qui nous empêchait de garder le contenu de resolv.conf. Il a donc fallu trouver ce processus pour le &amp;quot;kill&amp;quot; et pouvoir accéder correctement au réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons du coup pu installer postgresql pour pouvoir configurer une base de données sur notre Pi.&lt;br /&gt;
&lt;br /&gt;
====Configuration à domicile====&lt;br /&gt;
&lt;br /&gt;
Pour nous mettre dans une situation plus fidèle à notre projet, nous avons configuré la raspberry à domicile.&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abords installé Raspbian, puis installé les paquets nécessaire au fonctionnement du serveur.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Openssh-server''': permettre d'accès à distance à la raspberry pour pouvoir y accéder depuis l'école.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Iptables''': pour sécuriser les ports non utilisé et libérer l'accès aux ports qui nous intéressent (ssh 22,http 80,https 443).&amp;lt;br&amp;gt;&lt;br /&gt;
- '''apache2, php5, mysql-server''' : pour mettre en place notre service web.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons rediriger les ports 80 et 22 du routeur pour pouvoir accéder à la raspberry de l'extérieur.&lt;br /&gt;
&lt;br /&gt;
Pour finir, nous avons créer un fichier de config iptables permettant de sécuriser un minimum la base de donnée et de permettre d'autoriser la communication des ports 22, 80 et 443 correspondants aux ports ssh, http et https. le fichier de configuration a été déposé dans le dépôt git. Il nous a fallut le rendre exécutable via un chmod. Puis pour l'exécuter à chaque démarrage du system, dans le fichier /etc/init.d/ taper : &lt;br /&gt;
&lt;br /&gt;
    sudo update-rc.d firewall defaults (si notrefichier s'appelle firewall et s'il est dans init.d)&lt;br /&gt;
&lt;br /&gt;
===Base de donnée===&lt;br /&gt;
&lt;br /&gt;
Nos données alimentaires disponibles par toute la famille doivent être stocké sur un serveur de base de donnée externe (tel une Raspberry pi). Nous nous proposons de créer le diagramme UML représentant cette future base de donnée.&lt;br /&gt;
[[Fichier:Optali_UML.jpg|700px|thumb|center|Diagramme UML base de donnée]]&lt;br /&gt;
&lt;br /&gt;
On créera donc 3 entités. Date, Product et Recipe. &lt;br /&gt;
&lt;br /&gt;
- Product rassemble les aliments qui sont ou ont été dans la réserve alimentaire. NbProdIn permet de connaître le nombre de produits identiques (possibilité de date différentes mais pas de doublons et on garde l'information de quantité. NbProdBought donne une information sur le nombre de produits identique ayant été acheté depuis la mise en service de la base de donnée. Ainsi nous pourrons par la suite proposer une liste de course à l'utilisateur en fonction de la fréquence d'achat des produits.&lt;br /&gt;
&lt;br /&gt;
- Recipe contient les recettes que pourra rentrer l'utilisateur sur l'application. L'utilisateur pourra ainsi se voir proposer des recettes en fonction de ce qu'il a dans son frigo et de ses recettes personnelles.&lt;br /&gt;
&lt;br /&gt;
'''''Edit : On ajoutera une valeur entière dans les tables Date et Unity pour gérer le cas où il existe plusieurs produits (différents ou identiques) avec une date de péremption équivalente. On les appellera NbDate la valeur dans la table Date et NbUnity dans la table Unity. On leur ajoutera de même une clef primaire IdUnity et IdListProduct'''''&lt;br /&gt;
&lt;br /&gt;
On utilisera MySql pour la gestion de nos bases de données. &lt;br /&gt;
La syntaxe pour l'implanter dans la base de donnée à été jointe au dépôt git.&lt;br /&gt;
&lt;br /&gt;
Pour lancer my SQL, on tapera:&lt;br /&gt;
&lt;br /&gt;
   mysql -h localhost -u root -p&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Web service===&lt;br /&gt;
&lt;br /&gt;
====Page init.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet d'initier l'accès à la base de donnée sur le serveur. Elle est requise pour les pages qui suivent.&lt;br /&gt;
&lt;br /&gt;
====Page post.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet l'insertion d'un produit et d'une date via l'application mobile. Elle prend donc ces deux arguments et les insère dans les tables Unity, Product et Date.&lt;br /&gt;
&lt;br /&gt;
====Page get.php====&lt;br /&gt;
&lt;br /&gt;
Page qui envoie la liste des aliments avec leur nom, leur date, leur quantité dans le frigo, la quantité d'exemplaires acheté en tout depuis la mise en place de l'appareil. Le tri se fera directement dans l'application mobile. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Application Mobile===&lt;br /&gt;
&lt;br /&gt;
====Home page====&lt;br /&gt;
&lt;br /&gt;
Page d'accueil permettant d'accéder aux pages d'ajout et de liste des produits disponibles. &amp;lt;br&amp;gt;&lt;br /&gt;
La page permet aussi d'effectuer la connexion entre la rfduino et l'application mobile. Elle montre les alertes (signaux) à l'utilisateur &lt;br /&gt;
et écrit leur signification.&lt;br /&gt;
&lt;br /&gt;
====Page d'ajout====&lt;br /&gt;
&lt;br /&gt;
Pour ajouter un produit et lire une date on utilisera un champ editText pour permettre à l'utilisateur d'écrire &amp;quot;Manuellement&amp;quot; dedans grâce au clavier du smartphone.&amp;lt;br&amp;gt;&lt;br /&gt;
De plus on utilise un bouton qui appellera la caméra pour détecter les caractères d'un produit ou d'une date. Au début nous voulions utiliser un détecteur de code barre, nous l'avons implémenté mais nous avons remarqué que la mise au point sur une surface non plane prend du temps d'autant plus qu'il faut questionner une base de donnée contenant tous les numéro de codes barres utilisés. Nous avons donc prit la décision d'utiliser uniquement la lecture de caractère et nous créerons une liste déroulante sous l'editText pour faciliter l'insertion d'un produit qui a déjà été ajouté. Pour la lecture de caractère, nous utilisons la librairie tesseract.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'envoi, nous utilisons la librairie Volley développé par google.&lt;br /&gt;
&lt;br /&gt;
====Page Liste====&lt;br /&gt;
&lt;br /&gt;
Permet de lister les produits dans la base de donnée. Une série de boutons radio permettent de trier les produits par ordre alphabétique, par date de péremption, par nombre d’occurrence dans la réserve alimentaire, par nombre d'achat depuis la mise en place du système.&amp;lt;br&amp;gt;&lt;br /&gt;
Une colonne permet de sélectionner les aliments désirés (par checkBox) pour ensuite les supprimer via un button &amp;quot;suppr&amp;quot; ou les choisir pour trouver des recettes qui les utilisent.&amp;lt;br&amp;gt;&lt;br /&gt;
Un EditText permet d'effectuer une recherche sur la base de donnée.&lt;br /&gt;
&lt;br /&gt;
===Altium Designer===&lt;br /&gt;
&lt;br /&gt;
Pour permettre au RFDuino de communiquer avec les différents composants, nous aurons besoin de quelques composants électroniques. Afin que cela soit plus esthétique pour la modélisation finale, nous allons créer une carte PCB pour rassembler tous ces composants dessus. On utilisera le logiciel Altium Designer pour cela.&lt;br /&gt;
&lt;br /&gt;
Avant de représenter notre circuit général, nous allons commencer par créer une librairie rassemblant tous les composants que nous utiliserons par la suite, en particulier nos composants CMS (accéléromètre et résistances). Pour ce qui est des LEDs et du buzzer, qui sont traversants, nous pourrons utiliser des headers classiques.&lt;br /&gt;
&lt;br /&gt;
Il a donc fallu créer le schematic ainsi que l'empreinte de nos composants CMS. Voici un exemple avec notre accéléromètre :&lt;br /&gt;
[[Fichier:Accelerosch.PNG|500px|thumb|left|Schematic de l'accéléromètre]]&lt;br /&gt;
[[Fichier:Acceleropcb.PNG|500px|thumb|center|Empreinte PCB de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les fichiers Altium sont disponibles sur notre dépôt GIT. Après cela, nous pouvons maintenant construire notre schematic du montage entier et ensuite le fichier PCB afin de pouvoir graver notre circuit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après quelques modifications sur le montage prévu initialement, c'est-à-dire en enlevant une résistance entre un GPIO et l'alimentation de l'accéléromètre ainsi qu'en rajoutant des résistances pull-up sur les broches de notre liaison i2C (SDA et SCL) et un bouton poussoir en plus pour permettre un reset du RFDuino, nous avons pu créer notre schematic global pour en faire un PCB et l'exporter au format Gerber. De ce fait, le service EEI de Polytech pourra réaliser la gravure de notre carte PCB.&lt;br /&gt;
&lt;br /&gt;
Voici quelques photos pour illustrer notre projet sur Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Finalproto_sch.PNG|400px|thumb|left|Schematic du montage final]]&lt;br /&gt;
[[Fichier:Finalproto_pcb.PNG|400px|thumb|center|PCB du montage final]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On retrouve sur notre PCB final les headers, respectivement de 8 et 5 pins, de part et d'autre de la carte, qui représentent le RFDuino, où nous souderons des broches pour qu'elles puissent être intégrées au RFDuino. On note la présence de 5 autres headers de 2 pins, dont 3 pour des LEDs puis les 2 autres pour le buzzer et le bouton poussoir. Ce qui reste sont les composants CMS avec plusieurs composants à 2 pattes qui sont toutes les résistances de notre montage, celles de protection pour les LEDs et les pull-ups pour l'accéléromètre. Le dernier composant à 8 pattes est donc bien l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quelques difficultés ont été rencontrées durant ce travail notamment concernant les contraintes de construction sur le PCB final. En effet, les composants CMS choisis (surtout l'accéléromètre) étant parfois très petits, Altium n'accepte pas forcément le faible espacement entre les différentes pattes des composants, ce qui pose problème lors de la compilation. De plus, le plan de masse ne prenait pas en compte tous les éléments devant être rattachés à la masse. Il a fallu légèrement déplacer les headers représentant le RFDuino pour que cela soit possible. Il faudra alors peut-être légèrement plier les broches qui viendront s'intégrer sur le RFDuino pour ajouter notre PCB sur le RFDuino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons envoyé nos fichiers Altium au service EEI afin qu'il puisse réaliser physiquement notre carte. Nous nous retrouvons donc avec notre carte PCB récupérée auprès du service EEI. Voici le rendu :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:P46_carte.jpg|400px|thumb|center|Fabrication de notre carte PCB]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir souder nos différents composants, nous avons été rendre visite à Thierry Flamen, responsable du service EEI, afin de passer nos composants CMS au four (résistances et accéléromètre). En effet il était presque impossible de souder tous ces composants manuellement. Après ce passage au four, il nous restait les composants traversants à souder, c'est-à-dire les pins, les LEDs et notre buzzer. Voici le rendu après nos soudures :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:pcbfinal1_p46.jpg|200px|thumb|left|Vue du dessous de notre carte]]&lt;br /&gt;
[[Fichier:pcbfinal2_p46.jpg|200px|thumb|center|Vue du dessus de notre carte]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il manque sur la carte finale notre bouton poussoir qui permettait le reset de notre RFduino. Malheureusement en essayant de souder celui-ci, nous avons retiré du cuivre de la carte, ce qui nous empêche de pouvoir faire circuler le courant dans ce bouton. De plus, la piste avec du cuivre manquant était également responsable de l'alimentation de notre accéléromètre ainsi que d'une LED indiquant la mise sous-tension du contrôleur. Pour le rendu final, nous souderons un fil sur la LED pour pouvoir l'alimenter, cependant il serait plus complexe d'alimenter l'accéléromètre. Celui-ci ne fonctionnait déjà pas correctement de manière électrique. La soudure de ce composant demandait une grande précision puisqu'il est de taille minuscule. Nous n'utiliserons donc pas ce composant dans notre montage final.&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;br /&gt;
&lt;br /&gt;
=== Rapport de projet ===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Compte_rendu_projet_final_P46.pdf]]&lt;br /&gt;
&lt;br /&gt;
== Bibliographie ==&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Compte_rendu_projet_final_P46.pdf&amp;diff=42074</id>
		<title>Fichier:Compte rendu projet final P46.pdf</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Compte_rendu_projet_final_P46.pdf&amp;diff=42074"/>
				<updated>2017-05-11T14:39:44Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=42073</id>
		<title>IMA4 2016/2017 P46 : Aide anti-gaspillage alimentaire</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=42073"/>
				<updated>2017-05-11T14:21:55Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : /* Fichiers Rendus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
En France, nous jetons en moyenne 21% des aliments que nous achetons, ce qui représente une perte de 100 à 160 euros par an par habitant. Cela est en partie dû à la date limite de consommation associée à chaque produit. En effet, à partir du moment où cette date sera dépassée le consommateur jettera les produits concernés sans réfléchir, même si ceux-ci peuvent parfois être encore mangeables. Plutôt que d'essayer de les convaincre du contraire, il serait judicieux de proposer aux adeptes du gaspillage une aide permettant de gérer tous les aliments dont ils disposent chez eux afin d'éviter la surprise de tomber sur plusieurs produits périmés lorsqu'ils ouvrent la porte de leur frigo. &lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Ce projet permet d'aider les utilisateurs d'une part à mémoriser les denrées périssables qu'ils disposent dans leur réserve alimentaire et d'autre part d'avertir l'utilisateur qu'un événement important a lieu. Ceci peut être une notification qu'un aliment va bientôt dépasser sa date de péremption, que la porte du frigidaire est restée ouverte ou encore que le nombre d'aliments dans la réserve devient critique et qu'il faudra de nouveau l'alimenter. Enfin, le système aidera l'utilisateur à trouver des idées de repas pouvant permettre de consommer les aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Notre prototype permettra d'éviter le gaspillage alimentaire ainsi que d'aider l'utilisateur dans sa gestion du stockage d'aliments.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
&lt;br /&gt;
Notre système sera composé de 3 éléments. &lt;br /&gt;
&lt;br /&gt;
Premièrement, un ou des smartphones appartenant aux utilisateurs. Ces derniers permettront de scanner grâce à son appareil photo, le code barre du produit ainsi que sa date de péremption. Il servira aussi d'interface utilisateur pour notre système. En effet, c'est par cet outil que l'utilisateur pourra lister tous les aliments que l'utilisateur a dans sa base et tout ça en les triant par date de péremption, ou encore voir les recettes possibles pour consommer des aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Deuxièmement, un serveur, de type Raspberry, qui permettra de stocker la base de donnée contenant les aliments de la réserve. Ce serveur sera connecté par wifi.&lt;br /&gt;
 &lt;br /&gt;
Troisièmement, un contrôleur (Rfduino) qui comportera une LED pour indiquer la mise sous tension du contrôleur, une LED pour prévenir l'utilisateur qu'un aliment va bientôt passer sa date de péremption et une dernière LED pour prévenir l'utilisateur que son niveau de réserve est critique ainsi qu'un buzzer et un accéléromètre pour buzzer quand la porte du frigo est restée trop longtemps ouverte. Ce dernier sera fixé au frigo par l'intermédiaire d'un dispositif adapté qui sera un système aimanté qui se pose sur le frigo.&lt;br /&gt;
&lt;br /&gt;
Nous implémenterons donc une application mobile Android qui fera le lien entre les 2 autres systèmes.&lt;br /&gt;
&lt;br /&gt;
Pour la partie électronique que nous aurons à réaliser, nous utiliserons une Breadboard pour faire des premiers tests puis nous créerons une carte PCB pour notre montage final.&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
On utilisera une Raspberry Pi en guise de serveur pour pouvoir s'occuper du stockage de toutes les données dans notre projet puisque notre contrôleur sera incapable de les contenir, ce n'est d'ailleurs pas son but ici.&lt;br /&gt;
&lt;br /&gt;
Notre smartphone fera donc le lien entre notre base de données et notre système embarqué par l'intermédiaire de l'application mobile.&lt;br /&gt;
&lt;br /&gt;
Nous prendrons ici un RFduino puisque celui-ci nous permet d'ajouter des modules comme bon nous semble afin d'adapter le système aux besoins de notre application. Il est également parfaitement compatible avec les applications Android. De plus, nous avons un Bluetooth directement intégré au RFduino pour s'assurer que les liaisons RFduino-application mobile se fassent correctement. &lt;br /&gt;
On notera également que ce contrôleur consomme peu de courant et ne demande qu'une faible tension d'alimentation, critères importants pour ce genre de projet. C'est la raison principale de son utilisation pour être utilisé comme interface physique sur le frigo, en ajoutant également sa taille réduite comparée à la Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
&lt;br /&gt;
Nous avons donc besoin du matériel suivant :&lt;br /&gt;
&lt;br /&gt;
*Raspberry Pi.&lt;br /&gt;
*Clef wifi&lt;br /&gt;
*RFduino (RFD22102 DIP Board, RFD22121 USB Shield, RFD22126 Dual AAA battery shield).&lt;br /&gt;
*2 piles AAA.&lt;br /&gt;
*3 leds tranversantes.&lt;br /&gt;
*3 Résistances 330 Ohm.&lt;br /&gt;
*1 Résistance 10 kOhm.&lt;br /&gt;
*Un buzzer.&lt;br /&gt;
*Accéléromètre.&lt;br /&gt;
*Aimants&lt;br /&gt;
*Un boîtier permettant d'intégrer la RFduino + fixation sur le frigo (modélisation à voir).&lt;br /&gt;
&lt;br /&gt;
Pour le buzzer, l'accéléromètre et les résistances, nous choisirons des composants CMS pour nous permettre d'avoir une carte plus petite.&lt;br /&gt;
&lt;br /&gt;
===Calendrier prévisionnel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Liste des tâches à effectuer====&lt;br /&gt;
&lt;br /&gt;
* Configurer la Raspberry :&lt;br /&gt;
** Installer et configurer le serveur.&lt;br /&gt;
** Créer le diagramme UML de notre future base de données.&lt;br /&gt;
** Créer la base sur le serveur.&lt;br /&gt;
** Configurer la connexion WiFi.&lt;br /&gt;
&lt;br /&gt;
* Monter et programmer la RFduino :&lt;br /&gt;
** Connecter les différents modules au RFduino (accéléromètre, LEDs, buzzer, Batterie, module Bluetooth).&lt;br /&gt;
** Récupérer les consignes du smartphone grâce au Bluetooth.&lt;br /&gt;
** Programmer le comportement du RFduino en fonction des consignes.&lt;br /&gt;
** Construire le boitier final.&lt;br /&gt;
&lt;br /&gt;
* Implémenter l'application mobile Android :&lt;br /&gt;
** Une première activité permettant de se connecter au RFduino et à la Raspberry.&lt;br /&gt;
** Scanner une date et un code barre.&lt;br /&gt;
** Ajout/suppression d'un aliment dans la base de donnée.&lt;br /&gt;
** Envoi d'une consigne au RFduino.&lt;br /&gt;
** Rendre l'interface utilisateur ergonomique (lister aliments, envoyer vers page de recettes avec l'utilisation des aliments bientôt périmés...).&lt;br /&gt;
&lt;br /&gt;
====Calendrier====&lt;br /&gt;
&lt;br /&gt;
Répartition du temps consacré au projet (120h *2) :&lt;br /&gt;
&lt;br /&gt;
*Partie Raspberry : 60h&lt;br /&gt;
*Partie RFduino : 60h&lt;br /&gt;
*Partie développement mobile : 120h&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
&lt;br /&gt;
===Feuille d'heures===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 !  !! Lundi 16-18h !! Mercredi 14-18h !! Jeudi 8-10h&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 1&lt;br /&gt;
&lt;br /&gt;
 | '''23/01''' :  &lt;br /&gt;
* Installation du logiciel Android Studio pour être prêt à commencer l'application mobile.&lt;br /&gt;
* Création du Repository Git sur GitHub : https://github.com/FrancoisLefevre12/Optali.git&lt;br /&gt;
* Réalisation de différents schémas fonctionnels pour se donner une idée du travail à effectuer, aussi bien du software que du hardware.&lt;br /&gt;
* Quelques précisions supplémentaires apportées sur le cahier des charges.&lt;br /&gt;
* Ajout de liens de référence pour la liste de matériel à acheter.&lt;br /&gt;
&lt;br /&gt;
 | '''25/01''' :  &lt;br /&gt;
* Précision des composants requis (accéléromètre, buzzer, LEDs, résistances).&lt;br /&gt;
* Écriture du montage à la main.&lt;br /&gt;
* Étude du fonctionnement de l'accéléromètre, du buzzer.&lt;br /&gt;
* Écriture de la structure de l'application à la main.&lt;br /&gt;
&lt;br /&gt;
 | '''26/01''' :&lt;br /&gt;
*Réalisation graphique de la première page de l'application.&lt;br /&gt;
*Conception du schéma électrique pour tous les composants connectés au RFduino.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 2&lt;br /&gt;
&lt;br /&gt;
 | '''30/01''' :&lt;br /&gt;
*Réalisation du diagramme UML de la base de données qui sera stockée sur la Raspberry Pi&lt;br /&gt;
*Installation de l'outil de développement mobile sur le second PC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 | '''01/02''' :&lt;br /&gt;
*Nous nous sommes d'abord rendus compte que la résistance entre un des GPIO et l'accéléromètre était inutile, nos premiers calculs étaient erronés. Nous ne la garderons donc pas sur notre schéma électrique final.&lt;br /&gt;
*Avancement sur la partie application mobile : réalisation de la page &amp;quot;Ajout&amp;quot; sur laquelle nous tomberons après avoir cliquer sur &amp;quot;ajout&amp;quot; sur la page principale de l'application. Nous avons étendu l'activité principale jusqu'à cette nouvelle activité &amp;quot;Ajout&amp;quot;.&lt;br /&gt;
*Nous avons récupéré notre Raspberry Pi pour commencer à installer notre base de données dessus. Nous avons actuellement quelques problèmes pour nous connecter sur la Raspberry. Nous travaillons sur ce point.&lt;br /&gt;
&lt;br /&gt;
 | '''02/02''' :&lt;br /&gt;
* Application mobile : Mise en place des LEDs sur la home page et de la zone de notification avec les messages associés.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 3&lt;br /&gt;
&lt;br /&gt;
 | '''06/02''' :&lt;br /&gt;
*Nous arrivons à accéder à la Raspberry via le port série de celle-ci. Nous avons également configuré sa connexion Ethernet afin de pouvoir télécharger des paquets dessus et installer notre base de données. &lt;br /&gt;
*Nous rencontrions des problèmes sur le second PC de travail pour récupérer le projet Optali sur Android Studio via notre dépôt GIT. Nous avons pu rectifier ce souci.&lt;br /&gt;
&lt;br /&gt;
 | '''08/02''' :&lt;br /&gt;
*Tentative d'établissement d'un point d'accès WiFi sur notre Raspberry. Nous n'avons pas réussi pour le moment.&lt;br /&gt;
*Restructuration du Repository git.&lt;br /&gt;
*Essai d'importation de la librairie Zxing qui permettra de décoder les code-barres.&lt;br /&gt;
 |&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 4&lt;br /&gt;
&lt;br /&gt;
 | '''13/02'''&lt;br /&gt;
*Configuration du wifi de la Raspberry. &lt;br /&gt;
*Étude d'une mise en place d'un service web via php.&lt;br /&gt;
&lt;br /&gt;
 | '''15/02'''&lt;br /&gt;
*Mise en place d'un lecteur de caractère sur l'application. On utilisera tesseract.&lt;br /&gt;
*Début de la création du PCB via Altium designer. Création d'une librairie pour l'accéléromètre qui est un composant CMS assez spécial. On pourra cependant utiliser des headers classiques pour le buzzer et les LEDs puisque ce sont des composants traversants.&lt;br /&gt;
*Création des premiers fichiers php de connection à la base de donnée et d'insertion d'aliments. Tous ces fichiers seront déposés de la même manière sur le dépôt git.&lt;br /&gt;
&lt;br /&gt;
 | '''16/02'''&lt;br /&gt;
*Adaptation avec prise en compte des cas du code php d'insertion de produits par requête sur la base de donnée.&lt;br /&gt;
*Ajout du code d'implantation de la base de donnée.&lt;br /&gt;
*Altium: Accéléromètre terminé, mise en place des résistances.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 5 (interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''22/02 (3 heures)'''&lt;br /&gt;
*Installation de l'OS de la raspberry.&lt;br /&gt;
*Installation d'Openssh-server, apache2, php5, iptables, mysql-server, php5-mysql.&lt;br /&gt;
*Redirection des ports du routeur vers la raspberry.&lt;br /&gt;
*Configuration de iptables de la raspberry.&lt;br /&gt;
&lt;br /&gt;
 | '''23/02 (2 heures)'''&lt;br /&gt;
*Implantation de la base de donnée sur la raspberry pi.&lt;br /&gt;
|&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 6&lt;br /&gt;
 | '''27/02'''&lt;br /&gt;
*Vérification de la syntaxe de l'insertion de valeurs dans la base de donnée.&lt;br /&gt;
*Création des premières requêtes sur la base de donnée.&lt;br /&gt;
*Finalisation du PCB de l'Optali Board.&lt;br /&gt;
&lt;br /&gt;
 | '''01/03'''&lt;br /&gt;
*Étude et ajout de la librairie volley pour communiquer avec le serveur.&lt;br /&gt;
*Implantation de la fonction d'envoi de données jusqu'au serveur.&lt;br /&gt;
*Après avoir vu avec un professeur, nous avons remarqué que le routage n'était pas adéquat et la disposition des composants n'était pas optimal. Du travail reste donc encore à effectuer.&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 7&lt;br /&gt;
 | '''06/03'''&lt;br /&gt;
*Correction du fichier post.php&lt;br /&gt;
*Finition du protocole d'ajout d'aliment sur la base de donnée. (Code php et page ajout terminée).&lt;br /&gt;
*PCB terminé.&lt;br /&gt;
*Installation d'arduino IDE, doc arduino collecté.&lt;br /&gt;
&lt;br /&gt;
 | '''08/03'''&lt;br /&gt;
*Implémentation de la page ListeIngredient.xml et de l'activité listActivity.java.&lt;br /&gt;
*Documentation sur la procédure de communication bluetooth entre la Rfduino et l'application mobile.&lt;br /&gt;
*Obtention de librairie en lien avec cela.&lt;br /&gt;
*Prise en main de programmation rfduino.&lt;br /&gt;
&lt;br /&gt;
 | '''09/03'''&lt;br /&gt;
*Nous nous sommes rendus compte qu'il était nécessaire de rajouter un bouton poussoir sur notre montage afin de permettre la réinitialisation de notre RFDuino si nécessaire. Nous devons également faire en sorte de pouvoir poser notre carte PCB directement sur notre RFDuino en utilisant des broches. Nous devons donc rajouter ces éléments-ci.&lt;br /&gt;
*Ecriture de la page get.php&lt;br /&gt;
*Premiers tests sur la ListView de l'activité ListActivity.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 8&lt;br /&gt;
 | '''13/03'''&lt;br /&gt;
*Recherche de pistes concernant la programmation RFDuino. Nous pouvons la détecter en bluetooth via un smartphone Android.&lt;br /&gt;
*Finition du Tablelayout et du code java associé sur la page ListActivity.&lt;br /&gt;
&lt;br /&gt;
 | '''15/03'''&lt;br /&gt;
*Ajout de la JsonArrayRequest dans la page ListActivity.&lt;br /&gt;
*Nous nous sommes rendus compte au moment de programmer la liaison I2C de l'accéléromètre avec la RFDuino que nous avions oublié de mettre des résistances pull-up entre l'alimentation du composant et les broches SDA et SCL. Les modifications ont donc été faites puis nous avons envoyé finalement notre PCB à la fabrication.&lt;br /&gt;
&lt;br /&gt;
 | '''16/03'''&lt;br /&gt;
*Changement de stratégie au niveau de la requête JsonArrayRequest. On récupère toute la base et ensuite le traitement sera effectuer dans l'application mobile.&lt;br /&gt;
*Rédaction de la partie Altium du wiki.&lt;br /&gt;
*Recherche de docs sur le système bluetooth du RFduino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 9&lt;br /&gt;
 | '''20/03'''&lt;br /&gt;
*Réalisation de différents réglages pour pouvoir utiliser l'application Optali sur l'Android phone fourni par notre professeur (LG G4c)&lt;br /&gt;
*Recherche de docs concernant la partie java responsable de la communication Bluetooth.&lt;br /&gt;
*Reprise de la solution Tesseract pour la lecture de caractères.&lt;br /&gt;
&lt;br /&gt;
 | '''21/03''' (séance supplémentaire de 3 heures)&lt;br /&gt;
*Début du développement de la partie communication entre RFDuino et l'appli mobile. Nous pouvons détecter le RFduino à partir de Android Studio mais nous n'arrivons pas encore à nous connecter dessus directement.&lt;br /&gt;
*Finition de la fonctionnalité tesseract. La lecture de caractères est donc maintenant possible.&lt;br /&gt;
&lt;br /&gt;
 | '''22/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity&lt;br /&gt;
*Connexion possible entre le RFduino et notre appli mobile. Il faut maintenant pouvoir assurer un échange de données via du GATT.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 10&lt;br /&gt;
 | '''27/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity (suite). Utilisation de la solution postman.&lt;br /&gt;
*Mise à jour du wiki pour la partie Altium.&lt;br /&gt;
*Gestion du dépôt git.&lt;br /&gt;
*Récupération de la carte PCB au service EEI.&lt;br /&gt;
&lt;br /&gt;
 | '''29/03'''&lt;br /&gt;
*Mise en place du tri des Produits avec un critère d'ordonnabilité variable&lt;br /&gt;
*Implémentation du champs recherche et action sur la liste&lt;br /&gt;
*Écriture des pages Php consume.php et delete.php pour décrémenter le nombre d'aliment dans le frigo ou le supprimer&lt;br /&gt;
*Récupération des composants&lt;br /&gt;
*Passage au four pour souder les premiers composants en CMS&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 11&lt;br /&gt;
&lt;br /&gt;
 | '''03/04'''&lt;br /&gt;
*Dé-soudage et resoudage de l'accéléromètre.&lt;br /&gt;
*Soudure des composants&lt;br /&gt;
&lt;br /&gt;
 | '''05/04'''&lt;br /&gt;
*Test du Buzzer&lt;br /&gt;
*Code de l'accéléromètre&lt;br /&gt;
*Création de l'Optali box (la boite qui contient le RFduino fixé au frigo)&lt;br /&gt;
*Finition de la fonction 'delete'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 | '''06/04'''&lt;br /&gt;
*Problème pour faire fonctionner le code de l'accéléro. Il faudra le tester électriquement.&lt;br /&gt;
*Implantation du logo de l'appli &lt;br /&gt;
*Debuggage d'une requête de la page 'list'&lt;br /&gt;
*Documentation sur les listes déroulantes sous les EditTexts.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 12 (Interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''11/04''' (3 heures)&lt;br /&gt;
*Après avoir remarqué que le code de l'accéléro ne fonctionnait pas alors qu'il paraît correct, nous avons décidez de vérifier les propriétés électriques de notre montage.&lt;br /&gt;
En observant à l'analyseur logique, il semblerait que l'horloge de la liaison i2C n'est en fait qu'un signal bruité. Il faudra donc retenter de souder le composant quand cela sera possible.&lt;br /&gt;
&lt;br /&gt;
 | '''13/04''' (6 heures)&lt;br /&gt;
*Terminaison du programme RFduino qui fonctionne théoriquement, nous attendons de terminer les dernières soudures pour pouvoir le tester physiquement.&lt;br /&gt;
*En attendant de pouvoir réaliser des soudures, nous avons repris la partie communication bluetooth entre le RFduino et l'appli. Après avoir tenté d'utiliser un programme permettant de gérer le protocole GATT sans savoir envoyer ou recevoir de données, nous nous sommes orientés sur une communication plus basique basée sur de nombreux exemples que l'on peut voir sur le web.&lt;br /&gt;
&lt;br /&gt;
 | '''15/04''' (6 heures)&lt;br /&gt;
*Après s'être rendu compte que la communication plus &amp;quot;basique&amp;quot; que nous voulions utiliser n'était pas compatible avec le BLE, nous sommes une fois de plus repartis de zéro pour cette partie.&lt;br /&gt;
*Après quelques recherches, nous avons trouvé un programme réalisant la gestion d'un socket BLE sur le principe du protocole GATT. Grâce à celui-ci, il nous est possible de recevoir et d'envoyer des données via BLE sur RFduino ainsi que sur l'appli mobile.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 13 (Interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''17/04 (4 heures)'''&lt;br /&gt;
*Ajout du singleton Etat pour partager l'état des aliments dans la réserve alimentaire&lt;br /&gt;
*Transfert des requêtes de la base de donnée vers le singleton pour optimiser l'actualisation et le partage des données.&lt;br /&gt;
*Actualisation automatique des données sur la page principale.&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Semaine 14&lt;br /&gt;
| '''24/04'''&lt;br /&gt;
*Modification de la présentation du wiki&lt;br /&gt;
*Modification de la fonctionnalité du bouton actualiser en changement d'activité&lt;br /&gt;
&lt;br /&gt;
| '''26/04'''&lt;br /&gt;
*Ajout de la page liste recette&lt;br /&gt;
&lt;br /&gt;
| '''27/04''' (3 heures)&lt;br /&gt;
*Ajout des listes recettes dans ListeRecette&lt;br /&gt;
*Ajout des requêtes des recettes sur ListeRecette.java&lt;br /&gt;
*Création du fichier listeRecette.php sur le serveur pour faire la requête SQL et envoyer sur l'application.&lt;br /&gt;
*Soudure des derniers composants pour terminer le PCB. Tout est soudé sauf le bouton poussoir qui devait permettre un reset du RFduino. En cherchant d'ailleurs à souder ce bouton, nous avons retiré malencontreusement la piste de cuivre permettant de répartir le 3.3V du RFduino sur notre PCB. Notre accéléromètre qui ne marchait déjà pas vraiment n'est plus alimenté. Nous ferons sans notre accéléromètre pour le rendu final. &lt;br /&gt;
|-&lt;br /&gt;
|Semaine 15&lt;br /&gt;
|'''02/05'''&lt;br /&gt;
*Réalisation de la vidéo de présentation du projet avec Laurent Engels.&lt;br /&gt;
|'''03/05'''&lt;br /&gt;
*Remplacement de la LED &amp;quot;LED_Perim&amp;quot; qui était défaillante et ne s'allumait pas quand il le fallait.&lt;br /&gt;
*Début de la réalisation du rapport de projet.&lt;br /&gt;
|'''04/05'''&lt;br /&gt;
*Débuggage de la &amp;quot;LED_Perim&amp;quot;. Le problème n'était donc pas électrique mais bien au niveau software. Il existait un conflit entre l'allumage de cette LED et la pin TX de la liaison série qui était défini sur la même broche.&lt;br /&gt;
*Débuggage de l'appli pour éviter les quelques plantages que l'on peut avoir parfois.&lt;br /&gt;
|-&lt;br /&gt;
|Semaine 16&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===Premières idées===&lt;br /&gt;
&lt;br /&gt;
Voici les premières idées de l'application mobile et du composant fixé sur le frigo.&lt;br /&gt;
[[Fichier:Optali_v1.jpg|400px|thumb|left|Optali version 1]]&lt;br /&gt;
[[Fichier:OptaliBox_v1.jpg|400px|thumb|center|OptaliBox version 1]]&lt;br /&gt;
[[Fichier:P46_schema.jpg|400px|thumb|center|Schéma électrique version 1]]&lt;br /&gt;
&lt;br /&gt;
En s'intéressant aux différentes datasheets ou données constructeur des composants que nous voulons utiliser, nous trouvons indispensable d'utiliser des résistances de 330 Ohms pour l'utilisation des LEDs, pour éviter de les griller.&lt;br /&gt;
&lt;br /&gt;
Edit : Retrait de la résistance R2.&lt;br /&gt;
&lt;br /&gt;
Concernant l'accéléromètre, nous avons choisi un modèle qui nous permet de brancher directement ce module sur une broche du RFDuino. On branchera directement les GPIOs de la RFduino sur les ports SDA et SCL de l'accéléromètre qui correspondent à l'interface I2C pour pouvoir communiquer. On utilisera aussi la broche INT1 pour pouvoir générer des interruptions directement depuis l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
On connectera le buzzer directement à une broche de la RFduino aussi. Concernant celui-ci il reste une incertitude puisqu'on ne trouve aucune information sur le courant à fournir pour l'alimentation de ce composant sur sa datasheet. Après différentes recherches sur Internet, il pourrait être nécessaire d'utiliser un montage amplificateur à transistor comme un émetteur commun pour booster le courant en sortie d'une broche GPIO. Quelques buzzers trouvés avec des données constructeur montrent que ce type de composant nécessite généralement un courant d'environ 30 mA. Nous verrons dans la pratique si cela sera vraiment nécessaire. Par sécurité, on ajoutera un transistor bipolaire dans la liste de matériel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:screen_LED.png|400px|thumb|left|Données constructeur pour LEDs]]&lt;br /&gt;
[[Fichier:screen_accel.png|400px|thumb|center|Datasheet de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
====Configuration école====&lt;br /&gt;
&lt;br /&gt;
*Pour configurer notre Raspberry Pi, nous utilisons son port série et &amp;quot;minicom&amp;quot;. Pour pouvoir télécharger des paquets, il fallait la connecter au réseau. Nous lui avons donc affecté une adresse IP fixe avec le fichier /etc/network/interfaces. Voici les modifications qui ont été apportées : &lt;br /&gt;
&lt;br /&gt;
   auto eth0&lt;br /&gt;
   iface eth0 inet static&lt;br /&gt;
   address 172.26.78.15&lt;br /&gt;
   netmask 255.255.240.0&lt;br /&gt;
   gateway 172.26.79.254&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il a également fallu ajouter la commande &amp;quot;export http_proxy=http://proxy.polytech-lille.fr:3128&amp;quot; (il faudra effectuer cette commande à chaque démarrage de la Pi) pour pouvoir utiliser le proxy de l'école. &lt;br /&gt;
Nous avons de plus modifier le fichier /etc/resolv.conf avec la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
   nameserver 193.48.57.34&lt;br /&gt;
&lt;br /&gt;
Malgré cela, nous avions des soucis pour nous connecter au réseau. Il y avait en fait un processus dhcp en tâche de fond qui nous empêchait de garder le contenu de resolv.conf. Il a donc fallu trouver ce processus pour le &amp;quot;kill&amp;quot; et pouvoir accéder correctement au réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons du coup pu installer postgresql pour pouvoir configurer une base de données sur notre Pi.&lt;br /&gt;
&lt;br /&gt;
====Configuration à domicile====&lt;br /&gt;
&lt;br /&gt;
Pour nous mettre dans une situation plus fidèle à notre projet, nous avons configuré la raspberry à domicile.&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abords installé Raspbian, puis installé les paquets nécessaire au fonctionnement du serveur.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Openssh-server''': permettre d'accès à distance à la raspberry pour pouvoir y accéder depuis l'école.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Iptables''': pour sécuriser les ports non utilisé et libérer l'accès aux ports qui nous intéressent (ssh 22,http 80,https 443).&amp;lt;br&amp;gt;&lt;br /&gt;
- '''apache2, php5, mysql-server''' : pour mettre en place notre service web.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons rediriger les ports 80 et 22 du routeur pour pouvoir accéder à la raspberry de l'extérieur.&lt;br /&gt;
&lt;br /&gt;
Pour finir, nous avons créer un fichier de config iptables permettant de sécuriser un minimum la base de donnée et de permettre d'autoriser la communication des ports 22, 80 et 443 correspondants aux ports ssh, http et https. le fichier de configuration a été déposé dans le dépôt git. Il nous a fallut le rendre exécutable via un chmod. Puis pour l'exécuter à chaque démarrage du system, dans le fichier /etc/init.d/ taper : &lt;br /&gt;
&lt;br /&gt;
    sudo update-rc.d firewall defaults (si notrefichier s'appelle firewall et s'il est dans init.d)&lt;br /&gt;
&lt;br /&gt;
===Base de donnée===&lt;br /&gt;
&lt;br /&gt;
Nos données alimentaires disponibles par toute la famille doivent être stocké sur un serveur de base de donnée externe (tel une Raspberry pi). Nous nous proposons de créer le diagramme UML représentant cette future base de donnée.&lt;br /&gt;
[[Fichier:Optali_UML.jpg|700px|thumb|center|Diagramme UML base de donnée]]&lt;br /&gt;
&lt;br /&gt;
On créera donc 3 entités. Date, Product et Recipe. &lt;br /&gt;
&lt;br /&gt;
- Product rassemble les aliments qui sont ou ont été dans la réserve alimentaire. NbProdIn permet de connaître le nombre de produits identiques (possibilité de date différentes mais pas de doublons et on garde l'information de quantité. NbProdBought donne une information sur le nombre de produits identique ayant été acheté depuis la mise en service de la base de donnée. Ainsi nous pourrons par la suite proposer une liste de course à l'utilisateur en fonction de la fréquence d'achat des produits.&lt;br /&gt;
&lt;br /&gt;
- Recipe contient les recettes que pourra rentrer l'utilisateur sur l'application. L'utilisateur pourra ainsi se voir proposer des recettes en fonction de ce qu'il a dans son frigo et de ses recettes personnelles.&lt;br /&gt;
&lt;br /&gt;
'''''Edit : On ajoutera une valeur entière dans les tables Date et Unity pour gérer le cas où il existe plusieurs produits (différents ou identiques) avec une date de péremption équivalente. On les appellera NbDate la valeur dans la table Date et NbUnity dans la table Unity. On leur ajoutera de même une clef primaire IdUnity et IdListProduct'''''&lt;br /&gt;
&lt;br /&gt;
On utilisera MySql pour la gestion de nos bases de données. &lt;br /&gt;
La syntaxe pour l'implanter dans la base de donnée à été jointe au dépôt git.&lt;br /&gt;
&lt;br /&gt;
Pour lancer my SQL, on tapera:&lt;br /&gt;
&lt;br /&gt;
   mysql -h localhost -u root -p&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Web service===&lt;br /&gt;
&lt;br /&gt;
====Page init.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet d'initier l'accès à la base de donnée sur le serveur. Elle est requise pour les pages qui suivent.&lt;br /&gt;
&lt;br /&gt;
====Page post.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet l'insertion d'un produit et d'une date via l'application mobile. Elle prend donc ces deux arguments et les insère dans les tables Unity, Product et Date.&lt;br /&gt;
&lt;br /&gt;
====Page get.php====&lt;br /&gt;
&lt;br /&gt;
Page qui envoie la liste des aliments avec leur nom, leur date, leur quantité dans le frigo, la quantité d'exemplaires acheté en tout depuis la mise en place de l'appareil. Le tri se fera directement dans l'application mobile. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Application Mobile===&lt;br /&gt;
&lt;br /&gt;
====Home page====&lt;br /&gt;
&lt;br /&gt;
Page d'accueil permettant d'accéder aux pages d'ajout et de liste des produits disponibles. &amp;lt;br&amp;gt;&lt;br /&gt;
La page permet aussi d'effectuer la connexion entre la rfduino et l'application mobile. Elle montre les alertes (signaux) à l'utilisateur &lt;br /&gt;
et écrit leur signification.&lt;br /&gt;
&lt;br /&gt;
====Page d'ajout====&lt;br /&gt;
&lt;br /&gt;
Pour ajouter un produit et lire une date on utilisera un champ editText pour permettre à l'utilisateur d'écrire &amp;quot;Manuellement&amp;quot; dedans grâce au clavier du smartphone.&amp;lt;br&amp;gt;&lt;br /&gt;
De plus on utilise un bouton qui appellera la caméra pour détecter les caractères d'un produit ou d'une date. Au début nous voulions utiliser un détecteur de code barre, nous l'avons implémenté mais nous avons remarqué que la mise au point sur une surface non plane prend du temps d'autant plus qu'il faut questionner une base de donnée contenant tous les numéro de codes barres utilisés. Nous avons donc prit la décision d'utiliser uniquement la lecture de caractère et nous créerons une liste déroulante sous l'editText pour faciliter l'insertion d'un produit qui a déjà été ajouté. Pour la lecture de caractère, nous utilisons la librairie tesseract.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'envoi, nous utilisons la librairie Volley développé par google.&lt;br /&gt;
&lt;br /&gt;
====Page Liste====&lt;br /&gt;
&lt;br /&gt;
Permet de lister les produits dans la base de donnée. Une série de boutons radio permettent de trier les produits par ordre alphabétique, par date de péremption, par nombre d’occurrence dans la réserve alimentaire, par nombre d'achat depuis la mise en place du système.&amp;lt;br&amp;gt;&lt;br /&gt;
Une colonne permet de sélectionner les aliments désirés (par checkBox) pour ensuite les supprimer via un button &amp;quot;suppr&amp;quot; ou les choisir pour trouver des recettes qui les utilisent.&amp;lt;br&amp;gt;&lt;br /&gt;
Un EditText permet d'effectuer une recherche sur la base de donnée.&lt;br /&gt;
&lt;br /&gt;
===Altium Designer===&lt;br /&gt;
&lt;br /&gt;
Pour permettre au RFDuino de communiquer avec les différents composants, nous aurons besoin de quelques composants électroniques. Afin que cela soit plus esthétique pour la modélisation finale, nous allons créer une carte PCB pour rassembler tous ces composants dessus. On utilisera le logiciel Altium Designer pour cela.&lt;br /&gt;
&lt;br /&gt;
Avant de représenter notre circuit général, nous allons commencer par créer une librairie rassemblant tous les composants que nous utiliserons par la suite, en particulier nos composants CMS (accéléromètre et résistances). Pour ce qui est des LEDs et du buzzer, qui sont traversants, nous pourrons utiliser des headers classiques.&lt;br /&gt;
&lt;br /&gt;
Il a donc fallu créer le schematic ainsi que l'empreinte de nos composants CMS. Voici un exemple avec notre accéléromètre :&lt;br /&gt;
[[Fichier:Accelerosch.PNG|500px|thumb|left|Schematic de l'accéléromètre]]&lt;br /&gt;
[[Fichier:Acceleropcb.PNG|500px|thumb|center|Empreinte PCB de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les fichiers Altium sont disponibles sur notre dépôt GIT. Après cela, nous pouvons maintenant construire notre schematic du montage entier et ensuite le fichier PCB afin de pouvoir graver notre circuit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après quelques modifications sur le montage prévu initialement, c'est-à-dire en enlevant une résistance entre un GPIO et l'alimentation de l'accéléromètre ainsi qu'en rajoutant des résistances pull-up sur les broches de notre liaison i2C (SDA et SCL) et un bouton poussoir en plus pour permettre un reset du RFDuino, nous avons pu créer notre schematic global pour en faire un PCB et l'exporter au format Gerber. De ce fait, le service EEI de Polytech pourra réaliser la gravure de notre carte PCB.&lt;br /&gt;
&lt;br /&gt;
Voici quelques photos pour illustrer notre projet sur Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Finalproto_sch.PNG|400px|thumb|left|Schematic du montage final]]&lt;br /&gt;
[[Fichier:Finalproto_pcb.PNG|400px|thumb|center|PCB du montage final]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On retrouve sur notre PCB final les headers, respectivement de 8 et 5 pins, de part et d'autre de la carte, qui représentent le RFDuino, où nous souderons des broches pour qu'elles puissent être intégrées au RFDuino. On note la présence de 5 autres headers de 2 pins, dont 3 pour des LEDs puis les 2 autres pour le buzzer et le bouton poussoir. Ce qui reste sont les composants CMS avec plusieurs composants à 2 pattes qui sont toutes les résistances de notre montage, celles de protection pour les LEDs et les pull-ups pour l'accéléromètre. Le dernier composant à 8 pattes est donc bien l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quelques difficultés ont été rencontrées durant ce travail notamment concernant les contraintes de construction sur le PCB final. En effet, les composants CMS choisis (surtout l'accéléromètre) étant parfois très petits, Altium n'accepte pas forcément le faible espacement entre les différentes pattes des composants, ce qui pose problème lors de la compilation. De plus, le plan de masse ne prenait pas en compte tous les éléments devant être rattachés à la masse. Il a fallu légèrement déplacer les headers représentant le RFDuino pour que cela soit possible. Il faudra alors peut-être légèrement plier les broches qui viendront s'intégrer sur le RFDuino pour ajouter notre PCB sur le RFDuino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons envoyé nos fichiers Altium au service EEI afin qu'il puisse réaliser physiquement notre carte. Nous nous retrouvons donc avec notre carte PCB récupérée auprès du service EEI. Voici le rendu :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:P46_carte.jpg|400px|thumb|center|Fabrication de notre carte PCB]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir souder nos différents composants, nous avons été rendre visite à Thierry Flamen, responsable du service EEI, afin de passer nos composants CMS au four (résistances et accéléromètre). En effet il était presque impossible de souder tous ces composants manuellement. Après ce passage au four, il nous restait les composants traversants à souder, c'est-à-dire les pins, les LEDs et notre buzzer. Voici le rendu après nos soudures :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:pcbfinal1_p46.jpg|200px|thumb|left|Vue du dessous de notre carte]]&lt;br /&gt;
[[Fichier:pcbfinal2_p46.jpg|200px|thumb|center|Vue du dessus de notre carte]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il manque sur la carte finale notre bouton poussoir qui permettait le reset de notre RFduino. Malheureusement en essayant de souder celui-ci, nous avons retiré du cuivre de la carte, ce qui nous empêche de pouvoir faire circuler le courant dans ce bouton. De plus, la piste avec du cuivre manquant était également responsable de l'alimentation de notre accéléromètre ainsi que d'une LED indiquant la mise sous-tension du contrôleur. Pour le rendu final, nous souderons un fil sur la LED pour pouvoir l'alimenter, cependant il serait plus complexe d'alimenter l'accéléromètre. Celui-ci ne fonctionnait déjà pas correctement de manière électrique. La soudure de ce composant demandait une grande précision puisqu'il est de taille minuscule. Nous n'utiliserons donc pas ce composant dans notre montage final.&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;br /&gt;
&lt;br /&gt;
=== Rapport de projet ===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Compte_rendu_projet_P46.pdf]]&lt;br /&gt;
&lt;br /&gt;
== Bibliographie ==&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Compte_rendu_projet_P46.pdf&amp;diff=42072</id>
		<title>Fichier:Compte rendu projet P46.pdf</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Compte_rendu_projet_P46.pdf&amp;diff=42072"/>
				<updated>2017-05-11T14:20:20Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=41680</id>
		<title>IMA4 2016/2017 P46 : Aide anti-gaspillage alimentaire</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=41680"/>
				<updated>2017-05-04T08:43:37Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : /* Feuille d'heures */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
En France, nous jetons en moyenne 21% des aliments que nous achetons, ce qui représente une perte de 100 à 160 euros par an par habitant. Cela est en partie dû à la date limite de consommation associée à chaque produit. En effet, à partir du moment où cette date sera dépassée le consommateur jettera les produits concernés sans réfléchir, même si ceux-ci peuvent parfois être encore mangeables. Plutôt que d'essayer de les convaincre du contraire, il serait judicieux de proposer aux adeptes du gaspillage une aide permettant de gérer tous les aliments dont ils disposent chez eux afin d'éviter la surprise de tomber sur plusieurs produits périmés lorsqu'ils ouvrent la porte de leur frigo. &lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Ce projet permet d'aider les utilisateurs d'une part à mémoriser les denrées périssables qu'ils disposent dans leur réserve alimentaire et d'autre part d'avertir l'utilisateur qu'un événement important a lieu. Ceci peut être une notification qu'un aliment va bientôt dépasser sa date de péremption, que la porte du frigidaire est restée ouverte ou encore que le nombre d'aliments dans la réserve devient critique et qu'il faudra de nouveau l'alimenter. Enfin, le système aidera l'utilisateur à trouver des idées de repas pouvant permettre de consommer les aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Notre prototype permettra d'éviter le gaspillage alimentaire ainsi que d'aider l'utilisateur dans sa gestion du stockage d'aliments.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
&lt;br /&gt;
Notre système sera composé de 3 éléments. &lt;br /&gt;
&lt;br /&gt;
Premièrement, un ou des smartphones appartenant aux utilisateurs. Ces derniers permettront de scanner grâce à son appareil photo, le code barre du produit ainsi que sa date de péremption. Il servira aussi d'interface utilisateur pour notre système. En effet, c'est par cet outil que l'utilisateur pourra lister tous les aliments que l'utilisateur a dans sa base et tout ça en les triant par date de péremption, ou encore voir les recettes possibles pour consommer des aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Deuxièmement, un serveur, de type Raspberry, qui permettra de stocker la base de donnée contenant les aliments de la réserve. Ce serveur sera connecté par wifi.&lt;br /&gt;
 &lt;br /&gt;
Troisièmement, un contrôleur (Rfduino) qui comportera une LED pour indiquer la mise sous tension du contrôleur, une LED pour prévenir l'utilisateur qu'un aliment va bientôt passer sa date de péremption et une dernière LED pour prévenir l'utilisateur que son niveau de réserve est critique ainsi qu'un buzzer et un accéléromètre pour buzzer quand la porte du frigo est restée trop longtemps ouverte. Ce dernier sera fixé au frigo par l'intermédiaire d'un dispositif adapté qui sera un système aimanté qui se pose sur le frigo.&lt;br /&gt;
&lt;br /&gt;
Nous implémenterons donc une application mobile Android qui fera le lien entre les 2 autres systèmes.&lt;br /&gt;
&lt;br /&gt;
Pour la partie électronique que nous aurons à réaliser, nous utiliserons une Breadboard pour faire des premiers tests puis nous créerons une carte PCB pour notre montage final.&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
On utilisera une Raspberry Pi en guise de serveur pour pouvoir s'occuper du stockage de toutes les données dans notre projet puisque notre contrôleur sera incapable de les contenir, ce n'est d'ailleurs pas son but ici.&lt;br /&gt;
&lt;br /&gt;
Notre smartphone fera donc le lien entre notre base de données et notre système embarqué par l'intermédiaire de l'application mobile.&lt;br /&gt;
&lt;br /&gt;
Nous prendrons ici un RFduino puisque celui-ci nous permet d'ajouter des modules comme bon nous semble afin d'adapter le système aux besoins de notre application. Il est également parfaitement compatible avec les applications Android. De plus, nous avons un Bluetooth directement intégré au RFduino pour s'assurer que les liaisons RFduino-application mobile se fassent correctement. &lt;br /&gt;
On notera également que ce contrôleur consomme peu de courant et ne demande qu'une faible tension d'alimentation, critères importants pour ce genre de projet. C'est la raison principale de son utilisation pour être utilisé comme interface physique sur le frigo, en ajoutant également sa taille réduite comparée à la Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
&lt;br /&gt;
Nous avons donc besoin du matériel suivant :&lt;br /&gt;
&lt;br /&gt;
*Raspberry Pi.&lt;br /&gt;
*Clef wifi&lt;br /&gt;
*RFduino (RFD22102 DIP Board, RFD22121 USB Shield, RFD22126 Dual AAA battery shield).&lt;br /&gt;
*2 piles AAA.&lt;br /&gt;
*3 leds tranversantes.&lt;br /&gt;
*3 Résistances 330 Ohm.&lt;br /&gt;
*1 Résistance 10 kOhm.&lt;br /&gt;
*Un buzzer.&lt;br /&gt;
*Accéléromètre.&lt;br /&gt;
*Aimants&lt;br /&gt;
*Un boîtier permettant d'intégrer la RFduino + fixation sur le frigo (modélisation à voir).&lt;br /&gt;
&lt;br /&gt;
Pour le buzzer, l'accéléromètre et les résistances, nous choisirons des composants CMS pour nous permettre d'avoir une carte plus petite.&lt;br /&gt;
&lt;br /&gt;
===Calendrier prévisionnel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Liste des tâches à effectuer====&lt;br /&gt;
&lt;br /&gt;
* Configurer la Raspberry :&lt;br /&gt;
** Installer et configurer le serveur.&lt;br /&gt;
** Créer le diagramme UML de notre future base de données.&lt;br /&gt;
** Créer la base sur le serveur.&lt;br /&gt;
** Configurer la connexion WiFi.&lt;br /&gt;
&lt;br /&gt;
* Monter et programmer la RFduino :&lt;br /&gt;
** Connecter les différents modules au RFduino (accéléromètre, LEDs, buzzer, Batterie, module Bluetooth).&lt;br /&gt;
** Récupérer les consignes du smartphone grâce au Bluetooth.&lt;br /&gt;
** Programmer le comportement du RFduino en fonction des consignes.&lt;br /&gt;
** Construire le boitier final.&lt;br /&gt;
&lt;br /&gt;
* Implémenter l'application mobile Android :&lt;br /&gt;
** Une première activité permettant de se connecter au RFduino et à la Raspberry.&lt;br /&gt;
** Scanner une date et un code barre.&lt;br /&gt;
** Ajout/suppression d'un aliment dans la base de donnée.&lt;br /&gt;
** Envoi d'une consigne au RFduino.&lt;br /&gt;
** Rendre l'interface utilisateur ergonomique (lister aliments, envoyer vers page de recettes avec l'utilisation des aliments bientôt périmés...).&lt;br /&gt;
&lt;br /&gt;
====Calendrier====&lt;br /&gt;
&lt;br /&gt;
Répartition du temps consacré au projet (120h *2) :&lt;br /&gt;
&lt;br /&gt;
*Partie Raspberry : 60h&lt;br /&gt;
*Partie RFduino : 60h&lt;br /&gt;
*Partie développement mobile : 120h&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
&lt;br /&gt;
===Feuille d'heures===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 !  !! Lundi 16-18h !! Mercredi 14-18h !! Jeudi 8-10h&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 1&lt;br /&gt;
&lt;br /&gt;
 | '''23/01''' :  &lt;br /&gt;
* Installation du logiciel Android Studio pour être prêt à commencer l'application mobile.&lt;br /&gt;
* Création du Repository Git sur GitHub : https://github.com/FrancoisLefevre12/Optali.git&lt;br /&gt;
* Réalisation de différents schémas fonctionnels pour se donner une idée du travail à effectuer, aussi bien du software que du hardware.&lt;br /&gt;
* Quelques précisions supplémentaires apportées sur le cahier des charges.&lt;br /&gt;
* Ajout de liens de référence pour la liste de matériel à acheter.&lt;br /&gt;
&lt;br /&gt;
 | '''25/01''' :  &lt;br /&gt;
* Précision des composants requis (accéléromètre, buzzer, LEDs, résistances).&lt;br /&gt;
* Écriture du montage à la main.&lt;br /&gt;
* Étude du fonctionnement de l'accéléromètre, du buzzer.&lt;br /&gt;
* Écriture de la structure de l'application à la main.&lt;br /&gt;
&lt;br /&gt;
 | '''26/01''' :&lt;br /&gt;
*Réalisation graphique de la première page de l'application.&lt;br /&gt;
*Conception du schéma électrique pour tous les composants connectés au RFduino.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 2&lt;br /&gt;
&lt;br /&gt;
 | '''30/01''' :&lt;br /&gt;
*Réalisation du diagramme UML de la base de données qui sera stockée sur la Raspberry Pi&lt;br /&gt;
*Installation de l'outil de développement mobile sur le second PC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 | '''01/02''' :&lt;br /&gt;
*Nous nous sommes d'abord rendus compte que la résistance entre un des GPIO et l'accéléromètre était inutile, nos premiers calculs étaient erronés. Nous ne la garderons donc pas sur notre schéma électrique final.&lt;br /&gt;
*Avancement sur la partie application mobile : réalisation de la page &amp;quot;Ajout&amp;quot; sur laquelle nous tomberons après avoir cliquer sur &amp;quot;ajout&amp;quot; sur la page principale de l'application. Nous avons étendu l'activité principale jusqu'à cette nouvelle activité &amp;quot;Ajout&amp;quot;.&lt;br /&gt;
*Nous avons récupéré notre Raspberry Pi pour commencer à installer notre base de données dessus. Nous avons actuellement quelques problèmes pour nous connecter sur la Raspberry. Nous travaillons sur ce point.&lt;br /&gt;
&lt;br /&gt;
 | '''02/02''' :&lt;br /&gt;
* Application mobile : Mise en place des LEDs sur la home page et de la zone de notification avec les messages associés.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 3&lt;br /&gt;
&lt;br /&gt;
 | '''06/02''' :&lt;br /&gt;
*Nous arrivons à accéder à la Raspberry via le port série de celle-ci. Nous avons également configuré sa connexion Ethernet afin de pouvoir télécharger des paquets dessus et installer notre base de données. &lt;br /&gt;
*Nous rencontrions des problèmes sur le second PC de travail pour récupérer le projet Optali sur Android Studio via notre dépôt GIT. Nous avons pu rectifier ce souci.&lt;br /&gt;
&lt;br /&gt;
 | '''08/02''' :&lt;br /&gt;
*Tentative d'établissement d'un point d'accès WiFi sur notre Raspberry. Nous n'avons pas réussi pour le moment.&lt;br /&gt;
*Restructuration du Repository git.&lt;br /&gt;
*Essai d'importation de la librairie Zxing qui permettra de décoder les code-barres.&lt;br /&gt;
 |&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 4&lt;br /&gt;
&lt;br /&gt;
 | '''13/02'''&lt;br /&gt;
*Configuration du wifi de la Raspberry. &lt;br /&gt;
*Étude d'une mise en place d'un service web via php.&lt;br /&gt;
&lt;br /&gt;
 | '''15/02'''&lt;br /&gt;
*Mise en place d'un lecteur de caractère sur l'application. On utilisera tesseract.&lt;br /&gt;
*Début de la création du PCB via Altium designer. Création d'une librairie pour l'accéléromètre qui est un composant CMS assez spécial. On pourra cependant utiliser des headers classiques pour le buzzer et les LEDs puisque ce sont des composants traversants.&lt;br /&gt;
*Création des premiers fichiers php de connection à la base de donnée et d'insertion d'aliments. Tous ces fichiers seront déposés de la même manière sur le dépôt git.&lt;br /&gt;
&lt;br /&gt;
 | '''16/02'''&lt;br /&gt;
*Adaptation avec prise en compte des cas du code php d'insertion de produits par requête sur la base de donnée.&lt;br /&gt;
*Ajout du code d'implantation de la base de donnée.&lt;br /&gt;
*Altium: Accéléromètre terminé, mise en place des résistances.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 5 (interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''22/02 (3 heures)'''&lt;br /&gt;
*Installation de l'OS de la raspberry.&lt;br /&gt;
*Installation d'Openssh-server, apache2, php5, iptables, mysql-server, php5-mysql.&lt;br /&gt;
*Redirection des ports du routeur vers la raspberry.&lt;br /&gt;
*Configuration de iptables de la raspberry.&lt;br /&gt;
&lt;br /&gt;
 | '''23/02 (2 heures)'''&lt;br /&gt;
*Implantation de la base de donnée sur la raspberry pi.&lt;br /&gt;
|&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 6&lt;br /&gt;
 | '''27/02'''&lt;br /&gt;
*Vérification de la syntaxe de l'insertion de valeurs dans la base de donnée.&lt;br /&gt;
*Création des premières requêtes sur la base de donnée.&lt;br /&gt;
*Finalisation du PCB de l'Optali Board.&lt;br /&gt;
&lt;br /&gt;
 | '''01/03'''&lt;br /&gt;
*Étude et ajout de la librairie volley pour communiquer avec le serveur.&lt;br /&gt;
*Implantation de la fonction d'envoi de données jusqu'au serveur.&lt;br /&gt;
*Après avoir vu avec un professeur, nous avons remarqué que le routage n'était pas adéquat et la disposition des composants n'était pas optimal. Du travail reste donc encore à effectuer.&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 7&lt;br /&gt;
 | '''06/03'''&lt;br /&gt;
*Correction du fichier post.php&lt;br /&gt;
*Finition du protocole d'ajout d'aliment sur la base de donnée. (Code php et page ajout terminée).&lt;br /&gt;
*PCB terminé.&lt;br /&gt;
*Installation d'arduino IDE, doc arduino collecté.&lt;br /&gt;
&lt;br /&gt;
 | '''08/03'''&lt;br /&gt;
*Implémentation de la page ListeIngredient.xml et de l'activité listActivity.java.&lt;br /&gt;
*Documentation sur la procédure de communication bluetooth entre la Rfduino et l'application mobile.&lt;br /&gt;
*Obtention de librairie en lien avec cela.&lt;br /&gt;
*Prise en main de programmation rfduino.&lt;br /&gt;
&lt;br /&gt;
 | '''09/03'''&lt;br /&gt;
*Nous nous sommes rendus compte qu'il était nécessaire de rajouter un bouton poussoir sur notre montage afin de permettre la réinitialisation de notre RFDuino si nécessaire. Nous devons également faire en sorte de pouvoir poser notre carte PCB directement sur notre RFDuino en utilisant des broches. Nous devons donc rajouter ces éléments-ci.&lt;br /&gt;
*Ecriture de la page get.php&lt;br /&gt;
*Premiers tests sur la ListView de l'activité ListActivity.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 8&lt;br /&gt;
 | '''13/03'''&lt;br /&gt;
*Recherche de pistes concernant la programmation RFDuino. Nous pouvons la détecter en bluetooth via un smartphone Android.&lt;br /&gt;
*Finition du Tablelayout et du code java associé sur la page ListActivity.&lt;br /&gt;
&lt;br /&gt;
 | '''15/03'''&lt;br /&gt;
*Ajout de la JsonArrayRequest dans la page ListActivity.&lt;br /&gt;
*Nous nous sommes rendus compte au moment de programmer la liaison I2C de l'accéléromètre avec la RFDuino que nous avions oublié de mettre des résistances pull-up entre l'alimentation du composant et les broches SDA et SCL. Les modifications ont donc été faites puis nous avons envoyé finalement notre PCB à la fabrication.&lt;br /&gt;
&lt;br /&gt;
 | '''16/03'''&lt;br /&gt;
*Changement de stratégie au niveau de la requête JsonArrayRequest. On récupère toute la base et ensuite le traitement sera effectuer dans l'application mobile.&lt;br /&gt;
*Rédaction de la partie Altium du wiki.&lt;br /&gt;
*Recherche de docs sur le système bluetooth du RFduino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 9&lt;br /&gt;
 | '''20/03'''&lt;br /&gt;
*Réalisation de différents réglages pour pouvoir utiliser l'application Optali sur l'Android phone fourni par notre professeur (LG G4c)&lt;br /&gt;
*Recherche de docs concernant la partie java responsable de la communication Bluetooth.&lt;br /&gt;
*Reprise de la solution Tesseract pour la lecture de caractères.&lt;br /&gt;
&lt;br /&gt;
 | '''21/03''' (séance supplémentaire de 3 heures)&lt;br /&gt;
*Début du développement de la partie communication entre RFDuino et l'appli mobile. Nous pouvons détecter le RFduino à partir de Android Studio mais nous n'arrivons pas encore à nous connecter dessus directement.&lt;br /&gt;
*Finition de la fonctionnalité tesseract. La lecture de caractères est donc maintenant possible.&lt;br /&gt;
&lt;br /&gt;
 | '''22/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity&lt;br /&gt;
*Connexion possible entre le RFduino et notre appli mobile. Il faut maintenant pouvoir assurer un échange de données via du GATT.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 10&lt;br /&gt;
 | '''27/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity (suite). Utilisation de la solution postman.&lt;br /&gt;
*Mise à jour du wiki pour la partie Altium.&lt;br /&gt;
*Gestion du dépôt git.&lt;br /&gt;
*Récupération de la carte PCB au service EEI.&lt;br /&gt;
&lt;br /&gt;
 | '''29/03'''&lt;br /&gt;
*Mise en place du tri des Produits avec un critère d'ordonnabilité variable&lt;br /&gt;
*Implémentation du champs recherche et action sur la liste&lt;br /&gt;
*Écriture des pages Php consume.php et delete.php pour décrémenter le nombre d'aliment dans le frigo ou le supprimer&lt;br /&gt;
*Récupération des composants&lt;br /&gt;
*Passage au four pour souder les premiers composants en CMS&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 11&lt;br /&gt;
&lt;br /&gt;
 | '''03/04'''&lt;br /&gt;
*Dé-soudage et resoudage de l'accéléromètre.&lt;br /&gt;
*Soudure des composants&lt;br /&gt;
&lt;br /&gt;
 | '''05/04'''&lt;br /&gt;
*Test du Buzzer&lt;br /&gt;
*Code de l'accéléromètre&lt;br /&gt;
*Création de l'Optali box (la boite qui contient le RFduino fixé au frigo)&lt;br /&gt;
*Finition de la fonction 'delete'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 | '''06/04'''&lt;br /&gt;
*Problème pour faire fonctionner le code de l'accéléro. Il faudra le tester électriquement.&lt;br /&gt;
*Implantation du logo de l'appli &lt;br /&gt;
*Debuggage d'une requête de la page 'list'&lt;br /&gt;
*Documentation sur les listes déroulantes sous les EditTexts.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 12 (Interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''11/04''' (3 heures)&lt;br /&gt;
*Après avoir remarqué que le code de l'accéléro ne fonctionnait pas alors qu'il paraît correct, nous avons décidez de vérifier les propriétés électriques de notre montage.&lt;br /&gt;
En observant à l'analyseur logique, il semblerait que l'horloge de la liaison i2C n'est en fait qu'un signal bruité. Il faudra donc retenter de souder le composant quand cela sera possible.&lt;br /&gt;
&lt;br /&gt;
 | '''13/04''' (6 heures)&lt;br /&gt;
*Terminaison du programme RFduino qui fonctionne théoriquement, nous attendons de terminer les dernières soudures pour pouvoir le tester physiquement.&lt;br /&gt;
*En attendant de pouvoir réaliser des soudures, nous avons repris la partie communication bluetooth entre le RFduino et l'appli. Après avoir tenté d'utiliser un programme permettant de gérer le protocole GATT sans savoir envoyer ou recevoir de données, nous nous sommes orientés sur une communication plus basique basée sur de nombreux exemples que l'on peut voir sur le web.&lt;br /&gt;
&lt;br /&gt;
 | '''15/04''' (6 heures)&lt;br /&gt;
*Après s'être rendu compte que la communication plus &amp;quot;basique&amp;quot; que nous voulions utiliser n'était pas compatible avec le BLE, nous sommes une fois de plus repartis de zéro pour cette partie.&lt;br /&gt;
*Après quelques recherches, nous avons trouvé un programme réalisant la gestion d'un socket BLE sur le principe du protocole GATT. Grâce à celui-ci, il nous est possible de recevoir et d'envoyer des données via BLE sur RFduino ainsi que sur l'appli mobile.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 13 (Interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''17/04 (4 heures)'''&lt;br /&gt;
*Ajout du singleton Etat pour partager l'état des aliments dans la réserve alimentaire&lt;br /&gt;
*Transfert des requêtes de la base de donnée vers le singleton pour optimiser l'actualisation et le partage des données.&lt;br /&gt;
*Actualisation automatique des données sur la page principale.&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Semaine 14&lt;br /&gt;
| '''24/04'''&lt;br /&gt;
*Modification de la présentation du wiki&lt;br /&gt;
*Modification de la fonctionnalité du bouton actualiser en changement d'activité&lt;br /&gt;
&lt;br /&gt;
| '''26/04'''&lt;br /&gt;
*Ajout de la page liste recette&lt;br /&gt;
&lt;br /&gt;
| '''27/04''' (3 heures)&lt;br /&gt;
*Ajout des listes recettes dans ListeRecette&lt;br /&gt;
*Ajout des requêtes des recettes sur ListeRecette.java&lt;br /&gt;
*Création du fichier listeRecette.php sur le serveur pour faire la requête SQL et envoyer sur l'application.&lt;br /&gt;
*Soudure des derniers composants pour terminer le PCB. Tout est soudé sauf le bouton poussoir qui devait permettre un reset du RFduino. En cherchant d'ailleurs à souder ce bouton, nous avons retiré malencontreusement la piste de cuivre permettant de répartir le 3.3V du RFduino sur notre PCB. Notre accéléromètre qui ne marchait déjà pas vraiment n'est plus alimenté. Nous ferons sans notre accéléromètre pour le rendu final. &lt;br /&gt;
|-&lt;br /&gt;
|Semaine 15&lt;br /&gt;
|'''02/05'''&lt;br /&gt;
*Réalisation de la vidéo de présentation du projet avec Laurent Engels.&lt;br /&gt;
|'''03/05'''&lt;br /&gt;
*Remplacement de la LED &amp;quot;LED_Perim&amp;quot; qui était défaillante et ne s'allumait pas quand il le fallait.&lt;br /&gt;
*Début de la réalisation du rapport de projet.&lt;br /&gt;
|'''04/05'''&lt;br /&gt;
*Débuggage de la &amp;quot;LED_Perim&amp;quot;. Le problème n'était donc pas électrique mais bien au niveau software. Il existait un conflit entre l'allumage de cette LED et la pin TX de la liaison série qui était défini sur la même broche.&lt;br /&gt;
*Débuggage de l'appli pour éviter les quelques plantages que l'on peut avoir parfois.&lt;br /&gt;
|-&lt;br /&gt;
|Semaine 16&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===Premières idées===&lt;br /&gt;
&lt;br /&gt;
Voici les premières idées de l'application mobile et du composant fixé sur le frigo.&lt;br /&gt;
[[Fichier:Optali_v1.jpg|400px|thumb|left|Optali version 1]]&lt;br /&gt;
[[Fichier:OptaliBox_v1.jpg|400px|thumb|center|OptaliBox version 1]]&lt;br /&gt;
[[Fichier:P46_schema.jpg|400px|thumb|center|Schéma électrique version 1]]&lt;br /&gt;
&lt;br /&gt;
En s'intéressant aux différentes datasheets ou données constructeur des composants que nous voulons utiliser, nous trouvons indispensable d'utiliser des résistances de 330 Ohms pour l'utilisation des LEDs, pour éviter de les griller.&lt;br /&gt;
&lt;br /&gt;
Edit : Retrait de la résistance R2.&lt;br /&gt;
&lt;br /&gt;
Concernant l'accéléromètre, nous avons choisi un modèle qui nous permet de brancher directement ce module sur une broche du RFDuino. On branchera directement les GPIOs de la RFduino sur les ports SDA et SCL de l'accéléromètre qui correspondent à l'interface I2C pour pouvoir communiquer. On utilisera aussi la broche INT1 pour pouvoir générer des interruptions directement depuis l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
On connectera le buzzer directement à une broche de la RFduino aussi. Concernant celui-ci il reste une incertitude puisqu'on ne trouve aucune information sur le courant à fournir pour l'alimentation de ce composant sur sa datasheet. Après différentes recherches sur Internet, il pourrait être nécessaire d'utiliser un montage amplificateur à transistor comme un émetteur commun pour booster le courant en sortie d'une broche GPIO. Quelques buzzers trouvés avec des données constructeur montrent que ce type de composant nécessite généralement un courant d'environ 30 mA. Nous verrons dans la pratique si cela sera vraiment nécessaire. Par sécurité, on ajoutera un transistor bipolaire dans la liste de matériel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:screen_LED.png|400px|thumb|left|Données constructeur pour LEDs]]&lt;br /&gt;
[[Fichier:screen_accel.png|400px|thumb|center|Datasheet de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
====Configuration école====&lt;br /&gt;
&lt;br /&gt;
*Pour configurer notre Raspberry Pi, nous utilisons son port série et &amp;quot;minicom&amp;quot;. Pour pouvoir télécharger des paquets, il fallait la connecter au réseau. Nous lui avons donc affecté une adresse IP fixe avec le fichier /etc/network/interfaces. Voici les modifications qui ont été apportées : &lt;br /&gt;
&lt;br /&gt;
   auto eth0&lt;br /&gt;
   iface eth0 inet static&lt;br /&gt;
   address 172.26.78.15&lt;br /&gt;
   netmask 255.255.240.0&lt;br /&gt;
   gateway 172.26.79.254&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il a également fallu ajouter la commande &amp;quot;export http_proxy=http://proxy.polytech-lille.fr:3128&amp;quot; (il faudra effectuer cette commande à chaque démarrage de la Pi) pour pouvoir utiliser le proxy de l'école. &lt;br /&gt;
Nous avons de plus modifier le fichier /etc/resolv.conf avec la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
   nameserver 193.48.57.34&lt;br /&gt;
&lt;br /&gt;
Malgré cela, nous avions des soucis pour nous connecter au réseau. Il y avait en fait un processus dhcp en tâche de fond qui nous empêchait de garder le contenu de resolv.conf. Il a donc fallu trouver ce processus pour le &amp;quot;kill&amp;quot; et pouvoir accéder correctement au réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons du coup pu installer postgresql pour pouvoir configurer une base de données sur notre Pi.&lt;br /&gt;
&lt;br /&gt;
====Configuration à domicile====&lt;br /&gt;
&lt;br /&gt;
Pour nous mettre dans une situation plus fidèle à notre projet, nous avons configuré la raspberry à domicile.&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abords installé Raspbian, puis installé les paquets nécessaire au fonctionnement du serveur.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Openssh-server''': permettre d'accès à distance à la raspberry pour pouvoir y accéder depuis l'école.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Iptables''': pour sécuriser les ports non utilisé et libérer l'accès aux ports qui nous intéressent (ssh 22,http 80,https 443).&amp;lt;br&amp;gt;&lt;br /&gt;
- '''apache2, php5, mysql-server''' : pour mettre en place notre service web.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons rediriger les ports 80 et 22 du routeur pour pouvoir accéder à la raspberry de l'extérieur.&lt;br /&gt;
&lt;br /&gt;
Pour finir, nous avons créer un fichier de config iptables permettant de sécuriser un minimum la base de donnée et de permettre d'autoriser la communication des ports 22, 80 et 443 correspondants aux ports ssh, http et https. le fichier de configuration a été déposé dans le dépôt git. Il nous a fallut le rendre exécutable via un chmod. Puis pour l'exécuter à chaque démarrage du system, dans le fichier /etc/init.d/ taper : &lt;br /&gt;
&lt;br /&gt;
    sudo update-rc.d firewall defaults (si notrefichier s'appelle firewall et s'il est dans init.d)&lt;br /&gt;
&lt;br /&gt;
===Base de donnée===&lt;br /&gt;
&lt;br /&gt;
Nos données alimentaires disponibles par toute la famille doivent être stocké sur un serveur de base de donnée externe (tel une Raspberry pi). Nous nous proposons de créer le diagramme UML représentant cette future base de donnée.&lt;br /&gt;
[[Fichier:Optali_UML.jpg|700px|thumb|center|Diagramme UML base de donnée]]&lt;br /&gt;
&lt;br /&gt;
On créera donc 3 entités. Date, Product et Recipe. &lt;br /&gt;
&lt;br /&gt;
- Product rassemble les aliments qui sont ou ont été dans la réserve alimentaire. NbProdIn permet de connaître le nombre de produits identiques (possibilité de date différentes mais pas de doublons et on garde l'information de quantité. NbProdBought donne une information sur le nombre de produits identique ayant été acheté depuis la mise en service de la base de donnée. Ainsi nous pourrons par la suite proposer une liste de course à l'utilisateur en fonction de la fréquence d'achat des produits.&lt;br /&gt;
&lt;br /&gt;
- Recipe contient les recettes que pourra rentrer l'utilisateur sur l'application. L'utilisateur pourra ainsi se voir proposer des recettes en fonction de ce qu'il a dans son frigo et de ses recettes personnelles.&lt;br /&gt;
&lt;br /&gt;
'''''Edit : On ajoutera une valeur entière dans les tables Date et Unity pour gérer le cas où il existe plusieurs produits (différents ou identiques) avec une date de péremption équivalente. On les appellera NbDate la valeur dans la table Date et NbUnity dans la table Unity. On leur ajoutera de même une clef primaire IdUnity et IdListProduct'''''&lt;br /&gt;
&lt;br /&gt;
On utilisera MySql pour la gestion de nos bases de données. &lt;br /&gt;
La syntaxe pour l'implanter dans la base de donnée à été jointe au dépôt git.&lt;br /&gt;
&lt;br /&gt;
Pour lancer my SQL, on tapera:&lt;br /&gt;
&lt;br /&gt;
   mysql -h localhost -u root -p&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Web service===&lt;br /&gt;
&lt;br /&gt;
====Page init.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet d'initier l'accès à la base de donnée sur le serveur. Elle est requise pour les pages qui suivent.&lt;br /&gt;
&lt;br /&gt;
====Page post.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet l'insertion d'un produit et d'une date via l'application mobile. Elle prend donc ces deux arguments et les insère dans les tables Unity, Product et Date.&lt;br /&gt;
&lt;br /&gt;
====Page get.php====&lt;br /&gt;
&lt;br /&gt;
Page qui envoie la liste des aliments avec leur nom, leur date, leur quantité dans le frigo, la quantité d'exemplaires acheté en tout depuis la mise en place de l'appareil. Le tri se fera directement dans l'application mobile. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Application Mobile===&lt;br /&gt;
&lt;br /&gt;
====Home page====&lt;br /&gt;
&lt;br /&gt;
Page d'accueil permettant d'accéder aux pages d'ajout et de liste des produits disponibles. &amp;lt;br&amp;gt;&lt;br /&gt;
La page permet aussi d'effectuer la connexion entre la rfduino et l'application mobile. Elle montre les alertes (signaux) à l'utilisateur &lt;br /&gt;
et écrit leur signification.&lt;br /&gt;
&lt;br /&gt;
====Page d'ajout====&lt;br /&gt;
&lt;br /&gt;
Pour ajouter un produit et lire une date on utilisera un champ editText pour permettre à l'utilisateur d'écrire &amp;quot;Manuellement&amp;quot; dedans grâce au clavier du smartphone.&amp;lt;br&amp;gt;&lt;br /&gt;
De plus on utilise un bouton qui appellera la caméra pour détecter les caractères d'un produit ou d'une date. Au début nous voulions utiliser un détecteur de code barre, nous l'avons implémenté mais nous avons remarqué que la mise au point sur une surface non plane prend du temps d'autant plus qu'il faut questionner une base de donnée contenant tous les numéro de codes barres utilisés. Nous avons donc prit la décision d'utiliser uniquement la lecture de caractère et nous créerons une liste déroulante sous l'editText pour faciliter l'insertion d'un produit qui a déjà été ajouté. Pour la lecture de caractère, nous utilisons la librairie tesseract.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'envoi, nous utilisons la librairie Volley développé par google.&lt;br /&gt;
&lt;br /&gt;
====Page Liste====&lt;br /&gt;
&lt;br /&gt;
Permet de lister les produits dans la base de donnée. Une série de boutons radio permettent de trier les produits par ordre alphabétique, par date de péremption, par nombre d’occurrence dans la réserve alimentaire, par nombre d'achat depuis la mise en place du système.&amp;lt;br&amp;gt;&lt;br /&gt;
Une colonne permet de sélectionner les aliments désirés (par checkBox) pour ensuite les supprimer via un button &amp;quot;suppr&amp;quot; ou les choisir pour trouver des recettes qui les utilisent.&amp;lt;br&amp;gt;&lt;br /&gt;
Un EditText permet d'effectuer une recherche sur la base de donnée.&lt;br /&gt;
&lt;br /&gt;
===Altium Designer===&lt;br /&gt;
&lt;br /&gt;
Pour permettre au RFDuino de communiquer avec les différents composants, nous aurons besoin de quelques composants électroniques. Afin que cela soit plus esthétique pour la modélisation finale, nous allons créer une carte PCB pour rassembler tous ces composants dessus. On utilisera le logiciel Altium Designer pour cela.&lt;br /&gt;
&lt;br /&gt;
Avant de représenter notre circuit général, nous allons commencer par créer une librairie rassemblant tous les composants que nous utiliserons par la suite, en particulier nos composants CMS (accéléromètre et résistances). Pour ce qui est des LEDs et du buzzer, qui sont traversants, nous pourrons utiliser des headers classiques.&lt;br /&gt;
&lt;br /&gt;
Il a donc fallu créer le schematic ainsi que l'empreinte de nos composants CMS. Voici un exemple avec notre accéléromètre :&lt;br /&gt;
[[Fichier:Accelerosch.PNG|500px|thumb|left|Schematic de l'accéléromètre]]&lt;br /&gt;
[[Fichier:Acceleropcb.PNG|500px|thumb|center|Empreinte PCB de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les fichiers Altium sont disponibles sur notre dépôt GIT. Après cela, nous pouvons maintenant construire notre schematic du montage entier et ensuite le fichier PCB afin de pouvoir graver notre circuit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après quelques modifications sur le montage prévu initialement, c'est-à-dire en enlevant une résistance entre un GPIO et l'alimentation de l'accéléromètre ainsi qu'en rajoutant des résistances pull-up sur les broches de notre liaison i2C (SDA et SCL) et un bouton poussoir en plus pour permettre un reset du RFDuino, nous avons pu créer notre schematic global pour en faire un PCB et l'exporter au format Gerber. De ce fait, le service EEI de Polytech pourra réaliser la gravure de notre carte PCB.&lt;br /&gt;
&lt;br /&gt;
Voici quelques photos pour illustrer notre projet sur Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Finalproto_sch.PNG|400px|thumb|left|Schematic du montage final]]&lt;br /&gt;
[[Fichier:Finalproto_pcb.PNG|400px|thumb|center|PCB du montage final]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On retrouve sur notre PCB final les headers, respectivement de 8 et 5 pins, de part et d'autre de la carte, qui représentent le RFDuino, où nous souderons des broches pour qu'elles puissent être intégrées au RFDuino. On note la présence de 5 autres headers de 2 pins, dont 3 pour des LEDs puis les 2 autres pour le buzzer et le bouton poussoir. Ce qui reste sont les composants CMS avec plusieurs composants à 2 pattes qui sont toutes les résistances de notre montage, celles de protection pour les LEDs et les pull-ups pour l'accéléromètre. Le dernier composant à 8 pattes est donc bien l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quelques difficultés ont été rencontrées durant ce travail notamment concernant les contraintes de construction sur le PCB final. En effet, les composants CMS choisis (surtout l'accéléromètre) étant parfois très petits, Altium n'accepte pas forcément le faible espacement entre les différentes pattes des composants, ce qui pose problème lors de la compilation. De plus, le plan de masse ne prenait pas en compte tous les éléments devant être rattachés à la masse. Il a fallu légèrement déplacer les headers représentant le RFDuino pour que cela soit possible. Il faudra alors peut-être légèrement plier les broches qui viendront s'intégrer sur le RFDuino pour ajouter notre PCB sur le RFDuino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons envoyé nos fichiers Altium au service EEI afin qu'il puisse réaliser physiquement notre carte. Nous nous retrouvons donc avec notre carte PCB récupérée auprès du service EEI. Voici le rendu :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:P46_carte.jpg|400px|thumb|center|Fabrication de notre carte PCB]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir souder nos différents composants, nous avons été rendre visite à Thierry Flamen, responsable du service EEI, afin de passer nos composants CMS au four (résistances et accéléromètre). En effet il était presque impossible de souder tous ces composants manuellement. Après ce passage au four, il nous restait les composants traversants à souder, c'est-à-dire les pins, les LEDs et notre buzzer. Voici le rendu après nos soudures :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:pcbfinal1_p46.jpg|200px|thumb|left|Vue du dessous de notre carte]]&lt;br /&gt;
[[Fichier:pcbfinal2_p46.jpg|200px|thumb|center|Vue du dessus de notre carte]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il manque sur la carte finale notre bouton poussoir qui permettait le reset de notre RFduino. Malheureusement en essayant de souder celui-ci, nous avons retiré du cuivre de la carte, ce qui nous empêche de pouvoir faire circuler le courant dans ce bouton. De plus, la piste avec du cuivre manquant était également responsable de l'alimentation de notre accéléromètre ainsi que d'une LED indiquant la mise sous-tension du contrôleur. Pour le rendu final, nous souderons un fil sur la LED pour pouvoir l'alimenter, cependant il serait plus complexe d'alimenter l'accéléromètre. Celui-ci ne fonctionnait déjà pas correctement de manière électrique. La soudure de ce composant demandait une grande précision puisqu'il est de taille minuscule. Nous n'utiliserons donc pas ce composant dans notre montage final.&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bibliographie ==&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_IMA4_SC_%26_SA_2016/2017&amp;diff=41679</id>
		<title>Projets IMA4 SC &amp; SA 2016/2017</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_IMA4_SC_%26_SA_2016/2017&amp;diff=41679"/>
				<updated>2017-05-04T08:36:45Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : /* Matériel à acquérir */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Merci de référencer vos pages de projets ici. Merci aussi d'uniformiser vos formats que ce soit en regardant la présentation des projets déjà créés ou en demandant une modification du format des précédents si votre façon de faire vous semble la meilleure. Dans tous les cas un minimum de communication entre les binômes est conseillée.&lt;br /&gt;
&lt;br /&gt;
Toutes les sources doivent être déposées sur notre archive GIT. Le service est disponible à l'URL [https://archives.plil.fr archives.plil.fr]. Connectez-vous avec vos identifiants Polytech'Lille. Sauf indication contraire de vos encadrants, rendez le projet public et mettez le lien sur votre Wiki. Vous pouvez trouver de la documentation sur ce système d'archives sur ce [https://git-scm.com/book/fr/v1 site].&lt;br /&gt;
&lt;br /&gt;
== Répartition des binômes ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Projet !! Encadrants école !! Elèves&lt;br /&gt;
|-&lt;br /&gt;
| P1 [[IMA4 2016/2017 P1|Climatisation du pauvre]]&lt;br /&gt;
| Xavier Redon&lt;br /&gt;
| Haroun Abdelali&lt;br /&gt;
|-&lt;br /&gt;
| P2 [[IMA4 2016/2017 P2|Réseau de capteurs sur smartphone]]&lt;br /&gt;
| Alexandre Boé / Xavier Redon / Thomas Vantroys&lt;br /&gt;
| Wenyu sun / Xinyue xu&lt;br /&gt;
|-&lt;br /&gt;
| P10 [[IMA4 2016/2017 P10|Application de suivi de prise de médicaments]]&lt;br /&gt;
| Fanny Moreau / Alexandre Boé / Xavier Redon / Thomas Vantroys&lt;br /&gt;
| Martin Rohmer / Kévin Godesence&lt;br /&gt;
|-&lt;br /&gt;
| P11 [[IMA4 2016/2017 P11|Amélioration de l'accueil d'enfants hospitalisés]]&lt;br /&gt;
| Marion Binninger / Alexandre Boé / Xavier Redon / Thomas Vantroys&lt;br /&gt;
| Robin Cavalieri / Edmur Lopes&lt;br /&gt;
|-&lt;br /&gt;
| P14 [[IMA4 2016/2017 P14|Sex toy connecté]]&lt;br /&gt;
| Alexandre Boé / Xavier Redon&lt;br /&gt;
| Cedric Roussel / Thomas Stievenard&lt;br /&gt;
|-&lt;br /&gt;
| P18 [[IMA4 2016/2017 P18|Education de la position de tête]]&lt;br /&gt;
| Rodolphe Astori / Alexandre Boé / Xavier Redon / Thomas Vantroys&lt;br /&gt;
| Mame Arame Diop / Amina Fahem&lt;br /&gt;
|-&lt;br /&gt;
| P19 [[IMA4 2016/2017 P19|Orchestre électronique]]&lt;br /&gt;
| Lucas Prieux / Hidéo Vinot / Xavier Redon / Thomas Vantroys&lt;br /&gt;
| Antoine Arnaudet / Vivian Senaffe&lt;br /&gt;
|-&lt;br /&gt;
| P20 [[IMA4 2016/2017 P20|Création d’un environnement virtuel de test]]&lt;br /&gt;
| Rochdi Merzouki / Vincent Coelen / Valentin Vergez&lt;br /&gt;
| Butaye Marianne / François Duport&lt;br /&gt;
|-&lt;br /&gt;
| P21 [[IMA4 2016/2017 P21|Conception d’une MPS Polyvalente]]&lt;br /&gt;
| Rochdi Merzouki / Thomas Danel / Valentin Vergez&lt;br /&gt;
| Samy Belhouachi / François Xavier Cockenpot&lt;br /&gt;
|-&lt;br /&gt;
| P25 [[IMA4 2016/2017 P25|Robot mobile Polytech'Lille]]&lt;br /&gt;
| Xavier Redon / Alexandre Boé&lt;br /&gt;
| Cheikh Said Ahmed / Khadija El Messnaoui&lt;br /&gt;
|-&lt;br /&gt;
| P26 [[IMA4 2016/2017 P26|Train de véhicules]]&lt;br /&gt;
| Xavier Redon / Alexandre Boé&lt;br /&gt;
| Manlu Luo / Xinyi Wang&lt;br /&gt;
|-&lt;br /&gt;
| P27 [[IMA4 2016/2017 P27|Sonde atmosphérique]]&lt;br /&gt;
| Xavier Redon / Thomas Vantroys / Alexandre Boé&lt;br /&gt;
| Olivier Mahieux / Grillère Baptiste&lt;br /&gt;
|-&lt;br /&gt;
| P28 [[IMA4 2016/2017 P28|Adaptation d'un émulateur de calculatrices TI]]&lt;br /&gt;
| Xavier Redon / Gilles Dhaussy&lt;br /&gt;
| Rodolphe Toin&lt;br /&gt;
|-&lt;br /&gt;
| P29 [[IMA4 2016/2017 P29|Conteneurs pour site Web]]&lt;br /&gt;
| Xavier Redon / Thomas Vantroys&lt;br /&gt;
| Jade Dupont (valentin)&lt;br /&gt;
|-&lt;br /&gt;
| P30 [[IMA4 2016/2017 P30|Voiture radiocommandée controlée par gant]]&lt;br /&gt;
| Alexandre Boé / Xavier Redon / Thomas Vantroys&lt;br /&gt;
| Thomas Gosse / Bacem Hagui&lt;br /&gt;
|-&lt;br /&gt;
| P31 [[IMA4 2016/2017 P31|Accueil personnalisé par drone]]&lt;br /&gt;
| Alexandre Boé / Xavier Redon / Thomas Vantroys&lt;br /&gt;
| Tristan Hart / Etienne Profit&lt;br /&gt;
|-&lt;br /&gt;
| P32 [[IMA4 2016/2017 P32|Sécurité: brouilleur d'ondes]]&lt;br /&gt;
| Thomas Vantroys / Alexandre Boé / Xavier Redon&lt;br /&gt;
| Nicky Ung / Alexis Macherez&lt;br /&gt;
|-&lt;br /&gt;
| P33 [[IMA4 2016/2017 P33|Sécurité: ingénierie inverse de protocole réseau]]&lt;br /&gt;
| Thomas Vantroys / Alexandre Boé / Xavier Redon&lt;br /&gt;
| Oumaima Naanaa&lt;br /&gt;
|-&lt;br /&gt;
| P34 [[IMA4 2016/2017 P34|Interface Haptique, simulateur de formes et de textures]]&lt;br /&gt;
| Betty Semail / Laurent Grisoni / Frédéric Giraud&lt;br /&gt;
| Alice Coffin / Diana Marrucho&lt;br /&gt;
|-&lt;br /&gt;
| P37 [[IMA4 2016/2017 P37|Gamelle connectée]]&lt;br /&gt;
| Alexandre Boé / Thomas Vantroys / Xavier Redon&lt;br /&gt;
| Lutecia Damiens / Alexis Dorian&lt;br /&gt;
|-&lt;br /&gt;
| P38 [[IMA4 2016/2017 P38|Veilleuse enfant connectée]]&lt;br /&gt;
| Thomas Vantroys / Alexandre Boé&lt;br /&gt;
| Hugo Delatte&lt;br /&gt;
|-&lt;br /&gt;
| P39 [[IMA4 2016/2017 P39|Projecteur laser]]&lt;br /&gt;
| Xavier Redon / Alexandre Boé / Thomas Vantroys&lt;br /&gt;
| Loïc Tombazzi / Marius Trimbur&lt;br /&gt;
|-&lt;br /&gt;
| P44 [[IMA4 2016/2017 P44|3615 Facebook]]&lt;br /&gt;
| Thomas Vantroys&lt;br /&gt;
| Marouan Mcharfi / Tristan Lopez&lt;br /&gt;
|-&lt;br /&gt;
| P46 [[IMA4 2016/2017 P46|Aide anti-gaspillage alimentaire ]]&lt;br /&gt;
| Alexandre Boé / Xavier Redon / Thomas Vantroys&lt;br /&gt;
| Alexandre Huet / François Lefevre&lt;br /&gt;
|-&lt;br /&gt;
| P47 [[IMA4 2016/2017 P47|Modélisation d’un robot mobile]]&lt;br /&gt;
| Midzodzi Pekpe&lt;br /&gt;
| Djamil Mohammed / Hamza Kerroum&lt;br /&gt;
|-&lt;br /&gt;
| P48 [[IMA4 2016/2017 P48|Surveillance d'un robot mobile]]&lt;br /&gt;
| Midzodzi Pekpe&lt;br /&gt;
| Jean-Baptiste Saison&lt;br /&gt;
|-&lt;br /&gt;
| P3 [[IMA4 2016/2017 P3|Capteurs enfuis pour vieillissement du béton]]&lt;br /&gt;
| Alexandre Boé / Thomas Vantroys&lt;br /&gt;
| Florian Giovannangeli&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Matériel à acquérir ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Projet !! Matériel&lt;br /&gt;
|-&lt;br /&gt;
| P1 [[IMA4 2016/2017 P1|Climatisation du pauvre]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Feuille de Plexiglass &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; une plaque de polystérene &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; 3 AOPs (comparateur) &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; 3 Diodes &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt; 2 Ventilateurs 100 m3/h 12V [http://www.sellande.com/sellande-webcom/home/393-ventilateur-12v-100m3-h-3752132012327.html?gclid=CjwKEAiAlZDFBRCKncm67qihiHwSJABtoNIgNjN3dRX7D5BOfBUbN9WdjSVzbfLBF_YsaI59D0MaCxoC_oDw_wcB] &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt; 1 Panneau solaire 10Wc 12V [https://www.apb-bluepower.com/panneau-solaire-photovoltaique-12v-10w-apb-energy,fr,4,QX-P-10.cfm] &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; 2 sondes de températures [http://fr.rs-online.com/web/p/sondes-de-temperature/1241079/] &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt; une Batterie 70Ah 12V [https://www.manomano.fr/batterie-2319?model_id=1988070&amp;amp;referer_id=537135&amp;amp;gclid=CjwKEAiAlZDFBRCKncm67qihiHwSJABtoNIgcniSnImZEGSLytrHpgv4fTHGFuj1r30kH340E0wmPxoC6ovw_wcB] &amp;lt;/span&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| P2 [[IMA4 2016/2017 P2|Réseau de capteurs sur smartphone]]&lt;br /&gt;
|   &lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;6* Capteur de température[http://www.mouser.fr/ProductDetail/Microchip-Technology/TC1047VNBTR/?qs=sGAEpiMZZMucenltShoSnjkfRJmEyKRQimeb4yJa%2fn8%3d]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;1* Smartphone sous Android 6.0+&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;6* ATmega32u4-AU (package TQFP), [http://www.mouser.fr/ProductDetail/Microchip-Technology-Atmel/ATMEGA32U4RC-AU/?qs=sGAEpiMZZMvqv2n3s2xjsWfDNH99npBWOb9m5kVBeoM%3d]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;6* Connecteur USB Zx20-B-5S-UINT(30)[http://www.mouser.fr/ProductDetail/Hirose-Electric/ZX20-B-5S-UNIT30/?qs=%2fha2pyFaduiI1PHIQp025swiTaQgBs3xrF3lm%2fjmZrmtw6zfCgwPXHsVofi5faNN]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;5* quartz 16Mhz [http://fr.farnell.com/multicomp/mcrsd16000f183000rr/quartz-16mhz-18pf-hc49-us-smd/dp/2395958]&amp;lt;/span&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;6* Chip guard[http://eu.mouser.com/ProductDetail/Bourns/CG0603MLC-05E/?qs=%2fha2pyFaduj8GWc5RpRwWsoz%252bsBNDfM0b%2fMwO0m8cAS%252b28tb9AwLWQ%3d%3d]&amp;lt;/span&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;10* Fusibles réarmables[http://eu.mouser.com/ProductDetail/Bourns/MF-MSMF050-2/?qs=%2fha2pyFadujDIyYlSEAmAtmxzhQX2R56dU6AOyKWoF1gS%2fKyt5ZQcQ%3d%3d]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;5* header(36 contacts) [http://fr.farnell.com/3m/929974-01-36/connecteur-rcpt-36pos-1-rangee/dp/2396216?MER=sy-me-pd-mi-alte]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;20* résistances de 22 ohm[http://fr.farnell.com/multicomp/mc0063w0603522r/res-couche-epaisse-22r-5-0-063w/dp/9331891]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;10* résistances de 10k ohm[http://fr.farnell.com/susumu/rr0816p-103-b-t5/res-couche-mince-10k-0-1-0-063w/dp/1653253]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;10* résistances de 1M ohm[http://fr.farnell.com/multicomp/mc0063w060311m/res-couche-epaisse-1m-1-0-063w/dp/9330410?ost=9330410&amp;amp;selectedCategoryId=&amp;amp;categoryNameResp=Toutes%2Bles%2Bcat%25C3%25A9gories&amp;amp;searchView=table&amp;amp;iscrfnonsku=false]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;10* capacités(CMS) de 22 pF[http://fr.farnell.com/multicomp/mc0603n220j500ct/condensateur-mlcc-c0g-np0-22pf/dp/1759057]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;10* capacité(CMS) de 1 uF[http://fr.farnell.com/walsin/0603x105k100ct/condensateur-mlcc-x5r-1uf-10v/dp/2496916]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;10* capacité(CMS) de 100 nF[http://fr.farnell.com/walsin/0603b104k500ct/condensateur-mlcc-x7r-0-1uf-50v/dp/2496834]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;10* diode[http://www.mouser.fr/ProductDetail/Wolfspeed-Cree/C3D16065A/?qs=sGAEpiMZZMtbRapU8LlZD2p%2ftt67Z%252br4005PkgBuAD1SM4AyiGk4XA%3d%3d]&amp;lt;/span&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| P10 [[IMA4 2016/2017 P10|Application de suivi de prise de médicaments]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Smartphone sous Android&amp;lt;/span&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| P11 [[IMA4 2016/2017 P11|Amélioration de l'accueil d'enfants hospitalisés]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Raspberry Pi&amp;lt;/span&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| P14 [[IMA4 2016/2017 P14|Sex toy connecté]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; 2*Adaptateur 5V [http://www.gotronic.fr/art-adaptateur-mv530n-8000.htm]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; 2*Embase adaptateur [http://www.gotronic.fr/art-embase-alim-sa21a-14961.htm]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; 2*Arduino mini (en 3v3 finalement) [http://fr.rs-online.com/web/p/kits-de-developpement-pour-processeurs-et-microcontroleurs/7617327/]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; 2*Modules bluetooth [http://fr.rs-online.com/web/p/modules-bluetooth/1244407/]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Capteur de température [http://www.mouser.fr/ProductDetail/Maxim-Integrated/MAX31725MTA+/?qs=sGAEpiMZZMucenltShoSnuJtr4xlG60lboc%252bnebe514%3d]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; 2*Accéléromètre [http://www.mouser.fr/ProductDetail/NXP-Freescale/MMA8652FCR1/?qs=sGAEpiMZZMs0JOhy9PM0USp5vOY2ClxODTM36syD6sQ%3d]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; 4*Vibreurs [http://www.gotronic.fr/art-vibreur-miniature-vm1201-20685.htm]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; 5*Servomoteurs [http://www.gotronic.fr/art-servomoteur-s07nf-25182.htm]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; 5* Capacité 0.1µF (*1 capteur température, *2 accéléromètre, 2* régulateur)[http://fr.farnell.com/walsin/0805b104k500ct/condensateur-mlcc-x7r-0-1uf-50v/dp/2496944]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; 3*Résistance 4.7kohms ( capteur température) [http://fr.farnell.com/vishay/crcw08054k70fkta/res-couche-epaisse-4-7k-1-0-125w/dp/1653013RL]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;2*Capacité 0.33µF (régulateur) [http://www.mouser.fr/ProductDetail/Wurth-Electronics/885012105003/?qs=sGAEpiMZZMvzv9EAOJZmO9b76UYLhwTmM7EN2czdHKU%3d]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; 2*Régulateur 3.3V [http://www.mouser.fr/ProductDetail/Texas-Instruments/UA78M33CDCYR/?qs=sGAEpiMZZMtUqDgmOWBjgHbKmseNGGTSe%2f5roer8H%2fU%3d]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; Silicone alimentaire (internet conseillé par un chercheur de l'inria. Prendre sorta clear 40A) [http://www.creation-silicone.com/31.la-serie-sorta-clear] (la cigale et la fourmi à lille) [http://www.cigaleetfourmi.fr/silicones-alginates-et-latex/1262-silicone-alimentaire-peau-liquide-2-kg.html#more_info_tabs] (Rougier&amp;amp;Plé à lille) [http://www.rougier-ple.fr/silicone-alimentaire-4428-1-kg.r.html]  &amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; ARduino uno pour essais&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Servomoteur pour essais&amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Deux téléphones sur android (dont un LG G4C de l'école)&amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P18 [[IMA4 2016/2017 P18|Education de la position de tête]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Accéléromètre 4 ADXL335[http://www.gotronic.fr/art-module-accelerometre-adxl335-3-axes-ef03049-23504.htm]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Module Adafruit 9-DOF [http://www.gotronic.fr/art-module-9-dof-ada2472-23896.htm]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Smartphone sous Android&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Câble 12 conducteurs  [http://fr.farnell.com/pro-power/pp000342/cable-12-conducteurs-0-5mm2-25m/dp/2440126]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Arduino Mega&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Résistance &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Module WIFI ESP 8266 [http://www.gotronic.fr/art-module-wifi-serie-esp8266-113990084-23666.htm]&amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P19 [[IMA4 2016/2017 P19|Orchestre électronique]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Arduino UNO x5.&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P20 [[IMA4 2016/2017 P20|Création d’un environnement virtuel de test]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P21 [[IMA4 2016/2017 P21|Conception d’une MPS Polyvalente]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P25 [[IMA4 2016/2017 P25|Robot mobile Polytech'Lille]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Atmega 328p [http://fr.farnell.com/atmel/atmega328p-pu/micro-8-bits-avr-32k-flash-28pdip/dp/1715487]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Atmega 328p CMS [http://fr.farnell.com/atmel/atmega328p-au/micro-8-bits-avr-32k-flash-32tqfp/dp/1715486?selectedCategoryId=&amp;amp;exaMfpn=true&amp;amp;categoryId=&amp;amp;searchRef=SearchLookAhead&amp;amp;searchView=table&amp;amp;iscrfnonsku=false]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;FT232R (*2) [http://fr.farnell.com/ftdi/ft232rl-reel/usb-vers-uart-ssop28-232/dp/1146032]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;USB (*2) [http://fr.farnell.com/wurth-elektronik/65100516121/mini-usb-2-0-type-b-receptacle/dp/1642036]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Led (*4)[http://fr.farnell.com/kingbright/kph-1608sgc/led-12mcd-vert-568nm/dp/2426215]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;bouton(*2) [http://www.mouser.fr/ProductDetail/E-Switch/LL3301NF065QG/?qs=sGAEpiMZZMvxtGF7dlGNpqqmTFthXBmf0KM%252bqj1KR%252bA%3d]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Diode(*2)[http://eu.mouser.com/ProductDetail/Microsemi/1N4148UR-1/?qs=sGAEpiMZZMtoHjESLttvkmKnFwXErGnblScnaPsZQPwnq%2fwjQSnhEg%3d%3d]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;LM1117(*2) [http://www.mouser.fr/new/Texas-Instruments/nationalLM1117/]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;TB6612FNG (*2) [http://www.gotronic.fr/art-commande-de-2-moteurs-tb6612fng-2x1a-21716.htm]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Quartz 16 MHz (*2)[http://fr.farnell.com/raltron/as-16-000-18/quartz-16mhz-18pf-hc-49s/dp/1611761?MER=bn_para_1TP_LastViewed_3]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;RJ11(*6) [http://fr.farnell.com/molex/95522-2667/fiche-rj11-cat3-6-6/dp/2060715]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Resistor 1k &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Resistor 470 &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Resistor 100 &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Resistor 1M &amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Capacité 10 nF &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Capacité 10uF &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Capacité 22pF &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;'''MATERIELS CAPTEUR DE LIGNE'''[http://projets-imasc.plil.net/mediawiki/index.php?title=Finalisation_de_cartes_de_contr%C3%B4le_de_robot#Carte_capteur_de_ligne]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;'''MATERIELS CAPTEUR ULTRASON'''[http://projets-imasc.plil.net/mediawiki/index.php?title=Finalisation_de_cartes_de_contr%C3%B4le_de_robot#Carte_capteur_ultrason_.28en_cours.29]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;'''MATERIELS CODEUR INCREMENTAL'''[http://projets-imasc.plil.net/mediawiki/index.php?title=Finalisation_de_cartes_de_contr%C3%B4le_de_robot#Carte_Odom.C3.A8tre_.28en_cours.29]&amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P26 [[IMA4 2016/2017 P26|Train de véhicules]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;LEDs IR (x20), RS [http://fr.rs-online.com/web/p/led-ir/6548334/]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Phototransistors IR (x20), RS [http://fr.rs-online.com/web/p/phototransistors/6548047/]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Drivers moteur Pololu (x1), GoTronic [http://www.gotronic.fr/art-commande-de-2-moteurs-tb6612fng-2x1a-21716.htm]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Drivers moteur TB6612FNG (x3), Mouser [http://www.mouser.fr/Search/ProductDetail.aspx?qs=rsevcuukUAy2UalRuv4E%2fQ%3d%3d] &amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Borniers à vis (x20), Farnell [http://fr.farnell.com/camdenboss/ctb0502-2/bornier-carte-a-fil-2-voies-12awg/dp/2493622?MER=en-me-sr-b-all]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Résistances 220 Ohms CMS (x20), Mouser [http://www.mouser.fr/ProductDetail/Vishay-Dale/CRCW0603220RFKEA/?qs=sGAEpiMZZMtlubZbdhIBIKySljYCMs0HAiopx1mcVY0%3d] &amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Résistances 470 kOhms CMS (x30), Mouser [http://www.mouser.fr/ProductDetail/Panasonic/ERJ-3GEYJ474V/?qs=sGAEpiMZZMtlubZbdhIBIDkNbKahCB4%252bXwMzav7V8qQ%3d]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;LEDs couleur (x10), RS [http://fr.rs-online.com/web/p/led/8134845/]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Fils m-m (x1 lot de 65), Farnell [http://fr.farnell.com/multicomp/mcbbj65/assortiment-de-jumper-fil-65pcs/dp/2396146]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Capas 10uF CMS (x20) Mouser [http://www.mouser.fr/ProductDetail/Murata-Electronics/ZRB18AR61C106ME01L/?qs=sGAEpiMZZMs0AnBnWHyRQPHsfd5klL7FP%2fi0oh%252bVTwkomqr6NYKsqQ%3d%3d]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Capas 0.1uF CMS (x20) Mouser [http://www.mouser.fr/ProductDetail/Kemet/C0603C104K4RACTU/?qs=sGAEpiMZZMs0AnBnWHyRQFqPnX0OlvcoGdtRY%252bgH1%2fs%3d]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Embases CI 40 contacts 1 rangée (x6) RS [http://fr.rs-online.com/web/p/embases-de-circuit-imprime/4232841/]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Connecteur HE14 MH100 (x10) [http://www.gotronic.fr/art-connecteur-he14-mh100-4457.htm]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Connecteur HE14 MH190 (x10) [http://www.gotronic.fr/art-connecteur-he14-mh190-4458.htm]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Capteurs Ultrasons SR04 (x3)&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Piles ou accumulateurs (x16 à 1.5V)&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Odomètres codeurs (x4) &amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Boutons poussoirs (x4) [http://www.gotronic.fr/art-bp-miniature-krs1273-16976.htm] &amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Interrupteurs (x4) &amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Colliers de serrage &amp;lt;/span&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| P27 [[IMA4 2016/2017 P27|Sonde atmosphérique]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Capteur de température DS75LV [http://www.mouser.fr/ProductDetail/Maxim-Integrated/DS75LVU+/?qs=sGAEpiMZZMucenltShoSnqz2Nq7rAtSUouPEUh693aE%3d]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Capteur de pression [http://www.mouser.fr/ProductDetail/Measurement-Specialties/5525DSO-SB005GS/?qs=sGAEpiMZZMvhQj7WZhFIAJ6e00q4%2fiLk8vQEbfsXmbvuJAmWYTr67w%3d%3d]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Module LoRa [http://www.mouser.fr/ProductDetail/Adafruit/3179/?qs=sGAEpiMZZMuC4zZxLL0ZTXmUcMwoRc9uEac7jsWPYbgAg4D4CJduaQ==]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Module GPS [http://www.mouser.fr/ProductDetail/Adafruit/3179/?qs=sGAEpiMZZMuC4zZxLL0ZTXmUcMwoRc9uEac7jsWPYbgAg4D4CJduaQ==]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;1 RaspberryPi&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Batterie 5000 mAh [http://fr.rs-online.com/web/p/batteries-externes/7757508/]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;1 carte microSD pour Raspberry 8GB.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P28 [[IMA4 2016/2017 P28|Adaptation d'un émulateur de calculatrices TI]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P29 [[IMA4 2016/2017 P29|Conteneurs pour site Web]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P30 [[IMA4 2016/2017 P30|Voiture radiocommandée controlée par gant]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Accéléromètre ADXL335 &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Arduino Nano &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; 2x Module XBee + 1x Shield &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Arduino UNO &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Xbee Adapter Board&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; Raspberry Pi&amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P31 [[IMA4 2016/2017 P31|Accueil personnalisé par drone]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Carte RaspberryPi (Au minimum modèle 2)&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Alimentation MicroUSB pour RaspberryPi&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Carte MicroSD 16Gb&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Dongle Bluetooth BLED112-V1[http://fr.rs-online.com/web/p/adaptateurs-bluetooth/8077742/]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Capteur de mesure Sharp GP2Y0A02YK x3 [http://www.gotronic.fr/art-capteur-de-mesure-sharp-gp2y0a02yk-11536.htm]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Appareil mobile sous OS Android (portable ou tablette )&amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;CAN 12 bits (ADS1015 12-bit ADC&amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P32 [[IMA4 2016/2017 P32|Sécurité: brouilleur d'ondes]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Récepteur LoRa 433/868Mhz&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Logiciel Code compiler équipé d'un GCC pour MSP430&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Carte cc430f5137 868MHz&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;1 antenne 868MHz[http://www.mouser.fr/ProductDetail/Linx-Technologies/ANT-868-CW-HWR-RPS/?qs=sGAEpiMZZMuBTKBKvsBmlOBg0H7cD5uyLmjn8%2f6ScJQ%3d]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Breadboard&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Quelques LEDs&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;pour 433MHz&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;(carte arduino + cc1101)&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Quartz 26MHz [http://fr.farnell.com/txc/7a-26-000maaj-t/crystal-26mhz-18pf-5-x-3-2mm/dp/2061710]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;2 antennes 433MHz[http://www.mouser.fr/ProductDetail/LPRS/ANT-SR433/?qs=sGAEpiMZZMuBTKBKvsBmlL2JeKAJ5GlFgePIl66EJDQoPGtUlcrRBQ%3d%3d]&amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P33 [[IMA4 2016/2017 P33|Sécurité: ingénierie inverse de protocole réseau]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; 3 modules LoRa 3179 Adafruit [http://www.mouser.fr/ProductDetail/Adafruit/3179/?qs=sGAEpiMZZMuC4zZxLL0ZTXmUcMwoRc9uEac7jsWPYbgAg4D4CJduaQ==],&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| P34 [[IMA4 2016/2017 P34|Interface Haptique, simulateur de formes et de textures]]&lt;br /&gt;
|&lt;br /&gt;
Aucun matériel nécessaire.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P37 [[IMA4 2016/2017 P37|Gamelle connectée]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Émetteur et récepteur infrarouge/photodiode (seulement 1 de chaque prêtées, il en faut 6 à 7 de chaque)&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Adaptateur PS512S  [http://www.gotronic.fr/art-adaptateur-ps512s-19913.htm] &amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Shield carte SD (carte SD également)&amp;lt;span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Module horloge temps réel (RTC) [http://www.gotronic.fr/art-module-horloge-temps-reel-ada3296-25536.htm]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Capteur de proximité IR [http://www.gotronic.fr/art-capteur-de-proximite-ir-38-khz-2460-21766.htm]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Capteur Ultrason &amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;LEDs &amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Résistances &amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Arduino méga &amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;ESP8266 &amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Servomoteur 360 &amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;Solution de secours : Rapsberry &amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;Solution de secours : Balance &amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P38 [[IMA4 2016/2017 P38|Veilleuse enfant connectée]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Raspberry pi modèle B minimum&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;batterie&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;circuit shut down(une breadboard, une LED, une resistance 220 ohms, 3 fils M/M, 2 fils M/F)&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;un interrupteur on/off Référence : 7547 Selectronic&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;bois de palette&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;dongle wi pi&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Rétroprojecteur&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;timer(circuit de retardement 5 secondes)&amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P39 [[IMA4 2016/2017 P39|Projecteur laser]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Deux lasers de différentes couleurs&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Une paire de galvanomètres à miroir&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Arduino&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Raspberry Pi3&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Câble secteur&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Drivers galvanomètres x2&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Alimentation laser&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Lunette de sécurité x2 [https://www.amazon.fr/Uvex-S1933X-Eyewear-SCTOrange-Anti-Fog/dp/B000USRG90/ref=sr_1_1?ie=UTF8&amp;amp;qid=1485441383&amp;amp;sr=8-1&amp;amp;keywords=uvex+s1933x]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Alimentation 230V/5V 1A [http://www.miniinthebox.com/fr/dual-usb-eu-prise-murale-5v-2a-voyage-adaptateur-chargeur-d-alimentation-pour-iphone7-6-xiaomi-samsung-et-autre-telephone-portable_p5410410.html?currency=EUR&amp;amp;litb_from=paid_adwords_shopping&amp;amp;sku=429_6917%7C752_20648&amp;amp;utm_source=google_shopping&amp;amp;utm_medium=cpc&amp;amp;adword_mt=&amp;amp;adword_ct=138705676724&amp;amp;adword_kw=&amp;amp;adword_pos=1o5&amp;amp;adword_pl=&amp;amp;adword_net=g&amp;amp;adword_tar=&amp;amp;adw_src_id=9653316068_661261352_33588296076_aud-79897721311:pla-256966386459&amp;amp;gclid=Cj0KEQiA_KvEBRCtzNil4-KR-LIBEiQAmgekFxxKjJJWBYCJlDZEa3Ke_2_WR0DzGVbz-jaCZHVIBoMaAvld8P8HAQ]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Boitier ABS [http://fr.farnell.com/multicomp/g3118/boitier-abs-240x120x60mm-ip65/dp/1526656]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;DAC 4 canaux, avec interface I²C [http://www.mouser.fr/ProductDetail/Adafruit/1083/?qs=sGAEpiMZZMsMyYRRhGMFNtB2KhoPg%2fPbP3CExTYfM4M%3d]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Connecteur C14 [http://fr.farnell.com/schurter/3-101-141/fiche-iec-c14-c18-avec-filtre/dp/2671668]&amp;lt;/span&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P44 [[IMA4 2016/2017 P44|3615 Facebook]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Un Minitel 1 Bistandard Alcatel Telic&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; un connecteur DIN 5 broches[http://www.selectronic.fr/din-cordon-male-5-broches-45.html]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; un Arduino Uno [http://www.selectronic.fr/carte-arduino-uno.html]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; un module Ethernet [http://www.selectronic.fr/shield-ethernet-v2.html]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P46 [[IMA4 2016/2017 P46|Aide anti-gaspillage alimentaire ]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Rfduino DIP board + USB shield, Mouser [http://eu.mouser.com/ProductDetail/RF-Digital-Wireless/RFD90101/?qs=sGAEpiMZZMsrChSOYEGTCSSoddgmKGJ7o1oPrqG%2fa%2fU%3d]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Rfduino Dual AAA shield, Mouser [http://eu.mouser.com/ProductDetail/RF-Digital-Wireless/RFD22126/?qs=sGAEpiMZZMsrChSOYEGTCTCnakKeCOV7XxQSzqVKQX4%3d]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Raspberry Pi&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Clef wifi&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;2 piles de 1,5V AAA &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;1 buzzer, Mouser [http://www.mouser.fr/ProductDetail/TDK/PS1240P02BT/?qs=sGAEpiMZZMtWZVZ%2fjgUYS49cTVUJP3OaWyx1fxdmA7I%3d] &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;1 accéléromètre, mouser [http://www.mouser.fr/ProductDetail/NXP-Freescale/MMA8653FCR1/?qs=sGAEpiMZZMs0JOhy9PM0USp5vOY2ClxOY1G2fK3tzYI%3d] &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;3 LEDs de couleurs différentes, 2 Mouser Rouge[http://www.mouser.fr/ProductDetail/Lumex/SSL-LX5093LBI-SRD/?qs=sGAEpiMZZMvHYEB9WUp7ElLqM0HAvqw07NtkT0umwJ8%3d], Mouser Vert [http://www.mouser.fr/ProductDetail/Dialight/521-9465F/?qs=sGAEpiMZZMvHYEB9WUp7EvzO6BrrarQchHylkK4n3ZA%3d], &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Smartphone sous Android&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Aimants, Farnell [http://fr.farnell.com/duratool/d01767/aimant-12-x-3mm-pqt6/dp/1888096]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;3 Résistances CMS 330 Ohms, Mouser [http://www.mouser.fr/ProductDetail/Vishay/CRCW1206330RFKEA/?qs=sGAEpiMZZMvdGkrng054t%252b8cnVAnHPZkGMXtw0W%2fcW8%3d] &amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;1 Transistor Bipolaire, Mouser [http://www.mouser.fr/ProductDetail/Fairchild-Semiconductor/MMBTH10/?qs=sGAEpiMZZMvDjfggS9kWsbCZIMjqR5oUPy4t%252bWqVHyk%3d] &amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P47 [[IMA4 2016/2017 P47|Modélisation d’un robot mobile]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Logiciel MatLab Simulink&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Logiciel RobotinoView&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Robotino&amp;lt;/span&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P48 [[IMA4 2016/2017 P48|Surveillance d'un robot mobile]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Logiciel MatLab Simulink&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Logiciel RobotinoView&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Robotino&amp;lt;/span&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P3 [[IMA4 2016/2017 P3|Capteurs enfuis pour vieillissement du béton]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;2 x Feather M0 LoRa 433MHz&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;1 x Batterie DC5V LogiLink&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;2 x Capteurs de choc PKGS-00GXP1-R [http://fr.farnell.com/murata/pkgs-00gxp1-r/capteur-de-choc-piezoelec-0-35pc/dp/2707454] &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;3 x Capteurs d'humidité/température SHT11 [http://fr.farnell.com/sensirion/sht11/capteur-humidite-temp-v4/dp/1590511] &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;3 x Accéléromètres FXLS8471QR1 [http://fr.farnell.com/nxp/fxls8471qr1/accelerometre/dp/2377753] &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;1 x Connecteur femelle 16 broches [http://fr.farnell.com/3m/929974-01-16/connect-femelle-16-voies-1-rang/dp/2672440]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;5 x Condensateurs 100nF  [http://fr.farnell.com/multicomp/mc0603b104k500ct/condensateur-mlcc-x7r-100nf-50v/dp/1759122]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;2 x Condensateurs 4.7nF  [http://fr.farnell.com/walsin/0603x475k6r3ct/condensateur-mlcc-x5r-4-7uf-6/dp/2496930]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;3 x Résistances 10kΩ [http://fr.farnell.com/multicomp/mc0063w0603110k/res-couche-epaisse-10k-1-0-063w/dp/9330399RL]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=41668</id>
		<title>IMA4 2016/2017 P46 : Aide anti-gaspillage alimentaire</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=41668"/>
				<updated>2017-05-03T15:42:53Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : /* Fichiers Rendus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
En France, nous jetons en moyenne 21% des aliments que nous achetons, ce qui représente une perte de 100 à 160 euros par an par habitant. Cela est en partie dû à la date limite de consommation associée à chaque produit. En effet, à partir du moment où cette date sera dépassée le consommateur jettera les produits concernés sans réfléchir, même si ceux-ci peuvent parfois être encore mangeables. Plutôt que d'essayer de les convaincre du contraire, il serait judicieux de proposer aux adeptes du gaspillage une aide permettant de gérer tous les aliments dont ils disposent chez eux afin d'éviter la surprise de tomber sur plusieurs produits périmés lorsqu'ils ouvrent la porte de leur frigo. &lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Ce projet permet d'aider les utilisateurs d'une part à mémoriser les denrées périssables qu'ils disposent dans leur réserve alimentaire et d'autre part d'avertir l'utilisateur qu'un événement important a lieu. Ceci peut être une notification qu'un aliment va bientôt dépasser sa date de péremption, que la porte du frigidaire est restée ouverte ou encore que le nombre d'aliments dans la réserve devient critique et qu'il faudra de nouveau l'alimenter. Enfin, le système aidera l'utilisateur à trouver des idées de repas pouvant permettre de consommer les aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Notre prototype permettra d'éviter le gaspillage alimentaire ainsi que d'aider l'utilisateur dans sa gestion du stockage d'aliments.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
&lt;br /&gt;
Notre système sera composé de 3 éléments. &lt;br /&gt;
&lt;br /&gt;
Premièrement, un ou des smartphones appartenant aux utilisateurs. Ces derniers permettront de scanner grâce à son appareil photo, le code barre du produit ainsi que sa date de péremption. Il servira aussi d'interface utilisateur pour notre système. En effet, c'est par cet outil que l'utilisateur pourra lister tous les aliments que l'utilisateur a dans sa base et tout ça en les triant par date de péremption, ou encore voir les recettes possibles pour consommer des aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Deuxièmement, un serveur, de type Raspberry, qui permettra de stocker la base de donnée contenant les aliments de la réserve. Ce serveur sera connecté par wifi.&lt;br /&gt;
 &lt;br /&gt;
Troisièmement, un contrôleur (Rfduino) qui comportera une LED pour indiquer la mise sous tension du contrôleur, une LED pour prévenir l'utilisateur qu'un aliment va bientôt passer sa date de péremption et une dernière LED pour prévenir l'utilisateur que son niveau de réserve est critique ainsi qu'un buzzer et un accéléromètre pour buzzer quand la porte du frigo est restée trop longtemps ouverte. Ce dernier sera fixé au frigo par l'intermédiaire d'un dispositif adapté qui sera un système aimanté qui se pose sur le frigo.&lt;br /&gt;
&lt;br /&gt;
Nous implémenterons donc une application mobile Android qui fera le lien entre les 2 autres systèmes.&lt;br /&gt;
&lt;br /&gt;
Pour la partie électronique que nous aurons à réaliser, nous utiliserons une Breadboard pour faire des premiers tests puis nous créerons une carte PCB pour notre montage final.&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
On utilisera une Raspberry Pi en guise de serveur pour pouvoir s'occuper du stockage de toutes les données dans notre projet puisque notre contrôleur sera incapable de les contenir, ce n'est d'ailleurs pas son but ici.&lt;br /&gt;
&lt;br /&gt;
Notre smartphone fera donc le lien entre notre base de données et notre système embarqué par l'intermédiaire de l'application mobile.&lt;br /&gt;
&lt;br /&gt;
Nous prendrons ici un RFduino puisque celui-ci nous permet d'ajouter des modules comme bon nous semble afin d'adapter le système aux besoins de notre application. Il est également parfaitement compatible avec les applications Android. De plus, nous avons un Bluetooth directement intégré au RFduino pour s'assurer que les liaisons RFduino-application mobile se fassent correctement. &lt;br /&gt;
On notera également que ce contrôleur consomme peu de courant et ne demande qu'une faible tension d'alimentation, critères importants pour ce genre de projet. C'est la raison principale de son utilisation pour être utilisé comme interface physique sur le frigo, en ajoutant également sa taille réduite comparée à la Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
&lt;br /&gt;
Nous avons donc besoin du matériel suivant :&lt;br /&gt;
&lt;br /&gt;
*Raspberry Pi.&lt;br /&gt;
*Clef wifi&lt;br /&gt;
*RFduino (RFD22102 DIP Board, RFD22121 USB Shield, RFD22126 Dual AAA battery shield).&lt;br /&gt;
*2 piles AAA.&lt;br /&gt;
*3 leds tranversantes.&lt;br /&gt;
*3 Résistances 330 Ohm.&lt;br /&gt;
*1 Résistance 10 kOhm.&lt;br /&gt;
*Un buzzer.&lt;br /&gt;
*Accéléromètre.&lt;br /&gt;
*Aimants&lt;br /&gt;
*Un boîtier permettant d'intégrer la RFduino + fixation sur le frigo (modélisation à voir).&lt;br /&gt;
&lt;br /&gt;
Pour le buzzer, l'accéléromètre et les résistances, nous choisirons des composants CMS pour nous permettre d'avoir une carte plus petite.&lt;br /&gt;
&lt;br /&gt;
===Calendrier prévisionnel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Liste des tâches à effectuer====&lt;br /&gt;
&lt;br /&gt;
* Configurer la Raspberry :&lt;br /&gt;
** Installer et configurer le serveur.&lt;br /&gt;
** Créer le diagramme UML de notre future base de données.&lt;br /&gt;
** Créer la base sur le serveur.&lt;br /&gt;
** Configurer la connexion WiFi.&lt;br /&gt;
&lt;br /&gt;
* Monter et programmer la RFduino :&lt;br /&gt;
** Connecter les différents modules au RFduino (accéléromètre, LEDs, buzzer, Batterie, module Bluetooth).&lt;br /&gt;
** Récupérer les consignes du smartphone grâce au Bluetooth.&lt;br /&gt;
** Programmer le comportement du RFduino en fonction des consignes.&lt;br /&gt;
** Construire le boitier final.&lt;br /&gt;
&lt;br /&gt;
* Implémenter l'application mobile Android :&lt;br /&gt;
** Une première activité permettant de se connecter au RFduino et à la Raspberry.&lt;br /&gt;
** Scanner une date et un code barre.&lt;br /&gt;
** Ajout/suppression d'un aliment dans la base de donnée.&lt;br /&gt;
** Envoi d'une consigne au RFduino.&lt;br /&gt;
** Rendre l'interface utilisateur ergonomique (lister aliments, envoyer vers page de recettes avec l'utilisation des aliments bientôt périmés...).&lt;br /&gt;
&lt;br /&gt;
====Calendrier====&lt;br /&gt;
&lt;br /&gt;
Répartition du temps consacré au projet (120h *2) :&lt;br /&gt;
&lt;br /&gt;
*Partie Raspberry : 60h&lt;br /&gt;
*Partie RFduino : 60h&lt;br /&gt;
*Partie développement mobile : 120h&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
&lt;br /&gt;
===Feuille d'heures===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 !  !! Lundi 16-18h !! Mercredi 14-18h !! Jeudi 8-10h&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 1&lt;br /&gt;
&lt;br /&gt;
 | '''23/01''' :  &lt;br /&gt;
* Installation du logiciel Android Studio pour être prêt à commencer l'application mobile.&lt;br /&gt;
* Création du Repository Git sur GitHub : https://github.com/FrancoisLefevre12/Optali.git&lt;br /&gt;
* Réalisation de différents schémas fonctionnels pour se donner une idée du travail à effectuer, aussi bien du software que du hardware.&lt;br /&gt;
* Quelques précisions supplémentaires apportées sur le cahier des charges.&lt;br /&gt;
* Ajout de liens de référence pour la liste de matériel à acheter.&lt;br /&gt;
&lt;br /&gt;
 | '''25/01''' :  &lt;br /&gt;
* Précision des composants requis (accéléromètre, buzzer, LEDs, résistances).&lt;br /&gt;
* Écriture du montage à la main.&lt;br /&gt;
* Étude du fonctionnement de l'accéléromètre, du buzzer.&lt;br /&gt;
* Écriture de la structure de l'application à la main.&lt;br /&gt;
&lt;br /&gt;
 | '''26/01''' :&lt;br /&gt;
*Réalisation graphique de la première page de l'application.&lt;br /&gt;
*Conception du schéma électrique pour tous les composants connectés au RFduino.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 2&lt;br /&gt;
&lt;br /&gt;
 | '''30/01''' :&lt;br /&gt;
*Réalisation du diagramme UML de la base de données qui sera stockée sur la Raspberry Pi&lt;br /&gt;
*Installation de l'outil de développement mobile sur le second PC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 | '''01/02''' :&lt;br /&gt;
*Nous nous sommes d'abord rendus compte que la résistance entre un des GPIO et l'accéléromètre était inutile, nos premiers calculs étaient erronés. Nous ne la garderons donc pas sur notre schéma électrique final.&lt;br /&gt;
*Avancement sur la partie application mobile : réalisation de la page &amp;quot;Ajout&amp;quot; sur laquelle nous tomberons après avoir cliquer sur &amp;quot;ajout&amp;quot; sur la page principale de l'application. Nous avons étendu l'activité principale jusqu'à cette nouvelle activité &amp;quot;Ajout&amp;quot;.&lt;br /&gt;
*Nous avons récupéré notre Raspberry Pi pour commencer à installer notre base de données dessus. Nous avons actuellement quelques problèmes pour nous connecter sur la Raspberry. Nous travaillons sur ce point.&lt;br /&gt;
&lt;br /&gt;
 | '''02/02''' :&lt;br /&gt;
* Application mobile : Mise en place des LEDs sur la home page et de la zone de notification avec les messages associés.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 3&lt;br /&gt;
&lt;br /&gt;
 | '''06/02''' :&lt;br /&gt;
*Nous arrivons à accéder à la Raspberry via le port série de celle-ci. Nous avons également configuré sa connexion Ethernet afin de pouvoir télécharger des paquets dessus et installer notre base de données. &lt;br /&gt;
*Nous rencontrions des problèmes sur le second PC de travail pour récupérer le projet Optali sur Android Studio via notre dépôt GIT. Nous avons pu rectifier ce souci.&lt;br /&gt;
&lt;br /&gt;
 | '''08/02''' :&lt;br /&gt;
*Tentative d'établissement d'un point d'accès WiFi sur notre Raspberry. Nous n'avons pas réussi pour le moment.&lt;br /&gt;
*Restructuration du Repository git.&lt;br /&gt;
*Essai d'importation de la librairie Zxing qui permettra de décoder les code-barres.&lt;br /&gt;
 |&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 4&lt;br /&gt;
&lt;br /&gt;
 | '''13/02'''&lt;br /&gt;
*Configuration du wifi de la Raspberry. &lt;br /&gt;
*Étude d'une mise en place d'un service web via php.&lt;br /&gt;
&lt;br /&gt;
 | '''15/02'''&lt;br /&gt;
*Mise en place d'un lecteur de caractère sur l'application. On utilisera tesseract.&lt;br /&gt;
*Début de la création du PCB via Altium designer. Création d'une librairie pour l'accéléromètre qui est un composant CMS assez spécial. On pourra cependant utiliser des headers classiques pour le buzzer et les LEDs puisque ce sont des composants traversants.&lt;br /&gt;
*Création des premiers fichiers php de connection à la base de donnée et d'insertion d'aliments. Tous ces fichiers seront déposés de la même manière sur le dépôt git.&lt;br /&gt;
&lt;br /&gt;
 | '''16/02'''&lt;br /&gt;
*Adaptation avec prise en compte des cas du code php d'insertion de produits par requête sur la base de donnée.&lt;br /&gt;
*Ajout du code d'implantation de la base de donnée.&lt;br /&gt;
*Altium: Accéléromètre terminé, mise en place des résistances.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 5 (interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''22/02 (3 heures)'''&lt;br /&gt;
*Installation de l'OS de la raspberry.&lt;br /&gt;
*Installation d'Openssh-server, apache2, php5, iptables, mysql-server, php5-mysql.&lt;br /&gt;
*Redirection des ports du routeur vers la raspberry.&lt;br /&gt;
*Configuration de iptables de la raspberry.&lt;br /&gt;
&lt;br /&gt;
 | '''23/02 (2 heures)'''&lt;br /&gt;
*Implantation de la base de donnée sur la raspberry pi.&lt;br /&gt;
|&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 6&lt;br /&gt;
 | '''27/02'''&lt;br /&gt;
*Vérification de la syntaxe de l'insertion de valeurs dans la base de donnée.&lt;br /&gt;
*Création des premières requêtes sur la base de donnée.&lt;br /&gt;
*Finalisation du PCB de l'Optali Board.&lt;br /&gt;
&lt;br /&gt;
 | '''01/03'''&lt;br /&gt;
*Étude et ajout de la librairie volley pour communiquer avec le serveur.&lt;br /&gt;
*Implantation de la fonction d'envoi de données jusqu'au serveur.&lt;br /&gt;
*Après avoir vu avec un professeur, nous avons remarqué que le routage n'était pas adéquat et la disposition des composants n'était pas optimal. Du travail reste donc encore à effectuer.&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 7&lt;br /&gt;
 | '''06/03'''&lt;br /&gt;
*Correction du fichier post.php&lt;br /&gt;
*Finition du protocole d'ajout d'aliment sur la base de donnée. (Code php et page ajout terminée).&lt;br /&gt;
*PCB terminé.&lt;br /&gt;
*Installation d'arduino IDE, doc arduino collecté.&lt;br /&gt;
&lt;br /&gt;
 | '''08/03'''&lt;br /&gt;
*Implémentation de la page ListeIngredient.xml et de l'activité listActivity.java.&lt;br /&gt;
*Documentation sur la procédure de communication bluetooth entre la Rfduino et l'application mobile.&lt;br /&gt;
*Obtention de librairie en lien avec cela.&lt;br /&gt;
*Prise en main de programmation rfduino.&lt;br /&gt;
&lt;br /&gt;
 | '''09/03'''&lt;br /&gt;
*Nous nous sommes rendus compte qu'il était nécessaire de rajouter un bouton poussoir sur notre montage afin de permettre la réinitialisation de notre RFDuino si nécessaire. Nous devons également faire en sorte de pouvoir poser notre carte PCB directement sur notre RFDuino en utilisant des broches. Nous devons donc rajouter ces éléments-ci.&lt;br /&gt;
*Ecriture de la page get.php&lt;br /&gt;
*Premiers tests sur la ListView de l'activité ListActivity.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 8&lt;br /&gt;
 | '''13/03'''&lt;br /&gt;
*Recherche de pistes concernant la programmation RFDuino. Nous pouvons la détecter en bluetooth via un smartphone Android.&lt;br /&gt;
*Finition du Tablelayout et du code java associé sur la page ListActivity.&lt;br /&gt;
&lt;br /&gt;
 | '''15/03'''&lt;br /&gt;
*Ajout de la JsonArrayRequest dans la page ListActivity.&lt;br /&gt;
*Nous nous sommes rendus compte au moment de programmer la liaison I2C de l'accéléromètre avec la RFDuino que nous avions oublié de mettre des résistances pull-up entre l'alimentation du composant et les broches SDA et SCL. Les modifications ont donc été faites puis nous avons envoyé finalement notre PCB à la fabrication.&lt;br /&gt;
&lt;br /&gt;
 | '''16/03'''&lt;br /&gt;
*Changement de stratégie au niveau de la requête JsonArrayRequest. On récupère toute la base et ensuite le traitement sera effectuer dans l'application mobile.&lt;br /&gt;
*Rédaction de la partie Altium du wiki.&lt;br /&gt;
*Recherche de docs sur le système bluetooth du RFduino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 9&lt;br /&gt;
 | '''20/03'''&lt;br /&gt;
*Réalisation de différents réglages pour pouvoir utiliser l'application Optali sur l'Android phone fourni par notre professeur (LG G4c)&lt;br /&gt;
*Recherche de docs concernant la partie java responsable de la communication Bluetooth.&lt;br /&gt;
*Reprise de la solution Tesseract pour la lecture de caractères.&lt;br /&gt;
&lt;br /&gt;
 | '''21/03''' (séance supplémentaire de 3 heures)&lt;br /&gt;
*Début du développement de la partie communication entre RFDuino et l'appli mobile. Nous pouvons détecter le RFduino à partir de Android Studio mais nous n'arrivons pas encore à nous connecter dessus directement.&lt;br /&gt;
*Finition de la fonctionnalité tesseract. La lecture de caractères est donc maintenant possible.&lt;br /&gt;
&lt;br /&gt;
 | '''22/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity&lt;br /&gt;
*Connexion possible entre le RFduino et notre appli mobile. Il faut maintenant pouvoir assurer un échange de données via du GATT.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 10&lt;br /&gt;
 | '''27/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity (suite). Utilisation de la solution postman.&lt;br /&gt;
*Mise à jour du wiki pour la partie Altium.&lt;br /&gt;
*Gestion du dépôt git.&lt;br /&gt;
*Récupération de la carte PCB au service EEI.&lt;br /&gt;
&lt;br /&gt;
 | '''29/03'''&lt;br /&gt;
*Mise en place du tri des Produits avec un critère d'ordonnabilité variable&lt;br /&gt;
*Implémentation du champs recherche et action sur la liste&lt;br /&gt;
*Écriture des pages Php consume.php et delete.php pour décrémenter le nombre d'aliment dans le frigo ou le supprimer&lt;br /&gt;
*Récupération des composants&lt;br /&gt;
*Passage au four pour souder les premiers composants en CMS&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 11&lt;br /&gt;
&lt;br /&gt;
 | '''03/04'''&lt;br /&gt;
*Dé-soudage et resoudage de l'accéléromètre.&lt;br /&gt;
*Soudure des composants&lt;br /&gt;
&lt;br /&gt;
 | '''05/04'''&lt;br /&gt;
*Test du Buzzer&lt;br /&gt;
*Code de l'accéléromètre&lt;br /&gt;
*Création de l'Optali box (la boite qui contient le RFduino fixé au frigo)&lt;br /&gt;
*Finition de la fonction 'delete'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 | '''06/04'''&lt;br /&gt;
*Problème pour faire fonctionner le code de l'accéléro. Il faudra le tester électriquement.&lt;br /&gt;
*Implantation du logo de l'appli &lt;br /&gt;
*Debuggage d'une requête de la page 'list'&lt;br /&gt;
*Documentation sur les listes déroulantes sous les EditTexts.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 12 (Interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''11/04''' (3 heures)&lt;br /&gt;
*Après avoir remarqué que le code de l'accéléro ne fonctionnait pas alors qu'il paraît correct, nous avons décidez de vérifier les propriétés électriques de notre montage.&lt;br /&gt;
En observant à l'analyseur logique, il semblerait que l'horloge de la liaison i2C n'est en fait qu'un signal bruité. Il faudra donc retenter de souder le composant quand cela sera possible.&lt;br /&gt;
&lt;br /&gt;
 | '''13/04''' (6 heures)&lt;br /&gt;
*Terminaison du programme RFduino qui fonctionne théoriquement, nous attendons de terminer les dernières soudures pour pouvoir le tester physiquement.&lt;br /&gt;
*En attendant de pouvoir réaliser des soudures, nous avons repris la partie communication bluetooth entre le RFduino et l'appli. Après avoir tenté d'utiliser un programme permettant de gérer le protocole GATT sans savoir envoyer ou recevoir de données, nous nous sommes orientés sur une communication plus basique basée sur de nombreux exemples que l'on peut voir sur le web.&lt;br /&gt;
&lt;br /&gt;
 | '''15/04''' (6 heures)&lt;br /&gt;
*Après s'être rendu compte que la communication plus &amp;quot;basique&amp;quot; que nous voulions utiliser n'était pas compatible avec le BLE, nous sommes une fois de plus repartis de zéro pour cette partie.&lt;br /&gt;
*Après quelques recherches, nous avons trouvé un programme réalisant la gestion d'un socket BLE sur le principe du protocole GATT. Grâce à celui-ci, il nous est possible de recevoir et d'envoyer des données via BLE sur RFduino ainsi que sur l'appli mobile.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 13 (Interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''17/04 (4 heures)'''&lt;br /&gt;
*Ajout du singleton Etat pour partager l'état des aliments dans la réserve alimentaire&lt;br /&gt;
*Transfert des requêtes de la base de donnée vers le singleton pour optimiser l'actualisation et le partage des données.&lt;br /&gt;
*Actualisation automatique des données sur la page principale.&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Semaine 14&lt;br /&gt;
| '''24/04'''&lt;br /&gt;
*Modification de la présentation du wiki&lt;br /&gt;
*Modification de la fonctionnalité du bouton actualiser en changement d'activité&lt;br /&gt;
&lt;br /&gt;
| '''26/04'''&lt;br /&gt;
*Ajout de la page liste recette&lt;br /&gt;
&lt;br /&gt;
| '''27/04''' (3 heures)&lt;br /&gt;
*Ajout des listes recettes dans ListeRecette&lt;br /&gt;
*Ajout des requêtes des recettes sur ListeRecette.java&lt;br /&gt;
*Création du fichier listeRecette.php sur le serveur pour faire la requête SQL et envoyer sur l'application.&lt;br /&gt;
*Soudure des derniers composants pour terminer le PCB. Tout est soudé sauf le bouton poussoir qui devait permettre un reset du RFduino. En cherchant d'ailleurs à souder ce bouton, nous avons retiré malencontreusement la piste de cuivre permettant de répartir le 3.3V du RFduino sur notre PCB. Notre accéléromètre qui ne marchait déjà pas vraiment n'est plus alimenté. Nous ferons sans notre accéléromètre pour le rendu final. &lt;br /&gt;
|-&lt;br /&gt;
|Semaine 15&lt;br /&gt;
|&lt;br /&gt;
|'''03/05'''&lt;br /&gt;
*Remplacement de la LED &amp;quot;LED_Perim&amp;quot; qui était défaillante et ne s'allumait pas quand il le fallait.&lt;br /&gt;
*Début de la réalisation du rapport de projet.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Semaine 16&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===Premières idées===&lt;br /&gt;
&lt;br /&gt;
Voici les premières idées de l'application mobile et du composant fixé sur le frigo.&lt;br /&gt;
[[Fichier:Optali_v1.jpg|400px|thumb|left|Optali version 1]]&lt;br /&gt;
[[Fichier:OptaliBox_v1.jpg|400px|thumb|center|OptaliBox version 1]]&lt;br /&gt;
[[Fichier:P46_schema.jpg|400px|thumb|center|Schéma électrique version 1]]&lt;br /&gt;
&lt;br /&gt;
En s'intéressant aux différentes datasheets ou données constructeur des composants que nous voulons utiliser, nous trouvons indispensable d'utiliser des résistances de 330 Ohms pour l'utilisation des LEDs, pour éviter de les griller.&lt;br /&gt;
&lt;br /&gt;
Edit : Retrait de la résistance R2.&lt;br /&gt;
&lt;br /&gt;
Concernant l'accéléromètre, nous avons choisi un modèle qui nous permet de brancher directement ce module sur une broche du RFDuino. On branchera directement les GPIOs de la RFduino sur les ports SDA et SCL de l'accéléromètre qui correspondent à l'interface I2C pour pouvoir communiquer. On utilisera aussi la broche INT1 pour pouvoir générer des interruptions directement depuis l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
On connectera le buzzer directement à une broche de la RFduino aussi. Concernant celui-ci il reste une incertitude puisqu'on ne trouve aucune information sur le courant à fournir pour l'alimentation de ce composant sur sa datasheet. Après différentes recherches sur Internet, il pourrait être nécessaire d'utiliser un montage amplificateur à transistor comme un émetteur commun pour booster le courant en sortie d'une broche GPIO. Quelques buzzers trouvés avec des données constructeur montrent que ce type de composant nécessite généralement un courant d'environ 30 mA. Nous verrons dans la pratique si cela sera vraiment nécessaire. Par sécurité, on ajoutera un transistor bipolaire dans la liste de matériel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:screen_LED.png|400px|thumb|left|Données constructeur pour LEDs]]&lt;br /&gt;
[[Fichier:screen_accel.png|400px|thumb|center|Datasheet de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
====Configuration école====&lt;br /&gt;
&lt;br /&gt;
*Pour configurer notre Raspberry Pi, nous utilisons son port série et &amp;quot;minicom&amp;quot;. Pour pouvoir télécharger des paquets, il fallait la connecter au réseau. Nous lui avons donc affecté une adresse IP fixe avec le fichier /etc/network/interfaces. Voici les modifications qui ont été apportées : &lt;br /&gt;
&lt;br /&gt;
   auto eth0&lt;br /&gt;
   iface eth0 inet static&lt;br /&gt;
   address 172.26.78.15&lt;br /&gt;
   netmask 255.255.240.0&lt;br /&gt;
   gateway 172.26.79.254&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il a également fallu ajouter la commande &amp;quot;export http_proxy=http://proxy.polytech-lille.fr:3128&amp;quot; (il faudra effectuer cette commande à chaque démarrage de la Pi) pour pouvoir utiliser le proxy de l'école. &lt;br /&gt;
Nous avons de plus modifier le fichier /etc/resolv.conf avec la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
   nameserver 193.48.57.34&lt;br /&gt;
&lt;br /&gt;
Malgré cela, nous avions des soucis pour nous connecter au réseau. Il y avait en fait un processus dhcp en tâche de fond qui nous empêchait de garder le contenu de resolv.conf. Il a donc fallu trouver ce processus pour le &amp;quot;kill&amp;quot; et pouvoir accéder correctement au réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons du coup pu installer postgresql pour pouvoir configurer une base de données sur notre Pi.&lt;br /&gt;
&lt;br /&gt;
====Configuration à domicile====&lt;br /&gt;
&lt;br /&gt;
Pour nous mettre dans une situation plus fidèle à notre projet, nous avons configuré la raspberry à domicile.&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abords installé Raspbian, puis installé les paquets nécessaire au fonctionnement du serveur.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Openssh-server''': permettre d'accès à distance à la raspberry pour pouvoir y accéder depuis l'école.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Iptables''': pour sécuriser les ports non utilisé et libérer l'accès aux ports qui nous intéressent (ssh 22,http 80,https 443).&amp;lt;br&amp;gt;&lt;br /&gt;
- '''apache2, php5, mysql-server''' : pour mettre en place notre service web.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons rediriger les ports 80 et 22 du routeur pour pouvoir accéder à la raspberry de l'extérieur.&lt;br /&gt;
&lt;br /&gt;
Pour finir, nous avons créer un fichier de config iptables permettant de sécuriser un minimum la base de donnée et de permettre d'autoriser la communication des ports 22, 80 et 443 correspondants aux ports ssh, http et https. le fichier de configuration a été déposé dans le dépôt git. Il nous a fallut le rendre exécutable via un chmod. Puis pour l'exécuter à chaque démarrage du system, dans le fichier /etc/init.d/ taper : &lt;br /&gt;
&lt;br /&gt;
    sudo update-rc.d firewall defaults (si notrefichier s'appelle firewall et s'il est dans init.d)&lt;br /&gt;
&lt;br /&gt;
===Base de donnée===&lt;br /&gt;
&lt;br /&gt;
Nos données alimentaires disponibles par toute la famille doivent être stocké sur un serveur de base de donnée externe (tel une Raspberry pi). Nous nous proposons de créer le diagramme UML représentant cette future base de donnée.&lt;br /&gt;
[[Fichier:Optali_UML.jpg|700px|thumb|center|Diagramme UML base de donnée]]&lt;br /&gt;
&lt;br /&gt;
On créera donc 3 entités. Date, Product et Recipe. &lt;br /&gt;
&lt;br /&gt;
- Product rassemble les aliments qui sont ou ont été dans la réserve alimentaire. NbProdIn permet de connaître le nombre de produits identiques (possibilité de date différentes mais pas de doublons et on garde l'information de quantité. NbProdBought donne une information sur le nombre de produits identique ayant été acheté depuis la mise en service de la base de donnée. Ainsi nous pourrons par la suite proposer une liste de course à l'utilisateur en fonction de la fréquence d'achat des produits.&lt;br /&gt;
&lt;br /&gt;
- Recipe contient les recettes que pourra rentrer l'utilisateur sur l'application. L'utilisateur pourra ainsi se voir proposer des recettes en fonction de ce qu'il a dans son frigo et de ses recettes personnelles.&lt;br /&gt;
&lt;br /&gt;
'''''Edit : On ajoutera une valeur entière dans les tables Date et Unity pour gérer le cas où il existe plusieurs produits (différents ou identiques) avec une date de péremption équivalente. On les appellera NbDate la valeur dans la table Date et NbUnity dans la table Unity. On leur ajoutera de même une clef primaire IdUnity et IdListProduct'''''&lt;br /&gt;
&lt;br /&gt;
On utilisera MySql pour la gestion de nos bases de données. &lt;br /&gt;
La syntaxe pour l'implanter dans la base de donnée à été jointe au dépôt git.&lt;br /&gt;
&lt;br /&gt;
Pour lancer my SQL, on tapera:&lt;br /&gt;
&lt;br /&gt;
   mysql -h localhost -u root -p&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Web service===&lt;br /&gt;
&lt;br /&gt;
====Page init.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet d'initier l'accès à la base de donnée sur le serveur. Elle est requise pour les pages qui suivent.&lt;br /&gt;
&lt;br /&gt;
====Page post.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet l'insertion d'un produit et d'une date via l'application mobile. Elle prend donc ces deux arguments et les insère dans les tables Unity, Product et Date.&lt;br /&gt;
&lt;br /&gt;
====Page get.php====&lt;br /&gt;
&lt;br /&gt;
Page qui envoie la liste des aliments avec leur nom, leur date, leur quantité dans le frigo, la quantité d'exemplaires acheté en tout depuis la mise en place de l'appareil. Le tri se fera directement dans l'application mobile. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Application Mobile===&lt;br /&gt;
&lt;br /&gt;
====Home page====&lt;br /&gt;
&lt;br /&gt;
Page d'accueil permettant d'accéder aux pages d'ajout et de liste des produits disponibles. &amp;lt;br&amp;gt;&lt;br /&gt;
La page permet aussi d'effectuer la connexion entre la rfduino et l'application mobile. Elle montre les alertes (signaux) à l'utilisateur &lt;br /&gt;
et écrit leur signification.&lt;br /&gt;
&lt;br /&gt;
====Page d'ajout====&lt;br /&gt;
&lt;br /&gt;
Pour ajouter un produit et lire une date on utilisera un champ editText pour permettre à l'utilisateur d'écrire &amp;quot;Manuellement&amp;quot; dedans grâce au clavier du smartphone.&amp;lt;br&amp;gt;&lt;br /&gt;
De plus on utilise un bouton qui appellera la caméra pour détecter les caractères d'un produit ou d'une date. Au début nous voulions utiliser un détecteur de code barre, nous l'avons implémenté mais nous avons remarqué que la mise au point sur une surface non plane prend du temps d'autant plus qu'il faut questionner une base de donnée contenant tous les numéro de codes barres utilisés. Nous avons donc prit la décision d'utiliser uniquement la lecture de caractère et nous créerons une liste déroulante sous l'editText pour faciliter l'insertion d'un produit qui a déjà été ajouté. Pour la lecture de caractère, nous utilisons la librairie tesseract.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'envoi, nous utilisons la librairie Volley développé par google.&lt;br /&gt;
&lt;br /&gt;
====Page Liste====&lt;br /&gt;
&lt;br /&gt;
Permet de lister les produits dans la base de donnée. Une série de boutons radio permettent de trier les produits par ordre alphabétique, par date de péremption, par nombre d’occurrence dans la réserve alimentaire, par nombre d'achat depuis la mise en place du système.&amp;lt;br&amp;gt;&lt;br /&gt;
Une colonne permet de sélectionner les aliments désirés (par checkBox) pour ensuite les supprimer via un button &amp;quot;suppr&amp;quot; ou les choisir pour trouver des recettes qui les utilisent.&amp;lt;br&amp;gt;&lt;br /&gt;
Un EditText permet d'effectuer une recherche sur la base de donnée.&lt;br /&gt;
&lt;br /&gt;
===Altium Designer===&lt;br /&gt;
&lt;br /&gt;
Pour permettre au RFDuino de communiquer avec les différents composants, nous aurons besoin de quelques composants électroniques. Afin que cela soit plus esthétique pour la modélisation finale, nous allons créer une carte PCB pour rassembler tous ces composants dessus. On utilisera le logiciel Altium Designer pour cela.&lt;br /&gt;
&lt;br /&gt;
Avant de représenter notre circuit général, nous allons commencer par créer une librairie rassemblant tous les composants que nous utiliserons par la suite, en particulier nos composants CMS (accéléromètre et résistances). Pour ce qui est des LEDs et du buzzer, qui sont traversants, nous pourrons utiliser des headers classiques.&lt;br /&gt;
&lt;br /&gt;
Il a donc fallu créer le schematic ainsi que l'empreinte de nos composants CMS. Voici un exemple avec notre accéléromètre :&lt;br /&gt;
[[Fichier:Accelerosch.PNG|500px|thumb|left|Schematic de l'accéléromètre]]&lt;br /&gt;
[[Fichier:Acceleropcb.PNG|500px|thumb|center|Empreinte PCB de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les fichiers Altium sont disponibles sur notre dépôt GIT. Après cela, nous pouvons maintenant construire notre schematic du montage entier et ensuite le fichier PCB afin de pouvoir graver notre circuit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après quelques modifications sur le montage prévu initialement, c'est-à-dire en enlevant une résistance entre un GPIO et l'alimentation de l'accéléromètre ainsi qu'en rajoutant des résistances pull-up sur les broches de notre liaison i2C (SDA et SCL) et un bouton poussoir en plus pour permettre un reset du RFDuino, nous avons pu créer notre schematic global pour en faire un PCB et l'exporter au format Gerber. De ce fait, le service EEI de Polytech pourra réaliser la gravure de notre carte PCB.&lt;br /&gt;
&lt;br /&gt;
Voici quelques photos pour illustrer notre projet sur Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Finalproto_sch.PNG|400px|thumb|left|Schematic du montage final]]&lt;br /&gt;
[[Fichier:Finalproto_pcb.PNG|400px|thumb|center|PCB du montage final]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On retrouve sur notre PCB final les headers, respectivement de 8 et 5 pins, de part et d'autre de la carte, qui représentent le RFDuino, où nous souderons des broches pour qu'elles puissent être intégrées au RFDuino. On note la présence de 5 autres headers de 2 pins, dont 3 pour des LEDs puis les 2 autres pour le buzzer et le bouton poussoir. Ce qui reste sont les composants CMS avec plusieurs composants à 2 pattes qui sont toutes les résistances de notre montage, celles de protection pour les LEDs et les pull-ups pour l'accéléromètre. Le dernier composant à 8 pattes est donc bien l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quelques difficultés ont été rencontrées durant ce travail notamment concernant les contraintes de construction sur le PCB final. En effet, les composants CMS choisis (surtout l'accéléromètre) étant parfois très petits, Altium n'accepte pas forcément le faible espacement entre les différentes pattes des composants, ce qui pose problème lors de la compilation. De plus, le plan de masse ne prenait pas en compte tous les éléments devant être rattachés à la masse. Il a fallu légèrement déplacer les headers représentant le RFDuino pour que cela soit possible. Il faudra alors peut-être légèrement plier les broches qui viendront s'intégrer sur le RFDuino pour ajouter notre PCB sur le RFDuino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons envoyé nos fichiers Altium au service EEI afin qu'il puisse réaliser physiquement notre carte. Nous nous retrouvons donc avec notre carte PCB récupérée auprès du service EEI. Voici le rendu :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:P46_carte.jpg|400px|thumb|center|Fabrication de notre carte PCB]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir souder nos différents composants, nous avons été rendre visite à Thierry Flamen, responsable du service EEI, afin de passer nos composants CMS au four (résistances et accéléromètre). En effet il était presque impossible de souder tous ces composants manuellement. Après ce passage au four, il nous restait les composants traversants à souder, c'est-à-dire les pins, les LEDs et notre buzzer. Voici le rendu après nos soudures :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:pcbfinal1_p46.jpg|200px|thumb|left|Vue du dessous de notre carte]]&lt;br /&gt;
[[Fichier:pcbfinal2_p46.jpg|200px|thumb|center|Vue du dessus de notre carte]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il manque sur la carte finale notre bouton poussoir qui permettait le reset de notre RFduino. Malheureusement en essayant de souder celui-ci, nous avons retiré du cuivre de la carte, ce qui nous empêche de pouvoir faire circuler le courant dans ce bouton. De plus, la piste avec du cuivre manquant était également responsable de l'alimentation de notre accéléromètre ainsi que d'une LED indiquant la mise sous-tension du contrôleur. Pour le rendu final, nous souderons un fil sur la LED pour pouvoir l'alimenter, cependant il serait plus complexe d'alimenter l'accéléromètre. Celui-ci ne fonctionnait déjà pas correctement de manière électrique. La soudure de ce composant demandait une grande précision puisqu'il est de taille minuscule. Nous n'utiliserons donc pas ce composant dans notre montage final.&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bibliographie ==&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=41667</id>
		<title>IMA4 2016/2017 P46 : Aide anti-gaspillage alimentaire</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=41667"/>
				<updated>2017-05-03T15:31:20Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : /* Raspberry Pi */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
En France, nous jetons en moyenne 21% des aliments que nous achetons, ce qui représente une perte de 100 à 160 euros par an par habitant. Cela est en partie dû à la date limite de consommation associée à chaque produit. En effet, à partir du moment où cette date sera dépassée le consommateur jettera les produits concernés sans réfléchir, même si ceux-ci peuvent parfois être encore mangeables. Plutôt que d'essayer de les convaincre du contraire, il serait judicieux de proposer aux adeptes du gaspillage une aide permettant de gérer tous les aliments dont ils disposent chez eux afin d'éviter la surprise de tomber sur plusieurs produits périmés lorsqu'ils ouvrent la porte de leur frigo. &lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Ce projet permet d'aider les utilisateurs d'une part à mémoriser les denrées périssables qu'ils disposent dans leur réserve alimentaire et d'autre part d'avertir l'utilisateur qu'un événement important a lieu. Ceci peut être une notification qu'un aliment va bientôt dépasser sa date de péremption, que la porte du frigidaire est restée ouverte ou encore que le nombre d'aliments dans la réserve devient critique et qu'il faudra de nouveau l'alimenter. Enfin, le système aidera l'utilisateur à trouver des idées de repas pouvant permettre de consommer les aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Notre prototype permettra d'éviter le gaspillage alimentaire ainsi que d'aider l'utilisateur dans sa gestion du stockage d'aliments.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
&lt;br /&gt;
Notre système sera composé de 3 éléments. &lt;br /&gt;
&lt;br /&gt;
Premièrement, un ou des smartphones appartenant aux utilisateurs. Ces derniers permettront de scanner grâce à son appareil photo, le code barre du produit ainsi que sa date de péremption. Il servira aussi d'interface utilisateur pour notre système. En effet, c'est par cet outil que l'utilisateur pourra lister tous les aliments que l'utilisateur a dans sa base et tout ça en les triant par date de péremption, ou encore voir les recettes possibles pour consommer des aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Deuxièmement, un serveur, de type Raspberry, qui permettra de stocker la base de donnée contenant les aliments de la réserve. Ce serveur sera connecté par wifi.&lt;br /&gt;
 &lt;br /&gt;
Troisièmement, un contrôleur (Rfduino) qui comportera une LED pour indiquer la mise sous tension du contrôleur, une LED pour prévenir l'utilisateur qu'un aliment va bientôt passer sa date de péremption et une dernière LED pour prévenir l'utilisateur que son niveau de réserve est critique ainsi qu'un buzzer et un accéléromètre pour buzzer quand la porte du frigo est restée trop longtemps ouverte. Ce dernier sera fixé au frigo par l'intermédiaire d'un dispositif adapté qui sera un système aimanté qui se pose sur le frigo.&lt;br /&gt;
&lt;br /&gt;
Nous implémenterons donc une application mobile Android qui fera le lien entre les 2 autres systèmes.&lt;br /&gt;
&lt;br /&gt;
Pour la partie électronique que nous aurons à réaliser, nous utiliserons une Breadboard pour faire des premiers tests puis nous créerons une carte PCB pour notre montage final.&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
On utilisera une Raspberry Pi en guise de serveur pour pouvoir s'occuper du stockage de toutes les données dans notre projet puisque notre contrôleur sera incapable de les contenir, ce n'est d'ailleurs pas son but ici.&lt;br /&gt;
&lt;br /&gt;
Notre smartphone fera donc le lien entre notre base de données et notre système embarqué par l'intermédiaire de l'application mobile.&lt;br /&gt;
&lt;br /&gt;
Nous prendrons ici un RFduino puisque celui-ci nous permet d'ajouter des modules comme bon nous semble afin d'adapter le système aux besoins de notre application. Il est également parfaitement compatible avec les applications Android. De plus, nous avons un Bluetooth directement intégré au RFduino pour s'assurer que les liaisons RFduino-application mobile se fassent correctement. &lt;br /&gt;
On notera également que ce contrôleur consomme peu de courant et ne demande qu'une faible tension d'alimentation, critères importants pour ce genre de projet. C'est la raison principale de son utilisation pour être utilisé comme interface physique sur le frigo, en ajoutant également sa taille réduite comparée à la Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
&lt;br /&gt;
Nous avons donc besoin du matériel suivant :&lt;br /&gt;
&lt;br /&gt;
*Raspberry Pi.&lt;br /&gt;
*Clef wifi&lt;br /&gt;
*RFduino (RFD22102 DIP Board, RFD22121 USB Shield, RFD22126 Dual AAA battery shield).&lt;br /&gt;
*2 piles AAA.&lt;br /&gt;
*3 leds tranversantes.&lt;br /&gt;
*3 Résistances 330 Ohm.&lt;br /&gt;
*1 Résistance 10 kOhm.&lt;br /&gt;
*Un buzzer.&lt;br /&gt;
*Accéléromètre.&lt;br /&gt;
*Aimants&lt;br /&gt;
*Un boîtier permettant d'intégrer la RFduino + fixation sur le frigo (modélisation à voir).&lt;br /&gt;
&lt;br /&gt;
Pour le buzzer, l'accéléromètre et les résistances, nous choisirons des composants CMS pour nous permettre d'avoir une carte plus petite.&lt;br /&gt;
&lt;br /&gt;
===Calendrier prévisionnel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Liste des tâches à effectuer====&lt;br /&gt;
&lt;br /&gt;
* Configurer la Raspberry :&lt;br /&gt;
** Installer et configurer le serveur.&lt;br /&gt;
** Créer le diagramme UML de notre future base de données.&lt;br /&gt;
** Créer la base sur le serveur.&lt;br /&gt;
** Configurer la connexion WiFi.&lt;br /&gt;
&lt;br /&gt;
* Monter et programmer la RFduino :&lt;br /&gt;
** Connecter les différents modules au RFduino (accéléromètre, LEDs, buzzer, Batterie, module Bluetooth).&lt;br /&gt;
** Récupérer les consignes du smartphone grâce au Bluetooth.&lt;br /&gt;
** Programmer le comportement du RFduino en fonction des consignes.&lt;br /&gt;
** Construire le boitier final.&lt;br /&gt;
&lt;br /&gt;
* Implémenter l'application mobile Android :&lt;br /&gt;
** Une première activité permettant de se connecter au RFduino et à la Raspberry.&lt;br /&gt;
** Scanner une date et un code barre.&lt;br /&gt;
** Ajout/suppression d'un aliment dans la base de donnée.&lt;br /&gt;
** Envoi d'une consigne au RFduino.&lt;br /&gt;
** Rendre l'interface utilisateur ergonomique (lister aliments, envoyer vers page de recettes avec l'utilisation des aliments bientôt périmés...).&lt;br /&gt;
&lt;br /&gt;
====Calendrier====&lt;br /&gt;
&lt;br /&gt;
Répartition du temps consacré au projet (120h *2) :&lt;br /&gt;
&lt;br /&gt;
*Partie Raspberry : 60h&lt;br /&gt;
*Partie RFduino : 60h&lt;br /&gt;
*Partie développement mobile : 120h&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
&lt;br /&gt;
===Feuille d'heures===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 !  !! Lundi 16-18h !! Mercredi 14-18h !! Jeudi 8-10h&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 1&lt;br /&gt;
&lt;br /&gt;
 | '''23/01''' :  &lt;br /&gt;
* Installation du logiciel Android Studio pour être prêt à commencer l'application mobile.&lt;br /&gt;
* Création du Repository Git sur GitHub : https://github.com/FrancoisLefevre12/Optali.git&lt;br /&gt;
* Réalisation de différents schémas fonctionnels pour se donner une idée du travail à effectuer, aussi bien du software que du hardware.&lt;br /&gt;
* Quelques précisions supplémentaires apportées sur le cahier des charges.&lt;br /&gt;
* Ajout de liens de référence pour la liste de matériel à acheter.&lt;br /&gt;
&lt;br /&gt;
 | '''25/01''' :  &lt;br /&gt;
* Précision des composants requis (accéléromètre, buzzer, LEDs, résistances).&lt;br /&gt;
* Écriture du montage à la main.&lt;br /&gt;
* Étude du fonctionnement de l'accéléromètre, du buzzer.&lt;br /&gt;
* Écriture de la structure de l'application à la main.&lt;br /&gt;
&lt;br /&gt;
 | '''26/01''' :&lt;br /&gt;
*Réalisation graphique de la première page de l'application.&lt;br /&gt;
*Conception du schéma électrique pour tous les composants connectés au RFduino.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 2&lt;br /&gt;
&lt;br /&gt;
 | '''30/01''' :&lt;br /&gt;
*Réalisation du diagramme UML de la base de données qui sera stockée sur la Raspberry Pi&lt;br /&gt;
*Installation de l'outil de développement mobile sur le second PC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 | '''01/02''' :&lt;br /&gt;
*Nous nous sommes d'abord rendus compte que la résistance entre un des GPIO et l'accéléromètre était inutile, nos premiers calculs étaient erronés. Nous ne la garderons donc pas sur notre schéma électrique final.&lt;br /&gt;
*Avancement sur la partie application mobile : réalisation de la page &amp;quot;Ajout&amp;quot; sur laquelle nous tomberons après avoir cliquer sur &amp;quot;ajout&amp;quot; sur la page principale de l'application. Nous avons étendu l'activité principale jusqu'à cette nouvelle activité &amp;quot;Ajout&amp;quot;.&lt;br /&gt;
*Nous avons récupéré notre Raspberry Pi pour commencer à installer notre base de données dessus. Nous avons actuellement quelques problèmes pour nous connecter sur la Raspberry. Nous travaillons sur ce point.&lt;br /&gt;
&lt;br /&gt;
 | '''02/02''' :&lt;br /&gt;
* Application mobile : Mise en place des LEDs sur la home page et de la zone de notification avec les messages associés.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 3&lt;br /&gt;
&lt;br /&gt;
 | '''06/02''' :&lt;br /&gt;
*Nous arrivons à accéder à la Raspberry via le port série de celle-ci. Nous avons également configuré sa connexion Ethernet afin de pouvoir télécharger des paquets dessus et installer notre base de données. &lt;br /&gt;
*Nous rencontrions des problèmes sur le second PC de travail pour récupérer le projet Optali sur Android Studio via notre dépôt GIT. Nous avons pu rectifier ce souci.&lt;br /&gt;
&lt;br /&gt;
 | '''08/02''' :&lt;br /&gt;
*Tentative d'établissement d'un point d'accès WiFi sur notre Raspberry. Nous n'avons pas réussi pour le moment.&lt;br /&gt;
*Restructuration du Repository git.&lt;br /&gt;
*Essai d'importation de la librairie Zxing qui permettra de décoder les code-barres.&lt;br /&gt;
 |&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 4&lt;br /&gt;
&lt;br /&gt;
 | '''13/02'''&lt;br /&gt;
*Configuration du wifi de la Raspberry. &lt;br /&gt;
*Étude d'une mise en place d'un service web via php.&lt;br /&gt;
&lt;br /&gt;
 | '''15/02'''&lt;br /&gt;
*Mise en place d'un lecteur de caractère sur l'application. On utilisera tesseract.&lt;br /&gt;
*Début de la création du PCB via Altium designer. Création d'une librairie pour l'accéléromètre qui est un composant CMS assez spécial. On pourra cependant utiliser des headers classiques pour le buzzer et les LEDs puisque ce sont des composants traversants.&lt;br /&gt;
*Création des premiers fichiers php de connection à la base de donnée et d'insertion d'aliments. Tous ces fichiers seront déposés de la même manière sur le dépôt git.&lt;br /&gt;
&lt;br /&gt;
 | '''16/02'''&lt;br /&gt;
*Adaptation avec prise en compte des cas du code php d'insertion de produits par requête sur la base de donnée.&lt;br /&gt;
*Ajout du code d'implantation de la base de donnée.&lt;br /&gt;
*Altium: Accéléromètre terminé, mise en place des résistances.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 5 (interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''22/02 (3 heures)'''&lt;br /&gt;
*Installation de l'OS de la raspberry.&lt;br /&gt;
*Installation d'Openssh-server, apache2, php5, iptables, mysql-server, php5-mysql.&lt;br /&gt;
*Redirection des ports du routeur vers la raspberry.&lt;br /&gt;
*Configuration de iptables de la raspberry.&lt;br /&gt;
&lt;br /&gt;
 | '''23/02 (2 heures)'''&lt;br /&gt;
*Implantation de la base de donnée sur la raspberry pi.&lt;br /&gt;
|&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 6&lt;br /&gt;
 | '''27/02'''&lt;br /&gt;
*Vérification de la syntaxe de l'insertion de valeurs dans la base de donnée.&lt;br /&gt;
*Création des premières requêtes sur la base de donnée.&lt;br /&gt;
*Finalisation du PCB de l'Optali Board.&lt;br /&gt;
&lt;br /&gt;
 | '''01/03'''&lt;br /&gt;
*Étude et ajout de la librairie volley pour communiquer avec le serveur.&lt;br /&gt;
*Implantation de la fonction d'envoi de données jusqu'au serveur.&lt;br /&gt;
*Après avoir vu avec un professeur, nous avons remarqué que le routage n'était pas adéquat et la disposition des composants n'était pas optimal. Du travail reste donc encore à effectuer.&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 7&lt;br /&gt;
 | '''06/03'''&lt;br /&gt;
*Correction du fichier post.php&lt;br /&gt;
*Finition du protocole d'ajout d'aliment sur la base de donnée. (Code php et page ajout terminée).&lt;br /&gt;
*PCB terminé.&lt;br /&gt;
*Installation d'arduino IDE, doc arduino collecté.&lt;br /&gt;
&lt;br /&gt;
 | '''08/03'''&lt;br /&gt;
*Implémentation de la page ListeIngredient.xml et de l'activité listActivity.java.&lt;br /&gt;
*Documentation sur la procédure de communication bluetooth entre la Rfduino et l'application mobile.&lt;br /&gt;
*Obtention de librairie en lien avec cela.&lt;br /&gt;
*Prise en main de programmation rfduino.&lt;br /&gt;
&lt;br /&gt;
 | '''09/03'''&lt;br /&gt;
*Nous nous sommes rendus compte qu'il était nécessaire de rajouter un bouton poussoir sur notre montage afin de permettre la réinitialisation de notre RFDuino si nécessaire. Nous devons également faire en sorte de pouvoir poser notre carte PCB directement sur notre RFDuino en utilisant des broches. Nous devons donc rajouter ces éléments-ci.&lt;br /&gt;
*Ecriture de la page get.php&lt;br /&gt;
*Premiers tests sur la ListView de l'activité ListActivity.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 8&lt;br /&gt;
 | '''13/03'''&lt;br /&gt;
*Recherche de pistes concernant la programmation RFDuino. Nous pouvons la détecter en bluetooth via un smartphone Android.&lt;br /&gt;
*Finition du Tablelayout et du code java associé sur la page ListActivity.&lt;br /&gt;
&lt;br /&gt;
 | '''15/03'''&lt;br /&gt;
*Ajout de la JsonArrayRequest dans la page ListActivity.&lt;br /&gt;
*Nous nous sommes rendus compte au moment de programmer la liaison I2C de l'accéléromètre avec la RFDuino que nous avions oublié de mettre des résistances pull-up entre l'alimentation du composant et les broches SDA et SCL. Les modifications ont donc été faites puis nous avons envoyé finalement notre PCB à la fabrication.&lt;br /&gt;
&lt;br /&gt;
 | '''16/03'''&lt;br /&gt;
*Changement de stratégie au niveau de la requête JsonArrayRequest. On récupère toute la base et ensuite le traitement sera effectuer dans l'application mobile.&lt;br /&gt;
*Rédaction de la partie Altium du wiki.&lt;br /&gt;
*Recherche de docs sur le système bluetooth du RFduino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 9&lt;br /&gt;
 | '''20/03'''&lt;br /&gt;
*Réalisation de différents réglages pour pouvoir utiliser l'application Optali sur l'Android phone fourni par notre professeur (LG G4c)&lt;br /&gt;
*Recherche de docs concernant la partie java responsable de la communication Bluetooth.&lt;br /&gt;
*Reprise de la solution Tesseract pour la lecture de caractères.&lt;br /&gt;
&lt;br /&gt;
 | '''21/03''' (séance supplémentaire de 3 heures)&lt;br /&gt;
*Début du développement de la partie communication entre RFDuino et l'appli mobile. Nous pouvons détecter le RFduino à partir de Android Studio mais nous n'arrivons pas encore à nous connecter dessus directement.&lt;br /&gt;
*Finition de la fonctionnalité tesseract. La lecture de caractères est donc maintenant possible.&lt;br /&gt;
&lt;br /&gt;
 | '''22/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity&lt;br /&gt;
*Connexion possible entre le RFduino et notre appli mobile. Il faut maintenant pouvoir assurer un échange de données via du GATT.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 10&lt;br /&gt;
 | '''27/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity (suite). Utilisation de la solution postman.&lt;br /&gt;
*Mise à jour du wiki pour la partie Altium.&lt;br /&gt;
*Gestion du dépôt git.&lt;br /&gt;
*Récupération de la carte PCB au service EEI.&lt;br /&gt;
&lt;br /&gt;
 | '''29/03'''&lt;br /&gt;
*Mise en place du tri des Produits avec un critère d'ordonnabilité variable&lt;br /&gt;
*Implémentation du champs recherche et action sur la liste&lt;br /&gt;
*Écriture des pages Php consume.php et delete.php pour décrémenter le nombre d'aliment dans le frigo ou le supprimer&lt;br /&gt;
*Récupération des composants&lt;br /&gt;
*Passage au four pour souder les premiers composants en CMS&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 11&lt;br /&gt;
&lt;br /&gt;
 | '''03/04'''&lt;br /&gt;
*Dé-soudage et resoudage de l'accéléromètre.&lt;br /&gt;
*Soudure des composants&lt;br /&gt;
&lt;br /&gt;
 | '''05/04'''&lt;br /&gt;
*Test du Buzzer&lt;br /&gt;
*Code de l'accéléromètre&lt;br /&gt;
*Création de l'Optali box (la boite qui contient le RFduino fixé au frigo)&lt;br /&gt;
*Finition de la fonction 'delete'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 | '''06/04'''&lt;br /&gt;
*Problème pour faire fonctionner le code de l'accéléro. Il faudra le tester électriquement.&lt;br /&gt;
*Implantation du logo de l'appli &lt;br /&gt;
*Debuggage d'une requête de la page 'list'&lt;br /&gt;
*Documentation sur les listes déroulantes sous les EditTexts.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 12 (Interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''11/04''' (3 heures)&lt;br /&gt;
*Après avoir remarqué que le code de l'accéléro ne fonctionnait pas alors qu'il paraît correct, nous avons décidez de vérifier les propriétés électriques de notre montage.&lt;br /&gt;
En observant à l'analyseur logique, il semblerait que l'horloge de la liaison i2C n'est en fait qu'un signal bruité. Il faudra donc retenter de souder le composant quand cela sera possible.&lt;br /&gt;
&lt;br /&gt;
 | '''13/04''' (6 heures)&lt;br /&gt;
*Terminaison du programme RFduino qui fonctionne théoriquement, nous attendons de terminer les dernières soudures pour pouvoir le tester physiquement.&lt;br /&gt;
*En attendant de pouvoir réaliser des soudures, nous avons repris la partie communication bluetooth entre le RFduino et l'appli. Après avoir tenté d'utiliser un programme permettant de gérer le protocole GATT sans savoir envoyer ou recevoir de données, nous nous sommes orientés sur une communication plus basique basée sur de nombreux exemples que l'on peut voir sur le web.&lt;br /&gt;
&lt;br /&gt;
 | '''15/04''' (6 heures)&lt;br /&gt;
*Après s'être rendu compte que la communication plus &amp;quot;basique&amp;quot; que nous voulions utiliser n'était pas compatible avec le BLE, nous sommes une fois de plus repartis de zéro pour cette partie.&lt;br /&gt;
*Après quelques recherches, nous avons trouvé un programme réalisant la gestion d'un socket BLE sur le principe du protocole GATT. Grâce à celui-ci, il nous est possible de recevoir et d'envoyer des données via BLE sur RFduino ainsi que sur l'appli mobile.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 13 (Interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''17/04 (4 heures)'''&lt;br /&gt;
*Ajout du singleton Etat pour partager l'état des aliments dans la réserve alimentaire&lt;br /&gt;
*Transfert des requêtes de la base de donnée vers le singleton pour optimiser l'actualisation et le partage des données.&lt;br /&gt;
*Actualisation automatique des données sur la page principale.&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Semaine 14&lt;br /&gt;
| '''24/04'''&lt;br /&gt;
*Modification de la présentation du wiki&lt;br /&gt;
*Modification de la fonctionnalité du bouton actualiser en changement d'activité&lt;br /&gt;
&lt;br /&gt;
| '''26/04'''&lt;br /&gt;
*Ajout de la page liste recette&lt;br /&gt;
&lt;br /&gt;
| '''27/04''' (3 heures)&lt;br /&gt;
*Ajout des listes recettes dans ListeRecette&lt;br /&gt;
*Ajout des requêtes des recettes sur ListeRecette.java&lt;br /&gt;
*Création du fichier listeRecette.php sur le serveur pour faire la requête SQL et envoyer sur l'application.&lt;br /&gt;
*Soudure des derniers composants pour terminer le PCB. Tout est soudé sauf le bouton poussoir qui devait permettre un reset du RFduino. En cherchant d'ailleurs à souder ce bouton, nous avons retiré malencontreusement la piste de cuivre permettant de répartir le 3.3V du RFduino sur notre PCB. Notre accéléromètre qui ne marchait déjà pas vraiment n'est plus alimenté. Nous ferons sans notre accéléromètre pour le rendu final. &lt;br /&gt;
|-&lt;br /&gt;
|Semaine 15&lt;br /&gt;
|&lt;br /&gt;
|'''03/05'''&lt;br /&gt;
*Remplacement de la LED &amp;quot;LED_Perim&amp;quot; qui était défaillante et ne s'allumait pas quand il le fallait.&lt;br /&gt;
*Début de la réalisation du rapport de projet.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Semaine 16&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===Premières idées===&lt;br /&gt;
&lt;br /&gt;
Voici les premières idées de l'application mobile et du composant fixé sur le frigo.&lt;br /&gt;
[[Fichier:Optali_v1.jpg|400px|thumb|left|Optali version 1]]&lt;br /&gt;
[[Fichier:OptaliBox_v1.jpg|400px|thumb|center|OptaliBox version 1]]&lt;br /&gt;
[[Fichier:P46_schema.jpg|400px|thumb|center|Schéma électrique version 1]]&lt;br /&gt;
&lt;br /&gt;
En s'intéressant aux différentes datasheets ou données constructeur des composants que nous voulons utiliser, nous trouvons indispensable d'utiliser des résistances de 330 Ohms pour l'utilisation des LEDs, pour éviter de les griller.&lt;br /&gt;
&lt;br /&gt;
Edit : Retrait de la résistance R2.&lt;br /&gt;
&lt;br /&gt;
Concernant l'accéléromètre, nous avons choisi un modèle qui nous permet de brancher directement ce module sur une broche du RFDuino. On branchera directement les GPIOs de la RFduino sur les ports SDA et SCL de l'accéléromètre qui correspondent à l'interface I2C pour pouvoir communiquer. On utilisera aussi la broche INT1 pour pouvoir générer des interruptions directement depuis l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
On connectera le buzzer directement à une broche de la RFduino aussi. Concernant celui-ci il reste une incertitude puisqu'on ne trouve aucune information sur le courant à fournir pour l'alimentation de ce composant sur sa datasheet. Après différentes recherches sur Internet, il pourrait être nécessaire d'utiliser un montage amplificateur à transistor comme un émetteur commun pour booster le courant en sortie d'une broche GPIO. Quelques buzzers trouvés avec des données constructeur montrent que ce type de composant nécessite généralement un courant d'environ 30 mA. Nous verrons dans la pratique si cela sera vraiment nécessaire. Par sécurité, on ajoutera un transistor bipolaire dans la liste de matériel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:screen_LED.png|400px|thumb|left|Données constructeur pour LEDs]]&lt;br /&gt;
[[Fichier:screen_accel.png|400px|thumb|center|Datasheet de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
====Configuration école====&lt;br /&gt;
&lt;br /&gt;
*Pour configurer notre Raspberry Pi, nous utilisons son port série et &amp;quot;minicom&amp;quot;. Pour pouvoir télécharger des paquets, il fallait la connecter au réseau. Nous lui avons donc affecté une adresse IP fixe avec le fichier /etc/network/interfaces. Voici les modifications qui ont été apportées : &lt;br /&gt;
&lt;br /&gt;
   auto eth0&lt;br /&gt;
   iface eth0 inet static&lt;br /&gt;
   address 172.26.78.15&lt;br /&gt;
   netmask 255.255.240.0&lt;br /&gt;
   gateway 172.26.79.254&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il a également fallu ajouter la commande &amp;quot;export http_proxy=http://proxy.polytech-lille.fr:3128&amp;quot; (il faudra effectuer cette commande à chaque démarrage de la Pi) pour pouvoir utiliser le proxy de l'école. &lt;br /&gt;
Nous avons de plus modifier le fichier /etc/resolv.conf avec la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
   nameserver 193.48.57.34&lt;br /&gt;
&lt;br /&gt;
Malgré cela, nous avions des soucis pour nous connecter au réseau. Il y avait en fait un processus dhcp en tâche de fond qui nous empêchait de garder le contenu de resolv.conf. Il a donc fallu trouver ce processus pour le &amp;quot;kill&amp;quot; et pouvoir accéder correctement au réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons du coup pu installer postgresql pour pouvoir configurer une base de données sur notre Pi.&lt;br /&gt;
&lt;br /&gt;
====Configuration à domicile====&lt;br /&gt;
&lt;br /&gt;
Pour nous mettre dans une situation plus fidèle à notre projet, nous avons configuré la raspberry à domicile.&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abords installé Raspbian, puis installé les paquets nécessaire au fonctionnement du serveur.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Openssh-server''': permettre d'accès à distance à la raspberry pour pouvoir y accéder depuis l'école.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Iptables''': pour sécuriser les ports non utilisé et libérer l'accès aux ports qui nous intéressent (ssh 22,http 80,https 443).&amp;lt;br&amp;gt;&lt;br /&gt;
- '''apache2, php5, mysql-server''' : pour mettre en place notre service web.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons rediriger les ports 80 et 22 du routeur pour pouvoir accéder à la raspberry de l'extérieur.&lt;br /&gt;
&lt;br /&gt;
Pour finir, nous avons créer un fichier de config iptables permettant de sécuriser un minimum la base de donnée et de permettre d'autoriser la communication des ports 22, 80 et 443 correspondants aux ports ssh, http et https. le fichier de configuration a été déposé dans le dépôt git. Il nous a fallut le rendre exécutable via un chmod. Puis pour l'exécuter à chaque démarrage du system, dans le fichier /etc/init.d/ taper : &lt;br /&gt;
&lt;br /&gt;
    sudo update-rc.d firewall defaults (si notrefichier s'appelle firewall et s'il est dans init.d)&lt;br /&gt;
&lt;br /&gt;
===Base de donnée===&lt;br /&gt;
&lt;br /&gt;
Nos données alimentaires disponibles par toute la famille doivent être stocké sur un serveur de base de donnée externe (tel une Raspberry pi). Nous nous proposons de créer le diagramme UML représentant cette future base de donnée.&lt;br /&gt;
[[Fichier:Optali_UML.jpg|700px|thumb|center|Diagramme UML base de donnée]]&lt;br /&gt;
&lt;br /&gt;
On créera donc 3 entités. Date, Product et Recipe. &lt;br /&gt;
&lt;br /&gt;
- Product rassemble les aliments qui sont ou ont été dans la réserve alimentaire. NbProdIn permet de connaître le nombre de produits identiques (possibilité de date différentes mais pas de doublons et on garde l'information de quantité. NbProdBought donne une information sur le nombre de produits identique ayant été acheté depuis la mise en service de la base de donnée. Ainsi nous pourrons par la suite proposer une liste de course à l'utilisateur en fonction de la fréquence d'achat des produits.&lt;br /&gt;
&lt;br /&gt;
- Recipe contient les recettes que pourra rentrer l'utilisateur sur l'application. L'utilisateur pourra ainsi se voir proposer des recettes en fonction de ce qu'il a dans son frigo et de ses recettes personnelles.&lt;br /&gt;
&lt;br /&gt;
'''''Edit : On ajoutera une valeur entière dans les tables Date et Unity pour gérer le cas où il existe plusieurs produits (différents ou identiques) avec une date de péremption équivalente. On les appellera NbDate la valeur dans la table Date et NbUnity dans la table Unity. On leur ajoutera de même une clef primaire IdUnity et IdListProduct'''''&lt;br /&gt;
&lt;br /&gt;
On utilisera MySql pour la gestion de nos bases de données. &lt;br /&gt;
La syntaxe pour l'implanter dans la base de donnée à été jointe au dépôt git.&lt;br /&gt;
&lt;br /&gt;
Pour lancer my SQL, on tapera:&lt;br /&gt;
&lt;br /&gt;
   mysql -h localhost -u root -p&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Web service===&lt;br /&gt;
&lt;br /&gt;
====Page init.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet d'initier l'accès à la base de donnée sur le serveur. Elle est requise pour les pages qui suivent.&lt;br /&gt;
&lt;br /&gt;
====Page post.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet l'insertion d'un produit et d'une date via l'application mobile. Elle prend donc ces deux arguments et les insère dans les tables Unity, Product et Date.&lt;br /&gt;
&lt;br /&gt;
====Page get.php====&lt;br /&gt;
&lt;br /&gt;
Page qui envoie la liste des aliments avec leur nom, leur date, leur quantité dans le frigo, la quantité d'exemplaires acheté en tout depuis la mise en place de l'appareil. Le tri se fera directement dans l'application mobile. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Application Mobile===&lt;br /&gt;
&lt;br /&gt;
====Home page====&lt;br /&gt;
&lt;br /&gt;
Page d'accueil permettant d'accéder aux pages d'ajout et de liste des produits disponibles. &amp;lt;br&amp;gt;&lt;br /&gt;
La page permet aussi d'effectuer la connexion entre la rfduino et l'application mobile. Elle montre les alertes (signaux) à l'utilisateur &lt;br /&gt;
et écrit leur signification.&lt;br /&gt;
&lt;br /&gt;
====Page d'ajout====&lt;br /&gt;
&lt;br /&gt;
Pour ajouter un produit et lire une date on utilisera un champ editText pour permettre à l'utilisateur d'écrire &amp;quot;Manuellement&amp;quot; dedans grâce au clavier du smartphone.&amp;lt;br&amp;gt;&lt;br /&gt;
De plus on utilise un bouton qui appellera la caméra pour détecter les caractères d'un produit ou d'une date. Au début nous voulions utiliser un détecteur de code barre, nous l'avons implémenté mais nous avons remarqué que la mise au point sur une surface non plane prend du temps d'autant plus qu'il faut questionner une base de donnée contenant tous les numéro de codes barres utilisés. Nous avons donc prit la décision d'utiliser uniquement la lecture de caractère et nous créerons une liste déroulante sous l'editText pour faciliter l'insertion d'un produit qui a déjà été ajouté. Pour la lecture de caractère, nous utilisons la librairie tesseract.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'envoi, nous utilisons la librairie Volley développé par google.&lt;br /&gt;
&lt;br /&gt;
====Page Liste====&lt;br /&gt;
&lt;br /&gt;
Permet de lister les produits dans la base de donnée. Une série de boutons radio permettent de trier les produits par ordre alphabétique, par date de péremption, par nombre d’occurrence dans la réserve alimentaire, par nombre d'achat depuis la mise en place du système.&amp;lt;br&amp;gt;&lt;br /&gt;
Une colonne permet de sélectionner les aliments désirés (par checkBox) pour ensuite les supprimer via un button &amp;quot;suppr&amp;quot; ou les choisir pour trouver des recettes qui les utilisent.&amp;lt;br&amp;gt;&lt;br /&gt;
Un EditText permet d'effectuer une recherche sur la base de donnée.&lt;br /&gt;
&lt;br /&gt;
===Altium Designer===&lt;br /&gt;
&lt;br /&gt;
Pour permettre au RFDuino de communiquer avec les différents composants, nous aurons besoin de quelques composants électroniques. Afin que cela soit plus esthétique pour la modélisation finale, nous allons créer une carte PCB pour rassembler tous ces composants dessus. On utilisera le logiciel Altium Designer pour cela.&lt;br /&gt;
&lt;br /&gt;
Avant de représenter notre circuit général, nous allons commencer par créer une librairie rassemblant tous les composants que nous utiliserons par la suite, en particulier nos composants CMS (accéléromètre et résistances). Pour ce qui est des LEDs et du buzzer, qui sont traversants, nous pourrons utiliser des headers classiques.&lt;br /&gt;
&lt;br /&gt;
Il a donc fallu créer le schematic ainsi que l'empreinte de nos composants CMS. Voici un exemple avec notre accéléromètre :&lt;br /&gt;
[[Fichier:Accelerosch.PNG|500px|thumb|left|Schematic de l'accéléromètre]]&lt;br /&gt;
[[Fichier:Acceleropcb.PNG|500px|thumb|center|Empreinte PCB de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les fichiers Altium sont disponibles sur notre dépôt GIT. Après cela, nous pouvons maintenant construire notre schematic du montage entier et ensuite le fichier PCB afin de pouvoir graver notre circuit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après quelques modifications sur le montage prévu initialement, c'est-à-dire en enlevant une résistance entre un GPIO et l'alimentation de l'accéléromètre ainsi qu'en rajoutant des résistances pull-up sur les broches de notre liaison i2C (SDA et SCL) et un bouton poussoir en plus pour permettre un reset du RFDuino, nous avons pu créer notre schematic global pour en faire un PCB et l'exporter au format Gerber. De ce fait, le service EEI de Polytech pourra réaliser la gravure de notre carte PCB.&lt;br /&gt;
&lt;br /&gt;
Voici quelques photos pour illustrer notre projet sur Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Finalproto_sch.PNG|400px|thumb|left|Schematic du montage final]]&lt;br /&gt;
[[Fichier:Finalproto_pcb.PNG|400px|thumb|center|PCB du montage final]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On retrouve sur notre PCB final les headers, respectivement de 8 et 5 pins, de part et d'autre de la carte, qui représentent le RFDuino, où nous souderons des broches pour qu'elles puissent être intégrées au RFDuino. On note la présence de 5 autres headers de 2 pins, dont 3 pour des LEDs puis les 2 autres pour le buzzer et le bouton poussoir. Ce qui reste sont les composants CMS avec plusieurs composants à 2 pattes qui sont toutes les résistances de notre montage, celles de protection pour les LEDs et les pull-ups pour l'accéléromètre. Le dernier composant à 8 pattes est donc bien l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quelques difficultés ont été rencontrées durant ce travail notamment concernant les contraintes de construction sur le PCB final. En effet, les composants CMS choisis (surtout l'accéléromètre) étant parfois très petits, Altium n'accepte pas forcément le faible espacement entre les différentes pattes des composants, ce qui pose problème lors de la compilation. De plus, le plan de masse ne prenait pas en compte tous les éléments devant être rattachés à la masse. Il a fallu légèrement déplacer les headers représentant le RFDuino pour que cela soit possible. Il faudra alors peut-être légèrement plier les broches qui viendront s'intégrer sur le RFDuino pour ajouter notre PCB sur le RFDuino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons envoyé nos fichiers Altium au service EEI afin qu'il puisse réaliser physiquement notre carte. Nous nous retrouvons donc avec notre carte PCB récupérée auprès du service EEI. Voici le rendu :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:P46_carte.jpg|400px|thumb|center|Fabrication de notre carte PCB]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir souder nos différents composants, nous avons été rendre visite à Thierry Flamen, responsable du service EEI, afin de passer nos composants CMS au four (résistances et accéléromètre). En effet il était presque impossible de souder tous ces composants manuellement. Après ce passage au four, il nous restait les composants traversants à souder, c'est-à-dire les pins, les LEDs et notre buzzer. Voici le rendu après nos soudures :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:pcbfinal1_p46.jpg|200px|thumb|left|Vue du dessous de notre carte]]&lt;br /&gt;
[[Fichier:pcbfinal2_p46.jpg|200px|thumb|center|Vue du dessus de notre carte]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il manque sur la carte finale notre bouton poussoir qui permettait le reset de notre RFduino. Malheureusement en essayant de souder celui-ci, nous avons retiré du cuivre de la carte, ce qui nous empêche de pouvoir faire circuler le courant dans ce bouton. De plus, la piste avec du cuivre manquant était également responsable de l'alimentation de notre accéléromètre ainsi que d'une LED indiquant la mise sous-tension du contrôleur. Pour le rendu final, nous souderons un fil sur la LED pour pouvoir l'alimenter, cependant il serait plus complexe d'alimenter l'accéléromètre. Celui-ci ne fonctionnait déjà pas correctement de manière électrique. La soudure de ce composant demandait une grande précision puisqu'il est de taille minuscule. Nous n'utiliserons donc pas ce composant dans notre montage final.&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=41666</id>
		<title>IMA4 2016/2017 P46 : Aide anti-gaspillage alimentaire</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=41666"/>
				<updated>2017-05-03T15:30:56Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : /* Feuille d'heures */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
En France, nous jetons en moyenne 21% des aliments que nous achetons, ce qui représente une perte de 100 à 160 euros par an par habitant. Cela est en partie dû à la date limite de consommation associée à chaque produit. En effet, à partir du moment où cette date sera dépassée le consommateur jettera les produits concernés sans réfléchir, même si ceux-ci peuvent parfois être encore mangeables. Plutôt que d'essayer de les convaincre du contraire, il serait judicieux de proposer aux adeptes du gaspillage une aide permettant de gérer tous les aliments dont ils disposent chez eux afin d'éviter la surprise de tomber sur plusieurs produits périmés lorsqu'ils ouvrent la porte de leur frigo. &lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Ce projet permet d'aider les utilisateurs d'une part à mémoriser les denrées périssables qu'ils disposent dans leur réserve alimentaire et d'autre part d'avertir l'utilisateur qu'un événement important a lieu. Ceci peut être une notification qu'un aliment va bientôt dépasser sa date de péremption, que la porte du frigidaire est restée ouverte ou encore que le nombre d'aliments dans la réserve devient critique et qu'il faudra de nouveau l'alimenter. Enfin, le système aidera l'utilisateur à trouver des idées de repas pouvant permettre de consommer les aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Notre prototype permettra d'éviter le gaspillage alimentaire ainsi que d'aider l'utilisateur dans sa gestion du stockage d'aliments.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
&lt;br /&gt;
Notre système sera composé de 3 éléments. &lt;br /&gt;
&lt;br /&gt;
Premièrement, un ou des smartphones appartenant aux utilisateurs. Ces derniers permettront de scanner grâce à son appareil photo, le code barre du produit ainsi que sa date de péremption. Il servira aussi d'interface utilisateur pour notre système. En effet, c'est par cet outil que l'utilisateur pourra lister tous les aliments que l'utilisateur a dans sa base et tout ça en les triant par date de péremption, ou encore voir les recettes possibles pour consommer des aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Deuxièmement, un serveur, de type Raspberry, qui permettra de stocker la base de donnée contenant les aliments de la réserve. Ce serveur sera connecté par wifi.&lt;br /&gt;
 &lt;br /&gt;
Troisièmement, un contrôleur (Rfduino) qui comportera une LED pour indiquer la mise sous tension du contrôleur, une LED pour prévenir l'utilisateur qu'un aliment va bientôt passer sa date de péremption et une dernière LED pour prévenir l'utilisateur que son niveau de réserve est critique ainsi qu'un buzzer et un accéléromètre pour buzzer quand la porte du frigo est restée trop longtemps ouverte. Ce dernier sera fixé au frigo par l'intermédiaire d'un dispositif adapté qui sera un système aimanté qui se pose sur le frigo.&lt;br /&gt;
&lt;br /&gt;
Nous implémenterons donc une application mobile Android qui fera le lien entre les 2 autres systèmes.&lt;br /&gt;
&lt;br /&gt;
Pour la partie électronique que nous aurons à réaliser, nous utiliserons une Breadboard pour faire des premiers tests puis nous créerons une carte PCB pour notre montage final.&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
On utilisera une Raspberry Pi en guise de serveur pour pouvoir s'occuper du stockage de toutes les données dans notre projet puisque notre contrôleur sera incapable de les contenir, ce n'est d'ailleurs pas son but ici.&lt;br /&gt;
&lt;br /&gt;
Notre smartphone fera donc le lien entre notre base de données et notre système embarqué par l'intermédiaire de l'application mobile.&lt;br /&gt;
&lt;br /&gt;
Nous prendrons ici un RFduino puisque celui-ci nous permet d'ajouter des modules comme bon nous semble afin d'adapter le système aux besoins de notre application. Il est également parfaitement compatible avec les applications Android. De plus, nous avons un Bluetooth directement intégré au RFduino pour s'assurer que les liaisons RFduino-application mobile se fassent correctement. &lt;br /&gt;
On notera également que ce contrôleur consomme peu de courant et ne demande qu'une faible tension d'alimentation, critères importants pour ce genre de projet. C'est la raison principale de son utilisation pour être utilisé comme interface physique sur le frigo, en ajoutant également sa taille réduite comparée à la Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
&lt;br /&gt;
Nous avons donc besoin du matériel suivant :&lt;br /&gt;
&lt;br /&gt;
*Raspberry Pi.&lt;br /&gt;
*Clef wifi&lt;br /&gt;
*RFduino (RFD22102 DIP Board, RFD22121 USB Shield, RFD22126 Dual AAA battery shield).&lt;br /&gt;
*2 piles AAA.&lt;br /&gt;
*3 leds tranversantes.&lt;br /&gt;
*3 Résistances 330 Ohm.&lt;br /&gt;
*1 Résistance 10 kOhm.&lt;br /&gt;
*Un buzzer.&lt;br /&gt;
*Accéléromètre.&lt;br /&gt;
*Aimants&lt;br /&gt;
*Un boîtier permettant d'intégrer la RFduino + fixation sur le frigo (modélisation à voir).&lt;br /&gt;
&lt;br /&gt;
Pour le buzzer, l'accéléromètre et les résistances, nous choisirons des composants CMS pour nous permettre d'avoir une carte plus petite.&lt;br /&gt;
&lt;br /&gt;
===Calendrier prévisionnel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Liste des tâches à effectuer====&lt;br /&gt;
&lt;br /&gt;
* Configurer la Raspberry :&lt;br /&gt;
** Installer et configurer le serveur.&lt;br /&gt;
** Créer le diagramme UML de notre future base de données.&lt;br /&gt;
** Créer la base sur le serveur.&lt;br /&gt;
** Configurer la connexion WiFi.&lt;br /&gt;
&lt;br /&gt;
* Monter et programmer la RFduino :&lt;br /&gt;
** Connecter les différents modules au RFduino (accéléromètre, LEDs, buzzer, Batterie, module Bluetooth).&lt;br /&gt;
** Récupérer les consignes du smartphone grâce au Bluetooth.&lt;br /&gt;
** Programmer le comportement du RFduino en fonction des consignes.&lt;br /&gt;
** Construire le boitier final.&lt;br /&gt;
&lt;br /&gt;
* Implémenter l'application mobile Android :&lt;br /&gt;
** Une première activité permettant de se connecter au RFduino et à la Raspberry.&lt;br /&gt;
** Scanner une date et un code barre.&lt;br /&gt;
** Ajout/suppression d'un aliment dans la base de donnée.&lt;br /&gt;
** Envoi d'une consigne au RFduino.&lt;br /&gt;
** Rendre l'interface utilisateur ergonomique (lister aliments, envoyer vers page de recettes avec l'utilisation des aliments bientôt périmés...).&lt;br /&gt;
&lt;br /&gt;
====Calendrier====&lt;br /&gt;
&lt;br /&gt;
Répartition du temps consacré au projet (120h *2) :&lt;br /&gt;
&lt;br /&gt;
*Partie Raspberry : 60h&lt;br /&gt;
*Partie RFduino : 60h&lt;br /&gt;
*Partie développement mobile : 120h&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
&lt;br /&gt;
===Feuille d'heures===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 !  !! Lundi 16-18h !! Mercredi 14-18h !! Jeudi 8-10h&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 1&lt;br /&gt;
&lt;br /&gt;
 | '''23/01''' :  &lt;br /&gt;
* Installation du logiciel Android Studio pour être prêt à commencer l'application mobile.&lt;br /&gt;
* Création du Repository Git sur GitHub : https://github.com/FrancoisLefevre12/Optali.git&lt;br /&gt;
* Réalisation de différents schémas fonctionnels pour se donner une idée du travail à effectuer, aussi bien du software que du hardware.&lt;br /&gt;
* Quelques précisions supplémentaires apportées sur le cahier des charges.&lt;br /&gt;
* Ajout de liens de référence pour la liste de matériel à acheter.&lt;br /&gt;
&lt;br /&gt;
 | '''25/01''' :  &lt;br /&gt;
* Précision des composants requis (accéléromètre, buzzer, LEDs, résistances).&lt;br /&gt;
* Écriture du montage à la main.&lt;br /&gt;
* Étude du fonctionnement de l'accéléromètre, du buzzer.&lt;br /&gt;
* Écriture de la structure de l'application à la main.&lt;br /&gt;
&lt;br /&gt;
 | '''26/01''' :&lt;br /&gt;
*Réalisation graphique de la première page de l'application.&lt;br /&gt;
*Conception du schéma électrique pour tous les composants connectés au RFduino.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 2&lt;br /&gt;
&lt;br /&gt;
 | '''30/01''' :&lt;br /&gt;
*Réalisation du diagramme UML de la base de données qui sera stockée sur la Raspberry Pi&lt;br /&gt;
*Installation de l'outil de développement mobile sur le second PC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 | '''01/02''' :&lt;br /&gt;
*Nous nous sommes d'abord rendus compte que la résistance entre un des GPIO et l'accéléromètre était inutile, nos premiers calculs étaient erronés. Nous ne la garderons donc pas sur notre schéma électrique final.&lt;br /&gt;
*Avancement sur la partie application mobile : réalisation de la page &amp;quot;Ajout&amp;quot; sur laquelle nous tomberons après avoir cliquer sur &amp;quot;ajout&amp;quot; sur la page principale de l'application. Nous avons étendu l'activité principale jusqu'à cette nouvelle activité &amp;quot;Ajout&amp;quot;.&lt;br /&gt;
*Nous avons récupéré notre Raspberry Pi pour commencer à installer notre base de données dessus. Nous avons actuellement quelques problèmes pour nous connecter sur la Raspberry. Nous travaillons sur ce point.&lt;br /&gt;
&lt;br /&gt;
 | '''02/02''' :&lt;br /&gt;
* Application mobile : Mise en place des LEDs sur la home page et de la zone de notification avec les messages associés.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 3&lt;br /&gt;
&lt;br /&gt;
 | '''06/02''' :&lt;br /&gt;
*Nous arrivons à accéder à la Raspberry via le port série de celle-ci. Nous avons également configuré sa connexion Ethernet afin de pouvoir télécharger des paquets dessus et installer notre base de données. &lt;br /&gt;
*Nous rencontrions des problèmes sur le second PC de travail pour récupérer le projet Optali sur Android Studio via notre dépôt GIT. Nous avons pu rectifier ce souci.&lt;br /&gt;
&lt;br /&gt;
 | '''08/02''' :&lt;br /&gt;
*Tentative d'établissement d'un point d'accès WiFi sur notre Raspberry. Nous n'avons pas réussi pour le moment.&lt;br /&gt;
*Restructuration du Repository git.&lt;br /&gt;
*Essai d'importation de la librairie Zxing qui permettra de décoder les code-barres.&lt;br /&gt;
 |&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 4&lt;br /&gt;
&lt;br /&gt;
 | '''13/02'''&lt;br /&gt;
*Configuration du wifi de la Raspberry. &lt;br /&gt;
*Étude d'une mise en place d'un service web via php.&lt;br /&gt;
&lt;br /&gt;
 | '''15/02'''&lt;br /&gt;
*Mise en place d'un lecteur de caractère sur l'application. On utilisera tesseract.&lt;br /&gt;
*Début de la création du PCB via Altium designer. Création d'une librairie pour l'accéléromètre qui est un composant CMS assez spécial. On pourra cependant utiliser des headers classiques pour le buzzer et les LEDs puisque ce sont des composants traversants.&lt;br /&gt;
*Création des premiers fichiers php de connection à la base de donnée et d'insertion d'aliments. Tous ces fichiers seront déposés de la même manière sur le dépôt git.&lt;br /&gt;
&lt;br /&gt;
 | '''16/02'''&lt;br /&gt;
*Adaptation avec prise en compte des cas du code php d'insertion de produits par requête sur la base de donnée.&lt;br /&gt;
*Ajout du code d'implantation de la base de donnée.&lt;br /&gt;
*Altium: Accéléromètre terminé, mise en place des résistances.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 5 (interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''22/02 (3 heures)'''&lt;br /&gt;
*Installation de l'OS de la raspberry.&lt;br /&gt;
*Installation d'Openssh-server, apache2, php5, iptables, mysql-server, php5-mysql.&lt;br /&gt;
*Redirection des ports du routeur vers la raspberry.&lt;br /&gt;
*Configuration de iptables de la raspberry.&lt;br /&gt;
&lt;br /&gt;
 | '''23/02 (2 heures)'''&lt;br /&gt;
*Implantation de la base de donnée sur la raspberry pi.&lt;br /&gt;
|&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 6&lt;br /&gt;
 | '''27/02'''&lt;br /&gt;
*Vérification de la syntaxe de l'insertion de valeurs dans la base de donnée.&lt;br /&gt;
*Création des premières requêtes sur la base de donnée.&lt;br /&gt;
*Finalisation du PCB de l'Optali Board.&lt;br /&gt;
&lt;br /&gt;
 | '''01/03'''&lt;br /&gt;
*Étude et ajout de la librairie volley pour communiquer avec le serveur.&lt;br /&gt;
*Implantation de la fonction d'envoi de données jusqu'au serveur.&lt;br /&gt;
*Après avoir vu avec un professeur, nous avons remarqué que le routage n'était pas adéquat et la disposition des composants n'était pas optimal. Du travail reste donc encore à effectuer.&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 7&lt;br /&gt;
 | '''06/03'''&lt;br /&gt;
*Correction du fichier post.php&lt;br /&gt;
*Finition du protocole d'ajout d'aliment sur la base de donnée. (Code php et page ajout terminée).&lt;br /&gt;
*PCB terminé.&lt;br /&gt;
*Installation d'arduino IDE, doc arduino collecté.&lt;br /&gt;
&lt;br /&gt;
 | '''08/03'''&lt;br /&gt;
*Implémentation de la page ListeIngredient.xml et de l'activité listActivity.java.&lt;br /&gt;
*Documentation sur la procédure de communication bluetooth entre la Rfduino et l'application mobile.&lt;br /&gt;
*Obtention de librairie en lien avec cela.&lt;br /&gt;
*Prise en main de programmation rfduino.&lt;br /&gt;
&lt;br /&gt;
 | '''09/03'''&lt;br /&gt;
*Nous nous sommes rendus compte qu'il était nécessaire de rajouter un bouton poussoir sur notre montage afin de permettre la réinitialisation de notre RFDuino si nécessaire. Nous devons également faire en sorte de pouvoir poser notre carte PCB directement sur notre RFDuino en utilisant des broches. Nous devons donc rajouter ces éléments-ci.&lt;br /&gt;
*Ecriture de la page get.php&lt;br /&gt;
*Premiers tests sur la ListView de l'activité ListActivity.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 8&lt;br /&gt;
 | '''13/03'''&lt;br /&gt;
*Recherche de pistes concernant la programmation RFDuino. Nous pouvons la détecter en bluetooth via un smartphone Android.&lt;br /&gt;
*Finition du Tablelayout et du code java associé sur la page ListActivity.&lt;br /&gt;
&lt;br /&gt;
 | '''15/03'''&lt;br /&gt;
*Ajout de la JsonArrayRequest dans la page ListActivity.&lt;br /&gt;
*Nous nous sommes rendus compte au moment de programmer la liaison I2C de l'accéléromètre avec la RFDuino que nous avions oublié de mettre des résistances pull-up entre l'alimentation du composant et les broches SDA et SCL. Les modifications ont donc été faites puis nous avons envoyé finalement notre PCB à la fabrication.&lt;br /&gt;
&lt;br /&gt;
 | '''16/03'''&lt;br /&gt;
*Changement de stratégie au niveau de la requête JsonArrayRequest. On récupère toute la base et ensuite le traitement sera effectuer dans l'application mobile.&lt;br /&gt;
*Rédaction de la partie Altium du wiki.&lt;br /&gt;
*Recherche de docs sur le système bluetooth du RFduino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 9&lt;br /&gt;
 | '''20/03'''&lt;br /&gt;
*Réalisation de différents réglages pour pouvoir utiliser l'application Optali sur l'Android phone fourni par notre professeur (LG G4c)&lt;br /&gt;
*Recherche de docs concernant la partie java responsable de la communication Bluetooth.&lt;br /&gt;
*Reprise de la solution Tesseract pour la lecture de caractères.&lt;br /&gt;
&lt;br /&gt;
 | '''21/03''' (séance supplémentaire de 3 heures)&lt;br /&gt;
*Début du développement de la partie communication entre RFDuino et l'appli mobile. Nous pouvons détecter le RFduino à partir de Android Studio mais nous n'arrivons pas encore à nous connecter dessus directement.&lt;br /&gt;
*Finition de la fonctionnalité tesseract. La lecture de caractères est donc maintenant possible.&lt;br /&gt;
&lt;br /&gt;
 | '''22/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity&lt;br /&gt;
*Connexion possible entre le RFduino et notre appli mobile. Il faut maintenant pouvoir assurer un échange de données via du GATT.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 10&lt;br /&gt;
 | '''27/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity (suite). Utilisation de la solution postman.&lt;br /&gt;
*Mise à jour du wiki pour la partie Altium.&lt;br /&gt;
*Gestion du dépôt git.&lt;br /&gt;
*Récupération de la carte PCB au service EEI.&lt;br /&gt;
&lt;br /&gt;
 | '''29/03'''&lt;br /&gt;
*Mise en place du tri des Produits avec un critère d'ordonnabilité variable&lt;br /&gt;
*Implémentation du champs recherche et action sur la liste&lt;br /&gt;
*Écriture des pages Php consume.php et delete.php pour décrémenter le nombre d'aliment dans le frigo ou le supprimer&lt;br /&gt;
*Récupération des composants&lt;br /&gt;
*Passage au four pour souder les premiers composants en CMS&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 11&lt;br /&gt;
&lt;br /&gt;
 | '''03/04'''&lt;br /&gt;
*Dé-soudage et resoudage de l'accéléromètre.&lt;br /&gt;
*Soudure des composants&lt;br /&gt;
&lt;br /&gt;
 | '''05/04'''&lt;br /&gt;
*Test du Buzzer&lt;br /&gt;
*Code de l'accéléromètre&lt;br /&gt;
*Création de l'Optali box (la boite qui contient le RFduino fixé au frigo)&lt;br /&gt;
*Finition de la fonction 'delete'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 | '''06/04'''&lt;br /&gt;
*Problème pour faire fonctionner le code de l'accéléro. Il faudra le tester électriquement.&lt;br /&gt;
*Implantation du logo de l'appli &lt;br /&gt;
*Debuggage d'une requête de la page 'list'&lt;br /&gt;
*Documentation sur les listes déroulantes sous les EditTexts.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 12 (Interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''11/04''' (3 heures)&lt;br /&gt;
*Après avoir remarqué que le code de l'accéléro ne fonctionnait pas alors qu'il paraît correct, nous avons décidez de vérifier les propriétés électriques de notre montage.&lt;br /&gt;
En observant à l'analyseur logique, il semblerait que l'horloge de la liaison i2C n'est en fait qu'un signal bruité. Il faudra donc retenter de souder le composant quand cela sera possible.&lt;br /&gt;
&lt;br /&gt;
 | '''13/04''' (6 heures)&lt;br /&gt;
*Terminaison du programme RFduino qui fonctionne théoriquement, nous attendons de terminer les dernières soudures pour pouvoir le tester physiquement.&lt;br /&gt;
*En attendant de pouvoir réaliser des soudures, nous avons repris la partie communication bluetooth entre le RFduino et l'appli. Après avoir tenté d'utiliser un programme permettant de gérer le protocole GATT sans savoir envoyer ou recevoir de données, nous nous sommes orientés sur une communication plus basique basée sur de nombreux exemples que l'on peut voir sur le web.&lt;br /&gt;
&lt;br /&gt;
 | '''15/04''' (6 heures)&lt;br /&gt;
*Après s'être rendu compte que la communication plus &amp;quot;basique&amp;quot; que nous voulions utiliser n'était pas compatible avec le BLE, nous sommes une fois de plus repartis de zéro pour cette partie.&lt;br /&gt;
*Après quelques recherches, nous avons trouvé un programme réalisant la gestion d'un socket BLE sur le principe du protocole GATT. Grâce à celui-ci, il nous est possible de recevoir et d'envoyer des données via BLE sur RFduino ainsi que sur l'appli mobile.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 13 (Interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''17/04 (4 heures)'''&lt;br /&gt;
*Ajout du singleton Etat pour partager l'état des aliments dans la réserve alimentaire&lt;br /&gt;
*Transfert des requêtes de la base de donnée vers le singleton pour optimiser l'actualisation et le partage des données.&lt;br /&gt;
*Actualisation automatique des données sur la page principale.&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Semaine 14&lt;br /&gt;
| '''24/04'''&lt;br /&gt;
*Modification de la présentation du wiki&lt;br /&gt;
*Modification de la fonctionnalité du bouton actualiser en changement d'activité&lt;br /&gt;
&lt;br /&gt;
| '''26/04'''&lt;br /&gt;
*Ajout de la page liste recette&lt;br /&gt;
&lt;br /&gt;
| '''27/04''' (3 heures)&lt;br /&gt;
*Ajout des listes recettes dans ListeRecette&lt;br /&gt;
*Ajout des requêtes des recettes sur ListeRecette.java&lt;br /&gt;
*Création du fichier listeRecette.php sur le serveur pour faire la requête SQL et envoyer sur l'application.&lt;br /&gt;
*Soudure des derniers composants pour terminer le PCB. Tout est soudé sauf le bouton poussoir qui devait permettre un reset du RFduino. En cherchant d'ailleurs à souder ce bouton, nous avons retiré malencontreusement la piste de cuivre permettant de répartir le 3.3V du RFduino sur notre PCB. Notre accéléromètre qui ne marchait déjà pas vraiment n'est plus alimenté. Nous ferons sans notre accéléromètre pour le rendu final. &lt;br /&gt;
|-&lt;br /&gt;
|Semaine 15&lt;br /&gt;
|&lt;br /&gt;
|'''03/05'''&lt;br /&gt;
*Remplacement de la LED &amp;quot;LED_Perim&amp;quot; qui était défaillante et ne s'allumait pas quand il le fallait.&lt;br /&gt;
*Début de la réalisation du rapport de projet.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Semaine 16&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===Premières idées===&lt;br /&gt;
&lt;br /&gt;
Voici les premières idées de l'application mobile et du composant fixé sur le frigo.&lt;br /&gt;
[[Fichier:Optali_v1.jpg|400px|thumb|left|Optali version 1]]&lt;br /&gt;
[[Fichier:OptaliBox_v1.jpg|400px|thumb|center|OptaliBox version 1]]&lt;br /&gt;
[[Fichier:P46_schema.jpg|400px|thumb|center|Schéma électrique version 1]]&lt;br /&gt;
&lt;br /&gt;
En s'intéressant aux différentes datasheets ou données constructeur des composants que nous voulons utiliser, nous trouvons indispensable d'utiliser des résistances de 330 Ohms pour l'utilisation des LEDs, pour éviter de les griller.&lt;br /&gt;
&lt;br /&gt;
Edit : Retrait de la résistance R2.&lt;br /&gt;
&lt;br /&gt;
Concernant l'accéléromètre, nous avons choisi un modèle qui nous permet de brancher directement ce module sur une broche du RFDuino. On branchera directement les GPIOs de la RFduino sur les ports SDA et SCL de l'accéléromètre qui correspondent à l'interface I2C pour pouvoir communiquer. On utilisera aussi la broche INT1 pour pouvoir générer des interruptions directement depuis l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
On connectera le buzzer directement à une broche de la RFduino aussi. Concernant celui-ci il reste une incertitude puisqu'on ne trouve aucune information sur le courant à fournir pour l'alimentation de ce composant sur sa datasheet. Après différentes recherches sur Internet, il pourrait être nécessaire d'utiliser un montage amplificateur à transistor comme un émetteur commun pour booster le courant en sortie d'une broche GPIO. Quelques buzzers trouvés avec des données constructeur montrent que ce type de composant nécessite généralement un courant d'environ 30 mA. Nous verrons dans la pratique si cela sera vraiment nécessaire. Par sécurité, on ajoutera un transistor bipolaire dans la liste de matériel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:screen_LED.png|400px|thumb|left|Données constructeur pour LEDs]]&lt;br /&gt;
[[Fichier:screen_accel.png|400px|thumb|center|Datasheet de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
===Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
====Configuration école====&lt;br /&gt;
&lt;br /&gt;
*Pour configurer notre Raspberry Pi, nous utilisons son port série et &amp;quot;minicom&amp;quot;. Pour pouvoir télécharger des paquets, il fallait la connecter au réseau. Nous lui avons donc affecté une adresse IP fixe avec le fichier /etc/network/interfaces. Voici les modifications qui ont été apportées : &lt;br /&gt;
&lt;br /&gt;
   auto eth0&lt;br /&gt;
   iface eth0 inet static&lt;br /&gt;
   address 172.26.78.15&lt;br /&gt;
   netmask 255.255.240.0&lt;br /&gt;
   gateway 172.26.79.254&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il a également fallu ajouter la commande &amp;quot;export http_proxy=http://proxy.polytech-lille.fr:3128&amp;quot; (il faudra effectuer cette commande à chaque démarrage de la Pi) pour pouvoir utiliser le proxy de l'école. &lt;br /&gt;
Nous avons de plus modifier le fichier /etc/resolv.conf avec la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
   nameserver 193.48.57.34&lt;br /&gt;
&lt;br /&gt;
Malgré cela, nous avions des soucis pour nous connecter au réseau. Il y avait en fait un processus dhcp en tâche de fond qui nous empêchait de garder le contenu de resolv.conf. Il a donc fallu trouver ce processus pour le &amp;quot;kill&amp;quot; et pouvoir accéder correctement au réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons du coup pu installer postgresql pour pouvoir configurer une base de données sur notre Pi.&lt;br /&gt;
&lt;br /&gt;
====Configuration à domicile====&lt;br /&gt;
&lt;br /&gt;
Pour nous mettre dans une situation plus fidèle à notre projet, nous avons configuré la raspberry à domicile.&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abords installé Raspbian, puis installé les paquets nécessaire au fonctionnement du serveur.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Openssh-server''': permettre d'accès à distance à la raspberry pour pouvoir y accéder depuis l'école.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Iptables''': pour sécuriser les ports non utilisé et libérer l'accès aux ports qui nous intéressent (ssh 22,http 80,https 443).&amp;lt;br&amp;gt;&lt;br /&gt;
- '''apache2, php5, mysql-server''' : pour mettre en place notre service web.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons rediriger les ports 80 et 22 du routeur pour pouvoir accéder à la raspberry de l'extérieur.&lt;br /&gt;
&lt;br /&gt;
Pour finir, nous avons créer un fichier de config iptables permettant de sécuriser un minimum la base de donnée et de permettre d'autoriser la communication des ports 22, 80 et 443 correspondants aux ports ssh, http et https. le fichier de configuration a été déposé dans le dépôt git. Il nous a fallut le rendre exécutable via un chmod. Puis pour l'exécuter à chaque démarrage du system, dans le fichier /etc/init.d/ taper : &lt;br /&gt;
&lt;br /&gt;
    sudo update-rc.d firewall defaults (si notrefichier s'appelle firewall et s'il est dans init.d)&lt;br /&gt;
&lt;br /&gt;
===Base de donnée===&lt;br /&gt;
&lt;br /&gt;
Nos données alimentaires disponibles par toute la famille doivent être stocké sur un serveur de base de donnée externe (tel une Raspberry pi). Nous nous proposons de créer le diagramme UML représentant cette future base de donnée.&lt;br /&gt;
[[Fichier:Optali_UML.jpg|700px|thumb|center|Diagramme UML base de donnée]]&lt;br /&gt;
&lt;br /&gt;
On créera donc 3 entités. Date, Product et Recipe. &lt;br /&gt;
&lt;br /&gt;
- Product rassemble les aliments qui sont ou ont été dans la réserve alimentaire. NbProdIn permet de connaître le nombre de produits identiques (possibilité de date différentes mais pas de doublons et on garde l'information de quantité. NbProdBought donne une information sur le nombre de produits identique ayant été acheté depuis la mise en service de la base de donnée. Ainsi nous pourrons par la suite proposer une liste de course à l'utilisateur en fonction de la fréquence d'achat des produits.&lt;br /&gt;
&lt;br /&gt;
- Recipe contient les recettes que pourra rentrer l'utilisateur sur l'application. L'utilisateur pourra ainsi se voir proposer des recettes en fonction de ce qu'il a dans son frigo et de ses recettes personnelles.&lt;br /&gt;
&lt;br /&gt;
'''''Edit : On ajoutera une valeur entière dans les tables Date et Unity pour gérer le cas où il existe plusieurs produits (différents ou identiques) avec une date de péremption équivalente. On les appellera NbDate la valeur dans la table Date et NbUnity dans la table Unity. On leur ajoutera de même une clef primaire IdUnity et IdListProduct'''''&lt;br /&gt;
&lt;br /&gt;
On utilisera MySql pour la gestion de nos bases de données. &lt;br /&gt;
La syntaxe pour l'implanter dans la base de donnée à été jointe au dépôt git.&lt;br /&gt;
&lt;br /&gt;
Pour lancer my SQL, on tapera:&lt;br /&gt;
&lt;br /&gt;
   mysql -h localhost -u root -p&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Web service===&lt;br /&gt;
&lt;br /&gt;
====Page init.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet d'initier l'accès à la base de donnée sur le serveur. Elle est requise pour les pages qui suivent.&lt;br /&gt;
&lt;br /&gt;
====Page post.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet l'insertion d'un produit et d'une date via l'application mobile. Elle prend donc ces deux arguments et les insère dans les tables Unity, Product et Date.&lt;br /&gt;
&lt;br /&gt;
====Page get.php====&lt;br /&gt;
&lt;br /&gt;
Page qui envoie la liste des aliments avec leur nom, leur date, leur quantité dans le frigo, la quantité d'exemplaires acheté en tout depuis la mise en place de l'appareil. Le tri se fera directement dans l'application mobile. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Application Mobile===&lt;br /&gt;
&lt;br /&gt;
====Home page====&lt;br /&gt;
&lt;br /&gt;
Page d'accueil permettant d'accéder aux pages d'ajout et de liste des produits disponibles. &amp;lt;br&amp;gt;&lt;br /&gt;
La page permet aussi d'effectuer la connexion entre la rfduino et l'application mobile. Elle montre les alertes (signaux) à l'utilisateur &lt;br /&gt;
et écrit leur signification.&lt;br /&gt;
&lt;br /&gt;
====Page d'ajout====&lt;br /&gt;
&lt;br /&gt;
Pour ajouter un produit et lire une date on utilisera un champ editText pour permettre à l'utilisateur d'écrire &amp;quot;Manuellement&amp;quot; dedans grâce au clavier du smartphone.&amp;lt;br&amp;gt;&lt;br /&gt;
De plus on utilise un bouton qui appellera la caméra pour détecter les caractères d'un produit ou d'une date. Au début nous voulions utiliser un détecteur de code barre, nous l'avons implémenté mais nous avons remarqué que la mise au point sur une surface non plane prend du temps d'autant plus qu'il faut questionner une base de donnée contenant tous les numéro de codes barres utilisés. Nous avons donc prit la décision d'utiliser uniquement la lecture de caractère et nous créerons une liste déroulante sous l'editText pour faciliter l'insertion d'un produit qui a déjà été ajouté. Pour la lecture de caractère, nous utilisons la librairie tesseract.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'envoi, nous utilisons la librairie Volley développé par google.&lt;br /&gt;
&lt;br /&gt;
====Page Liste====&lt;br /&gt;
&lt;br /&gt;
Permet de lister les produits dans la base de donnée. Une série de boutons radio permettent de trier les produits par ordre alphabétique, par date de péremption, par nombre d’occurrence dans la réserve alimentaire, par nombre d'achat depuis la mise en place du système.&amp;lt;br&amp;gt;&lt;br /&gt;
Une colonne permet de sélectionner les aliments désirés (par checkBox) pour ensuite les supprimer via un button &amp;quot;suppr&amp;quot; ou les choisir pour trouver des recettes qui les utilisent.&amp;lt;br&amp;gt;&lt;br /&gt;
Un EditText permet d'effectuer une recherche sur la base de donnée.&lt;br /&gt;
&lt;br /&gt;
===Altium Designer===&lt;br /&gt;
&lt;br /&gt;
Pour permettre au RFDuino de communiquer avec les différents composants, nous aurons besoin de quelques composants électroniques. Afin que cela soit plus esthétique pour la modélisation finale, nous allons créer une carte PCB pour rassembler tous ces composants dessus. On utilisera le logiciel Altium Designer pour cela.&lt;br /&gt;
&lt;br /&gt;
Avant de représenter notre circuit général, nous allons commencer par créer une librairie rassemblant tous les composants que nous utiliserons par la suite, en particulier nos composants CMS (accéléromètre et résistances). Pour ce qui est des LEDs et du buzzer, qui sont traversants, nous pourrons utiliser des headers classiques.&lt;br /&gt;
&lt;br /&gt;
Il a donc fallu créer le schematic ainsi que l'empreinte de nos composants CMS. Voici un exemple avec notre accéléromètre :&lt;br /&gt;
[[Fichier:Accelerosch.PNG|500px|thumb|left|Schematic de l'accéléromètre]]&lt;br /&gt;
[[Fichier:Acceleropcb.PNG|500px|thumb|center|Empreinte PCB de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les fichiers Altium sont disponibles sur notre dépôt GIT. Après cela, nous pouvons maintenant construire notre schematic du montage entier et ensuite le fichier PCB afin de pouvoir graver notre circuit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après quelques modifications sur le montage prévu initialement, c'est-à-dire en enlevant une résistance entre un GPIO et l'alimentation de l'accéléromètre ainsi qu'en rajoutant des résistances pull-up sur les broches de notre liaison i2C (SDA et SCL) et un bouton poussoir en plus pour permettre un reset du RFDuino, nous avons pu créer notre schematic global pour en faire un PCB et l'exporter au format Gerber. De ce fait, le service EEI de Polytech pourra réaliser la gravure de notre carte PCB.&lt;br /&gt;
&lt;br /&gt;
Voici quelques photos pour illustrer notre projet sur Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Finalproto_sch.PNG|400px|thumb|left|Schematic du montage final]]&lt;br /&gt;
[[Fichier:Finalproto_pcb.PNG|400px|thumb|center|PCB du montage final]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On retrouve sur notre PCB final les headers, respectivement de 8 et 5 pins, de part et d'autre de la carte, qui représentent le RFDuino, où nous souderons des broches pour qu'elles puissent être intégrées au RFDuino. On note la présence de 5 autres headers de 2 pins, dont 3 pour des LEDs puis les 2 autres pour le buzzer et le bouton poussoir. Ce qui reste sont les composants CMS avec plusieurs composants à 2 pattes qui sont toutes les résistances de notre montage, celles de protection pour les LEDs et les pull-ups pour l'accéléromètre. Le dernier composant à 8 pattes est donc bien l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quelques difficultés ont été rencontrées durant ce travail notamment concernant les contraintes de construction sur le PCB final. En effet, les composants CMS choisis (surtout l'accéléromètre) étant parfois très petits, Altium n'accepte pas forcément le faible espacement entre les différentes pattes des composants, ce qui pose problème lors de la compilation. De plus, le plan de masse ne prenait pas en compte tous les éléments devant être rattachés à la masse. Il a fallu légèrement déplacer les headers représentant le RFDuino pour que cela soit possible. Il faudra alors peut-être légèrement plier les broches qui viendront s'intégrer sur le RFDuino pour ajouter notre PCB sur le RFDuino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons envoyé nos fichiers Altium au service EEI afin qu'il puisse réaliser physiquement notre carte. Nous nous retrouvons donc avec notre carte PCB récupérée auprès du service EEI. Voici le rendu :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:P46_carte.jpg|400px|thumb|center|Fabrication de notre carte PCB]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir souder nos différents composants, nous avons été rendre visite à Thierry Flamen, responsable du service EEI, afin de passer nos composants CMS au four (résistances et accéléromètre). En effet il était presque impossible de souder tous ces composants manuellement. Après ce passage au four, il nous restait les composants traversants à souder, c'est-à-dire les pins, les LEDs et notre buzzer. Voici le rendu après nos soudures :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:pcbfinal1_p46.jpg|200px|thumb|left|Vue du dessous de notre carte]]&lt;br /&gt;
[[Fichier:pcbfinal2_p46.jpg|200px|thumb|center|Vue du dessus de notre carte]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il manque sur la carte finale notre bouton poussoir qui permettait le reset de notre RFduino. Malheureusement en essayant de souder celui-ci, nous avons retiré du cuivre de la carte, ce qui nous empêche de pouvoir faire circuler le courant dans ce bouton. De plus, la piste avec du cuivre manquant était également responsable de l'alimentation de notre accéléromètre ainsi que d'une LED indiquant la mise sous-tension du contrôleur. Pour le rendu final, nous souderons un fil sur la LED pour pouvoir l'alimenter, cependant il serait plus complexe d'alimenter l'accéléromètre. Celui-ci ne fonctionnait déjà pas correctement de manière électrique. La soudure de ce composant demandait une grande précision puisqu'il est de taille minuscule. Nous n'utiliserons donc pas ce composant dans notre montage final.&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=41665</id>
		<title>IMA4 2016/2017 P46 : Aide anti-gaspillage alimentaire</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=41665"/>
				<updated>2017-05-03T15:30:24Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : /* Feuille d'heures */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
En France, nous jetons en moyenne 21% des aliments que nous achetons, ce qui représente une perte de 100 à 160 euros par an par habitant. Cela est en partie dû à la date limite de consommation associée à chaque produit. En effet, à partir du moment où cette date sera dépassée le consommateur jettera les produits concernés sans réfléchir, même si ceux-ci peuvent parfois être encore mangeables. Plutôt que d'essayer de les convaincre du contraire, il serait judicieux de proposer aux adeptes du gaspillage une aide permettant de gérer tous les aliments dont ils disposent chez eux afin d'éviter la surprise de tomber sur plusieurs produits périmés lorsqu'ils ouvrent la porte de leur frigo. &lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Ce projet permet d'aider les utilisateurs d'une part à mémoriser les denrées périssables qu'ils disposent dans leur réserve alimentaire et d'autre part d'avertir l'utilisateur qu'un événement important a lieu. Ceci peut être une notification qu'un aliment va bientôt dépasser sa date de péremption, que la porte du frigidaire est restée ouverte ou encore que le nombre d'aliments dans la réserve devient critique et qu'il faudra de nouveau l'alimenter. Enfin, le système aidera l'utilisateur à trouver des idées de repas pouvant permettre de consommer les aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Notre prototype permettra d'éviter le gaspillage alimentaire ainsi que d'aider l'utilisateur dans sa gestion du stockage d'aliments.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
&lt;br /&gt;
Notre système sera composé de 3 éléments. &lt;br /&gt;
&lt;br /&gt;
Premièrement, un ou des smartphones appartenant aux utilisateurs. Ces derniers permettront de scanner grâce à son appareil photo, le code barre du produit ainsi que sa date de péremption. Il servira aussi d'interface utilisateur pour notre système. En effet, c'est par cet outil que l'utilisateur pourra lister tous les aliments que l'utilisateur a dans sa base et tout ça en les triant par date de péremption, ou encore voir les recettes possibles pour consommer des aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Deuxièmement, un serveur, de type Raspberry, qui permettra de stocker la base de donnée contenant les aliments de la réserve. Ce serveur sera connecté par wifi.&lt;br /&gt;
 &lt;br /&gt;
Troisièmement, un contrôleur (Rfduino) qui comportera une LED pour indiquer la mise sous tension du contrôleur, une LED pour prévenir l'utilisateur qu'un aliment va bientôt passer sa date de péremption et une dernière LED pour prévenir l'utilisateur que son niveau de réserve est critique ainsi qu'un buzzer et un accéléromètre pour buzzer quand la porte du frigo est restée trop longtemps ouverte. Ce dernier sera fixé au frigo par l'intermédiaire d'un dispositif adapté qui sera un système aimanté qui se pose sur le frigo.&lt;br /&gt;
&lt;br /&gt;
Nous implémenterons donc une application mobile Android qui fera le lien entre les 2 autres systèmes.&lt;br /&gt;
&lt;br /&gt;
Pour la partie électronique que nous aurons à réaliser, nous utiliserons une Breadboard pour faire des premiers tests puis nous créerons une carte PCB pour notre montage final.&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
On utilisera une Raspberry Pi en guise de serveur pour pouvoir s'occuper du stockage de toutes les données dans notre projet puisque notre contrôleur sera incapable de les contenir, ce n'est d'ailleurs pas son but ici.&lt;br /&gt;
&lt;br /&gt;
Notre smartphone fera donc le lien entre notre base de données et notre système embarqué par l'intermédiaire de l'application mobile.&lt;br /&gt;
&lt;br /&gt;
Nous prendrons ici un RFduino puisque celui-ci nous permet d'ajouter des modules comme bon nous semble afin d'adapter le système aux besoins de notre application. Il est également parfaitement compatible avec les applications Android. De plus, nous avons un Bluetooth directement intégré au RFduino pour s'assurer que les liaisons RFduino-application mobile se fassent correctement. &lt;br /&gt;
On notera également que ce contrôleur consomme peu de courant et ne demande qu'une faible tension d'alimentation, critères importants pour ce genre de projet. C'est la raison principale de son utilisation pour être utilisé comme interface physique sur le frigo, en ajoutant également sa taille réduite comparée à la Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
&lt;br /&gt;
Nous avons donc besoin du matériel suivant :&lt;br /&gt;
&lt;br /&gt;
*Raspberry Pi.&lt;br /&gt;
*Clef wifi&lt;br /&gt;
*RFduino (RFD22102 DIP Board, RFD22121 USB Shield, RFD22126 Dual AAA battery shield).&lt;br /&gt;
*2 piles AAA.&lt;br /&gt;
*3 leds tranversantes.&lt;br /&gt;
*3 Résistances 330 Ohm.&lt;br /&gt;
*1 Résistance 10 kOhm.&lt;br /&gt;
*Un buzzer.&lt;br /&gt;
*Accéléromètre.&lt;br /&gt;
*Aimants&lt;br /&gt;
*Un boîtier permettant d'intégrer la RFduino + fixation sur le frigo (modélisation à voir).&lt;br /&gt;
&lt;br /&gt;
Pour le buzzer, l'accéléromètre et les résistances, nous choisirons des composants CMS pour nous permettre d'avoir une carte plus petite.&lt;br /&gt;
&lt;br /&gt;
===Calendrier prévisionnel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Liste des tâches à effectuer====&lt;br /&gt;
&lt;br /&gt;
* Configurer la Raspberry :&lt;br /&gt;
** Installer et configurer le serveur.&lt;br /&gt;
** Créer le diagramme UML de notre future base de données.&lt;br /&gt;
** Créer la base sur le serveur.&lt;br /&gt;
** Configurer la connexion WiFi.&lt;br /&gt;
&lt;br /&gt;
* Monter et programmer la RFduino :&lt;br /&gt;
** Connecter les différents modules au RFduino (accéléromètre, LEDs, buzzer, Batterie, module Bluetooth).&lt;br /&gt;
** Récupérer les consignes du smartphone grâce au Bluetooth.&lt;br /&gt;
** Programmer le comportement du RFduino en fonction des consignes.&lt;br /&gt;
** Construire le boitier final.&lt;br /&gt;
&lt;br /&gt;
* Implémenter l'application mobile Android :&lt;br /&gt;
** Une première activité permettant de se connecter au RFduino et à la Raspberry.&lt;br /&gt;
** Scanner une date et un code barre.&lt;br /&gt;
** Ajout/suppression d'un aliment dans la base de donnée.&lt;br /&gt;
** Envoi d'une consigne au RFduino.&lt;br /&gt;
** Rendre l'interface utilisateur ergonomique (lister aliments, envoyer vers page de recettes avec l'utilisation des aliments bientôt périmés...).&lt;br /&gt;
&lt;br /&gt;
====Calendrier====&lt;br /&gt;
&lt;br /&gt;
Répartition du temps consacré au projet (120h *2) :&lt;br /&gt;
&lt;br /&gt;
*Partie Raspberry : 60h&lt;br /&gt;
*Partie RFduino : 60h&lt;br /&gt;
*Partie développement mobile : 120h&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
&lt;br /&gt;
===Feuille d'heures===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 !  !! Lundi 16-18h !! Mercredi 14-18h !! Jeudi 8-10h&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 1&lt;br /&gt;
&lt;br /&gt;
 | '''23/01''' :  &lt;br /&gt;
* Installation du logiciel Android Studio pour être prêt à commencer l'application mobile.&lt;br /&gt;
* Création du Repository Git sur GitHub : https://github.com/FrancoisLefevre12/Optali.git&lt;br /&gt;
* Réalisation de différents schémas fonctionnels pour se donner une idée du travail à effectuer, aussi bien du software que du hardware.&lt;br /&gt;
* Quelques précisions supplémentaires apportées sur le cahier des charges.&lt;br /&gt;
* Ajout de liens de référence pour la liste de matériel à acheter.&lt;br /&gt;
&lt;br /&gt;
 | '''25/01''' :  &lt;br /&gt;
* Précision des composants requis (accéléromètre, buzzer, LEDs, résistances).&lt;br /&gt;
* Écriture du montage à la main.&lt;br /&gt;
* Étude du fonctionnement de l'accéléromètre, du buzzer.&lt;br /&gt;
* Écriture de la structure de l'application à la main.&lt;br /&gt;
&lt;br /&gt;
 | '''26/01''' :&lt;br /&gt;
*Réalisation graphique de la première page de l'application.&lt;br /&gt;
*Conception du schéma électrique pour tous les composants connectés au RFduino.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 2&lt;br /&gt;
&lt;br /&gt;
 | '''30/01''' :&lt;br /&gt;
*Réalisation du diagramme UML de la base de données qui sera stockée sur la Raspberry Pi&lt;br /&gt;
*Installation de l'outil de développement mobile sur le second PC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 | '''01/02''' :&lt;br /&gt;
*Nous nous sommes d'abord rendus compte que la résistance entre un des GPIO et l'accéléromètre était inutile, nos premiers calculs étaient erronés. Nous ne la garderons donc pas sur notre schéma électrique final.&lt;br /&gt;
*Avancement sur la partie application mobile : réalisation de la page &amp;quot;Ajout&amp;quot; sur laquelle nous tomberons après avoir cliquer sur &amp;quot;ajout&amp;quot; sur la page principale de l'application. Nous avons étendu l'activité principale jusqu'à cette nouvelle activité &amp;quot;Ajout&amp;quot;.&lt;br /&gt;
*Nous avons récupéré notre Raspberry Pi pour commencer à installer notre base de données dessus. Nous avons actuellement quelques problèmes pour nous connecter sur la Raspberry. Nous travaillons sur ce point.&lt;br /&gt;
&lt;br /&gt;
 | '''02/02''' :&lt;br /&gt;
* Application mobile : Mise en place des LEDs sur la home page et de la zone de notification avec les messages associés.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 3&lt;br /&gt;
&lt;br /&gt;
 | '''06/02''' :&lt;br /&gt;
*Nous arrivons à accéder à la Raspberry via le port série de celle-ci. Nous avons également configuré sa connexion Ethernet afin de pouvoir télécharger des paquets dessus et installer notre base de données. &lt;br /&gt;
*Nous rencontrions des problèmes sur le second PC de travail pour récupérer le projet Optali sur Android Studio via notre dépôt GIT. Nous avons pu rectifier ce souci.&lt;br /&gt;
&lt;br /&gt;
 | '''08/02''' :&lt;br /&gt;
*Tentative d'établissement d'un point d'accès WiFi sur notre Raspberry. Nous n'avons pas réussi pour le moment.&lt;br /&gt;
*Restructuration du Repository git.&lt;br /&gt;
*Essai d'importation de la librairie Zxing qui permettra de décoder les code-barres.&lt;br /&gt;
 |&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 4&lt;br /&gt;
&lt;br /&gt;
 | '''13/02'''&lt;br /&gt;
*Configuration du wifi de la Raspberry. &lt;br /&gt;
*Étude d'une mise en place d'un service web via php.&lt;br /&gt;
&lt;br /&gt;
 | '''15/02'''&lt;br /&gt;
*Mise en place d'un lecteur de caractère sur l'application. On utilisera tesseract.&lt;br /&gt;
*Début de la création du PCB via Altium designer. Création d'une librairie pour l'accéléromètre qui est un composant CMS assez spécial. On pourra cependant utiliser des headers classiques pour le buzzer et les LEDs puisque ce sont des composants traversants.&lt;br /&gt;
*Création des premiers fichiers php de connection à la base de donnée et d'insertion d'aliments. Tous ces fichiers seront déposés de la même manière sur le dépôt git.&lt;br /&gt;
&lt;br /&gt;
 | '''16/02'''&lt;br /&gt;
*Adaptation avec prise en compte des cas du code php d'insertion de produits par requête sur la base de donnée.&lt;br /&gt;
*Ajout du code d'implantation de la base de donnée.&lt;br /&gt;
*Altium: Accéléromètre terminé, mise en place des résistances.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 5 (interruption pédagogique)====&lt;br /&gt;
&lt;br /&gt;
 | '''22/02 (3 heures)'''&lt;br /&gt;
*Installation de l'OS de la raspberry.&lt;br /&gt;
*Installation d'Openssh-server, apache2, php5, iptables, mysql-server, php5-mysql.&lt;br /&gt;
*Redirection des ports du routeur vers la raspberry.&lt;br /&gt;
*Configuration de iptables de la raspberry.&lt;br /&gt;
&lt;br /&gt;
 | '''23/02 (2 heures)'''&lt;br /&gt;
*Implantation de la base de donnée sur la raspberry pi.&lt;br /&gt;
|&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 6&lt;br /&gt;
 | '''27/02'''&lt;br /&gt;
*Vérification de la syntaxe de l'insertion de valeurs dans la base de donnée.&lt;br /&gt;
*Création des premières requêtes sur la base de donnée.&lt;br /&gt;
*Finalisation du PCB de l'Optali Board.&lt;br /&gt;
&lt;br /&gt;
 | '''01/03'''&lt;br /&gt;
*Étude et ajout de la librairie volley pour communiquer avec le serveur.&lt;br /&gt;
*Implantation de la fonction d'envoi de données jusqu'au serveur.&lt;br /&gt;
*Après avoir vu avec un professeur, nous avons remarqué que le routage n'était pas adéquat et la disposition des composants n'était pas optimal. Du travail reste donc encore à effectuer.&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 7&lt;br /&gt;
 | '''06/03'''&lt;br /&gt;
*Correction du fichier post.php&lt;br /&gt;
*Finition du protocole d'ajout d'aliment sur la base de donnée. (Code php et page ajout terminée).&lt;br /&gt;
*PCB terminé.&lt;br /&gt;
*Installation d'arduino IDE, doc arduino collecté.&lt;br /&gt;
&lt;br /&gt;
 | '''08/03'''&lt;br /&gt;
*Implémentation de la page ListeIngredient.xml et de l'activité listActivity.java.&lt;br /&gt;
*Documentation sur la procédure de communication bluetooth entre la Rfduino et l'application mobile.&lt;br /&gt;
*Obtention de librairie en lien avec cela.&lt;br /&gt;
*Prise en main de programmation rfduino.&lt;br /&gt;
&lt;br /&gt;
 | '''09/03'''&lt;br /&gt;
*Nous nous sommes rendus compte qu'il était nécessaire de rajouter un bouton poussoir sur notre montage afin de permettre la réinitialisation de notre RFDuino si nécessaire. Nous devons également faire en sorte de pouvoir poser notre carte PCB directement sur notre RFDuino en utilisant des broches. Nous devons donc rajouter ces éléments-ci.&lt;br /&gt;
*Ecriture de la page get.php&lt;br /&gt;
*Premiers tests sur la ListView de l'activité ListActivity.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 8&lt;br /&gt;
 | '''13/03'''&lt;br /&gt;
*Recherche de pistes concernant la programmation RFDuino. Nous pouvons la détecter en bluetooth via un smartphone Android.&lt;br /&gt;
*Finition du Tablelayout et du code java associé sur la page ListActivity.&lt;br /&gt;
&lt;br /&gt;
 | '''15/03'''&lt;br /&gt;
*Ajout de la JsonArrayRequest dans la page ListActivity.&lt;br /&gt;
*Nous nous sommes rendus compte au moment de programmer la liaison I2C de l'accéléromètre avec la RFDuino que nous avions oublié de mettre des résistances pull-up entre l'alimentation du composant et les broches SDA et SCL. Les modifications ont donc été faites puis nous avons envoyé finalement notre PCB à la fabrication.&lt;br /&gt;
&lt;br /&gt;
 | '''16/03'''&lt;br /&gt;
*Changement de stratégie au niveau de la requête JsonArrayRequest. On récupère toute la base et ensuite le traitement sera effectuer dans l'application mobile.&lt;br /&gt;
*Rédaction de la partie Altium du wiki.&lt;br /&gt;
*Recherche de docs sur le système bluetooth du RFduino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 9&lt;br /&gt;
 | '''20/03'''&lt;br /&gt;
*Réalisation de différents réglages pour pouvoir utiliser l'application Optali sur l'Android phone fourni par notre professeur (LG G4c)&lt;br /&gt;
*Recherche de docs concernant la partie java responsable de la communication Bluetooth.&lt;br /&gt;
*Reprise de la solution Tesseract pour la lecture de caractères.&lt;br /&gt;
&lt;br /&gt;
 | '''21/03''' (séance supplémentaire de 3 heures)&lt;br /&gt;
*Début du développement de la partie communication entre RFDuino et l'appli mobile. Nous pouvons détecter le RFduino à partir de Android Studio mais nous n'arrivons pas encore à nous connecter dessus directement.&lt;br /&gt;
*Finition de la fonctionnalité tesseract. La lecture de caractères est donc maintenant possible.&lt;br /&gt;
&lt;br /&gt;
 | '''22/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity&lt;br /&gt;
*Connexion possible entre le RFduino et notre appli mobile. Il faut maintenant pouvoir assurer un échange de données via du GATT.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 10&lt;br /&gt;
 | '''27/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity (suite). Utilisation de la solution postman.&lt;br /&gt;
*Mise à jour du wiki pour la partie Altium.&lt;br /&gt;
*Gestion du dépôt git.&lt;br /&gt;
*Récupération de la carte PCB au service EEI.&lt;br /&gt;
&lt;br /&gt;
 | '''29/03'''&lt;br /&gt;
*Mise en place du tri des Produits avec un critère d'ordonnabilité variable&lt;br /&gt;
*Implémentation du champs recherche et action sur la liste&lt;br /&gt;
*Écriture des pages Php consume.php et delete.php pour décrémenter le nombre d'aliment dans le frigo ou le supprimer&lt;br /&gt;
*Récupération des composants&lt;br /&gt;
*Passage au four pour souder les premiers composants en CMS&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 11&lt;br /&gt;
&lt;br /&gt;
 | '''03/04'''&lt;br /&gt;
*Dé-soudage et resoudage de l'accéléromètre.&lt;br /&gt;
*Soudure des composants&lt;br /&gt;
&lt;br /&gt;
 | '''05/04'''&lt;br /&gt;
*Test du Buzzer&lt;br /&gt;
*Code de l'accéléromètre&lt;br /&gt;
*Création de l'Optali box (la boite qui contient le RFduino fixé au frigo)&lt;br /&gt;
*Finition de la fonction 'delete'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 | '''06/04'''&lt;br /&gt;
*Problème pour faire fonctionner le code de l'accéléro. Il faudra le tester électriquement.&lt;br /&gt;
*Implantation du logo de l'appli &lt;br /&gt;
*Debuggage d'une requête de la page 'list'&lt;br /&gt;
*Documentation sur les listes déroulantes sous les EditTexts.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 12 (Interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''11/04''' (3 heures)&lt;br /&gt;
*Après avoir remarqué que le code de l'accéléro ne fonctionnait pas alors qu'il paraît correct, nous avons décidez de vérifier les propriétés électriques de notre montage.&lt;br /&gt;
En observant à l'analyseur logique, il semblerait que l'horloge de la liaison i2C n'est en fait qu'un signal bruité. Il faudra donc retenter de souder le composant quand cela sera possible.&lt;br /&gt;
&lt;br /&gt;
 | '''13/04''' (6 heures)&lt;br /&gt;
*Terminaison du programme RFduino qui fonctionne théoriquement, nous attendons de terminer les dernières soudures pour pouvoir le tester physiquement.&lt;br /&gt;
*En attendant de pouvoir réaliser des soudures, nous avons repris la partie communication bluetooth entre le RFduino et l'appli. Après avoir tenté d'utiliser un programme permettant de gérer le protocole GATT sans savoir envoyer ou recevoir de données, nous nous sommes orientés sur une communication plus basique basée sur de nombreux exemples que l'on peut voir sur le web.&lt;br /&gt;
&lt;br /&gt;
 | '''15/04''' (6 heures)&lt;br /&gt;
*Après s'être rendu compte que la communication plus &amp;quot;basique&amp;quot; que nous voulions utiliser n'était pas compatible avec le BLE, nous sommes une fois de plus repartis de zéro pour cette partie.&lt;br /&gt;
*Après quelques recherches, nous avons trouvé un programme réalisant la gestion d'un socket BLE sur le principe du protocole GATT. Grâce à celui-ci, il nous est possible de recevoir et d'envoyer des données via BLE sur RFduino ainsi que sur l'appli mobile.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 13 (Interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''17/04 (4 heures)'''&lt;br /&gt;
*Ajout du singleton Etat pour partager l'état des aliments dans la réserve alimentaire&lt;br /&gt;
*Transfert des requêtes de la base de donnée vers le singleton pour optimiser l'actualisation et le partage des données.&lt;br /&gt;
*Actualisation automatique des données sur la page principale.&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Semaine 14&lt;br /&gt;
| '''24/04'''&lt;br /&gt;
*Modification de la présentation du wiki&lt;br /&gt;
*Modification de la fonctionnalité du bouton actualiser en changement d'activité&lt;br /&gt;
&lt;br /&gt;
| '''26/04'''&lt;br /&gt;
*Ajout de la page liste recette&lt;br /&gt;
&lt;br /&gt;
| '''27/04''' (3 heures)&lt;br /&gt;
*Ajout des listes recettes dans ListeRecette&lt;br /&gt;
*Ajout des requêtes des recettes sur ListeRecette.java&lt;br /&gt;
*Création du fichier listeRecette.php sur le serveur pour faire la requête SQL et envoyer sur l'application.&lt;br /&gt;
*Soudure des derniers composants pour terminer le PCB. Tout est soudé sauf le bouton poussoir qui devait permettre un reset du RFduino. En cherchant d'ailleurs à souder ce bouton, nous avons retiré malencontreusement la piste de cuivre permettant de répartir le 3.3V du RFduino sur notre PCB. Notre accéléromètre qui ne marchait déjà pas vraiment n'est plus alimenté. Nous ferons sans notre accéléromètre pour le rendu final. &lt;br /&gt;
|-&lt;br /&gt;
|Semaine 15&lt;br /&gt;
|&lt;br /&gt;
|'''03/05'''&lt;br /&gt;
*Remplacement de la LED &amp;quot;LED_Perim&amp;quot; qui était défaillante et ne s'allumait pas quand il le fallait.&lt;br /&gt;
*Début de la réalisation du rapport de projet.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Semaine 16&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===Premières idées===&lt;br /&gt;
&lt;br /&gt;
Voici les premières idées de l'application mobile et du composant fixé sur le frigo.&lt;br /&gt;
[[Fichier:Optali_v1.jpg|400px|thumb|left|Optali version 1]]&lt;br /&gt;
[[Fichier:OptaliBox_v1.jpg|400px|thumb|center|OptaliBox version 1]]&lt;br /&gt;
[[Fichier:P46_schema.jpg|400px|thumb|center|Schéma électrique version 1]]&lt;br /&gt;
&lt;br /&gt;
En s'intéressant aux différentes datasheets ou données constructeur des composants que nous voulons utiliser, nous trouvons indispensable d'utiliser des résistances de 330 Ohms pour l'utilisation des LEDs, pour éviter de les griller.&lt;br /&gt;
&lt;br /&gt;
Edit : Retrait de la résistance R2.&lt;br /&gt;
&lt;br /&gt;
Concernant l'accéléromètre, nous avons choisi un modèle qui nous permet de brancher directement ce module sur une broche du RFDuino. On branchera directement les GPIOs de la RFduino sur les ports SDA et SCL de l'accéléromètre qui correspondent à l'interface I2C pour pouvoir communiquer. On utilisera aussi la broche INT1 pour pouvoir générer des interruptions directement depuis l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
On connectera le buzzer directement à une broche de la RFduino aussi. Concernant celui-ci il reste une incertitude puisqu'on ne trouve aucune information sur le courant à fournir pour l'alimentation de ce composant sur sa datasheet. Après différentes recherches sur Internet, il pourrait être nécessaire d'utiliser un montage amplificateur à transistor comme un émetteur commun pour booster le courant en sortie d'une broche GPIO. Quelques buzzers trouvés avec des données constructeur montrent que ce type de composant nécessite généralement un courant d'environ 30 mA. Nous verrons dans la pratique si cela sera vraiment nécessaire. Par sécurité, on ajoutera un transistor bipolaire dans la liste de matériel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:screen_LED.png|400px|thumb|left|Données constructeur pour LEDs]]&lt;br /&gt;
[[Fichier:screen_accel.png|400px|thumb|center|Datasheet de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
===Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
====Configuration école====&lt;br /&gt;
&lt;br /&gt;
*Pour configurer notre Raspberry Pi, nous utilisons son port série et &amp;quot;minicom&amp;quot;. Pour pouvoir télécharger des paquets, il fallait la connecter au réseau. Nous lui avons donc affecté une adresse IP fixe avec le fichier /etc/network/interfaces. Voici les modifications qui ont été apportées : &lt;br /&gt;
&lt;br /&gt;
   auto eth0&lt;br /&gt;
   iface eth0 inet static&lt;br /&gt;
   address 172.26.78.15&lt;br /&gt;
   netmask 255.255.240.0&lt;br /&gt;
   gateway 172.26.79.254&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il a également fallu ajouter la commande &amp;quot;export http_proxy=http://proxy.polytech-lille.fr:3128&amp;quot; (il faudra effectuer cette commande à chaque démarrage de la Pi) pour pouvoir utiliser le proxy de l'école. &lt;br /&gt;
Nous avons de plus modifier le fichier /etc/resolv.conf avec la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
   nameserver 193.48.57.34&lt;br /&gt;
&lt;br /&gt;
Malgré cela, nous avions des soucis pour nous connecter au réseau. Il y avait en fait un processus dhcp en tâche de fond qui nous empêchait de garder le contenu de resolv.conf. Il a donc fallu trouver ce processus pour le &amp;quot;kill&amp;quot; et pouvoir accéder correctement au réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons du coup pu installer postgresql pour pouvoir configurer une base de données sur notre Pi.&lt;br /&gt;
&lt;br /&gt;
====Configuration à domicile====&lt;br /&gt;
&lt;br /&gt;
Pour nous mettre dans une situation plus fidèle à notre projet, nous avons configuré la raspberry à domicile.&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abords installé Raspbian, puis installé les paquets nécessaire au fonctionnement du serveur.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Openssh-server''': permettre d'accès à distance à la raspberry pour pouvoir y accéder depuis l'école.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Iptables''': pour sécuriser les ports non utilisé et libérer l'accès aux ports qui nous intéressent (ssh 22,http 80,https 443).&amp;lt;br&amp;gt;&lt;br /&gt;
- '''apache2, php5, mysql-server''' : pour mettre en place notre service web.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons rediriger les ports 80 et 22 du routeur pour pouvoir accéder à la raspberry de l'extérieur.&lt;br /&gt;
&lt;br /&gt;
Pour finir, nous avons créer un fichier de config iptables permettant de sécuriser un minimum la base de donnée et de permettre d'autoriser la communication des ports 22, 80 et 443 correspondants aux ports ssh, http et https. le fichier de configuration a été déposé dans le dépôt git. Il nous a fallut le rendre exécutable via un chmod. Puis pour l'exécuter à chaque démarrage du system, dans le fichier /etc/init.d/ taper : &lt;br /&gt;
&lt;br /&gt;
    sudo update-rc.d firewall defaults (si notrefichier s'appelle firewall et s'il est dans init.d)&lt;br /&gt;
&lt;br /&gt;
===Base de donnée===&lt;br /&gt;
&lt;br /&gt;
Nos données alimentaires disponibles par toute la famille doivent être stocké sur un serveur de base de donnée externe (tel une Raspberry pi). Nous nous proposons de créer le diagramme UML représentant cette future base de donnée.&lt;br /&gt;
[[Fichier:Optali_UML.jpg|700px|thumb|center|Diagramme UML base de donnée]]&lt;br /&gt;
&lt;br /&gt;
On créera donc 3 entités. Date, Product et Recipe. &lt;br /&gt;
&lt;br /&gt;
- Product rassemble les aliments qui sont ou ont été dans la réserve alimentaire. NbProdIn permet de connaître le nombre de produits identiques (possibilité de date différentes mais pas de doublons et on garde l'information de quantité. NbProdBought donne une information sur le nombre de produits identique ayant été acheté depuis la mise en service de la base de donnée. Ainsi nous pourrons par la suite proposer une liste de course à l'utilisateur en fonction de la fréquence d'achat des produits.&lt;br /&gt;
&lt;br /&gt;
- Recipe contient les recettes que pourra rentrer l'utilisateur sur l'application. L'utilisateur pourra ainsi se voir proposer des recettes en fonction de ce qu'il a dans son frigo et de ses recettes personnelles.&lt;br /&gt;
&lt;br /&gt;
'''''Edit : On ajoutera une valeur entière dans les tables Date et Unity pour gérer le cas où il existe plusieurs produits (différents ou identiques) avec une date de péremption équivalente. On les appellera NbDate la valeur dans la table Date et NbUnity dans la table Unity. On leur ajoutera de même une clef primaire IdUnity et IdListProduct'''''&lt;br /&gt;
&lt;br /&gt;
On utilisera MySql pour la gestion de nos bases de données. &lt;br /&gt;
La syntaxe pour l'implanter dans la base de donnée à été jointe au dépôt git.&lt;br /&gt;
&lt;br /&gt;
Pour lancer my SQL, on tapera:&lt;br /&gt;
&lt;br /&gt;
   mysql -h localhost -u root -p&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Web service===&lt;br /&gt;
&lt;br /&gt;
====Page init.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet d'initier l'accès à la base de donnée sur le serveur. Elle est requise pour les pages qui suivent.&lt;br /&gt;
&lt;br /&gt;
====Page post.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet l'insertion d'un produit et d'une date via l'application mobile. Elle prend donc ces deux arguments et les insère dans les tables Unity, Product et Date.&lt;br /&gt;
&lt;br /&gt;
====Page get.php====&lt;br /&gt;
&lt;br /&gt;
Page qui envoie la liste des aliments avec leur nom, leur date, leur quantité dans le frigo, la quantité d'exemplaires acheté en tout depuis la mise en place de l'appareil. Le tri se fera directement dans l'application mobile. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Application Mobile===&lt;br /&gt;
&lt;br /&gt;
====Home page====&lt;br /&gt;
&lt;br /&gt;
Page d'accueil permettant d'accéder aux pages d'ajout et de liste des produits disponibles. &amp;lt;br&amp;gt;&lt;br /&gt;
La page permet aussi d'effectuer la connexion entre la rfduino et l'application mobile. Elle montre les alertes (signaux) à l'utilisateur &lt;br /&gt;
et écrit leur signification.&lt;br /&gt;
&lt;br /&gt;
====Page d'ajout====&lt;br /&gt;
&lt;br /&gt;
Pour ajouter un produit et lire une date on utilisera un champ editText pour permettre à l'utilisateur d'écrire &amp;quot;Manuellement&amp;quot; dedans grâce au clavier du smartphone.&amp;lt;br&amp;gt;&lt;br /&gt;
De plus on utilise un bouton qui appellera la caméra pour détecter les caractères d'un produit ou d'une date. Au début nous voulions utiliser un détecteur de code barre, nous l'avons implémenté mais nous avons remarqué que la mise au point sur une surface non plane prend du temps d'autant plus qu'il faut questionner une base de donnée contenant tous les numéro de codes barres utilisés. Nous avons donc prit la décision d'utiliser uniquement la lecture de caractère et nous créerons une liste déroulante sous l'editText pour faciliter l'insertion d'un produit qui a déjà été ajouté. Pour la lecture de caractère, nous utilisons la librairie tesseract.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'envoi, nous utilisons la librairie Volley développé par google.&lt;br /&gt;
&lt;br /&gt;
====Page Liste====&lt;br /&gt;
&lt;br /&gt;
Permet de lister les produits dans la base de donnée. Une série de boutons radio permettent de trier les produits par ordre alphabétique, par date de péremption, par nombre d’occurrence dans la réserve alimentaire, par nombre d'achat depuis la mise en place du système.&amp;lt;br&amp;gt;&lt;br /&gt;
Une colonne permet de sélectionner les aliments désirés (par checkBox) pour ensuite les supprimer via un button &amp;quot;suppr&amp;quot; ou les choisir pour trouver des recettes qui les utilisent.&amp;lt;br&amp;gt;&lt;br /&gt;
Un EditText permet d'effectuer une recherche sur la base de donnée.&lt;br /&gt;
&lt;br /&gt;
===Altium Designer===&lt;br /&gt;
&lt;br /&gt;
Pour permettre au RFDuino de communiquer avec les différents composants, nous aurons besoin de quelques composants électroniques. Afin que cela soit plus esthétique pour la modélisation finale, nous allons créer une carte PCB pour rassembler tous ces composants dessus. On utilisera le logiciel Altium Designer pour cela.&lt;br /&gt;
&lt;br /&gt;
Avant de représenter notre circuit général, nous allons commencer par créer une librairie rassemblant tous les composants que nous utiliserons par la suite, en particulier nos composants CMS (accéléromètre et résistances). Pour ce qui est des LEDs et du buzzer, qui sont traversants, nous pourrons utiliser des headers classiques.&lt;br /&gt;
&lt;br /&gt;
Il a donc fallu créer le schematic ainsi que l'empreinte de nos composants CMS. Voici un exemple avec notre accéléromètre :&lt;br /&gt;
[[Fichier:Accelerosch.PNG|500px|thumb|left|Schematic de l'accéléromètre]]&lt;br /&gt;
[[Fichier:Acceleropcb.PNG|500px|thumb|center|Empreinte PCB de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les fichiers Altium sont disponibles sur notre dépôt GIT. Après cela, nous pouvons maintenant construire notre schematic du montage entier et ensuite le fichier PCB afin de pouvoir graver notre circuit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après quelques modifications sur le montage prévu initialement, c'est-à-dire en enlevant une résistance entre un GPIO et l'alimentation de l'accéléromètre ainsi qu'en rajoutant des résistances pull-up sur les broches de notre liaison i2C (SDA et SCL) et un bouton poussoir en plus pour permettre un reset du RFDuino, nous avons pu créer notre schematic global pour en faire un PCB et l'exporter au format Gerber. De ce fait, le service EEI de Polytech pourra réaliser la gravure de notre carte PCB.&lt;br /&gt;
&lt;br /&gt;
Voici quelques photos pour illustrer notre projet sur Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Finalproto_sch.PNG|400px|thumb|left|Schematic du montage final]]&lt;br /&gt;
[[Fichier:Finalproto_pcb.PNG|400px|thumb|center|PCB du montage final]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On retrouve sur notre PCB final les headers, respectivement de 8 et 5 pins, de part et d'autre de la carte, qui représentent le RFDuino, où nous souderons des broches pour qu'elles puissent être intégrées au RFDuino. On note la présence de 5 autres headers de 2 pins, dont 3 pour des LEDs puis les 2 autres pour le buzzer et le bouton poussoir. Ce qui reste sont les composants CMS avec plusieurs composants à 2 pattes qui sont toutes les résistances de notre montage, celles de protection pour les LEDs et les pull-ups pour l'accéléromètre. Le dernier composant à 8 pattes est donc bien l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quelques difficultés ont été rencontrées durant ce travail notamment concernant les contraintes de construction sur le PCB final. En effet, les composants CMS choisis (surtout l'accéléromètre) étant parfois très petits, Altium n'accepte pas forcément le faible espacement entre les différentes pattes des composants, ce qui pose problème lors de la compilation. De plus, le plan de masse ne prenait pas en compte tous les éléments devant être rattachés à la masse. Il a fallu légèrement déplacer les headers représentant le RFDuino pour que cela soit possible. Il faudra alors peut-être légèrement plier les broches qui viendront s'intégrer sur le RFDuino pour ajouter notre PCB sur le RFDuino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons envoyé nos fichiers Altium au service EEI afin qu'il puisse réaliser physiquement notre carte. Nous nous retrouvons donc avec notre carte PCB récupérée auprès du service EEI. Voici le rendu :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:P46_carte.jpg|400px|thumb|center|Fabrication de notre carte PCB]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir souder nos différents composants, nous avons été rendre visite à Thierry Flamen, responsable du service EEI, afin de passer nos composants CMS au four (résistances et accéléromètre). En effet il était presque impossible de souder tous ces composants manuellement. Après ce passage au four, il nous restait les composants traversants à souder, c'est-à-dire les pins, les LEDs et notre buzzer. Voici le rendu après nos soudures :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:pcbfinal1_p46.jpg|200px|thumb|left|Vue du dessous de notre carte]]&lt;br /&gt;
[[Fichier:pcbfinal2_p46.jpg|200px|thumb|center|Vue du dessus de notre carte]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il manque sur la carte finale notre bouton poussoir qui permettait le reset de notre RFduino. Malheureusement en essayant de souder celui-ci, nous avons retiré du cuivre de la carte, ce qui nous empêche de pouvoir faire circuler le courant dans ce bouton. De plus, la piste avec du cuivre manquant était également responsable de l'alimentation de notre accéléromètre ainsi que d'une LED indiquant la mise sous-tension du contrôleur. Pour le rendu final, nous souderons un fil sur la LED pour pouvoir l'alimenter, cependant il serait plus complexe d'alimenter l'accéléromètre. Celui-ci ne fonctionnait déjà pas correctement de manière électrique. La soudure de ce composant demandait une grande précision puisqu'il est de taille minuscule. Nous n'utiliserons donc pas ce composant dans notre montage final.&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=41622</id>
		<title>IMA4 2016/2017 P46 : Aide anti-gaspillage alimentaire</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=41622"/>
				<updated>2017-05-01T18:54:55Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : /* Altium Designer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
En France, nous jetons en moyenne 21% des aliments que nous achetons, ce qui représente une perte de 100 à 160 euros par an par habitant. Cela est en partie dû à la date limite de consommation associée à chaque produit. En effet, à partir du moment où cette date sera dépassée le consommateur jettera les produits concernés sans réfléchir, même si ceux-ci peuvent parfois être encore mangeables. Plutôt que d'essayer de les convaincre du contraire, il serait judicieux de proposer aux adeptes du gaspillage une aide permettant de gérer tous les aliments dont ils disposent chez eux afin d'éviter la surprise de tomber sur plusieurs produits périmés lorsqu'ils ouvrent la porte de leur frigo. &lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Ce projet permet d'aider les utilisateurs d'une part à mémoriser les denrées périssables qu'ils disposent dans leur réserve alimentaire et d'autre part d'avertir l'utilisateur qu'un événement important a lieu. Ceci peut être une notification qu'un aliment va bientôt dépasser sa date de péremption, que la porte du frigidaire est restée ouverte ou encore que le nombre d'aliments dans la réserve devient critique et qu'il faudra de nouveau l'alimenter. Enfin, le système aidera l'utilisateur à trouver des idées de repas pouvant permettre de consommer les aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Notre prototype permettra d'éviter le gaspillage alimentaire ainsi que d'aider l'utilisateur dans sa gestion du stockage d'aliments.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
&lt;br /&gt;
Notre système sera composé de 3 éléments. &lt;br /&gt;
&lt;br /&gt;
Premièrement, un ou des smartphones appartenant aux utilisateurs. Ces derniers permettront de scanner grâce à son appareil photo, le code barre du produit ainsi que sa date de péremption. Il servira aussi d'interface utilisateur pour notre système. En effet, c'est par cet outil que l'utilisateur pourra lister tous les aliments que l'utilisateur a dans sa base et tout ça en les triant par date de péremption, ou encore voir les recettes possibles pour consommer des aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Deuxièmement, un serveur, de type Raspberry, qui permettra de stocker la base de donnée contenant les aliments de la réserve. Ce serveur sera connecté par wifi.&lt;br /&gt;
 &lt;br /&gt;
Troisièmement, un contrôleur (Rfduino) qui comportera une LED pour indiquer la mise sous tension du contrôleur, une LED pour prévenir l'utilisateur qu'un aliment va bientôt passer sa date de péremption et une dernière LED pour prévenir l'utilisateur que son niveau de réserve est critique ainsi qu'un buzzer et un accéléromètre pour buzzer quand la porte du frigo est restée trop longtemps ouverte. Ce dernier sera fixé au frigo par l'intermédiaire d'un dispositif adapté qui sera un système aimanté qui se pose sur le frigo.&lt;br /&gt;
&lt;br /&gt;
Nous implémenterons donc une application mobile Android qui fera le lien entre les 2 autres systèmes.&lt;br /&gt;
&lt;br /&gt;
Pour la partie électronique que nous aurons à réaliser, nous utiliserons une Breadboard pour faire des premiers tests puis nous créerons une carte PCB pour notre montage final.&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
On utilisera une Raspberry Pi en guise de serveur pour pouvoir s'occuper du stockage de toutes les données dans notre projet puisque notre contrôleur sera incapable de les contenir, ce n'est d'ailleurs pas son but ici.&lt;br /&gt;
&lt;br /&gt;
Notre smartphone fera donc le lien entre notre base de données et notre système embarqué par l'intermédiaire de l'application mobile.&lt;br /&gt;
&lt;br /&gt;
Nous prendrons ici un RFduino puisque celui-ci nous permet d'ajouter des modules comme bon nous semble afin d'adapter le système aux besoins de notre application. Il est également parfaitement compatible avec les applications Android. De plus, nous avons un Bluetooth directement intégré au RFduino pour s'assurer que les liaisons RFduino-application mobile se fassent correctement. &lt;br /&gt;
On notera également que ce contrôleur consomme peu de courant et ne demande qu'une faible tension d'alimentation, critères importants pour ce genre de projet. C'est la raison principale de son utilisation pour être utilisé comme interface physique sur le frigo, en ajoutant également sa taille réduite comparée à la Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
&lt;br /&gt;
Nous avons donc besoin du matériel suivant :&lt;br /&gt;
&lt;br /&gt;
*Raspberry Pi.&lt;br /&gt;
*Clef wifi&lt;br /&gt;
*RFduino (RFD22102 DIP Board, RFD22121 USB Shield, RFD22126 Dual AAA battery shield).&lt;br /&gt;
*2 piles AAA.&lt;br /&gt;
*3 leds tranversantes.&lt;br /&gt;
*3 Résistances 330 Ohm.&lt;br /&gt;
*1 Résistance 10 kOhm.&lt;br /&gt;
*Un buzzer.&lt;br /&gt;
*Accéléromètre.&lt;br /&gt;
*Aimants&lt;br /&gt;
*Un boîtier permettant d'intégrer la RFduino + fixation sur le frigo (modélisation à voir).&lt;br /&gt;
&lt;br /&gt;
Pour le buzzer, l'accéléromètre et les résistances, nous choisirons des composants CMS pour nous permettre d'avoir une carte plus petite.&lt;br /&gt;
&lt;br /&gt;
===Calendrier prévisionnel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Liste des tâches à effectuer====&lt;br /&gt;
&lt;br /&gt;
* Configurer la Raspberry :&lt;br /&gt;
** Installer et configurer le serveur.&lt;br /&gt;
** Créer le diagramme UML de notre future base de données.&lt;br /&gt;
** Créer la base sur le serveur.&lt;br /&gt;
** Configurer la connexion WiFi.&lt;br /&gt;
&lt;br /&gt;
* Monter et programmer la RFduino :&lt;br /&gt;
** Connecter les différents modules au RFduino (accéléromètre, LEDs, buzzer, Batterie, module Bluetooth).&lt;br /&gt;
** Récupérer les consignes du smartphone grâce au Bluetooth.&lt;br /&gt;
** Programmer le comportement du RFduino en fonction des consignes.&lt;br /&gt;
** Construire le boitier final.&lt;br /&gt;
&lt;br /&gt;
* Implémenter l'application mobile Android :&lt;br /&gt;
** Une première activité permettant de se connecter au RFduino et à la Raspberry.&lt;br /&gt;
** Scanner une date et un code barre.&lt;br /&gt;
** Ajout/suppression d'un aliment dans la base de donnée.&lt;br /&gt;
** Envoi d'une consigne au RFduino.&lt;br /&gt;
** Rendre l'interface utilisateur ergonomique (lister aliments, envoyer vers page de recettes avec l'utilisation des aliments bientôt périmés...).&lt;br /&gt;
&lt;br /&gt;
====Calendrier====&lt;br /&gt;
&lt;br /&gt;
Répartition du temps consacré au projet (120h *2) :&lt;br /&gt;
&lt;br /&gt;
*Partie Raspberry : 60h&lt;br /&gt;
*Partie RFduino : 60h&lt;br /&gt;
*Partie développement mobile : 120h&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
&lt;br /&gt;
===Feuille d'heures===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 !  !! Lundi 16-18h !! Mercredi 14-18h !! Jeudi 8-10h&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 1&lt;br /&gt;
&lt;br /&gt;
 | '''23/01''' :  &lt;br /&gt;
* Installation du logiciel Android Studio pour être prêt à commencer l'application mobile.&lt;br /&gt;
* Création du Repository Git sur GitHub : https://github.com/FrancoisLefevre12/Optali.git&lt;br /&gt;
* Réalisation de différents schémas fonctionnels pour se donner une idée du travail à effectuer, aussi bien du software que du hardware.&lt;br /&gt;
* Quelques précisions supplémentaires apportées sur le cahier des charges.&lt;br /&gt;
* Ajout de liens de référence pour la liste de matériel à acheter.&lt;br /&gt;
&lt;br /&gt;
 | '''25/01''' :  &lt;br /&gt;
* Précision des composants requis (accéléromètre, buzzer, LEDs, résistances).&lt;br /&gt;
* Écriture du montage à la main.&lt;br /&gt;
* Étude du fonctionnement de l'accéléromètre, du buzzer.&lt;br /&gt;
* Écriture de la structure de l'application à la main.&lt;br /&gt;
&lt;br /&gt;
 | '''26/01''' :&lt;br /&gt;
*Réalisation graphique de la première page de l'application.&lt;br /&gt;
*Conception du schéma électrique pour tous les composants connectés au RFduino.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 2&lt;br /&gt;
&lt;br /&gt;
 | '''30/01''' :&lt;br /&gt;
*Réalisation du diagramme UML de la base de données qui sera stockée sur la Raspberry Pi&lt;br /&gt;
*Installation de l'outil de développement mobile sur le second PC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 | '''01/02''' :&lt;br /&gt;
*Nous nous sommes d'abord rendus compte que la résistance entre un des GPIO et l'accéléromètre était inutile, nos premiers calculs étaient erronés. Nous ne la garderons donc pas sur notre schéma électrique final.&lt;br /&gt;
*Avancement sur la partie application mobile : réalisation de la page &amp;quot;Ajout&amp;quot; sur laquelle nous tomberons après avoir cliquer sur &amp;quot;ajout&amp;quot; sur la page principale de l'application. Nous avons étendu l'activité principale jusqu'à cette nouvelle activité &amp;quot;Ajout&amp;quot;.&lt;br /&gt;
*Nous avons récupéré notre Raspberry Pi pour commencer à installer notre base de données dessus. Nous avons actuellement quelques problèmes pour nous connecter sur la Raspberry. Nous travaillons sur ce point.&lt;br /&gt;
&lt;br /&gt;
 | '''02/02''' :&lt;br /&gt;
* Application mobile : Mise en place des LEDs sur la home page et de la zone de notification avec les messages associés.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 3&lt;br /&gt;
&lt;br /&gt;
 | '''06/02''' :&lt;br /&gt;
*Nous arrivons à accéder à la Raspberry via le port série de celle-ci. Nous avons également configuré sa connexion Ethernet afin de pouvoir télécharger des paquets dessus et installer notre base de données. &lt;br /&gt;
*Nous rencontrions des problèmes sur le second PC de travail pour récupérer le projet Optali sur Android Studio via notre dépôt GIT. Nous avons pu rectifier ce souci.&lt;br /&gt;
&lt;br /&gt;
 | '''08/02''' :&lt;br /&gt;
*Tentative d'établissement d'un point d'accès WiFi sur notre Raspberry. Nous n'avons pas réussi pour le moment.&lt;br /&gt;
*Restructuration du Repository git.&lt;br /&gt;
*Essai d'importation de la librairie Zxing qui permettra de décoder les code-barres.&lt;br /&gt;
 |&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 4&lt;br /&gt;
&lt;br /&gt;
 | '''13/02'''&lt;br /&gt;
*Configuration du wifi de la Raspberry. &lt;br /&gt;
*Étude d'une mise en place d'un service web via php.&lt;br /&gt;
&lt;br /&gt;
 | '''15/02'''&lt;br /&gt;
*Mise en place d'un lecteur de caractère sur l'application. On utilisera tesseract.&lt;br /&gt;
*Début de la création du PCB via Altium designer. Création d'une librairie pour l'accéléromètre qui est un composant CMS assez spécial. On pourra cependant utiliser des headers classiques pour le buzzer et les LEDs puisque ce sont des composants traversants.&lt;br /&gt;
*Création des premiers fichiers php de connection à la base de donnée et d'insertion d'aliments. Tous ces fichiers seront déposés de la même manière sur le dépôt git.&lt;br /&gt;
&lt;br /&gt;
 | '''16/02'''&lt;br /&gt;
*Adaptation avec prise en compte des cas du code php d'insertion de produits par requête sur la base de donnée.&lt;br /&gt;
*Ajout du code d'implantation de la base de donnée.&lt;br /&gt;
*Altium: Accéléromètre terminé, mise en place des résistances.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 5 (interruption pédagogique)====&lt;br /&gt;
&lt;br /&gt;
 | '''22/02 (3 heures)'''&lt;br /&gt;
*Installation de l'OS de la raspberry.&lt;br /&gt;
*Installation d'Openssh-server, apache2, php5, iptables, mysql-server, php5-mysql.&lt;br /&gt;
*Redirection des ports du routeur vers la raspberry.&lt;br /&gt;
*Configuration de iptables de la raspberry.&lt;br /&gt;
&lt;br /&gt;
 | '''23/02 (2 heures)'''&lt;br /&gt;
*Implantation de la base de donnée sur la raspberry pi.&lt;br /&gt;
|&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 6&lt;br /&gt;
 | '''27/02'''&lt;br /&gt;
*Vérification de la syntaxe de l'insertion de valeurs dans la base de donnée.&lt;br /&gt;
*Création des premières requêtes sur la base de donnée.&lt;br /&gt;
*Finalisation du PCB de l'Optali Board.&lt;br /&gt;
&lt;br /&gt;
 | '''01/03'''&lt;br /&gt;
*Étude et ajout de la librairie volley pour communiquer avec le serveur.&lt;br /&gt;
*Implantation de la fonction d'envoi de données jusqu'au serveur.&lt;br /&gt;
*Après avoir vu avec un professeur, nous avons remarqué que le routage n'était pas adéquat et la disposition des composants n'était pas optimal. Du travail reste donc encore à effectuer.&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 7&lt;br /&gt;
 | '''06/03'''&lt;br /&gt;
*Correction du fichier post.php&lt;br /&gt;
*Finition du protocole d'ajout d'aliment sur la base de donnée. (Code php et page ajout terminée).&lt;br /&gt;
*PCB terminé.&lt;br /&gt;
*Installation d'arduino IDE, doc arduino collecté.&lt;br /&gt;
&lt;br /&gt;
 | '''08/03'''&lt;br /&gt;
*Implémentation de la page ListeIngredient.xml et de l'activité listActivity.java.&lt;br /&gt;
*Documentation sur la procédure de communication bluetooth entre la Rfduino et l'application mobile.&lt;br /&gt;
*Obtention de librairie en lien avec cela.&lt;br /&gt;
*Prise en main de programmation rfduino.&lt;br /&gt;
&lt;br /&gt;
 | '''09/03'''&lt;br /&gt;
*Nous nous sommes rendus compte qu'il était nécessaire de rajouter un bouton poussoir sur notre montage afin de permettre la réinitialisation de notre RFDuino si nécessaire. Nous devons également faire en sorte de pouvoir poser notre carte PCB directement sur notre RFDuino en utilisant des broches. Nous devons donc rajouter ces éléments-ci.&lt;br /&gt;
*Ecriture de la page get.php&lt;br /&gt;
*Premiers tests sur la ListView de l'activité ListActivity.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 8&lt;br /&gt;
 | '''13/03'''&lt;br /&gt;
*Recherche de pistes concernant la programmation RFDuino. Nous pouvons la détecter en bluetooth via un smartphone Android.&lt;br /&gt;
*Finition du Tablelayout et du code java associé sur la page ListActivity.&lt;br /&gt;
&lt;br /&gt;
 | '''15/03'''&lt;br /&gt;
*Ajout de la JsonArrayRequest dans la page ListActivity.&lt;br /&gt;
*Nous nous sommes rendus compte au moment de programmer la liaison I2C de l'accéléromètre avec la RFDuino que nous avions oublié de mettre des résistances pull-up entre l'alimentation du composant et les broches SDA et SCL. Les modifications ont donc été faites puis nous avons envoyé finalement notre PCB à la fabrication.&lt;br /&gt;
&lt;br /&gt;
 | '''16/03'''&lt;br /&gt;
*Changement de stratégie au niveau de la requête JsonArrayRequest. On récupère toute la base et ensuite le traitement sera effectuer dans l'application mobile.&lt;br /&gt;
*Rédaction de la partie Altium du wiki.&lt;br /&gt;
*Recherche de docs sur le système bluetooth du RFduino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 9&lt;br /&gt;
 | '''20/03'''&lt;br /&gt;
*Réalisation de différents réglages pour pouvoir utiliser l'application Optali sur l'Android phone fourni par notre professeur (LG G4c)&lt;br /&gt;
*Recherche de docs concernant la partie java responsable de la communication Bluetooth.&lt;br /&gt;
*Reprise de la solution Tesseract pour la lecture de caractères.&lt;br /&gt;
&lt;br /&gt;
 | '''21/03''' (séance supplémentaire de 3 heures)&lt;br /&gt;
*Début du développement de la partie communication entre RFDuino et l'appli mobile. Nous pouvons détecter le RFduino à partir de Android Studio mais nous n'arrivons pas encore à nous connecter dessus directement.&lt;br /&gt;
*Finition de la fonctionnalité tesseract. La lecture de caractères est donc maintenant possible.&lt;br /&gt;
&lt;br /&gt;
 | '''22/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity&lt;br /&gt;
*Connexion possible entre le RFduino et notre appli mobile. Il faut maintenant pouvoir assurer un échange de données via du GATT.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 10&lt;br /&gt;
 | '''27/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity (suite). Utilisation de la solution postman.&lt;br /&gt;
*Mise à jour du wiki pour la partie Altium.&lt;br /&gt;
*Gestion du dépôt git.&lt;br /&gt;
*Récupération de la carte PCB au service EEI.&lt;br /&gt;
&lt;br /&gt;
 | '''29/03'''&lt;br /&gt;
*Mise en place du tri des Produits avec un critère d'ordonnabilité variable&lt;br /&gt;
*Implémentation du champs recherche et action sur la liste&lt;br /&gt;
*Écriture des pages Php consume.php et delete.php pour décrémenter le nombre d'aliment dans le frigo ou le supprimer&lt;br /&gt;
*Récupération des composants&lt;br /&gt;
*Passage au four pour souder les premiers composants en CMS&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 11&lt;br /&gt;
&lt;br /&gt;
 | '''03/04'''&lt;br /&gt;
*Dé-soudage et resoudage de l'accéléromètre.&lt;br /&gt;
*Soudure des composants&lt;br /&gt;
&lt;br /&gt;
 | '''05/04'''&lt;br /&gt;
*Test du Buzzer&lt;br /&gt;
*Code de l'accéléromètre&lt;br /&gt;
*Création de l'Optali box (la boite qui contient le RFduino fixé au frigo)&lt;br /&gt;
*Finition de la fonction 'delete'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 | '''06/04'''&lt;br /&gt;
*Problème pour faire fonctionner le code de l'accéléro. Il faudra le tester électriquement.&lt;br /&gt;
*Implantation du logo de l'appli &lt;br /&gt;
*Debuggage d'une requête de la page 'list'&lt;br /&gt;
*Documentation sur les listes déroulantes sous les EditTexts.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 12 (Interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''11/04''' (3 heures)&lt;br /&gt;
*Après avoir remarqué que le code de l'accéléro ne fonctionnait pas alors qu'il paraît correct, nous avons décidez de vérifier les propriétés électriques de notre montage.&lt;br /&gt;
En observant à l'analyseur logique, il semblerait que l'horloge de la liaison i2C n'est en fait qu'un signal bruité. Il faudra donc retenter de souder le composant quand cela sera possible.&lt;br /&gt;
&lt;br /&gt;
 | '''13/04''' (6 heures)&lt;br /&gt;
*Terminaison du programme RFduino qui fonctionne théoriquement, nous attendons de terminer les dernières soudures pour pouvoir le tester physiquement.&lt;br /&gt;
*En attendant de pouvoir réaliser des soudures, nous avons repris la partie communication bluetooth entre le RFduino et l'appli. Après avoir tenté d'utiliser un programme permettant de gérer le protocole GATT sans savoir envoyer ou recevoir de données, nous nous sommes orientés sur une communication plus basique basée sur de nombreux exemples que l'on peut voir sur le web.&lt;br /&gt;
&lt;br /&gt;
 | '''15/04''' (6 heures)&lt;br /&gt;
*Après s'être rendu compte que la communication plus &amp;quot;basique&amp;quot; que nous voulions utiliser n'était pas compatible avec le BLE, nous sommes une fois de plus repartis de zéro pour cette partie.&lt;br /&gt;
*Après quelques recherches, nous avons trouvé un programme réalisant la gestion d'un socket BLE sur le principe du protocole GATT. Grâce à celui-ci, il nous est possible de recevoir et d'envoyer des données via BLE sur RFduino ainsi que sur l'appli mobile.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 13 (Interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''17/04 (4 heures)'''&lt;br /&gt;
*Ajout du singleton Etat pour partager l'état des aliments dans la réserve alimentaire&lt;br /&gt;
*Transfert des requêtes de la base de donnée vers le singleton pour optimiser l'actualisation et le partage des données.&lt;br /&gt;
*Actualisation automatique des données sur la page principale.&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Semaine 14&lt;br /&gt;
| '''24/04'''&lt;br /&gt;
*Modification de la présentation du wiki&lt;br /&gt;
*Modification de la fonctionnalité du bouton actualiser en changement d'activité&lt;br /&gt;
&lt;br /&gt;
| '''26/04'''&lt;br /&gt;
*Ajout de la page liste recette&lt;br /&gt;
&lt;br /&gt;
| '''27/04'''&lt;br /&gt;
*Ajout des listes recettes dans ListeRecette&lt;br /&gt;
*Soudure des derniers composants pour terminer le PCB. Tout est soudé sauf le bouton poussoir qui devait permettre un reset du RFduino. En cherchant d'ailleurs à souder ce bouton, nous avons retiré malencontreusement la piste de cuivre permettant de répartir le 3.3V du RFduino sur notre PCB. Notre accéléromètre qui ne marchait déjà pas vraiment n'est plus alimenté. Nous ferons sans notre accéléromètre pour le rendu final. &lt;br /&gt;
|-&lt;br /&gt;
|Semaine 15&lt;br /&gt;
| '''27/04''' (3 heures)&lt;br /&gt;
*Ajout des requêtes des recettes sur ListeRecette.java&lt;br /&gt;
*Création du fichier listeRecette.php sur le serveur pour faire la requête SQL et envoyer sur l'application.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===Premières idées===&lt;br /&gt;
&lt;br /&gt;
Voici les premières idées de l'application mobile et du composant fixé sur le frigo.&lt;br /&gt;
[[Fichier:Optali_v1.jpg|400px|thumb|left|Optali version 1]]&lt;br /&gt;
[[Fichier:OptaliBox_v1.jpg|400px|thumb|center|OptaliBox version 1]]&lt;br /&gt;
[[Fichier:P46_schema.jpg|400px|thumb|center|Schéma électrique version 1]]&lt;br /&gt;
&lt;br /&gt;
En s'intéressant aux différentes datasheets ou données constructeur des composants que nous voulons utiliser, nous trouvons indispensable d'utiliser des résistances de 330 Ohms pour l'utilisation des LEDs, pour éviter de les griller.&lt;br /&gt;
&lt;br /&gt;
Edit : Retrait de la résistance R2.&lt;br /&gt;
&lt;br /&gt;
Concernant l'accéléromètre, nous avons choisi un modèle qui nous permet de brancher directement ce module sur une broche du RFDuino. On branchera directement les GPIOs de la RFduino sur les ports SDA et SCL de l'accéléromètre qui correspondent à l'interface I2C pour pouvoir communiquer. On utilisera aussi la broche INT1 pour pouvoir générer des interruptions directement depuis l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
On connectera le buzzer directement à une broche de la RFduino aussi. Concernant celui-ci il reste une incertitude puisqu'on ne trouve aucune information sur le courant à fournir pour l'alimentation de ce composant sur sa datasheet. Après différentes recherches sur Internet, il pourrait être nécessaire d'utiliser un montage amplificateur à transistor comme un émetteur commun pour booster le courant en sortie d'une broche GPIO. Quelques buzzers trouvés avec des données constructeur montrent que ce type de composant nécessite généralement un courant d'environ 30 mA. Nous verrons dans la pratique si cela sera vraiment nécessaire. Par sécurité, on ajoutera un transistor bipolaire dans la liste de matériel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:screen_LED.png|400px|thumb|left|Données constructeur pour LEDs]]&lt;br /&gt;
[[Fichier:screen_accel.png|400px|thumb|center|Datasheet de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
===Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
====Configuration école====&lt;br /&gt;
&lt;br /&gt;
*Pour configurer notre Raspberry Pi, nous utilisons son port série et &amp;quot;minicom&amp;quot;. Pour pouvoir télécharger des paquets, il fallait la connecter au réseau. Nous lui avons donc affecté une adresse IP fixe avec le fichier /etc/network/interfaces. Voici les modifications qui ont été apportées : &lt;br /&gt;
&lt;br /&gt;
   auto eth0&lt;br /&gt;
   iface eth0 inet static&lt;br /&gt;
   address 172.26.78.15&lt;br /&gt;
   netmask 255.255.240.0&lt;br /&gt;
   gateway 172.26.79.254&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il a également fallu ajouter la commande &amp;quot;export http_proxy=http://proxy.polytech-lille.fr:3128&amp;quot; (il faudra effectuer cette commande à chaque démarrage de la Pi) pour pouvoir utiliser le proxy de l'école. &lt;br /&gt;
Nous avons de plus modifier le fichier /etc/resolv.conf avec la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
   nameserver 193.48.57.34&lt;br /&gt;
&lt;br /&gt;
Malgré cela, nous avions des soucis pour nous connecter au réseau. Il y avait en fait un processus dhcp en tâche de fond qui nous empêchait de garder le contenu de resolv.conf. Il a donc fallu trouver ce processus pour le &amp;quot;kill&amp;quot; et pouvoir accéder correctement au réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons du coup pu installer postgresql pour pouvoir configurer une base de données sur notre Pi.&lt;br /&gt;
&lt;br /&gt;
====Configuration à domicile====&lt;br /&gt;
&lt;br /&gt;
Pour nous mettre dans une situation plus fidèle à notre projet, nous avons configuré la raspberry à domicile.&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abords installé Raspbian, puis installé les paquets nécessaire au fonctionnement du serveur.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Openssh-server''': permettre d'accès à distance à la raspberry pour pouvoir y accéder depuis l'école.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Iptables''': pour sécuriser les ports non utilisé et libérer l'accès aux ports qui nous intéressent (ssh 22,http 80,https 443).&amp;lt;br&amp;gt;&lt;br /&gt;
- '''apache2, php5, mysql-server''' : pour mettre en place notre service web.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons rediriger les ports 80 et 22 du routeur pour pouvoir accéder à la raspberry de l'extérieur.&lt;br /&gt;
&lt;br /&gt;
Pour finir, nous avons créer un fichier de config iptables permettant de sécuriser un minimum la base de donnée et de permettre d'autoriser la communication des ports 22, 80 et 443 correspondants aux ports ssh, http et https. le fichier de configuration a été déposé dans le dépôt git. Il nous a fallut le rendre exécutable via un chmod. Puis pour l'exécuter à chaque démarrage du system, dans le fichier /etc/init.d/ taper : &lt;br /&gt;
&lt;br /&gt;
    sudo update-rc.d firewall defaults (si notrefichier s'appelle firewall et s'il est dans init.d)&lt;br /&gt;
&lt;br /&gt;
===Base de donnée===&lt;br /&gt;
&lt;br /&gt;
Nos données alimentaires disponibles par toute la famille doivent être stocké sur un serveur de base de donnée externe (tel une Raspberry pi). Nous nous proposons de créer le diagramme UML représentant cette future base de donnée.&lt;br /&gt;
[[Fichier:Optali_UML.jpg|700px|thumb|center|Diagramme UML base de donnée]]&lt;br /&gt;
&lt;br /&gt;
On créera donc 3 entités. Date, Product et Recipe. &lt;br /&gt;
&lt;br /&gt;
- Product rassemble les aliments qui sont ou ont été dans la réserve alimentaire. NbProdIn permet de connaître le nombre de produits identiques (possibilité de date différentes mais pas de doublons et on garde l'information de quantité. NbProdBought donne une information sur le nombre de produits identique ayant été acheté depuis la mise en service de la base de donnée. Ainsi nous pourrons par la suite proposer une liste de course à l'utilisateur en fonction de la fréquence d'achat des produits.&lt;br /&gt;
&lt;br /&gt;
- Recipe contient les recettes que pourra rentrer l'utilisateur sur l'application. L'utilisateur pourra ainsi se voir proposer des recettes en fonction de ce qu'il a dans son frigo et de ses recettes personnelles.&lt;br /&gt;
&lt;br /&gt;
'''''Edit : On ajoutera une valeur entière dans les tables Date et Unity pour gérer le cas où il existe plusieurs produits (différents ou identiques) avec une date de péremption équivalente. On les appellera NbDate la valeur dans la table Date et NbUnity dans la table Unity. On leur ajoutera de même une clef primaire IdUnity et IdListProduct'''''&lt;br /&gt;
&lt;br /&gt;
On utilisera MySql pour la gestion de nos bases de données. &lt;br /&gt;
La syntaxe pour l'implanter dans la base de donnée à été jointe au dépôt git.&lt;br /&gt;
&lt;br /&gt;
Pour lancer my SQL, on tapera:&lt;br /&gt;
&lt;br /&gt;
   mysql -h localhost -u root -p&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Web service===&lt;br /&gt;
&lt;br /&gt;
====Page init.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet d'initier l'accès à la base de donnée sur le serveur. Elle est requise pour les pages qui suivent.&lt;br /&gt;
&lt;br /&gt;
====Page post.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet l'insertion d'un produit et d'une date via l'application mobile. Elle prend donc ces deux arguments et les insère dans les tables Unity, Product et Date.&lt;br /&gt;
&lt;br /&gt;
====Page get.php====&lt;br /&gt;
&lt;br /&gt;
Page qui envoie la liste des aliments avec leur nom, leur date, leur quantité dans le frigo, la quantité d'exemplaires acheté en tout depuis la mise en place de l'appareil. Le tri se fera directement dans l'application mobile. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Application Mobile===&lt;br /&gt;
&lt;br /&gt;
====Home page====&lt;br /&gt;
&lt;br /&gt;
Page d'accueil permettant d'accéder aux pages d'ajout et de liste des produits disponibles. &amp;lt;br&amp;gt;&lt;br /&gt;
La page permet aussi d'effectuer la connexion entre la rfduino et l'application mobile. Elle montre les alertes (signaux) à l'utilisateur &lt;br /&gt;
et écrit leur signification.&lt;br /&gt;
&lt;br /&gt;
====Page d'ajout====&lt;br /&gt;
&lt;br /&gt;
Pour ajouter un produit et lire une date on utilisera un champ editText pour permettre à l'utilisateur d'écrire &amp;quot;Manuellement&amp;quot; dedans grâce au clavier du smartphone.&amp;lt;br&amp;gt;&lt;br /&gt;
De plus on utilise un bouton qui appellera la caméra pour détecter les caractères d'un produit ou d'une date. Au début nous voulions utiliser un détecteur de code barre, nous l'avons implémenté mais nous avons remarqué que la mise au point sur une surface non plane prend du temps d'autant plus qu'il faut questionner une base de donnée contenant tous les numéro de codes barres utilisés. Nous avons donc prit la décision d'utiliser uniquement la lecture de caractère et nous créerons une liste déroulante sous l'editText pour faciliter l'insertion d'un produit qui a déjà été ajouté. Pour la lecture de caractère, nous utilisons la librairie tesseract.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'envoi, nous utilisons la librairie Volley développé par google.&lt;br /&gt;
&lt;br /&gt;
====Page Liste====&lt;br /&gt;
&lt;br /&gt;
Permet de lister les produits dans la base de donnée. Une série de boutons radio permettent de trier les produits par ordre alphabétique, par date de péremption, par nombre d’occurrence dans la réserve alimentaire, par nombre d'achat depuis la mise en place du système.&amp;lt;br&amp;gt;&lt;br /&gt;
Une colonne permet de sélectionner les aliments désirés (par checkBox) pour ensuite les supprimer via un button &amp;quot;suppr&amp;quot; ou les choisir pour trouver des recettes qui les utilisent.&amp;lt;br&amp;gt;&lt;br /&gt;
Un EditText permet d'effectuer une recherche sur la base de donnée.&lt;br /&gt;
&lt;br /&gt;
===Altium Designer===&lt;br /&gt;
&lt;br /&gt;
Pour permettre au RFDuino de communiquer avec les différents composants, nous aurons besoin de quelques composants électroniques. Afin que cela soit plus esthétique pour la modélisation finale, nous allons créer une carte PCB pour rassembler tous ces composants dessus. On utilisera le logiciel Altium Designer pour cela.&lt;br /&gt;
&lt;br /&gt;
Avant de représenter notre circuit général, nous allons commencer par créer une librairie rassemblant tous les composants que nous utiliserons par la suite, en particulier nos composants CMS (accéléromètre et résistances). Pour ce qui est des LEDs et du buzzer, qui sont traversants, nous pourrons utiliser des headers classiques.&lt;br /&gt;
&lt;br /&gt;
Il a donc fallu créer le schematic ainsi que l'empreinte de nos composants CMS. Voici un exemple avec notre accéléromètre :&lt;br /&gt;
[[Fichier:Accelerosch.PNG|500px|thumb|left|Schematic de l'accéléromètre]]&lt;br /&gt;
[[Fichier:Acceleropcb.PNG|500px|thumb|center|Empreinte PCB de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les fichiers Altium sont disponibles sur notre dépôt GIT. Après cela, nous pouvons maintenant construire notre schematic du montage entier et ensuite le fichier PCB afin de pouvoir graver notre circuit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après quelques modifications sur le montage prévu initialement, c'est-à-dire en enlevant une résistance entre un GPIO et l'alimentation de l'accéléromètre ainsi qu'en rajoutant des résistances pull-up sur les broches de notre liaison i2C (SDA et SCL) et un bouton poussoir en plus pour permettre un reset du RFDuino, nous avons pu créer notre schematic global pour en faire un PCB et l'exporter au format Gerber. De ce fait, le service EEI de Polytech pourra réaliser la gravure de notre carte PCB.&lt;br /&gt;
&lt;br /&gt;
Voici quelques photos pour illustrer notre projet sur Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Finalproto_sch.PNG|400px|thumb|left|Schematic du montage final]]&lt;br /&gt;
[[Fichier:Finalproto_pcb.PNG|400px|thumb|center|PCB du montage final]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On retrouve sur notre PCB final les headers, respectivement de 8 et 5 pins, de part et d'autre de la carte, qui représentent le RFDuino, où nous souderons des broches pour qu'elles puissent être intégrées au RFDuino. On note la présence de 5 autres headers de 2 pins, dont 3 pour des LEDs puis les 2 autres pour le buzzer et le bouton poussoir. Ce qui reste sont les composants CMS avec plusieurs composants à 2 pattes qui sont toutes les résistances de notre montage, celles de protection pour les LEDs et les pull-ups pour l'accéléromètre. Le dernier composant à 8 pattes est donc bien l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quelques difficultés ont été rencontrées durant ce travail notamment concernant les contraintes de construction sur le PCB final. En effet, les composants CMS choisis (surtout l'accéléromètre) étant parfois très petits, Altium n'accepte pas forcément le faible espacement entre les différentes pattes des composants, ce qui pose problème lors de la compilation. De plus, le plan de masse ne prenait pas en compte tous les éléments devant être rattachés à la masse. Il a fallu légèrement déplacer les headers représentant le RFDuino pour que cela soit possible. Il faudra alors peut-être légèrement plier les broches qui viendront s'intégrer sur le RFDuino pour ajouter notre PCB sur le RFDuino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons envoyé nos fichiers Altium au service EEI afin qu'il puisse réaliser physiquement notre carte. Nous nous retrouvons donc avec notre carte PCB récupérée auprès du service EEI. Voici le rendu :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:P46_carte.jpg|400px|thumb|center|Fabrication de notre carte PCB]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir souder nos différents composants, nous avons été rendre visite à Thierry Flamen, responsable du service EEI, afin de passer nos composants CMS au four (résistances et accéléromètre). En effet il était presque impossible de souder tous ces composants manuellement. Après ce passage au four, il nous restait les composants traversants à souder, c'est-à-dire les pins, les LEDs et notre buzzer. Voici le rendu après nos soudures :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:pcbfinal1_p46.jpg|200px|thumb|left|Vue du dessous de notre carte]]&lt;br /&gt;
[[Fichier:pcbfinal2_p46.jpg|200px|thumb|center|Vue du dessus de notre carte]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il manque sur la carte finale notre bouton poussoir qui permettait le reset de notre RFduino. Malheureusement en essayant de souder celui-ci, nous avons retiré du cuivre de la carte, ce qui nous empêche de pouvoir faire circuler le courant dans ce bouton. De plus, la piste avec du cuivre manquant était également responsable de l'alimentation de notre accéléromètre ainsi que d'une LED indiquant la mise sous-tension du contrôleur. Pour le rendu final, nous souderons un fil sur la LED pour pouvoir l'alimenter, cependant il serait plus complexe d'alimenter l'accéléromètre. Celui-ci ne fonctionnait déjà pas correctement de manière électrique. La soudure de ce composant demandait une grande précision puisqu'il est de taille minuscule. Nous n'utiliserons donc pas ce composant dans notre montage final.&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=41621</id>
		<title>IMA4 2016/2017 P46 : Aide anti-gaspillage alimentaire</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=41621"/>
				<updated>2017-05-01T18:48:48Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : /* Altium Designer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
En France, nous jetons en moyenne 21% des aliments que nous achetons, ce qui représente une perte de 100 à 160 euros par an par habitant. Cela est en partie dû à la date limite de consommation associée à chaque produit. En effet, à partir du moment où cette date sera dépassée le consommateur jettera les produits concernés sans réfléchir, même si ceux-ci peuvent parfois être encore mangeables. Plutôt que d'essayer de les convaincre du contraire, il serait judicieux de proposer aux adeptes du gaspillage une aide permettant de gérer tous les aliments dont ils disposent chez eux afin d'éviter la surprise de tomber sur plusieurs produits périmés lorsqu'ils ouvrent la porte de leur frigo. &lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Ce projet permet d'aider les utilisateurs d'une part à mémoriser les denrées périssables qu'ils disposent dans leur réserve alimentaire et d'autre part d'avertir l'utilisateur qu'un événement important a lieu. Ceci peut être une notification qu'un aliment va bientôt dépasser sa date de péremption, que la porte du frigidaire est restée ouverte ou encore que le nombre d'aliments dans la réserve devient critique et qu'il faudra de nouveau l'alimenter. Enfin, le système aidera l'utilisateur à trouver des idées de repas pouvant permettre de consommer les aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Notre prototype permettra d'éviter le gaspillage alimentaire ainsi que d'aider l'utilisateur dans sa gestion du stockage d'aliments.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
&lt;br /&gt;
Notre système sera composé de 3 éléments. &lt;br /&gt;
&lt;br /&gt;
Premièrement, un ou des smartphones appartenant aux utilisateurs. Ces derniers permettront de scanner grâce à son appareil photo, le code barre du produit ainsi que sa date de péremption. Il servira aussi d'interface utilisateur pour notre système. En effet, c'est par cet outil que l'utilisateur pourra lister tous les aliments que l'utilisateur a dans sa base et tout ça en les triant par date de péremption, ou encore voir les recettes possibles pour consommer des aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Deuxièmement, un serveur, de type Raspberry, qui permettra de stocker la base de donnée contenant les aliments de la réserve. Ce serveur sera connecté par wifi.&lt;br /&gt;
 &lt;br /&gt;
Troisièmement, un contrôleur (Rfduino) qui comportera une LED pour indiquer la mise sous tension du contrôleur, une LED pour prévenir l'utilisateur qu'un aliment va bientôt passer sa date de péremption et une dernière LED pour prévenir l'utilisateur que son niveau de réserve est critique ainsi qu'un buzzer et un accéléromètre pour buzzer quand la porte du frigo est restée trop longtemps ouverte. Ce dernier sera fixé au frigo par l'intermédiaire d'un dispositif adapté qui sera un système aimanté qui se pose sur le frigo.&lt;br /&gt;
&lt;br /&gt;
Nous implémenterons donc une application mobile Android qui fera le lien entre les 2 autres systèmes.&lt;br /&gt;
&lt;br /&gt;
Pour la partie électronique que nous aurons à réaliser, nous utiliserons une Breadboard pour faire des premiers tests puis nous créerons une carte PCB pour notre montage final.&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
On utilisera une Raspberry Pi en guise de serveur pour pouvoir s'occuper du stockage de toutes les données dans notre projet puisque notre contrôleur sera incapable de les contenir, ce n'est d'ailleurs pas son but ici.&lt;br /&gt;
&lt;br /&gt;
Notre smartphone fera donc le lien entre notre base de données et notre système embarqué par l'intermédiaire de l'application mobile.&lt;br /&gt;
&lt;br /&gt;
Nous prendrons ici un RFduino puisque celui-ci nous permet d'ajouter des modules comme bon nous semble afin d'adapter le système aux besoins de notre application. Il est également parfaitement compatible avec les applications Android. De plus, nous avons un Bluetooth directement intégré au RFduino pour s'assurer que les liaisons RFduino-application mobile se fassent correctement. &lt;br /&gt;
On notera également que ce contrôleur consomme peu de courant et ne demande qu'une faible tension d'alimentation, critères importants pour ce genre de projet. C'est la raison principale de son utilisation pour être utilisé comme interface physique sur le frigo, en ajoutant également sa taille réduite comparée à la Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
&lt;br /&gt;
Nous avons donc besoin du matériel suivant :&lt;br /&gt;
&lt;br /&gt;
*Raspberry Pi.&lt;br /&gt;
*Clef wifi&lt;br /&gt;
*RFduino (RFD22102 DIP Board, RFD22121 USB Shield, RFD22126 Dual AAA battery shield).&lt;br /&gt;
*2 piles AAA.&lt;br /&gt;
*3 leds tranversantes.&lt;br /&gt;
*3 Résistances 330 Ohm.&lt;br /&gt;
*1 Résistance 10 kOhm.&lt;br /&gt;
*Un buzzer.&lt;br /&gt;
*Accéléromètre.&lt;br /&gt;
*Aimants&lt;br /&gt;
*Un boîtier permettant d'intégrer la RFduino + fixation sur le frigo (modélisation à voir).&lt;br /&gt;
&lt;br /&gt;
Pour le buzzer, l'accéléromètre et les résistances, nous choisirons des composants CMS pour nous permettre d'avoir une carte plus petite.&lt;br /&gt;
&lt;br /&gt;
===Calendrier prévisionnel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Liste des tâches à effectuer====&lt;br /&gt;
&lt;br /&gt;
* Configurer la Raspberry :&lt;br /&gt;
** Installer et configurer le serveur.&lt;br /&gt;
** Créer le diagramme UML de notre future base de données.&lt;br /&gt;
** Créer la base sur le serveur.&lt;br /&gt;
** Configurer la connexion WiFi.&lt;br /&gt;
&lt;br /&gt;
* Monter et programmer la RFduino :&lt;br /&gt;
** Connecter les différents modules au RFduino (accéléromètre, LEDs, buzzer, Batterie, module Bluetooth).&lt;br /&gt;
** Récupérer les consignes du smartphone grâce au Bluetooth.&lt;br /&gt;
** Programmer le comportement du RFduino en fonction des consignes.&lt;br /&gt;
** Construire le boitier final.&lt;br /&gt;
&lt;br /&gt;
* Implémenter l'application mobile Android :&lt;br /&gt;
** Une première activité permettant de se connecter au RFduino et à la Raspberry.&lt;br /&gt;
** Scanner une date et un code barre.&lt;br /&gt;
** Ajout/suppression d'un aliment dans la base de donnée.&lt;br /&gt;
** Envoi d'une consigne au RFduino.&lt;br /&gt;
** Rendre l'interface utilisateur ergonomique (lister aliments, envoyer vers page de recettes avec l'utilisation des aliments bientôt périmés...).&lt;br /&gt;
&lt;br /&gt;
====Calendrier====&lt;br /&gt;
&lt;br /&gt;
Répartition du temps consacré au projet (120h *2) :&lt;br /&gt;
&lt;br /&gt;
*Partie Raspberry : 60h&lt;br /&gt;
*Partie RFduino : 60h&lt;br /&gt;
*Partie développement mobile : 120h&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
&lt;br /&gt;
===Feuille d'heures===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 !  !! Lundi 16-18h !! Mercredi 14-18h !! Jeudi 8-10h&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 1&lt;br /&gt;
&lt;br /&gt;
 | '''23/01''' :  &lt;br /&gt;
* Installation du logiciel Android Studio pour être prêt à commencer l'application mobile.&lt;br /&gt;
* Création du Repository Git sur GitHub : https://github.com/FrancoisLefevre12/Optali.git&lt;br /&gt;
* Réalisation de différents schémas fonctionnels pour se donner une idée du travail à effectuer, aussi bien du software que du hardware.&lt;br /&gt;
* Quelques précisions supplémentaires apportées sur le cahier des charges.&lt;br /&gt;
* Ajout de liens de référence pour la liste de matériel à acheter.&lt;br /&gt;
&lt;br /&gt;
 | '''25/01''' :  &lt;br /&gt;
* Précision des composants requis (accéléromètre, buzzer, LEDs, résistances).&lt;br /&gt;
* Écriture du montage à la main.&lt;br /&gt;
* Étude du fonctionnement de l'accéléromètre, du buzzer.&lt;br /&gt;
* Écriture de la structure de l'application à la main.&lt;br /&gt;
&lt;br /&gt;
 | '''26/01''' :&lt;br /&gt;
*Réalisation graphique de la première page de l'application.&lt;br /&gt;
*Conception du schéma électrique pour tous les composants connectés au RFduino.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 2&lt;br /&gt;
&lt;br /&gt;
 | '''30/01''' :&lt;br /&gt;
*Réalisation du diagramme UML de la base de données qui sera stockée sur la Raspberry Pi&lt;br /&gt;
*Installation de l'outil de développement mobile sur le second PC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 | '''01/02''' :&lt;br /&gt;
*Nous nous sommes d'abord rendus compte que la résistance entre un des GPIO et l'accéléromètre était inutile, nos premiers calculs étaient erronés. Nous ne la garderons donc pas sur notre schéma électrique final.&lt;br /&gt;
*Avancement sur la partie application mobile : réalisation de la page &amp;quot;Ajout&amp;quot; sur laquelle nous tomberons après avoir cliquer sur &amp;quot;ajout&amp;quot; sur la page principale de l'application. Nous avons étendu l'activité principale jusqu'à cette nouvelle activité &amp;quot;Ajout&amp;quot;.&lt;br /&gt;
*Nous avons récupéré notre Raspberry Pi pour commencer à installer notre base de données dessus. Nous avons actuellement quelques problèmes pour nous connecter sur la Raspberry. Nous travaillons sur ce point.&lt;br /&gt;
&lt;br /&gt;
 | '''02/02''' :&lt;br /&gt;
* Application mobile : Mise en place des LEDs sur la home page et de la zone de notification avec les messages associés.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 3&lt;br /&gt;
&lt;br /&gt;
 | '''06/02''' :&lt;br /&gt;
*Nous arrivons à accéder à la Raspberry via le port série de celle-ci. Nous avons également configuré sa connexion Ethernet afin de pouvoir télécharger des paquets dessus et installer notre base de données. &lt;br /&gt;
*Nous rencontrions des problèmes sur le second PC de travail pour récupérer le projet Optali sur Android Studio via notre dépôt GIT. Nous avons pu rectifier ce souci.&lt;br /&gt;
&lt;br /&gt;
 | '''08/02''' :&lt;br /&gt;
*Tentative d'établissement d'un point d'accès WiFi sur notre Raspberry. Nous n'avons pas réussi pour le moment.&lt;br /&gt;
*Restructuration du Repository git.&lt;br /&gt;
*Essai d'importation de la librairie Zxing qui permettra de décoder les code-barres.&lt;br /&gt;
 |&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 4&lt;br /&gt;
&lt;br /&gt;
 | '''13/02'''&lt;br /&gt;
*Configuration du wifi de la Raspberry. &lt;br /&gt;
*Étude d'une mise en place d'un service web via php.&lt;br /&gt;
&lt;br /&gt;
 | '''15/02'''&lt;br /&gt;
*Mise en place d'un lecteur de caractère sur l'application. On utilisera tesseract.&lt;br /&gt;
*Début de la création du PCB via Altium designer. Création d'une librairie pour l'accéléromètre qui est un composant CMS assez spécial. On pourra cependant utiliser des headers classiques pour le buzzer et les LEDs puisque ce sont des composants traversants.&lt;br /&gt;
*Création des premiers fichiers php de connection à la base de donnée et d'insertion d'aliments. Tous ces fichiers seront déposés de la même manière sur le dépôt git.&lt;br /&gt;
&lt;br /&gt;
 | '''16/02'''&lt;br /&gt;
*Adaptation avec prise en compte des cas du code php d'insertion de produits par requête sur la base de donnée.&lt;br /&gt;
*Ajout du code d'implantation de la base de donnée.&lt;br /&gt;
*Altium: Accéléromètre terminé, mise en place des résistances.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 5 (interruption pédagogique)====&lt;br /&gt;
&lt;br /&gt;
 | '''22/02 (3 heures)'''&lt;br /&gt;
*Installation de l'OS de la raspberry.&lt;br /&gt;
*Installation d'Openssh-server, apache2, php5, iptables, mysql-server, php5-mysql.&lt;br /&gt;
*Redirection des ports du routeur vers la raspberry.&lt;br /&gt;
*Configuration de iptables de la raspberry.&lt;br /&gt;
&lt;br /&gt;
 | '''23/02 (2 heures)'''&lt;br /&gt;
*Implantation de la base de donnée sur la raspberry pi.&lt;br /&gt;
|&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 6&lt;br /&gt;
 | '''27/02'''&lt;br /&gt;
*Vérification de la syntaxe de l'insertion de valeurs dans la base de donnée.&lt;br /&gt;
*Création des premières requêtes sur la base de donnée.&lt;br /&gt;
*Finalisation du PCB de l'Optali Board.&lt;br /&gt;
&lt;br /&gt;
 | '''01/03'''&lt;br /&gt;
*Étude et ajout de la librairie volley pour communiquer avec le serveur.&lt;br /&gt;
*Implantation de la fonction d'envoi de données jusqu'au serveur.&lt;br /&gt;
*Après avoir vu avec un professeur, nous avons remarqué que le routage n'était pas adéquat et la disposition des composants n'était pas optimal. Du travail reste donc encore à effectuer.&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 7&lt;br /&gt;
 | '''06/03'''&lt;br /&gt;
*Correction du fichier post.php&lt;br /&gt;
*Finition du protocole d'ajout d'aliment sur la base de donnée. (Code php et page ajout terminée).&lt;br /&gt;
*PCB terminé.&lt;br /&gt;
*Installation d'arduino IDE, doc arduino collecté.&lt;br /&gt;
&lt;br /&gt;
 | '''08/03'''&lt;br /&gt;
*Implémentation de la page ListeIngredient.xml et de l'activité listActivity.java.&lt;br /&gt;
*Documentation sur la procédure de communication bluetooth entre la Rfduino et l'application mobile.&lt;br /&gt;
*Obtention de librairie en lien avec cela.&lt;br /&gt;
*Prise en main de programmation rfduino.&lt;br /&gt;
&lt;br /&gt;
 | '''09/03'''&lt;br /&gt;
*Nous nous sommes rendus compte qu'il était nécessaire de rajouter un bouton poussoir sur notre montage afin de permettre la réinitialisation de notre RFDuino si nécessaire. Nous devons également faire en sorte de pouvoir poser notre carte PCB directement sur notre RFDuino en utilisant des broches. Nous devons donc rajouter ces éléments-ci.&lt;br /&gt;
*Ecriture de la page get.php&lt;br /&gt;
*Premiers tests sur la ListView de l'activité ListActivity.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 8&lt;br /&gt;
 | '''13/03'''&lt;br /&gt;
*Recherche de pistes concernant la programmation RFDuino. Nous pouvons la détecter en bluetooth via un smartphone Android.&lt;br /&gt;
*Finition du Tablelayout et du code java associé sur la page ListActivity.&lt;br /&gt;
&lt;br /&gt;
 | '''15/03'''&lt;br /&gt;
*Ajout de la JsonArrayRequest dans la page ListActivity.&lt;br /&gt;
*Nous nous sommes rendus compte au moment de programmer la liaison I2C de l'accéléromètre avec la RFDuino que nous avions oublié de mettre des résistances pull-up entre l'alimentation du composant et les broches SDA et SCL. Les modifications ont donc été faites puis nous avons envoyé finalement notre PCB à la fabrication.&lt;br /&gt;
&lt;br /&gt;
 | '''16/03'''&lt;br /&gt;
*Changement de stratégie au niveau de la requête JsonArrayRequest. On récupère toute la base et ensuite le traitement sera effectuer dans l'application mobile.&lt;br /&gt;
*Rédaction de la partie Altium du wiki.&lt;br /&gt;
*Recherche de docs sur le système bluetooth du RFduino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 9&lt;br /&gt;
 | '''20/03'''&lt;br /&gt;
*Réalisation de différents réglages pour pouvoir utiliser l'application Optali sur l'Android phone fourni par notre professeur (LG G4c)&lt;br /&gt;
*Recherche de docs concernant la partie java responsable de la communication Bluetooth.&lt;br /&gt;
*Reprise de la solution Tesseract pour la lecture de caractères.&lt;br /&gt;
&lt;br /&gt;
 | '''21/03''' (séance supplémentaire de 3 heures)&lt;br /&gt;
*Début du développement de la partie communication entre RFDuino et l'appli mobile. Nous pouvons détecter le RFduino à partir de Android Studio mais nous n'arrivons pas encore à nous connecter dessus directement.&lt;br /&gt;
*Finition de la fonctionnalité tesseract. La lecture de caractères est donc maintenant possible.&lt;br /&gt;
&lt;br /&gt;
 | '''22/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity&lt;br /&gt;
*Connexion possible entre le RFduino et notre appli mobile. Il faut maintenant pouvoir assurer un échange de données via du GATT.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 10&lt;br /&gt;
 | '''27/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity (suite). Utilisation de la solution postman.&lt;br /&gt;
*Mise à jour du wiki pour la partie Altium.&lt;br /&gt;
*Gestion du dépôt git.&lt;br /&gt;
*Récupération de la carte PCB au service EEI.&lt;br /&gt;
&lt;br /&gt;
 | '''29/03'''&lt;br /&gt;
*Mise en place du tri des Produits avec un critère d'ordonnabilité variable&lt;br /&gt;
*Implémentation du champs recherche et action sur la liste&lt;br /&gt;
*Écriture des pages Php consume.php et delete.php pour décrémenter le nombre d'aliment dans le frigo ou le supprimer&lt;br /&gt;
*Récupération des composants&lt;br /&gt;
*Passage au four pour souder les premiers composants en CMS&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 11&lt;br /&gt;
&lt;br /&gt;
 | '''03/04'''&lt;br /&gt;
*Dé-soudage et resoudage de l'accéléromètre.&lt;br /&gt;
*Soudure des composants&lt;br /&gt;
&lt;br /&gt;
 | '''05/04'''&lt;br /&gt;
*Test du Buzzer&lt;br /&gt;
*Code de l'accéléromètre&lt;br /&gt;
*Création de l'Optali box (la boite qui contient le RFduino fixé au frigo)&lt;br /&gt;
*Finition de la fonction 'delete'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 | '''06/04'''&lt;br /&gt;
*Problème pour faire fonctionner le code de l'accéléro. Il faudra le tester électriquement.&lt;br /&gt;
*Implantation du logo de l'appli &lt;br /&gt;
*Debuggage d'une requête de la page 'list'&lt;br /&gt;
*Documentation sur les listes déroulantes sous les EditTexts.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 12 (Interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''11/04''' (3 heures)&lt;br /&gt;
*Après avoir remarqué que le code de l'accéléro ne fonctionnait pas alors qu'il paraît correct, nous avons décidez de vérifier les propriétés électriques de notre montage.&lt;br /&gt;
En observant à l'analyseur logique, il semblerait que l'horloge de la liaison i2C n'est en fait qu'un signal bruité. Il faudra donc retenter de souder le composant quand cela sera possible.&lt;br /&gt;
&lt;br /&gt;
 | '''13/04''' (6 heures)&lt;br /&gt;
*Terminaison du programme RFduino qui fonctionne théoriquement, nous attendons de terminer les dernières soudures pour pouvoir le tester physiquement.&lt;br /&gt;
*En attendant de pouvoir réaliser des soudures, nous avons repris la partie communication bluetooth entre le RFduino et l'appli. Après avoir tenté d'utiliser un programme permettant de gérer le protocole GATT sans savoir envoyer ou recevoir de données, nous nous sommes orientés sur une communication plus basique basée sur de nombreux exemples que l'on peut voir sur le web.&lt;br /&gt;
&lt;br /&gt;
 | '''15/04''' (6 heures)&lt;br /&gt;
*Après s'être rendu compte que la communication plus &amp;quot;basique&amp;quot; que nous voulions utiliser n'était pas compatible avec le BLE, nous sommes une fois de plus repartis de zéro pour cette partie.&lt;br /&gt;
*Après quelques recherches, nous avons trouvé un programme réalisant la gestion d'un socket BLE sur le principe du protocole GATT. Grâce à celui-ci, il nous est possible de recevoir et d'envoyer des données via BLE sur RFduino ainsi que sur l'appli mobile.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 13 (Interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''17/04 (4 heures)'''&lt;br /&gt;
*Ajout du singleton Etat pour partager l'état des aliments dans la réserve alimentaire&lt;br /&gt;
*Transfert des requêtes de la base de donnée vers le singleton pour optimiser l'actualisation et le partage des données.&lt;br /&gt;
*Actualisation automatique des données sur la page principale.&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Semaine 14&lt;br /&gt;
| '''24/04'''&lt;br /&gt;
*Modification de la présentation du wiki&lt;br /&gt;
*Modification de la fonctionnalité du bouton actualiser en changement d'activité&lt;br /&gt;
&lt;br /&gt;
| '''26/04'''&lt;br /&gt;
*Ajout de la page liste recette&lt;br /&gt;
&lt;br /&gt;
| '''27/04'''&lt;br /&gt;
*Ajout des listes recettes dans ListeRecette&lt;br /&gt;
*Soudure des derniers composants pour terminer le PCB. Tout est soudé sauf le bouton poussoir qui devait permettre un reset du RFduino. En cherchant d'ailleurs à souder ce bouton, nous avons retiré malencontreusement la piste de cuivre permettant de répartir le 3.3V du RFduino sur notre PCB. Notre accéléromètre qui ne marchait déjà pas vraiment n'est plus alimenté. Nous ferons sans notre accéléromètre pour le rendu final. &lt;br /&gt;
|-&lt;br /&gt;
|Semaine 15&lt;br /&gt;
| '''27/04''' (3 heures)&lt;br /&gt;
*Ajout des requêtes des recettes sur ListeRecette.java&lt;br /&gt;
*Création du fichier listeRecette.php sur le serveur pour faire la requête SQL et envoyer sur l'application.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===Premières idées===&lt;br /&gt;
&lt;br /&gt;
Voici les premières idées de l'application mobile et du composant fixé sur le frigo.&lt;br /&gt;
[[Fichier:Optali_v1.jpg|400px|thumb|left|Optali version 1]]&lt;br /&gt;
[[Fichier:OptaliBox_v1.jpg|400px|thumb|center|OptaliBox version 1]]&lt;br /&gt;
[[Fichier:P46_schema.jpg|400px|thumb|center|Schéma électrique version 1]]&lt;br /&gt;
&lt;br /&gt;
En s'intéressant aux différentes datasheets ou données constructeur des composants que nous voulons utiliser, nous trouvons indispensable d'utiliser des résistances de 330 Ohms pour l'utilisation des LEDs, pour éviter de les griller.&lt;br /&gt;
&lt;br /&gt;
Edit : Retrait de la résistance R2.&lt;br /&gt;
&lt;br /&gt;
Concernant l'accéléromètre, nous avons choisi un modèle qui nous permet de brancher directement ce module sur une broche du RFDuino. On branchera directement les GPIOs de la RFduino sur les ports SDA et SCL de l'accéléromètre qui correspondent à l'interface I2C pour pouvoir communiquer. On utilisera aussi la broche INT1 pour pouvoir générer des interruptions directement depuis l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
On connectera le buzzer directement à une broche de la RFduino aussi. Concernant celui-ci il reste une incertitude puisqu'on ne trouve aucune information sur le courant à fournir pour l'alimentation de ce composant sur sa datasheet. Après différentes recherches sur Internet, il pourrait être nécessaire d'utiliser un montage amplificateur à transistor comme un émetteur commun pour booster le courant en sortie d'une broche GPIO. Quelques buzzers trouvés avec des données constructeur montrent que ce type de composant nécessite généralement un courant d'environ 30 mA. Nous verrons dans la pratique si cela sera vraiment nécessaire. Par sécurité, on ajoutera un transistor bipolaire dans la liste de matériel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:screen_LED.png|400px|thumb|left|Données constructeur pour LEDs]]&lt;br /&gt;
[[Fichier:screen_accel.png|400px|thumb|center|Datasheet de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
===Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
====Configuration école====&lt;br /&gt;
&lt;br /&gt;
*Pour configurer notre Raspberry Pi, nous utilisons son port série et &amp;quot;minicom&amp;quot;. Pour pouvoir télécharger des paquets, il fallait la connecter au réseau. Nous lui avons donc affecté une adresse IP fixe avec le fichier /etc/network/interfaces. Voici les modifications qui ont été apportées : &lt;br /&gt;
&lt;br /&gt;
   auto eth0&lt;br /&gt;
   iface eth0 inet static&lt;br /&gt;
   address 172.26.78.15&lt;br /&gt;
   netmask 255.255.240.0&lt;br /&gt;
   gateway 172.26.79.254&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il a également fallu ajouter la commande &amp;quot;export http_proxy=http://proxy.polytech-lille.fr:3128&amp;quot; (il faudra effectuer cette commande à chaque démarrage de la Pi) pour pouvoir utiliser le proxy de l'école. &lt;br /&gt;
Nous avons de plus modifier le fichier /etc/resolv.conf avec la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
   nameserver 193.48.57.34&lt;br /&gt;
&lt;br /&gt;
Malgré cela, nous avions des soucis pour nous connecter au réseau. Il y avait en fait un processus dhcp en tâche de fond qui nous empêchait de garder le contenu de resolv.conf. Il a donc fallu trouver ce processus pour le &amp;quot;kill&amp;quot; et pouvoir accéder correctement au réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons du coup pu installer postgresql pour pouvoir configurer une base de données sur notre Pi.&lt;br /&gt;
&lt;br /&gt;
====Configuration à domicile====&lt;br /&gt;
&lt;br /&gt;
Pour nous mettre dans une situation plus fidèle à notre projet, nous avons configuré la raspberry à domicile.&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abords installé Raspbian, puis installé les paquets nécessaire au fonctionnement du serveur.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Openssh-server''': permettre d'accès à distance à la raspberry pour pouvoir y accéder depuis l'école.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Iptables''': pour sécuriser les ports non utilisé et libérer l'accès aux ports qui nous intéressent (ssh 22,http 80,https 443).&amp;lt;br&amp;gt;&lt;br /&gt;
- '''apache2, php5, mysql-server''' : pour mettre en place notre service web.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons rediriger les ports 80 et 22 du routeur pour pouvoir accéder à la raspberry de l'extérieur.&lt;br /&gt;
&lt;br /&gt;
Pour finir, nous avons créer un fichier de config iptables permettant de sécuriser un minimum la base de donnée et de permettre d'autoriser la communication des ports 22, 80 et 443 correspondants aux ports ssh, http et https. le fichier de configuration a été déposé dans le dépôt git. Il nous a fallut le rendre exécutable via un chmod. Puis pour l'exécuter à chaque démarrage du system, dans le fichier /etc/init.d/ taper : &lt;br /&gt;
&lt;br /&gt;
    sudo update-rc.d firewall defaults (si notrefichier s'appelle firewall et s'il est dans init.d)&lt;br /&gt;
&lt;br /&gt;
===Base de donnée===&lt;br /&gt;
&lt;br /&gt;
Nos données alimentaires disponibles par toute la famille doivent être stocké sur un serveur de base de donnée externe (tel une Raspberry pi). Nous nous proposons de créer le diagramme UML représentant cette future base de donnée.&lt;br /&gt;
[[Fichier:Optali_UML.jpg|700px|thumb|center|Diagramme UML base de donnée]]&lt;br /&gt;
&lt;br /&gt;
On créera donc 3 entités. Date, Product et Recipe. &lt;br /&gt;
&lt;br /&gt;
- Product rassemble les aliments qui sont ou ont été dans la réserve alimentaire. NbProdIn permet de connaître le nombre de produits identiques (possibilité de date différentes mais pas de doublons et on garde l'information de quantité. NbProdBought donne une information sur le nombre de produits identique ayant été acheté depuis la mise en service de la base de donnée. Ainsi nous pourrons par la suite proposer une liste de course à l'utilisateur en fonction de la fréquence d'achat des produits.&lt;br /&gt;
&lt;br /&gt;
- Recipe contient les recettes que pourra rentrer l'utilisateur sur l'application. L'utilisateur pourra ainsi se voir proposer des recettes en fonction de ce qu'il a dans son frigo et de ses recettes personnelles.&lt;br /&gt;
&lt;br /&gt;
'''''Edit : On ajoutera une valeur entière dans les tables Date et Unity pour gérer le cas où il existe plusieurs produits (différents ou identiques) avec une date de péremption équivalente. On les appellera NbDate la valeur dans la table Date et NbUnity dans la table Unity. On leur ajoutera de même une clef primaire IdUnity et IdListProduct'''''&lt;br /&gt;
&lt;br /&gt;
On utilisera MySql pour la gestion de nos bases de données. &lt;br /&gt;
La syntaxe pour l'implanter dans la base de donnée à été jointe au dépôt git.&lt;br /&gt;
&lt;br /&gt;
Pour lancer my SQL, on tapera:&lt;br /&gt;
&lt;br /&gt;
   mysql -h localhost -u root -p&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Web service===&lt;br /&gt;
&lt;br /&gt;
====Page init.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet d'initier l'accès à la base de donnée sur le serveur. Elle est requise pour les pages qui suivent.&lt;br /&gt;
&lt;br /&gt;
====Page post.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet l'insertion d'un produit et d'une date via l'application mobile. Elle prend donc ces deux arguments et les insère dans les tables Unity, Product et Date.&lt;br /&gt;
&lt;br /&gt;
====Page get.php====&lt;br /&gt;
&lt;br /&gt;
Page qui envoie la liste des aliments avec leur nom, leur date, leur quantité dans le frigo, la quantité d'exemplaires acheté en tout depuis la mise en place de l'appareil. Le tri se fera directement dans l'application mobile. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Application Mobile===&lt;br /&gt;
&lt;br /&gt;
====Home page====&lt;br /&gt;
&lt;br /&gt;
Page d'accueil permettant d'accéder aux pages d'ajout et de liste des produits disponibles. &amp;lt;br&amp;gt;&lt;br /&gt;
La page permet aussi d'effectuer la connexion entre la rfduino et l'application mobile. Elle montre les alertes (signaux) à l'utilisateur &lt;br /&gt;
et écrit leur signification.&lt;br /&gt;
&lt;br /&gt;
====Page d'ajout====&lt;br /&gt;
&lt;br /&gt;
Pour ajouter un produit et lire une date on utilisera un champ editText pour permettre à l'utilisateur d'écrire &amp;quot;Manuellement&amp;quot; dedans grâce au clavier du smartphone.&amp;lt;br&amp;gt;&lt;br /&gt;
De plus on utilise un bouton qui appellera la caméra pour détecter les caractères d'un produit ou d'une date. Au début nous voulions utiliser un détecteur de code barre, nous l'avons implémenté mais nous avons remarqué que la mise au point sur une surface non plane prend du temps d'autant plus qu'il faut questionner une base de donnée contenant tous les numéro de codes barres utilisés. Nous avons donc prit la décision d'utiliser uniquement la lecture de caractère et nous créerons une liste déroulante sous l'editText pour faciliter l'insertion d'un produit qui a déjà été ajouté. Pour la lecture de caractère, nous utilisons la librairie tesseract.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'envoi, nous utilisons la librairie Volley développé par google.&lt;br /&gt;
&lt;br /&gt;
====Page Liste====&lt;br /&gt;
&lt;br /&gt;
Permet de lister les produits dans la base de donnée. Une série de boutons radio permettent de trier les produits par ordre alphabétique, par date de péremption, par nombre d’occurrence dans la réserve alimentaire, par nombre d'achat depuis la mise en place du système.&amp;lt;br&amp;gt;&lt;br /&gt;
Une colonne permet de sélectionner les aliments désirés (par checkBox) pour ensuite les supprimer via un button &amp;quot;suppr&amp;quot; ou les choisir pour trouver des recettes qui les utilisent.&amp;lt;br&amp;gt;&lt;br /&gt;
Un EditText permet d'effectuer une recherche sur la base de donnée.&lt;br /&gt;
&lt;br /&gt;
===Altium Designer===&lt;br /&gt;
&lt;br /&gt;
Pour permettre au RFDuino de communiquer avec les différents composants, nous aurons besoin de quelques composants électroniques. Afin que cela soit plus esthétique pour la modélisation finale, nous allons créer une carte PCB pour rassembler tous ces composants dessus. On utilisera le logiciel Altium Designer pour cela.&lt;br /&gt;
&lt;br /&gt;
Avant de représenter notre circuit général, nous allons commencer par créer une librairie rassemblant tous les composants que nous utiliserons par la suite, en particulier nos composants CMS (accéléromètre et résistances). Pour ce qui est des LEDs et du buzzer, qui sont traversants, nous pourrons utiliser des headers classiques.&lt;br /&gt;
&lt;br /&gt;
Il a donc fallu créer le schematic ainsi que l'empreinte de nos composants CMS. Voici un exemple avec notre accéléromètre :&lt;br /&gt;
[[Fichier:Accelerosch.PNG|500px|thumb|left|Schematic de l'accéléromètre]]&lt;br /&gt;
[[Fichier:Acceleropcb.PNG|500px|thumb|center|Empreinte PCB de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les fichiers Altium sont disponibles sur notre dépôt GIT. Après cela, nous pouvons maintenant construire notre schematic du montage entier et ensuite le fichier PCB afin de pouvoir graver notre circuit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après quelques modifications sur le montage prévu initialement, c'est-à-dire en enlevant une résistance entre un GPIO et l'alimentation de l'accéléromètre ainsi qu'en rajoutant des résistances pull-up sur les broches de notre liaison i2C (SDA et SCL) et un bouton poussoir en plus pour permettre un reset du RFDuino, nous avons pu créer notre schematic global pour en faire un PCB et l'exporter au format Gerber. De ce fait, le service EEI de Polytech pourra réaliser la gravure de notre carte PCB.&lt;br /&gt;
&lt;br /&gt;
Voici quelques photos pour illustrer notre projet sur Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Finalproto_sch.PNG|400px|thumb|left|Schematic du montage final]]&lt;br /&gt;
[[Fichier:Finalproto_pcb.PNG|400px|thumb|center|PCB du montage final]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On retrouve sur notre PCB final les headers, respectivement de 8 et 5 pins, de part et d'autre de la carte, qui représentent le RFDuino, où nous souderons des broches pour qu'elles puissent être intégrées au RFDuino. On note la présence de 5 autres headers de 2 pins, dont 3 pour des LEDs puis les 2 autres pour le buzzer et le bouton poussoir. Ce qui reste sont les composants CMS avec plusieurs composants à 2 pattes qui sont toutes les résistances de notre montage, celles de protection pour les LEDs et les pull-ups pour l'accéléromètre. Le dernier composant à 8 pattes est donc bien l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quelques difficultés ont été rencontrées durant ce travail notamment concernant les contraintes de construction sur le PCB final. En effet, les composants CMS choisis (surtout l'accéléromètre) étant parfois très petits, Altium n'accepte pas forcément le faible espacement entre les différentes pattes des composants, ce qui pose problème lors de la compilation. De plus, le plan de masse ne prenait pas en compte tous les éléments devant être rattachés à la masse. Il a fallu légèrement déplacer les headers représentant le RFDuino pour que cela soit possible. Il faudra alors peut-être légèrement plier les broches qui viendront s'intégrer sur le RFDuino pour ajouter notre PCB sur le RFDuino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons envoyé nos fichiers Altium au service EEI afin qu'il puisse réaliser physiquement notre carte. Nous nous retrouvons donc avec notre carte PCB récupérée auprès du service EEI. Voici le rendu :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:P46_carte.jpg|400px|thumb|center|Fabrication de notre carte PCB]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir souder nos différents composants, nous avons été rendre visite à Thierry Flamen, responsable du service EEI, afin de passer nos composants CMS au four (résistances et accéléromètre). En effet il était presque impossible de souder tous ces composants manuellement. Après ce passage au four, il nous restait les composants traversants à souder, c'est-à-dire les pins, les LEDs et notre buzzer. Voici le rendu après nos soudures :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:pcbfinal1_p46.jpg|200px|thumb|left|Vue du dessous de notre carte]]&lt;br /&gt;
[[Fichier:pcbfinal2_p46.jpg|200px|thumb|center|Vue du dessus de notre carte]]&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Pcbfinal2_p46.jpg&amp;diff=41620</id>
		<title>Fichier:Pcbfinal2 p46.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Pcbfinal2_p46.jpg&amp;diff=41620"/>
				<updated>2017-05-01T18:42:47Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Pcbfinal1_p46.jpg&amp;diff=41619</id>
		<title>Fichier:Pcbfinal1 p46.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Pcbfinal1_p46.jpg&amp;diff=41619"/>
				<updated>2017-05-01T18:41:56Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_IMA4_SC_%26_SA_2016/2017&amp;diff=41618</id>
		<title>Projets IMA4 SC &amp; SA 2016/2017</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_IMA4_SC_%26_SA_2016/2017&amp;diff=41618"/>
				<updated>2017-05-01T18:40:17Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : /* Matériel à acquérir */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Merci de référencer vos pages de projets ici. Merci aussi d'uniformiser vos formats que ce soit en regardant la présentation des projets déjà créés ou en demandant une modification du format des précédents si votre façon de faire vous semble la meilleure. Dans tous les cas un minimum de communication entre les binômes est conseillée.&lt;br /&gt;
&lt;br /&gt;
Toutes les sources doivent être déposées sur notre archive GIT. Le service est disponible à l'URL [https://archives.plil.fr archives.plil.fr]. Connectez-vous avec vos identifiants Polytech'Lille. Sauf indication contraire de vos encadrants, rendez le projet public et mettez le lien sur votre Wiki. Vous pouvez trouver de la documentation sur ce système d'archives sur ce [https://git-scm.com/book/fr/v1 site].&lt;br /&gt;
&lt;br /&gt;
== Répartition des binômes ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Projet !! Encadrants école !! Elèves&lt;br /&gt;
|-&lt;br /&gt;
| P1 [[IMA4 2016/2017 P1|Climatisation du pauvre]]&lt;br /&gt;
| Xavier Redon&lt;br /&gt;
| Haroun Abdelali&lt;br /&gt;
|-&lt;br /&gt;
| P2 [[IMA4 2016/2017 P2|Réseau de capteurs sur smartphone]]&lt;br /&gt;
| Alexandre Boé / Xavier Redon / Thomas Vantroys&lt;br /&gt;
| Wenyu sun / Xinyue xu&lt;br /&gt;
|-&lt;br /&gt;
| P10 [[IMA4 2016/2017 P10|Application de suivi de prise de médicaments]]&lt;br /&gt;
| Fanny Moreau / Alexandre Boé / Xavier Redon / Thomas Vantroys&lt;br /&gt;
| Martin Rohmer / Kévin Godesence&lt;br /&gt;
|-&lt;br /&gt;
| P11 [[IMA4 2016/2017 P11|Amélioration de l'accueil d'enfants hospitalisés]]&lt;br /&gt;
| Marion Binninger / Alexandre Boé / Xavier Redon / Thomas Vantroys&lt;br /&gt;
| Robin Cavalieri / Edmur Lopes&lt;br /&gt;
|-&lt;br /&gt;
| P14 [[IMA4 2016/2017 P14|Sex toy connecté]]&lt;br /&gt;
| Alexandre Boé / Xavier Redon&lt;br /&gt;
| Cedric Roussel / Thomas Stievenard&lt;br /&gt;
|-&lt;br /&gt;
| P18 [[IMA4 2016/2017 P18|Education de la position de tête]]&lt;br /&gt;
| Rodolphe Astori / Alexandre Boé / Xavier Redon / Thomas Vantroys&lt;br /&gt;
| Mame Arame Diop / Amina Fahem&lt;br /&gt;
|-&lt;br /&gt;
| P19 [[IMA4 2016/2017 P19|Orchestre électronique]]&lt;br /&gt;
| Lucas Prieux / Hidéo Vinot / Xavier Redon / Thomas Vantroys&lt;br /&gt;
| Antoine Arnaudet / Vivian Senaffe&lt;br /&gt;
|-&lt;br /&gt;
| P20 [[IMA4 2016/2017 P20|Création d’un environnement virtuel de test]]&lt;br /&gt;
| Rochdi Merzouki / Vincent Coelen / Valentin Vergez&lt;br /&gt;
| Butaye Marianne / François Duport&lt;br /&gt;
|-&lt;br /&gt;
| P21 [[IMA4 2016/2017 P21|Conception d’une MPS Polyvalente]]&lt;br /&gt;
| Rochdi Merzouki / Thomas Danel / Valentin Vergez&lt;br /&gt;
| Samy Belhouachi / François Xavier Cockenpot&lt;br /&gt;
|-&lt;br /&gt;
| P25 [[IMA4 2016/2017 P25|Robot mobile Polytech'Lille]]&lt;br /&gt;
| Xavier Redon / Alexandre Boé&lt;br /&gt;
| Cheikh Said Ahmed / Khadija El Messnaoui&lt;br /&gt;
|-&lt;br /&gt;
| P26 [[IMA4 2016/2017 P26|Train de véhicules]]&lt;br /&gt;
| Xavier Redon / Alexandre Boé&lt;br /&gt;
| Manlu Luo / Xinyi Wang&lt;br /&gt;
|-&lt;br /&gt;
| P27 [[IMA4 2016/2017 P27|Sonde atmosphérique]]&lt;br /&gt;
| Xavier Redon / Thomas Vantroys / Alexandre Boé&lt;br /&gt;
| Olivier Mahieux / Grillère Baptiste&lt;br /&gt;
|-&lt;br /&gt;
| P28 [[IMA4 2016/2017 P28|Adaptation d'un émulateur de calculatrices TI]]&lt;br /&gt;
| Xavier Redon / Gilles Dhaussy&lt;br /&gt;
| Rodolphe Toin&lt;br /&gt;
|-&lt;br /&gt;
| P29 [[IMA4 2016/2017 P29|Conteneurs pour site Web]]&lt;br /&gt;
| Xavier Redon / Thomas Vantroys&lt;br /&gt;
| Jade Dupont (valentin)&lt;br /&gt;
|-&lt;br /&gt;
| P30 [[IMA4 2016/2017 P30|Voiture radiocommandée controlée par gant]]&lt;br /&gt;
| Alexandre Boé / Xavier Redon / Thomas Vantroys&lt;br /&gt;
| Thomas Gosse / Bacem Hagui&lt;br /&gt;
|-&lt;br /&gt;
| P31 [[IMA4 2016/2017 P31|Accueil personnalisé par drone]]&lt;br /&gt;
| Alexandre Boé / Xavier Redon / Thomas Vantroys&lt;br /&gt;
| Tristan Hart / Etienne Profit&lt;br /&gt;
|-&lt;br /&gt;
| P32 [[IMA4 2016/2017 P32|Sécurité: brouilleur d'ondes]]&lt;br /&gt;
| Thomas Vantroys / Alexandre Boé / Xavier Redon&lt;br /&gt;
| Nicky Ung / Alexis Macherez&lt;br /&gt;
|-&lt;br /&gt;
| P33 [[IMA4 2016/2017 P33|Sécurité: ingénierie inverse de protocole réseau]]&lt;br /&gt;
| Thomas Vantroys / Alexandre Boé / Xavier Redon&lt;br /&gt;
| Oumaima Naanaa&lt;br /&gt;
|-&lt;br /&gt;
| P34 [[IMA4 2016/2017 P34|Interface Haptique, simulateur de formes et de textures]]&lt;br /&gt;
| Betty Semail / Laurent Grisoni / Frédéric Giraud&lt;br /&gt;
| Alice Coffin / Diana Marrucho&lt;br /&gt;
|-&lt;br /&gt;
| P37 [[IMA4 2016/2017 P37|Gamelle connectée]]&lt;br /&gt;
| Alexandre Boé / Thomas Vantroys / Xavier Redon&lt;br /&gt;
| Lutecia Damiens / Alexis Dorian&lt;br /&gt;
|-&lt;br /&gt;
| P38 [[IMA4 2016/2017 P38|Veilleuse enfant connectée]]&lt;br /&gt;
| Thomas Vantroys / Alexandre Boé&lt;br /&gt;
| Hugo Delatte&lt;br /&gt;
|-&lt;br /&gt;
| P39 [[IMA4 2016/2017 P39|Projecteur laser]]&lt;br /&gt;
| Xavier Redon / Alexandre Boé / Thomas Vantroys&lt;br /&gt;
| Loïc Tombazzi / Marius Trimbur&lt;br /&gt;
|-&lt;br /&gt;
| P44 [[IMA4 2016/2017 P44|3615 Facebook]]&lt;br /&gt;
| Thomas Vantroys&lt;br /&gt;
| Marouan Mcharfi / Tristan Lopez&lt;br /&gt;
|-&lt;br /&gt;
| P46 [[IMA4 2016/2017 P46|Aide anti-gaspillage alimentaire ]]&lt;br /&gt;
| Alexandre Boé / Xavier Redon / Thomas Vantroys&lt;br /&gt;
| Alexandre Huet / François Lefevre&lt;br /&gt;
|-&lt;br /&gt;
| P47 [[IMA4 2016/2017 P47|Modélisation d’un robot mobile]]&lt;br /&gt;
| Midzodzi Pekpe&lt;br /&gt;
| Djamil Mohammed / Hamza Kerroum&lt;br /&gt;
|-&lt;br /&gt;
| P48 [[IMA4 2016/2017 P48|Surveillance d'un robot mobile]]&lt;br /&gt;
| Midzodzi Pekpe&lt;br /&gt;
| Jean-Baptiste Saison&lt;br /&gt;
|-&lt;br /&gt;
| P3 [[IMA4 2016/2017 P3|Capteurs enfuis pour vieillissement du béton]]&lt;br /&gt;
| Alexandre Boé / Thomas Vantroys&lt;br /&gt;
| Florian Giovannangeli&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Matériel à acquérir ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Projet !! Matériel&lt;br /&gt;
|-&lt;br /&gt;
| P1 [[IMA4 2016/2017 P1|Climatisation du pauvre]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Feuille de Plexiglass &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; une plaque de polystérene &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; 3 AOPs (comparateur) &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; 3 Diodes &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt; 2 Ventilateurs 100 m3/h 12V [http://www.sellande.com/sellande-webcom/home/393-ventilateur-12v-100m3-h-3752132012327.html?gclid=CjwKEAiAlZDFBRCKncm67qihiHwSJABtoNIgNjN3dRX7D5BOfBUbN9WdjSVzbfLBF_YsaI59D0MaCxoC_oDw_wcB] &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt; 1 Panneau solaire 10Wc 12V [https://www.apb-bluepower.com/panneau-solaire-photovoltaique-12v-10w-apb-energy,fr,4,QX-P-10.cfm] &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; 2 sondes de températures [http://fr.rs-online.com/web/p/sondes-de-temperature/1241079/] &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt; une Batterie 70Ah 12V [https://www.manomano.fr/batterie-2319?model_id=1988070&amp;amp;referer_id=537135&amp;amp;gclid=CjwKEAiAlZDFBRCKncm67qihiHwSJABtoNIgcniSnImZEGSLytrHpgv4fTHGFuj1r30kH340E0wmPxoC6ovw_wcB] &amp;lt;/span&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| P2 [[IMA4 2016/2017 P2|Réseau de capteurs sur smartphone]]&lt;br /&gt;
|   &lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;6* Capteur de température[http://www.mouser.fr/ProductDetail/Microchip-Technology/TC1047VNBTR/?qs=sGAEpiMZZMucenltShoSnjkfRJmEyKRQimeb4yJa%2fn8%3d]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;1* Smartphone sous Android 6.0+&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;6* ATmega32u4-AU (package TQFP), [http://www.mouser.fr/ProductDetail/Microchip-Technology-Atmel/ATMEGA32U4RC-AU/?qs=sGAEpiMZZMvqv2n3s2xjsWfDNH99npBWOb9m5kVBeoM%3d]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;6* Connecteur USB Zx20-B-5S-UINT(30)[http://www.mouser.fr/ProductDetail/Hirose-Electric/ZX20-B-5S-UNIT30/?qs=%2fha2pyFaduiI1PHIQp025swiTaQgBs3xrF3lm%2fjmZrmtw6zfCgwPXHsVofi5faNN]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;5* quartz 16Mhz [http://fr.farnell.com/multicomp/mcrsd16000f183000rr/quartz-16mhz-18pf-hc49-us-smd/dp/2395958]&amp;lt;/span&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;6* Chip guard[http://eu.mouser.com/ProductDetail/Bourns/CG0603MLC-05E/?qs=%2fha2pyFaduj8GWc5RpRwWsoz%252bsBNDfM0b%2fMwO0m8cAS%252b28tb9AwLWQ%3d%3d]&amp;lt;/span&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;10* Fusibles réarmables[http://eu.mouser.com/ProductDetail/Bourns/MF-MSMF050-2/?qs=%2fha2pyFadujDIyYlSEAmAtmxzhQX2R56dU6AOyKWoF1gS%2fKyt5ZQcQ%3d%3d]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;5* header(36 contacts) [http://fr.farnell.com/3m/929974-01-36/connecteur-rcpt-36pos-1-rangee/dp/2396216?MER=sy-me-pd-mi-alte]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;20* résistances de 22 ohm[http://fr.farnell.com/multicomp/mc0063w0603522r/res-couche-epaisse-22r-5-0-063w/dp/9331891]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;10* résistances de 10k ohm[http://fr.farnell.com/susumu/rr0816p-103-b-t5/res-couche-mince-10k-0-1-0-063w/dp/1653253]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;10* résistances de 1M ohm[http://fr.farnell.com/multicomp/mc0063w060311m/res-couche-epaisse-1m-1-0-063w/dp/9330410?ost=9330410&amp;amp;selectedCategoryId=&amp;amp;categoryNameResp=Toutes%2Bles%2Bcat%25C3%25A9gories&amp;amp;searchView=table&amp;amp;iscrfnonsku=false]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;10* capacités(CMS) de 22 pF[http://fr.farnell.com/multicomp/mc0603n220j500ct/condensateur-mlcc-c0g-np0-22pf/dp/1759057]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;10* capacité(CMS) de 1 uF[http://fr.farnell.com/walsin/0603x105k100ct/condensateur-mlcc-x5r-1uf-10v/dp/2496916]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;10* capacité(CMS) de 100 nF[http://fr.farnell.com/walsin/0603b104k500ct/condensateur-mlcc-x7r-0-1uf-50v/dp/2496834]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;10* diode[http://www.mouser.fr/ProductDetail/Wolfspeed-Cree/C3D16065A/?qs=sGAEpiMZZMtbRapU8LlZD2p%2ftt67Z%252br4005PkgBuAD1SM4AyiGk4XA%3d%3d]&amp;lt;/span&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| P10 [[IMA4 2016/2017 P10|Application de suivi de prise de médicaments]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Smartphone sous Android&amp;lt;/span&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| P11 [[IMA4 2016/2017 P11|Amélioration de l'accueil d'enfants hospitalisés]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Raspberry Pi&amp;lt;/span&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| P14 [[IMA4 2016/2017 P14|Sex toy connecté]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; 2*Adaptateur 5V [http://www.gotronic.fr/art-adaptateur-mv530n-8000.htm]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; 2*Embase adaptateur [http://www.gotronic.fr/art-embase-alim-sa21a-14961.htm]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; 2*Arduino mini (en 3v3 finalement) [http://fr.rs-online.com/web/p/kits-de-developpement-pour-processeurs-et-microcontroleurs/7617327/]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; 2*Modules bluetooth [http://fr.rs-online.com/web/p/modules-bluetooth/1244407/]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Capteur de température [http://www.mouser.fr/ProductDetail/Maxim-Integrated/MAX31725MTA+/?qs=sGAEpiMZZMucenltShoSnuJtr4xlG60lboc%252bnebe514%3d]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; 2*Accéléromètre [http://www.mouser.fr/ProductDetail/NXP-Freescale/MMA8652FCR1/?qs=sGAEpiMZZMs0JOhy9PM0USp5vOY2ClxODTM36syD6sQ%3d]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; 4*Vibreurs [http://www.gotronic.fr/art-vibreur-miniature-vm1201-20685.htm]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; 5*Servomoteurs [http://www.gotronic.fr/art-servomoteur-s07nf-25182.htm]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; 5* Capacité 0.1µF (*1 capteur température, *2 accéléromètre, 2* régulateur)[http://fr.farnell.com/walsin/0805b104k500ct/condensateur-mlcc-x7r-0-1uf-50v/dp/2496944]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; 3*Résistance 4.7kohms ( capteur température) [http://fr.farnell.com/vishay/crcw08054k70fkta/res-couche-epaisse-4-7k-1-0-125w/dp/1653013RL]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;2*Capacité 0.33µF (régulateur) [http://www.mouser.fr/ProductDetail/Wurth-Electronics/885012105003/?qs=sGAEpiMZZMvzv9EAOJZmO9b76UYLhwTmM7EN2czdHKU%3d]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; 2*Régulateur 3.3V [http://www.mouser.fr/ProductDetail/Texas-Instruments/UA78M33CDCYR/?qs=sGAEpiMZZMtUqDgmOWBjgHbKmseNGGTSe%2f5roer8H%2fU%3d]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; Silicone alimentaire (internet conseillé par un chercheur de l'inria. Prendre sorta clear 40A) [http://www.creation-silicone.com/31.la-serie-sorta-clear] (la cigale et la fourmi à lille) [http://www.cigaleetfourmi.fr/silicones-alginates-et-latex/1262-silicone-alimentaire-peau-liquide-2-kg.html#more_info_tabs] (Rougier&amp;amp;Plé à lille) [http://www.rougier-ple.fr/silicone-alimentaire-4428-1-kg.r.html]  &amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; ARduino uno pour essais&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Servomoteur pour essais&amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Deux téléphones sur android (dont un LG G4C de l'école)&amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P18 [[IMA4 2016/2017 P18|Education de la position de tête]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Accéléromètre 4 ADXL335[http://www.gotronic.fr/art-module-accelerometre-adxl335-3-axes-ef03049-23504.htm]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Module Adafruit 9-DOF [http://www.gotronic.fr/art-module-9-dof-ada2472-23896.htm]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Smartphone sous Android&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Câble 12 conducteurs  [http://fr.farnell.com/pro-power/pp000342/cable-12-conducteurs-0-5mm2-25m/dp/2440126]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Arduino Mega&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Résistance &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Module WIFI ESP 8266 [http://www.gotronic.fr/art-module-wifi-serie-esp8266-113990084-23666.htm]&amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P19 [[IMA4 2016/2017 P19|Orchestre électronique]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Arduino UNO x5.&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P20 [[IMA4 2016/2017 P20|Création d’un environnement virtuel de test]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P21 [[IMA4 2016/2017 P21|Conception d’une MPS Polyvalente]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P25 [[IMA4 2016/2017 P25|Robot mobile Polytech'Lille]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Atmega 328p [http://fr.farnell.com/atmel/atmega328p-pu/micro-8-bits-avr-32k-flash-28pdip/dp/1715487]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Atmega 328p CMS [http://fr.farnell.com/atmel/atmega328p-au/micro-8-bits-avr-32k-flash-32tqfp/dp/1715486?selectedCategoryId=&amp;amp;exaMfpn=true&amp;amp;categoryId=&amp;amp;searchRef=SearchLookAhead&amp;amp;searchView=table&amp;amp;iscrfnonsku=false]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;FT232R (*2) [http://fr.farnell.com/ftdi/ft232rl-reel/usb-vers-uart-ssop28-232/dp/1146032]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;USB (*2) [http://fr.farnell.com/wurth-elektronik/65100516121/mini-usb-2-0-type-b-receptacle/dp/1642036]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Led (*4)[http://fr.farnell.com/kingbright/kph-1608sgc/led-12mcd-vert-568nm/dp/2426215]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;bouton(*2) [http://www.mouser.fr/ProductDetail/E-Switch/LL3301NF065QG/?qs=sGAEpiMZZMvxtGF7dlGNpqqmTFthXBmf0KM%252bqj1KR%252bA%3d]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Diode(*2)[http://eu.mouser.com/ProductDetail/Microsemi/1N4148UR-1/?qs=sGAEpiMZZMtoHjESLttvkmKnFwXErGnblScnaPsZQPwnq%2fwjQSnhEg%3d%3d]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;LM1117(*2) [http://www.mouser.fr/new/Texas-Instruments/nationalLM1117/]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;TB6612FNG (*2) [http://www.gotronic.fr/art-commande-de-2-moteurs-tb6612fng-2x1a-21716.htm]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Quartz 16 MHz (*2)[http://fr.farnell.com/raltron/as-16-000-18/quartz-16mhz-18pf-hc-49s/dp/1611761?MER=bn_para_1TP_LastViewed_3]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;RJ11(*6) [http://fr.farnell.com/molex/95522-2667/fiche-rj11-cat3-6-6/dp/2060715]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Resistor 1k &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Resistor 470 &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Resistor 100 &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Resistor 1M &amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Capacité 10 nF &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Capacité 10uF &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Capacité 22pF &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;'''MATERIELS CAPTEUR DE LIGNE'''[http://projets-imasc.plil.net/mediawiki/index.php?title=Finalisation_de_cartes_de_contr%C3%B4le_de_robot#Carte_capteur_de_ligne]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;'''MATERIELS CAPTEUR ULTRASON'''[http://projets-imasc.plil.net/mediawiki/index.php?title=Finalisation_de_cartes_de_contr%C3%B4le_de_robot#Carte_capteur_ultrason_.28en_cours.29]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;'''MATERIELS CODEUR INCREMENTAL'''[http://projets-imasc.plil.net/mediawiki/index.php?title=Finalisation_de_cartes_de_contr%C3%B4le_de_robot#Carte_Odom.C3.A8tre_.28en_cours.29]&amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P26 [[IMA4 2016/2017 P26|Train de véhicules]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;LEDs IR (x20), RS [http://fr.rs-online.com/web/p/led-ir/6548334/]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Phototransistors IR (x20), RS [http://fr.rs-online.com/web/p/phototransistors/6548047/]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Drivers moteur Pololu (x1), GoTronic [http://www.gotronic.fr/art-commande-de-2-moteurs-tb6612fng-2x1a-21716.htm]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Drivers moteur TB6612FNG (x3), Mouser [http://www.mouser.fr/Search/ProductDetail.aspx?qs=rsevcuukUAy2UalRuv4E%2fQ%3d%3d] &amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Borniers à vis (x20), Farnell [http://fr.farnell.com/camdenboss/ctb0502-2/bornier-carte-a-fil-2-voies-12awg/dp/2493622?MER=en-me-sr-b-all]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Résistances 220 Ohms CMS (x20), Mouser [http://www.mouser.fr/ProductDetail/Vishay-Dale/CRCW0603220RFKEA/?qs=sGAEpiMZZMtlubZbdhIBIKySljYCMs0HAiopx1mcVY0%3d] &amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Résistances 470 kOhms CMS (x30), Mouser [http://www.mouser.fr/ProductDetail/Panasonic/ERJ-3GEYJ474V/?qs=sGAEpiMZZMtlubZbdhIBIDkNbKahCB4%252bXwMzav7V8qQ%3d]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;LEDs couleur (x10), RS [http://fr.rs-online.com/web/p/led/8134845/]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Fils m-m (x1 lot de 65), Farnell [http://fr.farnell.com/multicomp/mcbbj65/assortiment-de-jumper-fil-65pcs/dp/2396146]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Capas 10uF CMS (x20) Mouser [http://www.mouser.fr/ProductDetail/Murata-Electronics/ZRB18AR61C106ME01L/?qs=sGAEpiMZZMs0AnBnWHyRQPHsfd5klL7FP%2fi0oh%252bVTwkomqr6NYKsqQ%3d%3d]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Capas 0.1uF CMS (x20) Mouser [http://www.mouser.fr/ProductDetail/Kemet/C0603C104K4RACTU/?qs=sGAEpiMZZMs0AnBnWHyRQFqPnX0OlvcoGdtRY%252bgH1%2fs%3d]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Embases CI 40 contacts 1 rangée (x6) RS [http://fr.rs-online.com/web/p/embases-de-circuit-imprime/4232841/]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Connecteur HE14 MH100 (x10) [http://www.gotronic.fr/art-connecteur-he14-mh100-4457.htm]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Connecteur HE14 MH190 (x10) [http://www.gotronic.fr/art-connecteur-he14-mh190-4458.htm]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Capteurs Ultrasons SR04 (x3)&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Piles ou accumulateurs (x16 à 1.5V)&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Odomètres codeurs (x4) &amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Boutons poussoirs (x4) [http://www.gotronic.fr/art-bp-miniature-krs1273-16976.htm] &amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Interrupteurs (x4) &amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Colliers de serrage &amp;lt;/span&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| P27 [[IMA4 2016/2017 P27|Sonde atmosphérique]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Capteur de température DS75LV [http://www.mouser.fr/ProductDetail/Maxim-Integrated/DS75LVU+/?qs=sGAEpiMZZMucenltShoSnqz2Nq7rAtSUouPEUh693aE%3d]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Capteur de pression [http://www.mouser.fr/ProductDetail/Measurement-Specialties/5525DSO-SB005GS/?qs=sGAEpiMZZMvhQj7WZhFIAJ6e00q4%2fiLk8vQEbfsXmbvuJAmWYTr67w%3d%3d]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Module LoRa [http://www.mouser.fr/ProductDetail/Adafruit/3179/?qs=sGAEpiMZZMuC4zZxLL0ZTXmUcMwoRc9uEac7jsWPYbgAg4D4CJduaQ==]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Module GPS [http://www.mouser.fr/ProductDetail/Adafruit/3179/?qs=sGAEpiMZZMuC4zZxLL0ZTXmUcMwoRc9uEac7jsWPYbgAg4D4CJduaQ==]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;1 RaspberryPi&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Batterie 5000 mAh [http://fr.rs-online.com/web/p/batteries-externes/7757508/]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;1 carte microSD pour Raspberry 8GB.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P28 [[IMA4 2016/2017 P28|Adaptation d'un émulateur de calculatrices TI]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P29 [[IMA4 2016/2017 P29|Conteneurs pour site Web]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P30 [[IMA4 2016/2017 P30|Voiture radiocommandée controlée par gant]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Accéléromètre ADXL335 &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Arduino Nano &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; 2x Module XBee + 1x Shield &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Arduino UNO &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Xbee Adapter Board&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; Raspberry Pi&amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P31 [[IMA4 2016/2017 P31|Accueil personnalisé par drone]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Carte RaspberryPi (Au minimum modèle 2)&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Alimentation MicroUSB pour RaspberryPi&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Carte MicroSD 16Gb&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Dongle Bluetooth BLED112-V1[http://fr.rs-online.com/web/p/adaptateurs-bluetooth/8077742/]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Capteur de mesure Sharp GP2Y0A02YK x3 [http://www.gotronic.fr/art-capteur-de-mesure-sharp-gp2y0a02yk-11536.htm]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Appareil mobile sous OS Android (portable ou tablette )&amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;CAN 12 bits (ADS1015 12-bit ADC&amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P32 [[IMA4 2016/2017 P32|Sécurité: brouilleur d'ondes]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Récepteur LoRa 433/868Mhz&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Logiciel Code compiler équipé d'un GCC pour MSP430&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Carte cc430f5137 868MHz&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;1 antenne 868MHz[http://www.mouser.fr/ProductDetail/Linx-Technologies/ANT-868-CW-HWR-RPS/?qs=sGAEpiMZZMuBTKBKvsBmlOBg0H7cD5uyLmjn8%2f6ScJQ%3d]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Breadboard&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Quelques LEDs&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;pour 433MHz&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;(carte arduino + cc1101)&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Quartz 26MHz [http://fr.farnell.com/txc/7a-26-000maaj-t/crystal-26mhz-18pf-5-x-3-2mm/dp/2061710]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;2 antennes 433MHz[http://www.mouser.fr/ProductDetail/LPRS/ANT-SR433/?qs=sGAEpiMZZMuBTKBKvsBmlL2JeKAJ5GlFgePIl66EJDQoPGtUlcrRBQ%3d%3d]&amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P33 [[IMA4 2016/2017 P33|Sécurité: ingénierie inverse de protocole réseau]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; 3 modules LoRa 3179 Adafruit [http://www.mouser.fr/ProductDetail/Adafruit/3179/?qs=sGAEpiMZZMuC4zZxLL0ZTXmUcMwoRc9uEac7jsWPYbgAg4D4CJduaQ==],&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| P34 [[IMA4 2016/2017 P34|Interface Haptique, simulateur de formes et de textures]]&lt;br /&gt;
|&lt;br /&gt;
Aucun matériel nécessaire.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P37 [[IMA4 2016/2017 P37|Gamelle connectée]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Émetteur et récepteur infrarouge/photodiode (seulement 1 de chaque prêtées, il en faut 6 à 7 de chaque)&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Adaptateur PS512S  [http://www.gotronic.fr/art-adaptateur-ps512s-19913.htm] &amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Shield carte SD (carte SD également)&amp;lt;span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Module horloge temps réel (RTC) [http://www.gotronic.fr/art-module-horloge-temps-reel-ada3296-25536.htm]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Capteur de proximité IR [http://www.gotronic.fr/art-capteur-de-proximite-ir-38-khz-2460-21766.htm]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Capteur Ultrason &amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;LEDs &amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Résistances &amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Arduino méga &amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;ESP8266 &amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Servomoteur 360 &amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;Solution de secours : Rapsberry &amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;Solution de secours : Balance &amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P38 [[IMA4 2016/2017 P38|Veilleuse enfant connectée]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Raspberry pi modèle B minimum&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;batterie&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;circuit shut down(une breadboard, une LED, une resistance 220 ohms, 3 fils M/M, 2 fils M/F)&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;un interrupteur on/off Référence : 7547 Selectronic&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;bois de palette&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;dongle wi pi&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Rétroprojecteur&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;timer(circuit de retardement 5 secondes)&amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P39 [[IMA4 2016/2017 P39|Projecteur laser]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Deux lasers de différentes couleurs&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Une paire de galvanomètres à miroir&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Arduino&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Raspberry Pi3&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Câble secteur&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Drivers galvanomètres x2&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Alimentation laser&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Lunette de sécurité x2 [https://www.amazon.fr/Uvex-S1933X-Eyewear-SCTOrange-Anti-Fog/dp/B000USRG90/ref=sr_1_1?ie=UTF8&amp;amp;qid=1485441383&amp;amp;sr=8-1&amp;amp;keywords=uvex+s1933x]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Alimentation 230V/5V 1A [http://www.miniinthebox.com/fr/dual-usb-eu-prise-murale-5v-2a-voyage-adaptateur-chargeur-d-alimentation-pour-iphone7-6-xiaomi-samsung-et-autre-telephone-portable_p5410410.html?currency=EUR&amp;amp;litb_from=paid_adwords_shopping&amp;amp;sku=429_6917%7C752_20648&amp;amp;utm_source=google_shopping&amp;amp;utm_medium=cpc&amp;amp;adword_mt=&amp;amp;adword_ct=138705676724&amp;amp;adword_kw=&amp;amp;adword_pos=1o5&amp;amp;adword_pl=&amp;amp;adword_net=g&amp;amp;adword_tar=&amp;amp;adw_src_id=9653316068_661261352_33588296076_aud-79897721311:pla-256966386459&amp;amp;gclid=Cj0KEQiA_KvEBRCtzNil4-KR-LIBEiQAmgekFxxKjJJWBYCJlDZEa3Ke_2_WR0DzGVbz-jaCZHVIBoMaAvld8P8HAQ]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Boitier ABS [http://fr.farnell.com/multicomp/g3118/boitier-abs-240x120x60mm-ip65/dp/1526656]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;DAC 4 canaux, avec interface I²C [http://www.mouser.fr/ProductDetail/Adafruit/1083/?qs=sGAEpiMZZMsMyYRRhGMFNtB2KhoPg%2fPbP3CExTYfM4M%3d]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Connecteur C14 [http://fr.farnell.com/schurter/3-101-141/fiche-iec-c14-c18-avec-filtre/dp/2671668]&amp;lt;/span&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P44 [[IMA4 2016/2017 P44|3615 Facebook]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Un Minitel 1 Bistandard Alcatel Telic&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; un connecteur DIN 5 broches[http://www.selectronic.fr/din-cordon-male-5-broches-45.html]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; un Arduino Uno [http://www.selectronic.fr/carte-arduino-uno.html]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; un module Ethernet [http://www.selectronic.fr/shield-ethernet-v2.html]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P46 [[IMA4 2016/2017 P46|Aide anti-gaspillage alimentaire ]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Rfduino DIP board + USB shield, Mouser [http://eu.mouser.com/ProductDetail/RF-Digital-Wireless/RFD90101/?qs=sGAEpiMZZMsrChSOYEGTCSSoddgmKGJ7o1oPrqG%2fa%2fU%3d]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Rfduino Dual AAA shield, Mouser [http://eu.mouser.com/ProductDetail/RF-Digital-Wireless/RFD22126/?qs=sGAEpiMZZMsrChSOYEGTCTCnakKeCOV7XxQSzqVKQX4%3d]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Raspberry Pi&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Clef wifi&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;2 piles de 1,5V AAA &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;1 buzzer, Mouser [http://www.mouser.fr/ProductDetail/TDK/PS1240P02BT/?qs=sGAEpiMZZMtWZVZ%2fjgUYS49cTVUJP3OaWyx1fxdmA7I%3d] &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;1 accéléromètre, mouser [http://www.mouser.fr/ProductDetail/NXP-Freescale/MMA8653FCR1/?qs=sGAEpiMZZMs0JOhy9PM0USp5vOY2ClxOY1G2fK3tzYI%3d] &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;3 LEDs de couleurs différentes, 2 Mouser Rouge[http://www.mouser.fr/ProductDetail/Lumex/SSL-LX5093LBI-SRD/?qs=sGAEpiMZZMvHYEB9WUp7ElLqM0HAvqw07NtkT0umwJ8%3d], Mouser Vert [http://www.mouser.fr/ProductDetail/Dialight/521-9465F/?qs=sGAEpiMZZMvHYEB9WUp7EvzO6BrrarQchHylkK4n3ZA%3d], &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Smartphone sous Android&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Aimants, Farnell [http://fr.farnell.com/duratool/d01767/aimant-12-x-3mm-pqt6/dp/1888096]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;3 Résistances CMS 330 Ohms, Mouser [http://www.mouser.fr/ProductDetail/Vishay/CRCW1206330RFKEA/?qs=sGAEpiMZZMvdGkrng054t%252b8cnVAnHPZkGMXtw0W%2fcW8%3d] &amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;1 Transistor Bipolaire, Mouser [http://www.mouser.fr/ProductDetail/Fairchild-Semiconductor/MMBTH10/?qs=sGAEpiMZZMvDjfggS9kWsbCZIMjqR5oUPy4t%252bWqVHyk%3d] &amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P47 [[IMA4 2016/2017 P47|Modélisation d’un robot mobile]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Logiciel MatLab Simulink&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Logiciel RobotinoView&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Robotino&amp;lt;/span&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P48 [[IMA4 2016/2017 P48|Surveillance d'un robot mobile]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Logiciel MatLab Simulink&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Logiciel RobotinoView&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Robotino&amp;lt;/span&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P3 [[IMA4 2016/2017 P3|Capteurs enfuis pour vieillissement du béton]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;2 x Feather M0 LoRa 433MHz&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;1 x Batterie DC5V LogiLink&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;2 x Capteurs de choc PKGS-00GXP1-R [http://fr.farnell.com/murata/pkgs-00gxp1-r/capteur-de-choc-piezoelec-0-35pc/dp/2707454] &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;3 x Capteurs d'humidité/température SHT11 [http://fr.farnell.com/sensirion/sht11/capteur-humidite-temp-v4/dp/1590511] &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;3 x Accéléromètres FXLS8471QR1 [http://fr.farnell.com/nxp/fxls8471qr1/accelerometre/dp/2377753] &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;1 x Connecteur femelle 16 broches [http://fr.farnell.com/3m/929974-01-16/connect-femelle-16-voies-1-rang/dp/2672440]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;5 x Condensateurs 100nF  [http://fr.farnell.com/multicomp/mc0603b104k500ct/condensateur-mlcc-x7r-100nf-50v/dp/1759122]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;2 x Condensateurs 4.7nF  [http://fr.farnell.com/walsin/0603x475k6r3ct/condensateur-mlcc-x5r-4-7uf-6/dp/2496930]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;3 x Résistances 10kΩ [http://fr.farnell.com/multicomp/mc0063w0603110k/res-couche-epaisse-10k-1-0-063w/dp/9330399RL]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=41610</id>
		<title>IMA4 2016/2017 P46 : Aide anti-gaspillage alimentaire</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=41610"/>
				<updated>2017-04-30T19:49:37Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : /* Feuille d'heures */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
En France, nous jetons en moyenne 21% des aliments que nous achetons, ce qui représente une perte de 100 à 160 euros par an par habitant. Cela est en partie dû à la date limite de consommation associée à chaque produit. En effet, à partir du moment où cette date sera dépassée le consommateur jettera les produits concernés sans réfléchir, même si ceux-ci peuvent parfois être encore mangeables. Plutôt que d'essayer de les convaincre du contraire, il serait judicieux de proposer aux adeptes du gaspillage une aide permettant de gérer tous les aliments dont ils disposent chez eux afin d'éviter la surprise de tomber sur plusieurs produits périmés lorsqu'ils ouvrent la porte de leur frigo. &lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Ce projet permet d'aider les utilisateurs d'une part à mémoriser les denrées périssables qu'ils disposent dans leur réserve alimentaire et d'autre part d'avertir l'utilisateur qu'un événement important a lieu. Ceci peut être une notification qu'un aliment va bientôt dépasser sa date de péremption, que la porte du frigidaire est restée ouverte ou encore que le nombre d'aliments dans la réserve devient critique et qu'il faudra de nouveau l'alimenter. Enfin, le système aidera l'utilisateur à trouver des idées de repas pouvant permettre de consommer les aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Notre prototype permettra d'éviter le gaspillage alimentaire ainsi que d'aider l'utilisateur dans sa gestion du stockage d'aliments.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
&lt;br /&gt;
Notre système sera composé de 3 éléments. &lt;br /&gt;
&lt;br /&gt;
Premièrement, un ou des smartphones appartenant aux utilisateurs. Ces derniers permettront de scanner grâce à son appareil photo, le code barre du produit ainsi que sa date de péremption. Il servira aussi d'interface utilisateur pour notre système. En effet, c'est par cet outil que l'utilisateur pourra lister tous les aliments que l'utilisateur a dans sa base et tout ça en les triant par date de péremption, ou encore voir les recettes possibles pour consommer des aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Deuxièmement, un serveur, de type Raspberry, qui permettra de stocker la base de donnée contenant les aliments de la réserve. Ce serveur sera connecté par wifi.&lt;br /&gt;
 &lt;br /&gt;
Troisièmement, un contrôleur (Rfduino) qui comportera une LED pour indiquer la mise sous tension du contrôleur, une LED pour prévenir l'utilisateur qu'un aliment va bientôt passer sa date de péremption et une dernière LED pour prévenir l'utilisateur que son niveau de réserve est critique ainsi qu'un buzzer et un accéléromètre pour buzzer quand la porte du frigo est restée trop longtemps ouverte. Ce dernier sera fixé au frigo par l'intermédiaire d'un dispositif adapté qui sera un système aimanté qui se pose sur le frigo.&lt;br /&gt;
&lt;br /&gt;
Nous implémenterons donc une application mobile Android qui fera le lien entre les 2 autres systèmes.&lt;br /&gt;
&lt;br /&gt;
Pour la partie électronique que nous aurons à réaliser, nous utiliserons une Breadboard pour faire des premiers tests puis nous créerons une carte PCB pour notre montage final.&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
On utilisera une Raspberry Pi en guise de serveur pour pouvoir s'occuper du stockage de toutes les données dans notre projet puisque notre contrôleur sera incapable de les contenir, ce n'est d'ailleurs pas son but ici.&lt;br /&gt;
&lt;br /&gt;
Notre smartphone fera donc le lien entre notre base de données et notre système embarqué par l'intermédiaire de l'application mobile.&lt;br /&gt;
&lt;br /&gt;
Nous prendrons ici un RFduino puisque celui-ci nous permet d'ajouter des modules comme bon nous semble afin d'adapter le système aux besoins de notre application. Il est également parfaitement compatible avec les applications Android. De plus, nous avons un Bluetooth directement intégré au RFduino pour s'assurer que les liaisons RFduino-application mobile se fassent correctement. &lt;br /&gt;
On notera également que ce contrôleur consomme peu de courant et ne demande qu'une faible tension d'alimentation, critères importants pour ce genre de projet. C'est la raison principale de son utilisation pour être utilisé comme interface physique sur le frigo, en ajoutant également sa taille réduite comparée à la Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
&lt;br /&gt;
Nous avons donc besoin du matériel suivant :&lt;br /&gt;
&lt;br /&gt;
*Raspberry Pi.&lt;br /&gt;
*Clef wifi&lt;br /&gt;
*RFduino (RFD22102 DIP Board, RFD22121 USB Shield, RFD22126 Dual AAA battery shield).&lt;br /&gt;
*2 piles AAA.&lt;br /&gt;
*3 leds tranversantes.&lt;br /&gt;
*3 Résistances 330 Ohm.&lt;br /&gt;
*1 Résistance 10 kOhm.&lt;br /&gt;
*Un buzzer.&lt;br /&gt;
*Accéléromètre.&lt;br /&gt;
*Aimants&lt;br /&gt;
*Un boîtier permettant d'intégrer la RFduino + fixation sur le frigo (modélisation à voir).&lt;br /&gt;
&lt;br /&gt;
Pour le buzzer, l'accéléromètre et les résistances, nous choisirons des composants CMS pour nous permettre d'avoir une carte plus petite.&lt;br /&gt;
&lt;br /&gt;
===Calendrier prévisionnel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Liste des tâches à effectuer====&lt;br /&gt;
&lt;br /&gt;
* Configurer la Raspberry :&lt;br /&gt;
** Installer et configurer le serveur.&lt;br /&gt;
** Créer le diagramme UML de notre future base de données.&lt;br /&gt;
** Créer la base sur le serveur.&lt;br /&gt;
** Configurer la connexion WiFi.&lt;br /&gt;
&lt;br /&gt;
* Monter et programmer la RFduino :&lt;br /&gt;
** Connecter les différents modules au RFduino (accéléromètre, LEDs, buzzer, Batterie, module Bluetooth).&lt;br /&gt;
** Récupérer les consignes du smartphone grâce au Bluetooth.&lt;br /&gt;
** Programmer le comportement du RFduino en fonction des consignes.&lt;br /&gt;
** Construire le boitier final.&lt;br /&gt;
&lt;br /&gt;
* Implémenter l'application mobile Android :&lt;br /&gt;
** Une première activité permettant de se connecter au RFduino et à la Raspberry.&lt;br /&gt;
** Scanner une date et un code barre.&lt;br /&gt;
** Ajout/suppression d'un aliment dans la base de donnée.&lt;br /&gt;
** Envoi d'une consigne au RFduino.&lt;br /&gt;
** Rendre l'interface utilisateur ergonomique (lister aliments, envoyer vers page de recettes avec l'utilisation des aliments bientôt périmés...).&lt;br /&gt;
&lt;br /&gt;
====Calendrier====&lt;br /&gt;
&lt;br /&gt;
Répartition du temps consacré au projet (120h *2) :&lt;br /&gt;
&lt;br /&gt;
*Partie Raspberry : 60h&lt;br /&gt;
*Partie RFduino : 60h&lt;br /&gt;
*Partie développement mobile : 120h&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
&lt;br /&gt;
===Feuille d'heures===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 !  !! Lundi 16-18h !! Mercredi 14-18h !! Jeudi 8-10h&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 1&lt;br /&gt;
&lt;br /&gt;
 | '''23/01''' :  &lt;br /&gt;
* Installation du logiciel Android Studio pour être prêt à commencer l'application mobile.&lt;br /&gt;
* Création du Repository Git sur GitHub : https://github.com/FrancoisLefevre12/Optali.git&lt;br /&gt;
* Réalisation de différents schémas fonctionnels pour se donner une idée du travail à effectuer, aussi bien du software que du hardware.&lt;br /&gt;
* Quelques précisions supplémentaires apportées sur le cahier des charges.&lt;br /&gt;
* Ajout de liens de référence pour la liste de matériel à acheter.&lt;br /&gt;
&lt;br /&gt;
 | '''25/01''' :  &lt;br /&gt;
* Précision des composants requis (accéléromètre, buzzer, LEDs, résistances).&lt;br /&gt;
* Écriture du montage à la main.&lt;br /&gt;
* Étude du fonctionnement de l'accéléromètre, du buzzer.&lt;br /&gt;
* Écriture de la structure de l'application à la main.&lt;br /&gt;
&lt;br /&gt;
 | '''26/01''' :&lt;br /&gt;
*Réalisation graphique de la première page de l'application.&lt;br /&gt;
*Conception du schéma électrique pour tous les composants connectés au RFduino.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 2&lt;br /&gt;
&lt;br /&gt;
 | '''30/01''' :&lt;br /&gt;
*Réalisation du diagramme UML de la base de données qui sera stockée sur la Raspberry Pi&lt;br /&gt;
*Installation de l'outil de développement mobile sur le second PC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 | '''01/02''' :&lt;br /&gt;
*Nous nous sommes d'abord rendus compte que la résistance entre un des GPIO et l'accéléromètre était inutile, nos premiers calculs étaient erronés. Nous ne la garderons donc pas sur notre schéma électrique final.&lt;br /&gt;
*Avancement sur la partie application mobile : réalisation de la page &amp;quot;Ajout&amp;quot; sur laquelle nous tomberons après avoir cliquer sur &amp;quot;ajout&amp;quot; sur la page principale de l'application. Nous avons étendu l'activité principale jusqu'à cette nouvelle activité &amp;quot;Ajout&amp;quot;.&lt;br /&gt;
*Nous avons récupéré notre Raspberry Pi pour commencer à installer notre base de données dessus. Nous avons actuellement quelques problèmes pour nous connecter sur la Raspberry. Nous travaillons sur ce point.&lt;br /&gt;
&lt;br /&gt;
 | '''02/02''' :&lt;br /&gt;
* Application mobile : Mise en place des LEDs sur la home page et de la zone de notification avec les messages associés.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 3&lt;br /&gt;
&lt;br /&gt;
 | '''06/02''' :&lt;br /&gt;
*Nous arrivons à accéder à la Raspberry via le port série de celle-ci. Nous avons également configuré sa connexion Ethernet afin de pouvoir télécharger des paquets dessus et installer notre base de données. &lt;br /&gt;
*Nous rencontrions des problèmes sur le second PC de travail pour récupérer le projet Optali sur Android Studio via notre dépôt GIT. Nous avons pu rectifier ce souci.&lt;br /&gt;
&lt;br /&gt;
 | '''08/02''' :&lt;br /&gt;
*Tentative d'établissement d'un point d'accès WiFi sur notre Raspberry. Nous n'avons pas réussi pour le moment.&lt;br /&gt;
*Restructuration du Repository git.&lt;br /&gt;
*Essai d'importation de la librairie Zxing qui permettra de décoder les code-barres.&lt;br /&gt;
 |&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 4&lt;br /&gt;
&lt;br /&gt;
 | '''13/02'''&lt;br /&gt;
*Configuration du wifi de la Raspberry. &lt;br /&gt;
*Étude d'une mise en place d'un service web via php.&lt;br /&gt;
&lt;br /&gt;
 | '''15/02'''&lt;br /&gt;
*Mise en place d'un lecteur de caractère sur l'application. On utilisera tesseract.&lt;br /&gt;
*Début de la création du PCB via Altium designer. Création d'une librairie pour l'accéléromètre qui est un composant CMS assez spécial. On pourra cependant utiliser des headers classiques pour le buzzer et les LEDs puisque ce sont des composants traversants.&lt;br /&gt;
*Création des premiers fichiers php de connection à la base de donnée et d'insertion d'aliments. Tous ces fichiers seront déposés de la même manière sur le dépôt git.&lt;br /&gt;
&lt;br /&gt;
 | '''16/02'''&lt;br /&gt;
*Adaptation avec prise en compte des cas du code php d'insertion de produits par requête sur la base de donnée.&lt;br /&gt;
*Ajout du code d'implantation de la base de donnée.&lt;br /&gt;
*Altium: Accéléromètre terminé, mise en place des résistances.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 5 (interruption pédagogique)====&lt;br /&gt;
&lt;br /&gt;
 | '''22/02 (3 heures)'''&lt;br /&gt;
*Installation de l'OS de la raspberry.&lt;br /&gt;
*Installation d'Openssh-server, apache2, php5, iptables, mysql-server, php5-mysql.&lt;br /&gt;
*Redirection des ports du routeur vers la raspberry.&lt;br /&gt;
*Configuration de iptables de la raspberry.&lt;br /&gt;
&lt;br /&gt;
 | '''23/02 (2 heures)'''&lt;br /&gt;
*Implantation de la base de donnée sur la raspberry pi.&lt;br /&gt;
|&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 6&lt;br /&gt;
 | '''27/02'''&lt;br /&gt;
*Vérification de la syntaxe de l'insertion de valeurs dans la base de donnée.&lt;br /&gt;
*Création des premières requêtes sur la base de donnée.&lt;br /&gt;
*Finalisation du PCB de l'Optali Board.&lt;br /&gt;
&lt;br /&gt;
 | '''01/03'''&lt;br /&gt;
*Étude et ajout de la librairie volley pour communiquer avec le serveur.&lt;br /&gt;
*Implantation de la fonction d'envoi de données jusqu'au serveur.&lt;br /&gt;
*Après avoir vu avec un professeur, nous avons remarqué que le routage n'était pas adéquat et la disposition des composants n'était pas optimal. Du travail reste donc encore à effectuer.&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 7&lt;br /&gt;
 | '''06/03'''&lt;br /&gt;
*Correction du fichier post.php&lt;br /&gt;
*Finition du protocole d'ajout d'aliment sur la base de donnée. (Code php et page ajout terminée).&lt;br /&gt;
*PCB terminé.&lt;br /&gt;
*Installation d'arduino IDE, doc arduino collecté.&lt;br /&gt;
&lt;br /&gt;
 | '''08/03'''&lt;br /&gt;
*Implémentation de la page ListeIngredient.xml et de l'activité listActivity.java.&lt;br /&gt;
*Documentation sur la procédure de communication bluetooth entre la Rfduino et l'application mobile.&lt;br /&gt;
*Obtention de librairie en lien avec cela.&lt;br /&gt;
*Prise en main de programmation rfduino.&lt;br /&gt;
&lt;br /&gt;
 | '''09/03'''&lt;br /&gt;
*Nous nous sommes rendus compte qu'il était nécessaire de rajouter un bouton poussoir sur notre montage afin de permettre la réinitialisation de notre RFDuino si nécessaire. Nous devons également faire en sorte de pouvoir poser notre carte PCB directement sur notre RFDuino en utilisant des broches. Nous devons donc rajouter ces éléments-ci.&lt;br /&gt;
*Ecriture de la page get.php&lt;br /&gt;
*Premiers tests sur la ListView de l'activité ListActivity.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 8&lt;br /&gt;
 | '''13/03'''&lt;br /&gt;
*Recherche de pistes concernant la programmation RFDuino. Nous pouvons la détecter en bluetooth via un smartphone Android.&lt;br /&gt;
*Finition du Tablelayout et du code java associé sur la page ListActivity.&lt;br /&gt;
&lt;br /&gt;
 | '''15/03'''&lt;br /&gt;
*Ajout de la JsonArrayRequest dans la page ListActivity.&lt;br /&gt;
*Nous nous sommes rendus compte au moment de programmer la liaison I2C de l'accéléromètre avec la RFDuino que nous avions oublié de mettre des résistances pull-up entre l'alimentation du composant et les broches SDA et SCL. Les modifications ont donc été faites puis nous avons envoyé finalement notre PCB à la fabrication.&lt;br /&gt;
&lt;br /&gt;
 | '''16/03'''&lt;br /&gt;
*Changement de stratégie au niveau de la requête JsonArrayRequest. On récupère toute la base et ensuite le traitement sera effectuer dans l'application mobile.&lt;br /&gt;
*Rédaction de la partie Altium du wiki.&lt;br /&gt;
*Recherche de docs sur le système bluetooth du RFduino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 9&lt;br /&gt;
 | '''20/03'''&lt;br /&gt;
*Réalisation de différents réglages pour pouvoir utiliser l'application Optali sur l'Android phone fourni par notre professeur (LG G4c)&lt;br /&gt;
*Recherche de docs concernant la partie java responsable de la communication Bluetooth.&lt;br /&gt;
*Reprise de la solution Tesseract pour la lecture de caractères.&lt;br /&gt;
&lt;br /&gt;
 | '''21/03''' (séance supplémentaire de 3 heures)&lt;br /&gt;
*Début du développement de la partie communication entre RFDuino et l'appli mobile. Nous pouvons détecter le RFduino à partir de Android Studio mais nous n'arrivons pas encore à nous connecter dessus directement.&lt;br /&gt;
*Finition de la fonctionnalité tesseract. La lecture de caractères est donc maintenant possible.&lt;br /&gt;
&lt;br /&gt;
 | '''22/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity&lt;br /&gt;
*Connexion possible entre le RFduino et notre appli mobile. Il faut maintenant pouvoir assurer un échange de données via du GATT.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 10&lt;br /&gt;
 | '''27/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity (suite). Utilisation de la solution postman.&lt;br /&gt;
*Mise à jour du wiki pour la partie Altium.&lt;br /&gt;
*Gestion du dépôt git.&lt;br /&gt;
*Récupération de la carte PCB au service EEI.&lt;br /&gt;
&lt;br /&gt;
 | '''29/03'''&lt;br /&gt;
*Mise en place du tri des Produits avec un critère d'ordonnabilité variable&lt;br /&gt;
*Implémentation du champs recherche et action sur la liste&lt;br /&gt;
*Écriture des pages Php consume.php et delete.php pour décrémenter le nombre d'aliment dans le frigo ou le supprimer&lt;br /&gt;
*Récupération des composants&lt;br /&gt;
*Passage au four pour souder les premiers composants en CMS&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 11&lt;br /&gt;
&lt;br /&gt;
 | '''03/04'''&lt;br /&gt;
*Dé-soudage et resoudage de l'accéléromètre.&lt;br /&gt;
*Soudure des composants&lt;br /&gt;
&lt;br /&gt;
 | '''05/04'''&lt;br /&gt;
*Test du Buzzer&lt;br /&gt;
*Code de l'accéléromètre&lt;br /&gt;
*Création de l'Optali box (la boite qui contient le RFduino fixé au frigo)&lt;br /&gt;
*Finition de la fonction 'delete'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 | '''06/04'''&lt;br /&gt;
*Problème pour faire fonctionner le code de l'accéléro. Il faudra le tester électriquement.&lt;br /&gt;
*Implantation du logo de l'appli &lt;br /&gt;
*Debuggage d'une requête de la page 'list'&lt;br /&gt;
*Documentation sur les listes déroulantes sous les EditTexts.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 12 (Interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''11/04''' (3 heures)&lt;br /&gt;
*Après avoir remarqué que le code de l'accéléro ne fonctionnait pas alors qu'il paraît correct, nous avons décidez de vérifier les propriétés électriques de notre montage.&lt;br /&gt;
En observant à l'analyseur logique, il semblerait que l'horloge de la liaison i2C n'est en fait qu'un signal bruité. Il faudra donc retenter de souder le composant quand cela sera possible.&lt;br /&gt;
&lt;br /&gt;
 | '''13/04''' (6 heures)&lt;br /&gt;
*Terminaison du programme RFduino qui fonctionne théoriquement, nous attendons de terminer les dernières soudures pour pouvoir le tester physiquement.&lt;br /&gt;
*En attendant de pouvoir réaliser des soudures, nous avons repris la partie communication bluetooth entre le RFduino et l'appli. Après avoir tenté d'utiliser un programme permettant de gérer le protocole GATT sans savoir envoyer ou recevoir de données, nous nous sommes orientés sur une communication plus basique basée sur de nombreux exemples que l'on peut voir sur le web.&lt;br /&gt;
&lt;br /&gt;
 | '''15/04''' (6 heures)&lt;br /&gt;
*Après s'être rendu compte que la communication plus &amp;quot;basique&amp;quot; que nous voulions utiliser n'était pas compatible avec le BLE, nous sommes une fois de plus repartis de zéro pour cette partie.&lt;br /&gt;
*Après quelques recherches, nous avons trouvé un programme réalisant la gestion d'un socket BLE sur le principe du protocole GATT. Grâce à celui-ci, il nous est possible de recevoir et d'envoyer des données via BLE sur RFduino ainsi que sur l'appli mobile.&lt;br /&gt;
&lt;br /&gt;
 |- &lt;br /&gt;
|Semaine 13 (Interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
 | '''17/04 (4 heures)'''&lt;br /&gt;
*Ajout du singleton Etat pour partager l'état des aliments dans la réserve alimentaire&lt;br /&gt;
*Transfert des requêtes de la base de donnée vers le singleton pour optimiser l'actualisation et le partage des données.&lt;br /&gt;
*Actualisation automatique des données sur la page principale.&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Semaine 14&lt;br /&gt;
| '''24/04'''&lt;br /&gt;
*Modification de la présentation du wiki&lt;br /&gt;
*Modification de la fonctionnalité du bouton actualiser en changement d'activité&lt;br /&gt;
&lt;br /&gt;
| '''26/04'''&lt;br /&gt;
*Ajout de la page liste recette&lt;br /&gt;
&lt;br /&gt;
| '''27/04'''&lt;br /&gt;
*Ajout des listes recettes dans ListeRecette&lt;br /&gt;
*Soudure des derniers composants pour terminer le PCB. Tout est soudé sauf le bouton poussoir qui devait permettre un reset du RFduino. En cherchant d'ailleurs à souder ce bouton, nous avons retiré malencontreusement la piste de cuivre permettant de répartir le 3.3V du RFduino sur notre PCB. Notre accéléromètre qui ne marchait déjà pas vraiment n'est plus alimenté. Nous ferons sans notre accéléromètre pour le rendu final. &lt;br /&gt;
&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===Premières idées===&lt;br /&gt;
&lt;br /&gt;
Voici les premières idées de l'application mobile et du composant fixé sur le frigo.&lt;br /&gt;
[[Fichier:Optali_v1.jpg|400px|thumb|left|Optali version 1]]&lt;br /&gt;
[[Fichier:OptaliBox_v1.jpg|400px|thumb|center|OptaliBox version 1]]&lt;br /&gt;
[[Fichier:P46_schema.jpg|400px|thumb|center|Schéma électrique version 1]]&lt;br /&gt;
&lt;br /&gt;
En s'intéressant aux différentes datasheets ou données constructeur des composants que nous voulons utiliser, nous trouvons indispensable d'utiliser des résistances de 330 Ohms pour l'utilisation des LEDs, pour éviter de les griller.&lt;br /&gt;
&lt;br /&gt;
Edit : Retrait de la résistance R2.&lt;br /&gt;
&lt;br /&gt;
Concernant l'accéléromètre, nous avons choisi un modèle qui nous permet de brancher directement ce module sur une broche du RFDuino. On branchera directement les GPIOs de la RFduino sur les ports SDA et SCL de l'accéléromètre qui correspondent à l'interface I2C pour pouvoir communiquer. On utilisera aussi la broche INT1 pour pouvoir générer des interruptions directement depuis l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
On connectera le buzzer directement à une broche de la RFduino aussi. Concernant celui-ci il reste une incertitude puisqu'on ne trouve aucune information sur le courant à fournir pour l'alimentation de ce composant sur sa datasheet. Après différentes recherches sur Internet, il pourrait être nécessaire d'utiliser un montage amplificateur à transistor comme un émetteur commun pour booster le courant en sortie d'une broche GPIO. Quelques buzzers trouvés avec des données constructeur montrent que ce type de composant nécessite généralement un courant d'environ 30 mA. Nous verrons dans la pratique si cela sera vraiment nécessaire. Par sécurité, on ajoutera un transistor bipolaire dans la liste de matériel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:screen_LED.png|400px|thumb|left|Données constructeur pour LEDs]]&lt;br /&gt;
[[Fichier:screen_accel.png|400px|thumb|center|Datasheet de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
===Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
====Configuration école====&lt;br /&gt;
&lt;br /&gt;
*Pour configurer notre Raspberry Pi, nous utilisons son port série et &amp;quot;minicom&amp;quot;. Pour pouvoir télécharger des paquets, il fallait la connecter au réseau. Nous lui avons donc affecté une adresse IP fixe avec le fichier /etc/network/interfaces. Voici les modifications qui ont été apportées : &lt;br /&gt;
&lt;br /&gt;
   auto eth0&lt;br /&gt;
   iface eth0 inet static&lt;br /&gt;
   address 172.26.78.15&lt;br /&gt;
   netmask 255.255.240.0&lt;br /&gt;
   gateway 172.26.79.254&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il a également fallu ajouter la commande &amp;quot;export http_proxy=http://proxy.polytech-lille.fr:3128&amp;quot; (il faudra effectuer cette commande à chaque démarrage de la Pi) pour pouvoir utiliser le proxy de l'école. &lt;br /&gt;
Nous avons de plus modifier le fichier /etc/resolv.conf avec la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
   nameserver 193.48.57.34&lt;br /&gt;
&lt;br /&gt;
Malgré cela, nous avions des soucis pour nous connecter au réseau. Il y avait en fait un processus dhcp en tâche de fond qui nous empêchait de garder le contenu de resolv.conf. Il a donc fallu trouver ce processus pour le &amp;quot;kill&amp;quot; et pouvoir accéder correctement au réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons du coup pu installer postgresql pour pouvoir configurer une base de données sur notre Pi.&lt;br /&gt;
&lt;br /&gt;
====Configuration à domicile====&lt;br /&gt;
&lt;br /&gt;
Pour nous mettre dans une situation plus fidèle à notre projet, nous avons configuré la raspberry à domicile.&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abords installé Raspbian, puis installé les paquets nécessaire au fonctionnement du serveur.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Openssh-server''': permettre d'accès à distance à la raspberry pour pouvoir y accéder depuis l'école.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Iptables''': pour sécuriser les ports non utilisé et libérer l'accès aux ports qui nous intéressent (ssh 22,http 80,https 443).&amp;lt;br&amp;gt;&lt;br /&gt;
- '''apache2, php5, mysql-server''' : pour mettre en place notre service web.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons rediriger les ports 80 et 22 du routeur pour pouvoir accéder à la raspberry de l'extérieur.&lt;br /&gt;
&lt;br /&gt;
Pour finir, nous avons créer un fichier de config iptables permettant de sécuriser un minimum la base de donnée et de permettre d'autoriser la communication des ports 22, 80 et 443 correspondants aux ports ssh, http et https. le fichier de configuration a été déposé dans le dépôt git. Il nous a fallut le rendre exécutable via un chmod. Puis pour l'exécuter à chaque démarrage du system, dans le fichier /etc/init.d/ taper : &lt;br /&gt;
&lt;br /&gt;
    sudo update-rc.d firewall defaults (si notrefichier s'appelle firewall et s'il est dans init.d)&lt;br /&gt;
&lt;br /&gt;
===Base de donnée===&lt;br /&gt;
&lt;br /&gt;
Nos données alimentaires disponibles par toute la famille doivent être stocké sur un serveur de base de donnée externe (tel une Raspberry pi). Nous nous proposons de créer le diagramme UML représentant cette future base de donnée.&lt;br /&gt;
[[Fichier:Optali_UML.jpg|700px|thumb|center|Diagramme UML base de donnée]]&lt;br /&gt;
&lt;br /&gt;
On créera donc 3 entités. Date, Product et Recipe. &lt;br /&gt;
&lt;br /&gt;
- Product rassemble les aliments qui sont ou ont été dans la réserve alimentaire. NbProdIn permet de connaître le nombre de produits identiques (possibilité de date différentes mais pas de doublons et on garde l'information de quantité. NbProdBought donne une information sur le nombre de produits identique ayant été acheté depuis la mise en service de la base de donnée. Ainsi nous pourrons par la suite proposer une liste de course à l'utilisateur en fonction de la fréquence d'achat des produits.&lt;br /&gt;
&lt;br /&gt;
- Recipe contient les recettes que pourra rentrer l'utilisateur sur l'application. L'utilisateur pourra ainsi se voir proposer des recettes en fonction de ce qu'il a dans son frigo et de ses recettes personnelles.&lt;br /&gt;
&lt;br /&gt;
'''''Edit : On ajoutera une valeur entière dans les tables Date et Unity pour gérer le cas où il existe plusieurs produits (différents ou identiques) avec une date de péremption équivalente. On les appellera NbDate la valeur dans la table Date et NbUnity dans la table Unity. On leur ajoutera de même une clef primaire IdUnity et IdListProduct'''''&lt;br /&gt;
&lt;br /&gt;
On utilisera MySql pour la gestion de nos bases de données. &lt;br /&gt;
La syntaxe pour l'implanter dans la base de donnée à été jointe au dépôt git.&lt;br /&gt;
&lt;br /&gt;
Pour lancer my SQL, on tapera:&lt;br /&gt;
&lt;br /&gt;
   mysql -h localhost -u root -p&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Web service===&lt;br /&gt;
&lt;br /&gt;
====Page init.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet d'initier l'accès à la base de donnée sur le serveur. Elle est requise pour les pages qui suivent.&lt;br /&gt;
&lt;br /&gt;
====Page post.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet l'insertion d'un produit et d'une date via l'application mobile. Elle prend donc ces deux arguments et les insère dans les tables Unity, Product et Date.&lt;br /&gt;
&lt;br /&gt;
====Page get.php====&lt;br /&gt;
&lt;br /&gt;
Page qui envoie la liste des aliments avec leur nom, leur date, leur quantité dans le frigo, la quantité d'exemplaires acheté en tout depuis la mise en place de l'appareil. Le tri se fera directement dans l'application mobile. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Application Mobile===&lt;br /&gt;
&lt;br /&gt;
====Home page====&lt;br /&gt;
&lt;br /&gt;
Page d'accueil permettant d'accéder aux pages d'ajout et de liste des produits disponibles. &amp;lt;br&amp;gt;&lt;br /&gt;
La page permet aussi d'effectuer la connexion entre la rfduino et l'application mobile. Elle montre les alertes (signaux) à l'utilisateur &lt;br /&gt;
et écrit leur signification.&lt;br /&gt;
&lt;br /&gt;
====Page d'ajout====&lt;br /&gt;
&lt;br /&gt;
Pour ajouter un produit et lire une date on utilisera un champ editText pour permettre à l'utilisateur d'écrire &amp;quot;Manuellement&amp;quot; dedans grâce au clavier du smartphone.&amp;lt;br&amp;gt;&lt;br /&gt;
De plus on utilise un bouton qui appellera la caméra pour détecter les caractères d'un produit ou d'une date. Au début nous voulions utiliser un détecteur de code barre, nous l'avons implémenté mais nous avons remarqué que la mise au point sur une surface non plane prend du temps d'autant plus qu'il faut questionner une base de donnée contenant tous les numéro de codes barres utilisés. Nous avons donc prit la décision d'utiliser uniquement la lecture de caractère et nous créerons une liste déroulante sous l'editText pour faciliter l'insertion d'un produit qui a déjà été ajouté. Pour la lecture de caractère, nous utilisons la librairie tesseract.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'envoi, nous utilisons la librairie Volley développé par google.&lt;br /&gt;
&lt;br /&gt;
====Page Liste====&lt;br /&gt;
&lt;br /&gt;
Permet de lister les produits dans la base de donnée. Une série de boutons radio permettent de trier les produits par ordre alphabétique, par date de péremption, par nombre d’occurrence dans la réserve alimentaire, par nombre d'achat depuis la mise en place du système.&amp;lt;br&amp;gt;&lt;br /&gt;
Une colonne permet de sélectionner les aliments désirés (par checkBox) pour ensuite les supprimer via un button &amp;quot;suppr&amp;quot; ou les choisir pour trouver des recettes qui les utilisent.&amp;lt;br&amp;gt;&lt;br /&gt;
Un EditText permet d'effectuer une recherche sur la base de donnée.&lt;br /&gt;
&lt;br /&gt;
===Altium Designer===&lt;br /&gt;
&lt;br /&gt;
Pour permettre au RFDuino de communiquer avec les différents composants, nous aurons besoin de quelques composants électroniques. Afin que cela soit plus esthétique pour la modélisation finale, nous allons créer une carte PCB pour rassembler tous ces composants dessus. On utilisera le logiciel Altium Designer pour cela.&lt;br /&gt;
&lt;br /&gt;
Avant de représenter notre circuit général, nous allons commencer par créer une librairie rassemblant tous les composants que nous utiliserons par la suite, en particulier nos composants CMS (accéléromètre et résistances). Pour ce qui est des LEDs et du buzzer, qui sont traversants, nous pourrons utiliser des headers classiques.&lt;br /&gt;
&lt;br /&gt;
Il a donc fallu créer le schematic ainsi que l'empreinte de nos composants CMS. Voici un exemple avec notre accéléromètre :&lt;br /&gt;
[[Fichier:Accelerosch.PNG|500px|thumb|left|Schematic de l'accéléromètre]]&lt;br /&gt;
[[Fichier:Acceleropcb.PNG|500px|thumb|center|Empreinte PCB de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les fichiers Altium sont disponibles sur notre dépôt GIT. Après cela, nous pouvons maintenant construire notre schematic du montage entier et ensuite le fichier PCB afin de pouvoir graver notre circuit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après quelques modifications sur le montage prévu initialement, c'est-à-dire en enlevant une résistance entre un GPIO et l'alimentation de l'accéléromètre ainsi qu'en rajoutant des résistances pull-up sur les broches de notre liaison i2C (SDA et SCL) et un bouton poussoir en plus pour permettre un reset du RFDuino, nous avons pu créer notre schematic global pour en faire un PCB et l'exporter au format Gerber. De ce fait, le service EEI de Polytech pourra réaliser la gravure de notre carte PCB.&lt;br /&gt;
&lt;br /&gt;
Voici quelques photos pour illustrer notre projet sur Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Finalproto_sch.PNG|400px|thumb|left|Schematic du montage final]]&lt;br /&gt;
[[Fichier:Finalproto_pcb.PNG|400px|thumb|center|PCB du montage final]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On retrouve sur notre PCB final les headers, respectivement de 8 et 5 pins, de part et d'autre de la carte, qui représentent le RFDuino, où nous souderons des broches pour qu'elles puissent être intégrées au RFDuino. On note la présence de 5 autres headers de 2 pins, dont 3 pour des LEDs puis les 2 autres pour le buzzer et le bouton poussoir. Ce qui reste sont les composants CMS avec plusieurs composants à 2 pattes qui sont toutes les résistances de notre montage, celles de protection pour les LEDs et les pull-ups pour l'accéléromètre. Le dernier composant à 8 pattes est donc bien l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quelques difficultés ont été rencontrées durant ce travail notamment concernant les contraintes de construction sur le PCB final. En effet, les composants CMS choisis (surtout l'accéléromètre) étant parfois très petits, Altium n'accepte pas forcément le faible espacement entre les différentes pattes des composants, ce qui pose problème lors de la compilation. De plus, le plan de masse ne prenait pas en compte tous les éléments devant être rattachés à la masse. Il a fallu légèrement déplacer les headers représentant le RFDuino pour que cela soit possible. Il faudra alors peut-être légèrement plier les broches qui viendront s'intégrer sur le RFDuino pour ajouter notre PCB sur le RFDuino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons envoyé nos fichiers Altium au service EEI afin qu'il puisse réaliser physiquement notre carte. Nous nous retrouvons donc avec notre carte PCB récupérée auprès du service EEI. Voici le rendu :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:P46_carte.jpg|400px|thumb|center|Fabrication de notre carte PCB]]&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=41314</id>
		<title>IMA4 2016/2017 P46 : Aide anti-gaspillage alimentaire</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=41314"/>
				<updated>2017-04-19T14:38:08Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : /* Semaine 13 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
En France, nous jetons en moyenne 21% des aliments que nous achetons, ce qui représente une perte de 100 à 160 euros par an par habitant. Cela est en partie dû à la date limite de consommation associée à chaque produit. En effet, à partir du moment où cette date sera dépassée le consommateur jettera les produits concernés sans réfléchir, même si ceux-ci peuvent parfois être encore mangeables. Plutôt que d'essayer de les convaincre du contraire, il serait judicieux de proposer aux adeptes du gaspillage une aide permettant de gérer tous les aliments dont ils disposent chez eux afin d'éviter la surprise de tomber sur plusieurs produits périmés lorsqu'ils ouvrent la porte de leur frigo. &lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Ce projet permet d'aider les utilisateurs d'une part à mémoriser les denrées périssables qu'ils disposent dans leur réserve alimentaire et d'autre part d'avertir l'utilisateur qu'un événement important a lieu. Ceci peut être une notification qu'un aliment va bientôt dépasser sa date de péremption, que la porte du frigidaire est restée ouverte ou encore que le nombre d'aliments dans la réserve devient critique et qu'il faudra de nouveau l'alimenter. Enfin, le système aidera l'utilisateur à trouver des idées de repas pouvant permettre de consommer les aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Notre prototype permettra d'éviter le gaspillage alimentaire ainsi que d'aider l'utilisateur dans sa gestion du stockage d'aliments.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
&lt;br /&gt;
Notre système sera composé de 3 éléments. &lt;br /&gt;
&lt;br /&gt;
Premièrement, un ou des smartphones appartenant aux utilisateurs. Ces derniers permettront de scanner grâce à son appareil photo, le code barre du produit ainsi que sa date de péremption. Il servira aussi d'interface utilisateur pour notre système. En effet, c'est par cet outil que l'utilisateur pourra lister tous les aliments que l'utilisateur a dans sa base et tout ça en les triant par date de péremption, ou encore voir les recettes possibles pour consommer des aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Deuxièmement, un serveur, de type Raspberry, qui permettra de stocker la base de donnée contenant les aliments de la réserve. Ce serveur sera connecté par wifi.&lt;br /&gt;
 &lt;br /&gt;
Troisièmement, un contrôleur (Rfduino) qui comportera une LED pour indiquer la mise sous tension du contrôleur, une LED pour prévenir l'utilisateur qu'un aliment va bientôt passer sa date de péremption et une dernière LED pour prévenir l'utilisateur que son niveau de réserve est critique ainsi qu'un buzzer et un accéléromètre pour buzzer quand la porte du frigo est restée trop longtemps ouverte. Ce dernier sera fixé au frigo par l'intermédiaire d'un dispositif adapté qui sera un système aimanté qui se pose sur le frigo.&lt;br /&gt;
&lt;br /&gt;
Nous implémenterons donc une application mobile Android qui fera le lien entre les 2 autres systèmes.&lt;br /&gt;
&lt;br /&gt;
Pour la partie électronique que nous aurons à réaliser, nous utiliserons une Breadboard pour faire des premiers tests puis nous créerons une carte PCB pour notre montage final.&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
On utilisera une Raspberry Pi en guise de serveur pour pouvoir s'occuper du stockage de toutes les données dans notre projet puisque notre contrôleur sera incapable de les contenir, ce n'est d'ailleurs pas son but ici.&lt;br /&gt;
&lt;br /&gt;
Notre smartphone fera donc le lien entre notre base de données et notre système embarqué par l'intermédiaire de l'application mobile.&lt;br /&gt;
&lt;br /&gt;
Nous prendrons ici un RFduino puisque celui-ci nous permet d'ajouter des modules comme bon nous semble afin d'adapter le système aux besoins de notre application. Il est également parfaitement compatible avec les applications Android. De plus, nous avons un Bluetooth directement intégré au RFduino pour s'assurer que les liaisons RFduino-application mobile se fassent correctement. &lt;br /&gt;
On notera également que ce contrôleur consomme peu de courant et ne demande qu'une faible tension d'alimentation, critères importants pour ce genre de projet. C'est la raison principale de son utilisation pour être utilisé comme interface physique sur le frigo, en ajoutant également sa taille réduite comparée à la Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
&lt;br /&gt;
Nous avons donc besoin du matériel suivant :&lt;br /&gt;
&lt;br /&gt;
*Raspberry Pi.&lt;br /&gt;
*Clef wifi&lt;br /&gt;
*RFduino (RFD22102 DIP Board, RFD22121 USB Shield, RFD22126 Dual AAA battery shield).&lt;br /&gt;
*2 piles AAA.&lt;br /&gt;
*3 leds tranversantes.&lt;br /&gt;
*3 Résistances 330 Ohm.&lt;br /&gt;
*1 Résistance 10 kOhm.&lt;br /&gt;
*Un buzzer.&lt;br /&gt;
*Accéléromètre.&lt;br /&gt;
*Aimants&lt;br /&gt;
*Un boîtier permettant d'intégrer la RFduino + fixation sur le frigo (modélisation à voir).&lt;br /&gt;
&lt;br /&gt;
Pour le buzzer, l'accéléromètre et les résistances, nous choisirons des composants CMS pour nous permettre d'avoir une carte plus petite.&lt;br /&gt;
&lt;br /&gt;
===Calendrier prévisionnel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Liste des tâches à effectuer====&lt;br /&gt;
&lt;br /&gt;
* Configurer la Raspberry :&lt;br /&gt;
** Installer et configurer le serveur.&lt;br /&gt;
** Créer le diagramme UML de notre future base de données.&lt;br /&gt;
** Créer la base sur le serveur.&lt;br /&gt;
** Configurer la connexion WiFi.&lt;br /&gt;
&lt;br /&gt;
* Monter et programmer la RFduino :&lt;br /&gt;
** Connecter les différents modules au RFduino (accéléromètre, LEDs, buzzer, Batterie, module Bluetooth).&lt;br /&gt;
** Récupérer les consignes du smartphone grâce au Bluetooth.&lt;br /&gt;
** Programmer le comportement du RFduino en fonction des consignes.&lt;br /&gt;
** Construire le boitier final.&lt;br /&gt;
&lt;br /&gt;
* Implémenter l'application mobile Android :&lt;br /&gt;
** Une première activité permettant de se connecter au RFduino et à la Raspberry.&lt;br /&gt;
** Scanner une date et un code barre.&lt;br /&gt;
** Ajout/suppression d'un aliment dans la base de donnée.&lt;br /&gt;
** Envoi d'une consigne au RFduino.&lt;br /&gt;
** Rendre l'interface utilisateur ergonomique (lister aliments, envoyer vers page de recettes avec l'utilisation des aliments bientôt périmés...).&lt;br /&gt;
&lt;br /&gt;
====Calendrier====&lt;br /&gt;
&lt;br /&gt;
Répartition du temps consacré au projet (120h *2) :&lt;br /&gt;
&lt;br /&gt;
*Partie Raspberry : 60h&lt;br /&gt;
*Partie RFduino : 60h&lt;br /&gt;
*Partie développement mobile : 120h&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
&lt;br /&gt;
===Résumé===&lt;br /&gt;
&lt;br /&gt;
====Semaine 1====&lt;br /&gt;
&lt;br /&gt;
'''23/01''' :  &lt;br /&gt;
* Installation du logiciel Android Studio pour être prêt à commencer l'application mobile.&lt;br /&gt;
* Création du Repository Git sur GitHub : https://github.com/FrancoisLefevre12/Optali.git&lt;br /&gt;
* Réalisation de différents schémas fonctionnels pour se donner une idée du travail à effectuer, aussi bien du software que du hardware.&lt;br /&gt;
* Quelques précisions supplémentaires apportées sur le cahier des charges.&lt;br /&gt;
* Ajout de liens de référence pour la liste de matériel à acheter.&lt;br /&gt;
&lt;br /&gt;
'''25/01''' :  &lt;br /&gt;
* Précision des composants requis (accéléromètre, buzzer, LEDs, résistances).&lt;br /&gt;
* Écriture du montage à la main.&lt;br /&gt;
* Étude du fonctionnement de l'accéléromètre, du buzzer.&lt;br /&gt;
* Écriture de la structure de l'application à la main.&lt;br /&gt;
&lt;br /&gt;
'''26/01''' :&lt;br /&gt;
*Réalisation graphique de la première page de l'application.&lt;br /&gt;
*Conception du schéma électrique pour tous les composants connectés au RFduino.&lt;br /&gt;
&lt;br /&gt;
====Semaine 2====&lt;br /&gt;
&lt;br /&gt;
'''30/01''' :&lt;br /&gt;
*Réalisation du diagramme UML de la base de données qui sera stockée sur la Raspberry Pi&lt;br /&gt;
*Installation de l'outil de développement mobile sur le second PC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''01/02''' :&lt;br /&gt;
*Nous nous sommes d'abord rendus compte que la résistance entre un des GPIO et l'accéléromètre était inutile, nos premiers calculs étaient erronés. Nous ne la garderons donc pas sur notre schéma électrique final.&lt;br /&gt;
*Avancement sur la partie application mobile : réalisation de la page &amp;quot;Ajout&amp;quot; sur laquelle nous tomberons après avoir cliquer sur &amp;quot;ajout&amp;quot; sur la page principale de l'application. Nous avons étendu l'activité principale jusqu'à cette nouvelle activité &amp;quot;Ajout&amp;quot;.&lt;br /&gt;
*Nous avons récupéré notre Raspberry Pi pour commencer à installer notre base de données dessus. Nous avons actuellement quelques problèmes pour nous connecter sur la Raspberry. Nous travaillons sur ce point.&lt;br /&gt;
&lt;br /&gt;
'''02/02''' :&lt;br /&gt;
* Application mobile : Mise en place des LEDs sur la home page et de la zone de notification avec les messages associés.&lt;br /&gt;
&lt;br /&gt;
====Semaine 3====&lt;br /&gt;
&lt;br /&gt;
'''06/02''' :&lt;br /&gt;
*Nous arrivons à accéder à la Raspberry via le port série de celle-ci. Nous avons également configuré sa connexion Ethernet afin de pouvoir télécharger des paquets dessus et installer notre base de données. &lt;br /&gt;
*Nous rencontrions des problèmes sur le second PC de travail pour récupérer le projet Optali sur Android Studio via notre dépôt GIT. Nous avons pu rectifier ce souci.&lt;br /&gt;
&lt;br /&gt;
'''08/02''' :&lt;br /&gt;
*Tentative d'établissement d'un point d'accès WiFi sur notre Raspberry. Nous n'avons pas réussi pour le moment.&lt;br /&gt;
*Restructuration du Repository git.&lt;br /&gt;
*Essai d'importation de la librairie Zxing qui permettra de décoder les code-barres.&lt;br /&gt;
&lt;br /&gt;
====Semaine 4====&lt;br /&gt;
&lt;br /&gt;
'''13/02'''&lt;br /&gt;
*Configuration du wifi de la Raspberry. &lt;br /&gt;
*Étude d'une mise en place d'un service web via php.&lt;br /&gt;
&lt;br /&gt;
'''15/02'''&lt;br /&gt;
*Mise en place d'un lecteur de caractère sur l'application. On utilisera tesseract.&lt;br /&gt;
*Début de la création du PCB via Altium designer. Création d'une librairie pour l'accéléromètre qui est un composant CMS assez spécial. On pourra cependant utiliser des headers classiques pour le buzzer et les LEDs puisque ce sont des composants traversants.&lt;br /&gt;
*Création des premiers fichiers php de connection à la base de donnée et d'insertion d'aliments. Tous ces fichiers seront déposés de la même manière sur le dépôt git.&lt;br /&gt;
&lt;br /&gt;
'''16/02'''&lt;br /&gt;
*Adaptation avec prise en compte des cas du code php d'insertion de produits par requête sur la base de donnée.&lt;br /&gt;
*Ajout du code d'implantation de la base de donnée.&lt;br /&gt;
*Altium: Accéléromètre terminé, mise en place des résistances.&lt;br /&gt;
&lt;br /&gt;
====Semaine 5 (interruption pédagogique)====&lt;br /&gt;
&lt;br /&gt;
'''22/02 (3 heures)'''&lt;br /&gt;
*Installation de l'OS de la raspberry.&lt;br /&gt;
*Installation d'Openssh-server, apache2, php5, iptables, mysql-server, php5-mysql.&lt;br /&gt;
*Redirection des ports du routeur vers la raspberry.&lt;br /&gt;
*Configuration de iptables de la raspberry.&lt;br /&gt;
&lt;br /&gt;
'''23/02 (2 heures)'''&lt;br /&gt;
*Implantation de la base de donnée sur la raspberry pi.&lt;br /&gt;
&lt;br /&gt;
====Semaine 6====&lt;br /&gt;
'''27/02'''&lt;br /&gt;
*Vérification de la syntaxe de l'insertion de valeurs dans la base de donnée.&lt;br /&gt;
*Création des premières requêtes sur la base de donnée.&lt;br /&gt;
*Finalisation du PCB de l'Optali Board.&lt;br /&gt;
&lt;br /&gt;
'''01/03'''&lt;br /&gt;
*Étude et ajout de la librairie volley pour communiquer avec le serveur.&lt;br /&gt;
*Implantation de la fonction d'envoi de données jusqu'au serveur.&lt;br /&gt;
*Après avoir vu avec un professeur, nous avons remarqué que le routage n'était pas adéquat et la disposition des composants n'était pas optimal. Du travail reste donc encore à effectuer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Semaine 7====&lt;br /&gt;
'''06/03'''&lt;br /&gt;
*Correction du fichier post.php&lt;br /&gt;
*Finition du protocole d'ajout d'aliment sur la base de donnée. (Code php et page ajout terminée).&lt;br /&gt;
*PCB terminé.&lt;br /&gt;
*Installation d'arduino IDE, doc arduino collecté.&lt;br /&gt;
&lt;br /&gt;
'''08/03'''&lt;br /&gt;
*Implémentation de la page ListeIngredient.xml et de l'activité listActivity.java.&lt;br /&gt;
*Documentation sur la procédure de communication bluetooth entre la Rfduino et l'application mobile.&lt;br /&gt;
*Obtention de librairie en lien avec cela.&lt;br /&gt;
*Prise en main de programmation rfduino.&lt;br /&gt;
&lt;br /&gt;
'''09/03'''&lt;br /&gt;
*Nous nous sommes rendus compte qu'il était nécessaire de rajouter un bouton poussoir sur notre montage afin de permettre la réinitialisation de notre RFDuino si nécessaire. Nous devons également faire en sorte de pouvoir poser notre carte PCB directement sur notre RFDuino en utilisant des broches. Nous devons donc rajouter ces éléments-ci.&lt;br /&gt;
*Ecriture de la page get.php&lt;br /&gt;
*Premiers tests sur la ListView de l'activité ListActivity.&lt;br /&gt;
&lt;br /&gt;
====Semaine 8====&lt;br /&gt;
'''13/03'''&lt;br /&gt;
*Recherche de pistes concernant la programmation RFDuino. Nous pouvons la détecter en bluetooth via un smartphone Android.&lt;br /&gt;
*Finition du Tablelayout et du code java associé sur la page ListActivity.&lt;br /&gt;
&lt;br /&gt;
'''15/03'''&lt;br /&gt;
*Ajout de la JsonArrayRequest dans la page ListActivity.&lt;br /&gt;
*Nous nous sommes rendus compte au moment de programmer la liaison I2C de l'accéléromètre avec la RFDuino que nous avions oublié de mettre des résistances pull-up entre l'alimentation du composant et les broches SDA et SCL. Les modifications ont donc été faites puis nous avons envoyé finalement notre PCB à la fabrication.&lt;br /&gt;
&lt;br /&gt;
'''16/03'''&lt;br /&gt;
*Changement de stratégie au niveau de la requête JsonArrayRequest. On récupère toute la base et ensuite le traitement sera effectuer dans l'application mobile.&lt;br /&gt;
*Rédaction de la partie Altium du wiki.&lt;br /&gt;
*Recherche de docs sur le système bluetooth du RFduino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Semaine 9====&lt;br /&gt;
'''20/03'''&lt;br /&gt;
*Réalisation de différents réglages pour pouvoir utiliser l'application Optali sur l'Android phone fourni par notre professeur (LG G4c)&lt;br /&gt;
*Recherche de docs concernant la partie java responsable de la communication Bluetooth.&lt;br /&gt;
*Reprise de la solution Tesseract pour la lecture de caractères.&lt;br /&gt;
&lt;br /&gt;
'''21/03''' (séance supplémentaire de 3 heures)&lt;br /&gt;
*Début du développement de la partie communication entre RFDuino et l'appli mobile. Nous pouvons détecter le RFduino à partir de Android Studio mais nous n'arrivons pas encore à nous connecter dessus directement.&lt;br /&gt;
*Finition de la fonctionnalité tesseract. La lecture de caractères est donc maintenant possible.&lt;br /&gt;
&lt;br /&gt;
'''22/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity&lt;br /&gt;
*Connexion possible entre le RFduino et notre appli mobile. Il faut maintenant pouvoir assurer un échange de données via du GATT.&lt;br /&gt;
&lt;br /&gt;
====Semaine 10====&lt;br /&gt;
'''27/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity (suite). Utilisation de la solution postman.&lt;br /&gt;
*Mise à jour du wiki pour la partie Altium.&lt;br /&gt;
*Gestion du dépôt git.&lt;br /&gt;
*Récupération de la carte PCB au service EEI.&lt;br /&gt;
&lt;br /&gt;
'''29/03'''&lt;br /&gt;
*Mise en place du tri des Produits avec un critère d'ordonnabilité variable&lt;br /&gt;
*Implémentation du champs recherche et action sur la liste&lt;br /&gt;
*Écriture des pages Php consume.php et delete.php pour décrémenter le nombre d'aliment dans le frigo ou le supprimer&lt;br /&gt;
*Récupération des composants&lt;br /&gt;
*Passage au four pour souder les premiers composants en CMS&lt;br /&gt;
&lt;br /&gt;
====Semaine 11====&lt;br /&gt;
&lt;br /&gt;
'''03/04'''&lt;br /&gt;
*Dé-soudage et resoudage de l'accéléromètre.&lt;br /&gt;
*Soudure des composants&lt;br /&gt;
&lt;br /&gt;
'''05/04'''&lt;br /&gt;
*Test du Buzzer&lt;br /&gt;
*Code de l'accéléromètre&lt;br /&gt;
*Création de l'Optali box (la boite qui contient le RFduino fixé au frigo)&lt;br /&gt;
*Finition de la fonction 'delete'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''06/04'''&lt;br /&gt;
*Problème pour faire fonctionner le code de l'accéléro. Il faudra le tester électriquement.&lt;br /&gt;
*Implantation du logo de l'appli &lt;br /&gt;
*Debuggage d'une requête de la page 'list'&lt;br /&gt;
*Documentation sur les listes déroulantes sous les EditTexts.&lt;br /&gt;
&lt;br /&gt;
====Semaine 12 (Interruption pédagogique)==== &lt;br /&gt;
&lt;br /&gt;
'''11/04''' (3 heures)&lt;br /&gt;
*Après avoir remarqué que le code de l'accéléro ne fonctionnait pas alors qu'il paraît correct, nous avons décidez de vérifier les propriétés électriques de notre montage.&lt;br /&gt;
En observant à l'analyseur logique, il semblerait que l'horloge de la liaison i2C n'est en fait qu'un signal bruité. Il faudra donc retenter de souder le composant quand cela sera possible.&lt;br /&gt;
&lt;br /&gt;
'''13/04''' (6 heures)&lt;br /&gt;
*Terminaison du programme RFduino qui fonctionne théoriquement, nous attendons de terminer les dernières soudures pour pouvoir le tester physiquement.&lt;br /&gt;
*En attendant de pouvoir réaliser des soudures, nous avons repris la partie communication bluetooth entre le RFduino et l'appli. Après avoir tenté d'utiliser un programme permettant de gérer le protocole GATT sans savoir envoyer ou recevoir de données, nous nous sommes orientés sur une communication plus basique basée sur de nombreux exemples que l'on peut voir sur le web.&lt;br /&gt;
&lt;br /&gt;
'''15/04''' (6 heures)&lt;br /&gt;
*Après s'être rendu compte que la communication plus &amp;quot;basique&amp;quot; que nous voulions utiliser n'était pas compatible avec le BLE, nous sommes une fois de plus repartis de zéro pour cette partie.&lt;br /&gt;
*Après quelques recherches, nous avons trouvé un programme réalisant la gestion d'un socket BLE sur le principe du protocole GATT. Grâce à celui-ci, il nous est possible de recevoir et d'envoyer des données via BLE sur RFduino ainsi que sur l'appli mobile.&lt;br /&gt;
&lt;br /&gt;
====Semaine 13 (Interruption pédagogique)====&lt;br /&gt;
&lt;br /&gt;
'''17/04 (4 heures)'''&lt;br /&gt;
*Ajout du singleton Etat pour partager l'état des aliments dans la réserve alimentaire&lt;br /&gt;
*Transfert des requêtes de la base de donnée vers le singleton pour optimiser l'actualisation et le partage des données.&lt;br /&gt;
*Actualisation automatique des données sur la page principale.&lt;br /&gt;
&lt;br /&gt;
===Premières idées===&lt;br /&gt;
&lt;br /&gt;
Voici les premières idées de l'application mobile et du composant fixé sur le frigo.&lt;br /&gt;
[[Fichier:Optali_v1.jpg|400px|thumb|left|Optali version 1]]&lt;br /&gt;
[[Fichier:OptaliBox_v1.jpg|400px|thumb|center|OptaliBox version 1]]&lt;br /&gt;
[[Fichier:P46_schema.jpg|400px|thumb|center|Schéma électrique version 1]]&lt;br /&gt;
&lt;br /&gt;
En s'intéressant aux différentes datasheets ou données constructeur des composants que nous voulons utiliser, nous trouvons indispensable d'utiliser des résistances de 330 Ohms pour l'utilisation des LEDs, pour éviter de les griller.&lt;br /&gt;
&lt;br /&gt;
Edit : Retrait de la résistance R2.&lt;br /&gt;
&lt;br /&gt;
Concernant l'accéléromètre, nous avons choisi un modèle qui nous permet de brancher directement ce module sur une broche du RFDuino. On branchera directement les GPIOs de la RFduino sur les ports SDA et SCL de l'accéléromètre qui correspondent à l'interface I2C pour pouvoir communiquer. On utilisera aussi la broche INT1 pour pouvoir générer des interruptions directement depuis l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
On connectera le buzzer directement à une broche de la RFduino aussi. Concernant celui-ci il reste une incertitude puisqu'on ne trouve aucune information sur le courant à fournir pour l'alimentation de ce composant sur sa datasheet. Après différentes recherches sur Internet, il pourrait être nécessaire d'utiliser un montage amplificateur à transistor comme un émetteur commun pour booster le courant en sortie d'une broche GPIO. Quelques buzzers trouvés avec des données constructeur montrent que ce type de composant nécessite généralement un courant d'environ 30 mA. Nous verrons dans la pratique si cela sera vraiment nécessaire. Par sécurité, on ajoutera un transistor bipolaire dans la liste de matériel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:screen_LED.png|400px|thumb|left|Données constructeur pour LEDs]]&lt;br /&gt;
[[Fichier:screen_accel.png|400px|thumb|center|Datasheet de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
===Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
====Configuration école====&lt;br /&gt;
&lt;br /&gt;
*Pour configurer notre Raspberry Pi, nous utilisons son port série et &amp;quot;minicom&amp;quot;. Pour pouvoir télécharger des paquets, il fallait la connecter au réseau. Nous lui avons donc affecté une adresse IP fixe avec le fichier /etc/network/interfaces. Voici les modifications qui ont été apportées : &lt;br /&gt;
&lt;br /&gt;
   auto eth0&lt;br /&gt;
   iface eth0 inet static&lt;br /&gt;
   address 172.26.78.15&lt;br /&gt;
   netmask 255.255.240.0&lt;br /&gt;
   gateway 172.26.79.254&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il a également fallu ajouter la commande &amp;quot;export http_proxy=http://proxy.polytech-lille.fr:3128&amp;quot; (il faudra effectuer cette commande à chaque démarrage de la Pi) pour pouvoir utiliser le proxy de l'école. &lt;br /&gt;
Nous avons de plus modifier le fichier /etc/resolv.conf avec la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
   nameserver 193.48.57.34&lt;br /&gt;
&lt;br /&gt;
Malgré cela, nous avions des soucis pour nous connecter au réseau. Il y avait en fait un processus dhcp en tâche de fond qui nous empêchait de garder le contenu de resolv.conf. Il a donc fallu trouver ce processus pour le &amp;quot;kill&amp;quot; et pouvoir accéder correctement au réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons du coup pu installer postgresql pour pouvoir configurer une base de données sur notre Pi.&lt;br /&gt;
&lt;br /&gt;
====Configuration à domicile====&lt;br /&gt;
&lt;br /&gt;
Pour nous mettre dans une situation plus fidèle à notre projet, nous avons configuré la raspberry à domicile.&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abords installé Raspbian, puis installé les paquets nécessaire au fonctionnement du serveur.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Openssh-server''': permettre d'accès à distance à la raspberry pour pouvoir y accéder depuis l'école.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Iptables''': pour sécuriser les ports non utilisé et libérer l'accès aux ports qui nous intéressent (ssh 22,http 80,https 443).&amp;lt;br&amp;gt;&lt;br /&gt;
- '''apache2, php5, mysql-server''' : pour mettre en place notre service web.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons rediriger les ports 80 et 22 du routeur pour pouvoir accéder à la raspberry de l'extérieur.&lt;br /&gt;
&lt;br /&gt;
Pour finir, nous avons créer un fichier de config iptables permettant de sécuriser un minimum la base de donnée et de permettre d'autoriser la communication des ports 22, 80 et 443 correspondants aux ports ssh, http et https. le fichier de configuration a été déposé dans le dépôt git. Il nous a fallut le rendre exécutable via un chmod. Puis pour l'exécuter à chaque démarrage du system, dans le fichier /etc/init.d/ taper : &lt;br /&gt;
&lt;br /&gt;
    sudo update-rc.d firewall defaults (si notrefichier s'appelle firewall et s'il est dans init.d)&lt;br /&gt;
&lt;br /&gt;
===Base de donnée===&lt;br /&gt;
&lt;br /&gt;
Nos données alimentaires disponibles par toute la famille doivent être stocké sur un serveur de base de donnée externe (tel une Raspberry pi). Nous nous proposons de créer le diagramme UML représentant cette future base de donnée.&lt;br /&gt;
[[Fichier:Optali_UML.jpg|700px|thumb|center|Diagramme UML base de donnée]]&lt;br /&gt;
&lt;br /&gt;
On créera donc 3 entités. Date, Product et Recipe. &lt;br /&gt;
&lt;br /&gt;
- Product rassemble les aliments qui sont ou ont été dans la réserve alimentaire. NbProdIn permet de connaître le nombre de produits identiques (possibilité de date différentes mais pas de doublons et on garde l'information de quantité. NbProdBought donne une information sur le nombre de produits identique ayant été acheté depuis la mise en service de la base de donnée. Ainsi nous pourrons par la suite proposer une liste de course à l'utilisateur en fonction de la fréquence d'achat des produits.&lt;br /&gt;
&lt;br /&gt;
- Recipe contient les recettes que pourra rentrer l'utilisateur sur l'application. L'utilisateur pourra ainsi se voir proposer des recettes en fonction de ce qu'il a dans son frigo et de ses recettes personnelles.&lt;br /&gt;
&lt;br /&gt;
'''''Edit : On ajoutera une valeur entière dans les tables Date et Unity pour gérer le cas où il existe plusieurs produits (différents ou identiques) avec une date de péremption équivalente. On les appellera NbDate la valeur dans la table Date et NbUnity dans la table Unity. On leur ajoutera de même une clef primaire IdUnity et IdListProduct'''''&lt;br /&gt;
&lt;br /&gt;
On utilisera MySql pour la gestion de nos bases de données. &lt;br /&gt;
La syntaxe pour l'implanter dans la base de donnée à été jointe au dépôt git.&lt;br /&gt;
&lt;br /&gt;
Pour lancer my SQL, on tapera:&lt;br /&gt;
&lt;br /&gt;
   mysql -h localhost -u root -p&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Web service===&lt;br /&gt;
&lt;br /&gt;
====Page init.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet d'initier l'accès à la base de donnée sur le serveur. Elle est requise pour les pages qui suivent.&lt;br /&gt;
&lt;br /&gt;
====Page post.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet l'insertion d'un produit et d'une date via l'application mobile. Elle prend donc ces deux arguments et les insère dans les tables Unity, Product et Date.&lt;br /&gt;
&lt;br /&gt;
====Page get.php====&lt;br /&gt;
&lt;br /&gt;
Page qui envoie la liste des aliments avec leur nom, leur date, leur quantité dans le frigo, la quantité d'exemplaires acheté en tout depuis la mise en place de l'appareil. Le tri se fera directement dans l'application mobile. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Application Mobile===&lt;br /&gt;
&lt;br /&gt;
====Home page====&lt;br /&gt;
&lt;br /&gt;
Page d'accueil permettant d'accéder aux pages d'ajout et de liste des produits disponibles. &amp;lt;br&amp;gt;&lt;br /&gt;
La page permet aussi d'effectuer la connexion entre la rfduino et l'application mobile. Elle montre les alertes (signaux) à l'utilisateur &lt;br /&gt;
et écrit leur signification.&lt;br /&gt;
&lt;br /&gt;
====Page d'ajout====&lt;br /&gt;
&lt;br /&gt;
Pour ajouter un produit et lire une date on utilisera un champ editText pour permettre à l'utilisateur d'écrire &amp;quot;Manuellement&amp;quot; dedans grâce au clavier du smartphone.&amp;lt;br&amp;gt;&lt;br /&gt;
De plus on utilise un bouton qui appellera la caméra pour détecter les caractères d'un produit ou d'une date. Au début nous voulions utiliser un détecteur de code barre, nous l'avons implémenté mais nous avons remarqué que la mise au point sur une surface non plane prend du temps d'autant plus qu'il faut questionner une base de donnée contenant tous les numéro de codes barres utilisés. Nous avons donc prit la décision d'utiliser uniquement la lecture de caractère et nous créerons une liste déroulante sous l'editText pour faciliter l'insertion d'un produit qui a déjà été ajouté. Pour la lecture de caractère, nous utilisons la librairie tesseract.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'envoi, nous utilisons la librairie Volley développé par google.&lt;br /&gt;
&lt;br /&gt;
====Page Liste====&lt;br /&gt;
&lt;br /&gt;
Permet de lister les produits dans la base de donnée. Une série de boutons radio permettent de trier les produits par ordre alphabétique, par date de péremption, par nombre d’occurrence dans la réserve alimentaire, par nombre d'achat depuis la mise en place du système.&amp;lt;br&amp;gt;&lt;br /&gt;
Une colonne permet de sélectionner les aliments désirés (par checkBox) pour ensuite les supprimer via un button &amp;quot;suppr&amp;quot; ou les choisir pour trouver des recettes qui les utilisent.&amp;lt;br&amp;gt;&lt;br /&gt;
Un EditText permet d'effectuer une recherche sur la base de donnée.&lt;br /&gt;
&lt;br /&gt;
===Altium Designer===&lt;br /&gt;
&lt;br /&gt;
Pour permettre au RFDuino de communiquer avec les différents composants, nous aurons besoin de quelques composants électroniques. Afin que cela soit plus esthétique pour la modélisation finale, nous allons créer une carte PCB pour rassembler tous ces composants dessus. On utilisera le logiciel Altium Designer pour cela.&lt;br /&gt;
&lt;br /&gt;
Avant de représenter notre circuit général, nous allons commencer par créer une librairie rassemblant tous les composants que nous utiliserons par la suite, en particulier nos composants CMS (accéléromètre et résistances). Pour ce qui est des LEDs et du buzzer, qui sont traversants, nous pourrons utiliser des headers classiques.&lt;br /&gt;
&lt;br /&gt;
Il a donc fallu créer le schematic ainsi que l'empreinte de nos composants CMS. Voici un exemple avec notre accéléromètre :&lt;br /&gt;
[[Fichier:Accelerosch.PNG|500px|thumb|left|Schematic de l'accéléromètre]]&lt;br /&gt;
[[Fichier:Acceleropcb.PNG|500px|thumb|center|Empreinte PCB de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les fichiers Altium sont disponibles sur notre dépôt GIT. Après cela, nous pouvons maintenant construire notre schematic du montage entier et ensuite le fichier PCB afin de pouvoir graver notre circuit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après quelques modifications sur le montage prévu initialement, c'est-à-dire en enlevant une résistance entre un GPIO et l'alimentation de l'accéléromètre ainsi qu'en rajoutant des résistances pull-up sur les broches de notre liaison i2C (SDA et SCL) et un bouton poussoir en plus pour permettre un reset du RFDuino, nous avons pu créer notre schematic global pour en faire un PCB et l'exporter au format Gerber. De ce fait, le service EEI de Polytech pourra réaliser la gravure de notre carte PCB.&lt;br /&gt;
&lt;br /&gt;
Voici quelques photos pour illustrer notre projet sur Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Finalproto_sch.PNG|400px|thumb|left|Schematic du montage final]]&lt;br /&gt;
[[Fichier:Finalproto_pcb.PNG|400px|thumb|center|PCB du montage final]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On retrouve sur notre PCB final les headers, respectivement de 8 et 5 pins, de part et d'autre de la carte, qui représentent le RFDuino, où nous souderons des broches pour qu'elles puissent être intégrées au RFDuino. On note la présence de 5 autres headers de 2 pins, dont 3 pour des LEDs puis les 2 autres pour le buzzer et le bouton poussoir. Ce qui reste sont les composants CMS avec plusieurs composants à 2 pattes qui sont toutes les résistances de notre montage, celles de protection pour les LEDs et les pull-ups pour l'accéléromètre. Le dernier composant à 8 pattes est donc bien l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quelques difficultés ont été rencontrées durant ce travail notamment concernant les contraintes de construction sur le PCB final. En effet, les composants CMS choisis (surtout l'accéléromètre) étant parfois très petits, Altium n'accepte pas forcément le faible espacement entre les différentes pattes des composants, ce qui pose problème lors de la compilation. De plus, le plan de masse ne prenait pas en compte tous les éléments devant être rattachés à la masse. Il a fallu légèrement déplacer les headers représentant le RFDuino pour que cela soit possible. Il faudra alors peut-être légèrement plier les broches qui viendront s'intégrer sur le RFDuino pour ajouter notre PCB sur le RFDuino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons envoyé nos fichiers Altium au service EEI afin qu'il puisse réaliser physiquement notre carte. Nous nous retrouvons donc avec notre carte PCB récupérée auprès du service EEI. Voici le rendu :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:P46_carte.jpg|400px|thumb|center|Fabrication de notre carte PCB]]&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=41313</id>
		<title>IMA4 2016/2017 P46 : Aide anti-gaspillage alimentaire</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=41313"/>
				<updated>2017-04-19T14:37:55Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : /* Semaine 11 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
En France, nous jetons en moyenne 21% des aliments que nous achetons, ce qui représente une perte de 100 à 160 euros par an par habitant. Cela est en partie dû à la date limite de consommation associée à chaque produit. En effet, à partir du moment où cette date sera dépassée le consommateur jettera les produits concernés sans réfléchir, même si ceux-ci peuvent parfois être encore mangeables. Plutôt que d'essayer de les convaincre du contraire, il serait judicieux de proposer aux adeptes du gaspillage une aide permettant de gérer tous les aliments dont ils disposent chez eux afin d'éviter la surprise de tomber sur plusieurs produits périmés lorsqu'ils ouvrent la porte de leur frigo. &lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Ce projet permet d'aider les utilisateurs d'une part à mémoriser les denrées périssables qu'ils disposent dans leur réserve alimentaire et d'autre part d'avertir l'utilisateur qu'un événement important a lieu. Ceci peut être une notification qu'un aliment va bientôt dépasser sa date de péremption, que la porte du frigidaire est restée ouverte ou encore que le nombre d'aliments dans la réserve devient critique et qu'il faudra de nouveau l'alimenter. Enfin, le système aidera l'utilisateur à trouver des idées de repas pouvant permettre de consommer les aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Notre prototype permettra d'éviter le gaspillage alimentaire ainsi que d'aider l'utilisateur dans sa gestion du stockage d'aliments.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
&lt;br /&gt;
Notre système sera composé de 3 éléments. &lt;br /&gt;
&lt;br /&gt;
Premièrement, un ou des smartphones appartenant aux utilisateurs. Ces derniers permettront de scanner grâce à son appareil photo, le code barre du produit ainsi que sa date de péremption. Il servira aussi d'interface utilisateur pour notre système. En effet, c'est par cet outil que l'utilisateur pourra lister tous les aliments que l'utilisateur a dans sa base et tout ça en les triant par date de péremption, ou encore voir les recettes possibles pour consommer des aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Deuxièmement, un serveur, de type Raspberry, qui permettra de stocker la base de donnée contenant les aliments de la réserve. Ce serveur sera connecté par wifi.&lt;br /&gt;
 &lt;br /&gt;
Troisièmement, un contrôleur (Rfduino) qui comportera une LED pour indiquer la mise sous tension du contrôleur, une LED pour prévenir l'utilisateur qu'un aliment va bientôt passer sa date de péremption et une dernière LED pour prévenir l'utilisateur que son niveau de réserve est critique ainsi qu'un buzzer et un accéléromètre pour buzzer quand la porte du frigo est restée trop longtemps ouverte. Ce dernier sera fixé au frigo par l'intermédiaire d'un dispositif adapté qui sera un système aimanté qui se pose sur le frigo.&lt;br /&gt;
&lt;br /&gt;
Nous implémenterons donc une application mobile Android qui fera le lien entre les 2 autres systèmes.&lt;br /&gt;
&lt;br /&gt;
Pour la partie électronique que nous aurons à réaliser, nous utiliserons une Breadboard pour faire des premiers tests puis nous créerons une carte PCB pour notre montage final.&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
On utilisera une Raspberry Pi en guise de serveur pour pouvoir s'occuper du stockage de toutes les données dans notre projet puisque notre contrôleur sera incapable de les contenir, ce n'est d'ailleurs pas son but ici.&lt;br /&gt;
&lt;br /&gt;
Notre smartphone fera donc le lien entre notre base de données et notre système embarqué par l'intermédiaire de l'application mobile.&lt;br /&gt;
&lt;br /&gt;
Nous prendrons ici un RFduino puisque celui-ci nous permet d'ajouter des modules comme bon nous semble afin d'adapter le système aux besoins de notre application. Il est également parfaitement compatible avec les applications Android. De plus, nous avons un Bluetooth directement intégré au RFduino pour s'assurer que les liaisons RFduino-application mobile se fassent correctement. &lt;br /&gt;
On notera également que ce contrôleur consomme peu de courant et ne demande qu'une faible tension d'alimentation, critères importants pour ce genre de projet. C'est la raison principale de son utilisation pour être utilisé comme interface physique sur le frigo, en ajoutant également sa taille réduite comparée à la Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
&lt;br /&gt;
Nous avons donc besoin du matériel suivant :&lt;br /&gt;
&lt;br /&gt;
*Raspberry Pi.&lt;br /&gt;
*Clef wifi&lt;br /&gt;
*RFduino (RFD22102 DIP Board, RFD22121 USB Shield, RFD22126 Dual AAA battery shield).&lt;br /&gt;
*2 piles AAA.&lt;br /&gt;
*3 leds tranversantes.&lt;br /&gt;
*3 Résistances 330 Ohm.&lt;br /&gt;
*1 Résistance 10 kOhm.&lt;br /&gt;
*Un buzzer.&lt;br /&gt;
*Accéléromètre.&lt;br /&gt;
*Aimants&lt;br /&gt;
*Un boîtier permettant d'intégrer la RFduino + fixation sur le frigo (modélisation à voir).&lt;br /&gt;
&lt;br /&gt;
Pour le buzzer, l'accéléromètre et les résistances, nous choisirons des composants CMS pour nous permettre d'avoir une carte plus petite.&lt;br /&gt;
&lt;br /&gt;
===Calendrier prévisionnel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Liste des tâches à effectuer====&lt;br /&gt;
&lt;br /&gt;
* Configurer la Raspberry :&lt;br /&gt;
** Installer et configurer le serveur.&lt;br /&gt;
** Créer le diagramme UML de notre future base de données.&lt;br /&gt;
** Créer la base sur le serveur.&lt;br /&gt;
** Configurer la connexion WiFi.&lt;br /&gt;
&lt;br /&gt;
* Monter et programmer la RFduino :&lt;br /&gt;
** Connecter les différents modules au RFduino (accéléromètre, LEDs, buzzer, Batterie, module Bluetooth).&lt;br /&gt;
** Récupérer les consignes du smartphone grâce au Bluetooth.&lt;br /&gt;
** Programmer le comportement du RFduino en fonction des consignes.&lt;br /&gt;
** Construire le boitier final.&lt;br /&gt;
&lt;br /&gt;
* Implémenter l'application mobile Android :&lt;br /&gt;
** Une première activité permettant de se connecter au RFduino et à la Raspberry.&lt;br /&gt;
** Scanner une date et un code barre.&lt;br /&gt;
** Ajout/suppression d'un aliment dans la base de donnée.&lt;br /&gt;
** Envoi d'une consigne au RFduino.&lt;br /&gt;
** Rendre l'interface utilisateur ergonomique (lister aliments, envoyer vers page de recettes avec l'utilisation des aliments bientôt périmés...).&lt;br /&gt;
&lt;br /&gt;
====Calendrier====&lt;br /&gt;
&lt;br /&gt;
Répartition du temps consacré au projet (120h *2) :&lt;br /&gt;
&lt;br /&gt;
*Partie Raspberry : 60h&lt;br /&gt;
*Partie RFduino : 60h&lt;br /&gt;
*Partie développement mobile : 120h&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
&lt;br /&gt;
===Résumé===&lt;br /&gt;
&lt;br /&gt;
====Semaine 1====&lt;br /&gt;
&lt;br /&gt;
'''23/01''' :  &lt;br /&gt;
* Installation du logiciel Android Studio pour être prêt à commencer l'application mobile.&lt;br /&gt;
* Création du Repository Git sur GitHub : https://github.com/FrancoisLefevre12/Optali.git&lt;br /&gt;
* Réalisation de différents schémas fonctionnels pour se donner une idée du travail à effectuer, aussi bien du software que du hardware.&lt;br /&gt;
* Quelques précisions supplémentaires apportées sur le cahier des charges.&lt;br /&gt;
* Ajout de liens de référence pour la liste de matériel à acheter.&lt;br /&gt;
&lt;br /&gt;
'''25/01''' :  &lt;br /&gt;
* Précision des composants requis (accéléromètre, buzzer, LEDs, résistances).&lt;br /&gt;
* Écriture du montage à la main.&lt;br /&gt;
* Étude du fonctionnement de l'accéléromètre, du buzzer.&lt;br /&gt;
* Écriture de la structure de l'application à la main.&lt;br /&gt;
&lt;br /&gt;
'''26/01''' :&lt;br /&gt;
*Réalisation graphique de la première page de l'application.&lt;br /&gt;
*Conception du schéma électrique pour tous les composants connectés au RFduino.&lt;br /&gt;
&lt;br /&gt;
====Semaine 2====&lt;br /&gt;
&lt;br /&gt;
'''30/01''' :&lt;br /&gt;
*Réalisation du diagramme UML de la base de données qui sera stockée sur la Raspberry Pi&lt;br /&gt;
*Installation de l'outil de développement mobile sur le second PC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''01/02''' :&lt;br /&gt;
*Nous nous sommes d'abord rendus compte que la résistance entre un des GPIO et l'accéléromètre était inutile, nos premiers calculs étaient erronés. Nous ne la garderons donc pas sur notre schéma électrique final.&lt;br /&gt;
*Avancement sur la partie application mobile : réalisation de la page &amp;quot;Ajout&amp;quot; sur laquelle nous tomberons après avoir cliquer sur &amp;quot;ajout&amp;quot; sur la page principale de l'application. Nous avons étendu l'activité principale jusqu'à cette nouvelle activité &amp;quot;Ajout&amp;quot;.&lt;br /&gt;
*Nous avons récupéré notre Raspberry Pi pour commencer à installer notre base de données dessus. Nous avons actuellement quelques problèmes pour nous connecter sur la Raspberry. Nous travaillons sur ce point.&lt;br /&gt;
&lt;br /&gt;
'''02/02''' :&lt;br /&gt;
* Application mobile : Mise en place des LEDs sur la home page et de la zone de notification avec les messages associés.&lt;br /&gt;
&lt;br /&gt;
====Semaine 3====&lt;br /&gt;
&lt;br /&gt;
'''06/02''' :&lt;br /&gt;
*Nous arrivons à accéder à la Raspberry via le port série de celle-ci. Nous avons également configuré sa connexion Ethernet afin de pouvoir télécharger des paquets dessus et installer notre base de données. &lt;br /&gt;
*Nous rencontrions des problèmes sur le second PC de travail pour récupérer le projet Optali sur Android Studio via notre dépôt GIT. Nous avons pu rectifier ce souci.&lt;br /&gt;
&lt;br /&gt;
'''08/02''' :&lt;br /&gt;
*Tentative d'établissement d'un point d'accès WiFi sur notre Raspberry. Nous n'avons pas réussi pour le moment.&lt;br /&gt;
*Restructuration du Repository git.&lt;br /&gt;
*Essai d'importation de la librairie Zxing qui permettra de décoder les code-barres.&lt;br /&gt;
&lt;br /&gt;
====Semaine 4====&lt;br /&gt;
&lt;br /&gt;
'''13/02'''&lt;br /&gt;
*Configuration du wifi de la Raspberry. &lt;br /&gt;
*Étude d'une mise en place d'un service web via php.&lt;br /&gt;
&lt;br /&gt;
'''15/02'''&lt;br /&gt;
*Mise en place d'un lecteur de caractère sur l'application. On utilisera tesseract.&lt;br /&gt;
*Début de la création du PCB via Altium designer. Création d'une librairie pour l'accéléromètre qui est un composant CMS assez spécial. On pourra cependant utiliser des headers classiques pour le buzzer et les LEDs puisque ce sont des composants traversants.&lt;br /&gt;
*Création des premiers fichiers php de connection à la base de donnée et d'insertion d'aliments. Tous ces fichiers seront déposés de la même manière sur le dépôt git.&lt;br /&gt;
&lt;br /&gt;
'''16/02'''&lt;br /&gt;
*Adaptation avec prise en compte des cas du code php d'insertion de produits par requête sur la base de donnée.&lt;br /&gt;
*Ajout du code d'implantation de la base de donnée.&lt;br /&gt;
*Altium: Accéléromètre terminé, mise en place des résistances.&lt;br /&gt;
&lt;br /&gt;
====Semaine 5 (interruption pédagogique)====&lt;br /&gt;
&lt;br /&gt;
'''22/02 (3 heures)'''&lt;br /&gt;
*Installation de l'OS de la raspberry.&lt;br /&gt;
*Installation d'Openssh-server, apache2, php5, iptables, mysql-server, php5-mysql.&lt;br /&gt;
*Redirection des ports du routeur vers la raspberry.&lt;br /&gt;
*Configuration de iptables de la raspberry.&lt;br /&gt;
&lt;br /&gt;
'''23/02 (2 heures)'''&lt;br /&gt;
*Implantation de la base de donnée sur la raspberry pi.&lt;br /&gt;
&lt;br /&gt;
====Semaine 6====&lt;br /&gt;
'''27/02'''&lt;br /&gt;
*Vérification de la syntaxe de l'insertion de valeurs dans la base de donnée.&lt;br /&gt;
*Création des premières requêtes sur la base de donnée.&lt;br /&gt;
*Finalisation du PCB de l'Optali Board.&lt;br /&gt;
&lt;br /&gt;
'''01/03'''&lt;br /&gt;
*Étude et ajout de la librairie volley pour communiquer avec le serveur.&lt;br /&gt;
*Implantation de la fonction d'envoi de données jusqu'au serveur.&lt;br /&gt;
*Après avoir vu avec un professeur, nous avons remarqué que le routage n'était pas adéquat et la disposition des composants n'était pas optimal. Du travail reste donc encore à effectuer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Semaine 7====&lt;br /&gt;
'''06/03'''&lt;br /&gt;
*Correction du fichier post.php&lt;br /&gt;
*Finition du protocole d'ajout d'aliment sur la base de donnée. (Code php et page ajout terminée).&lt;br /&gt;
*PCB terminé.&lt;br /&gt;
*Installation d'arduino IDE, doc arduino collecté.&lt;br /&gt;
&lt;br /&gt;
'''08/03'''&lt;br /&gt;
*Implémentation de la page ListeIngredient.xml et de l'activité listActivity.java.&lt;br /&gt;
*Documentation sur la procédure de communication bluetooth entre la Rfduino et l'application mobile.&lt;br /&gt;
*Obtention de librairie en lien avec cela.&lt;br /&gt;
*Prise en main de programmation rfduino.&lt;br /&gt;
&lt;br /&gt;
'''09/03'''&lt;br /&gt;
*Nous nous sommes rendus compte qu'il était nécessaire de rajouter un bouton poussoir sur notre montage afin de permettre la réinitialisation de notre RFDuino si nécessaire. Nous devons également faire en sorte de pouvoir poser notre carte PCB directement sur notre RFDuino en utilisant des broches. Nous devons donc rajouter ces éléments-ci.&lt;br /&gt;
*Ecriture de la page get.php&lt;br /&gt;
*Premiers tests sur la ListView de l'activité ListActivity.&lt;br /&gt;
&lt;br /&gt;
====Semaine 8====&lt;br /&gt;
'''13/03'''&lt;br /&gt;
*Recherche de pistes concernant la programmation RFDuino. Nous pouvons la détecter en bluetooth via un smartphone Android.&lt;br /&gt;
*Finition du Tablelayout et du code java associé sur la page ListActivity.&lt;br /&gt;
&lt;br /&gt;
'''15/03'''&lt;br /&gt;
*Ajout de la JsonArrayRequest dans la page ListActivity.&lt;br /&gt;
*Nous nous sommes rendus compte au moment de programmer la liaison I2C de l'accéléromètre avec la RFDuino que nous avions oublié de mettre des résistances pull-up entre l'alimentation du composant et les broches SDA et SCL. Les modifications ont donc été faites puis nous avons envoyé finalement notre PCB à la fabrication.&lt;br /&gt;
&lt;br /&gt;
'''16/03'''&lt;br /&gt;
*Changement de stratégie au niveau de la requête JsonArrayRequest. On récupère toute la base et ensuite le traitement sera effectuer dans l'application mobile.&lt;br /&gt;
*Rédaction de la partie Altium du wiki.&lt;br /&gt;
*Recherche de docs sur le système bluetooth du RFduino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Semaine 9====&lt;br /&gt;
'''20/03'''&lt;br /&gt;
*Réalisation de différents réglages pour pouvoir utiliser l'application Optali sur l'Android phone fourni par notre professeur (LG G4c)&lt;br /&gt;
*Recherche de docs concernant la partie java responsable de la communication Bluetooth.&lt;br /&gt;
*Reprise de la solution Tesseract pour la lecture de caractères.&lt;br /&gt;
&lt;br /&gt;
'''21/03''' (séance supplémentaire de 3 heures)&lt;br /&gt;
*Début du développement de la partie communication entre RFDuino et l'appli mobile. Nous pouvons détecter le RFduino à partir de Android Studio mais nous n'arrivons pas encore à nous connecter dessus directement.&lt;br /&gt;
*Finition de la fonctionnalité tesseract. La lecture de caractères est donc maintenant possible.&lt;br /&gt;
&lt;br /&gt;
'''22/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity&lt;br /&gt;
*Connexion possible entre le RFduino et notre appli mobile. Il faut maintenant pouvoir assurer un échange de données via du GATT.&lt;br /&gt;
&lt;br /&gt;
====Semaine 10====&lt;br /&gt;
'''27/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity (suite). Utilisation de la solution postman.&lt;br /&gt;
*Mise à jour du wiki pour la partie Altium.&lt;br /&gt;
*Gestion du dépôt git.&lt;br /&gt;
*Récupération de la carte PCB au service EEI.&lt;br /&gt;
&lt;br /&gt;
'''29/03'''&lt;br /&gt;
*Mise en place du tri des Produits avec un critère d'ordonnabilité variable&lt;br /&gt;
*Implémentation du champs recherche et action sur la liste&lt;br /&gt;
*Écriture des pages Php consume.php et delete.php pour décrémenter le nombre d'aliment dans le frigo ou le supprimer&lt;br /&gt;
*Récupération des composants&lt;br /&gt;
*Passage au four pour souder les premiers composants en CMS&lt;br /&gt;
&lt;br /&gt;
====Semaine 11====&lt;br /&gt;
&lt;br /&gt;
'''03/04'''&lt;br /&gt;
*Dé-soudage et resoudage de l'accéléromètre.&lt;br /&gt;
*Soudure des composants&lt;br /&gt;
&lt;br /&gt;
'''05/04'''&lt;br /&gt;
*Test du Buzzer&lt;br /&gt;
*Code de l'accéléromètre&lt;br /&gt;
*Création de l'Optali box (la boite qui contient le RFduino fixé au frigo)&lt;br /&gt;
*Finition de la fonction 'delete'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''06/04'''&lt;br /&gt;
*Problème pour faire fonctionner le code de l'accéléro. Il faudra le tester électriquement.&lt;br /&gt;
*Implantation du logo de l'appli &lt;br /&gt;
*Debuggage d'une requête de la page 'list'&lt;br /&gt;
*Documentation sur les listes déroulantes sous les EditTexts.&lt;br /&gt;
&lt;br /&gt;
====Semaine 12 (Interruption pédagogique)==== &lt;br /&gt;
&lt;br /&gt;
'''11/04''' (3 heures)&lt;br /&gt;
*Après avoir remarqué que le code de l'accéléro ne fonctionnait pas alors qu'il paraît correct, nous avons décidez de vérifier les propriétés électriques de notre montage.&lt;br /&gt;
En observant à l'analyseur logique, il semblerait que l'horloge de la liaison i2C n'est en fait qu'un signal bruité. Il faudra donc retenter de souder le composant quand cela sera possible.&lt;br /&gt;
&lt;br /&gt;
'''13/04''' (6 heures)&lt;br /&gt;
*Terminaison du programme RFduino qui fonctionne théoriquement, nous attendons de terminer les dernières soudures pour pouvoir le tester physiquement.&lt;br /&gt;
*En attendant de pouvoir réaliser des soudures, nous avons repris la partie communication bluetooth entre le RFduino et l'appli. Après avoir tenté d'utiliser un programme permettant de gérer le protocole GATT sans savoir envoyer ou recevoir de données, nous nous sommes orientés sur une communication plus basique basée sur de nombreux exemples que l'on peut voir sur le web.&lt;br /&gt;
&lt;br /&gt;
'''15/04''' (6 heures)&lt;br /&gt;
*Après s'être rendu compte que la communication plus &amp;quot;basique&amp;quot; que nous voulions utiliser n'était pas compatible avec le BLE, nous sommes une fois de plus repartis de zéro pour cette partie.&lt;br /&gt;
*Après quelques recherches, nous avons trouvé un programme réalisant la gestion d'un socket BLE sur le principe du protocole GATT. Grâce à celui-ci, il nous est possible de recevoir et d'envoyer des données via BLE sur RFduino ainsi que sur l'appli mobile.&lt;br /&gt;
&lt;br /&gt;
====Semaine 13====&lt;br /&gt;
&lt;br /&gt;
'''17/04 (4 heures)'''&lt;br /&gt;
*Ajout du singleton Etat pour partager l'état des aliments dans la réserve alimentaire&lt;br /&gt;
*Transfert des requêtes de la base de donnée vers le singleton pour optimiser l'actualisation et le partage des données.&lt;br /&gt;
*Actualisation automatique des données sur la page principale.&lt;br /&gt;
&lt;br /&gt;
===Premières idées===&lt;br /&gt;
&lt;br /&gt;
Voici les premières idées de l'application mobile et du composant fixé sur le frigo.&lt;br /&gt;
[[Fichier:Optali_v1.jpg|400px|thumb|left|Optali version 1]]&lt;br /&gt;
[[Fichier:OptaliBox_v1.jpg|400px|thumb|center|OptaliBox version 1]]&lt;br /&gt;
[[Fichier:P46_schema.jpg|400px|thumb|center|Schéma électrique version 1]]&lt;br /&gt;
&lt;br /&gt;
En s'intéressant aux différentes datasheets ou données constructeur des composants que nous voulons utiliser, nous trouvons indispensable d'utiliser des résistances de 330 Ohms pour l'utilisation des LEDs, pour éviter de les griller.&lt;br /&gt;
&lt;br /&gt;
Edit : Retrait de la résistance R2.&lt;br /&gt;
&lt;br /&gt;
Concernant l'accéléromètre, nous avons choisi un modèle qui nous permet de brancher directement ce module sur une broche du RFDuino. On branchera directement les GPIOs de la RFduino sur les ports SDA et SCL de l'accéléromètre qui correspondent à l'interface I2C pour pouvoir communiquer. On utilisera aussi la broche INT1 pour pouvoir générer des interruptions directement depuis l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
On connectera le buzzer directement à une broche de la RFduino aussi. Concernant celui-ci il reste une incertitude puisqu'on ne trouve aucune information sur le courant à fournir pour l'alimentation de ce composant sur sa datasheet. Après différentes recherches sur Internet, il pourrait être nécessaire d'utiliser un montage amplificateur à transistor comme un émetteur commun pour booster le courant en sortie d'une broche GPIO. Quelques buzzers trouvés avec des données constructeur montrent que ce type de composant nécessite généralement un courant d'environ 30 mA. Nous verrons dans la pratique si cela sera vraiment nécessaire. Par sécurité, on ajoutera un transistor bipolaire dans la liste de matériel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:screen_LED.png|400px|thumb|left|Données constructeur pour LEDs]]&lt;br /&gt;
[[Fichier:screen_accel.png|400px|thumb|center|Datasheet de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
===Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
====Configuration école====&lt;br /&gt;
&lt;br /&gt;
*Pour configurer notre Raspberry Pi, nous utilisons son port série et &amp;quot;minicom&amp;quot;. Pour pouvoir télécharger des paquets, il fallait la connecter au réseau. Nous lui avons donc affecté une adresse IP fixe avec le fichier /etc/network/interfaces. Voici les modifications qui ont été apportées : &lt;br /&gt;
&lt;br /&gt;
   auto eth0&lt;br /&gt;
   iface eth0 inet static&lt;br /&gt;
   address 172.26.78.15&lt;br /&gt;
   netmask 255.255.240.0&lt;br /&gt;
   gateway 172.26.79.254&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il a également fallu ajouter la commande &amp;quot;export http_proxy=http://proxy.polytech-lille.fr:3128&amp;quot; (il faudra effectuer cette commande à chaque démarrage de la Pi) pour pouvoir utiliser le proxy de l'école. &lt;br /&gt;
Nous avons de plus modifier le fichier /etc/resolv.conf avec la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
   nameserver 193.48.57.34&lt;br /&gt;
&lt;br /&gt;
Malgré cela, nous avions des soucis pour nous connecter au réseau. Il y avait en fait un processus dhcp en tâche de fond qui nous empêchait de garder le contenu de resolv.conf. Il a donc fallu trouver ce processus pour le &amp;quot;kill&amp;quot; et pouvoir accéder correctement au réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons du coup pu installer postgresql pour pouvoir configurer une base de données sur notre Pi.&lt;br /&gt;
&lt;br /&gt;
====Configuration à domicile====&lt;br /&gt;
&lt;br /&gt;
Pour nous mettre dans une situation plus fidèle à notre projet, nous avons configuré la raspberry à domicile.&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abords installé Raspbian, puis installé les paquets nécessaire au fonctionnement du serveur.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Openssh-server''': permettre d'accès à distance à la raspberry pour pouvoir y accéder depuis l'école.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Iptables''': pour sécuriser les ports non utilisé et libérer l'accès aux ports qui nous intéressent (ssh 22,http 80,https 443).&amp;lt;br&amp;gt;&lt;br /&gt;
- '''apache2, php5, mysql-server''' : pour mettre en place notre service web.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons rediriger les ports 80 et 22 du routeur pour pouvoir accéder à la raspberry de l'extérieur.&lt;br /&gt;
&lt;br /&gt;
Pour finir, nous avons créer un fichier de config iptables permettant de sécuriser un minimum la base de donnée et de permettre d'autoriser la communication des ports 22, 80 et 443 correspondants aux ports ssh, http et https. le fichier de configuration a été déposé dans le dépôt git. Il nous a fallut le rendre exécutable via un chmod. Puis pour l'exécuter à chaque démarrage du system, dans le fichier /etc/init.d/ taper : &lt;br /&gt;
&lt;br /&gt;
    sudo update-rc.d firewall defaults (si notrefichier s'appelle firewall et s'il est dans init.d)&lt;br /&gt;
&lt;br /&gt;
===Base de donnée===&lt;br /&gt;
&lt;br /&gt;
Nos données alimentaires disponibles par toute la famille doivent être stocké sur un serveur de base de donnée externe (tel une Raspberry pi). Nous nous proposons de créer le diagramme UML représentant cette future base de donnée.&lt;br /&gt;
[[Fichier:Optali_UML.jpg|700px|thumb|center|Diagramme UML base de donnée]]&lt;br /&gt;
&lt;br /&gt;
On créera donc 3 entités. Date, Product et Recipe. &lt;br /&gt;
&lt;br /&gt;
- Product rassemble les aliments qui sont ou ont été dans la réserve alimentaire. NbProdIn permet de connaître le nombre de produits identiques (possibilité de date différentes mais pas de doublons et on garde l'information de quantité. NbProdBought donne une information sur le nombre de produits identique ayant été acheté depuis la mise en service de la base de donnée. Ainsi nous pourrons par la suite proposer une liste de course à l'utilisateur en fonction de la fréquence d'achat des produits.&lt;br /&gt;
&lt;br /&gt;
- Recipe contient les recettes que pourra rentrer l'utilisateur sur l'application. L'utilisateur pourra ainsi se voir proposer des recettes en fonction de ce qu'il a dans son frigo et de ses recettes personnelles.&lt;br /&gt;
&lt;br /&gt;
'''''Edit : On ajoutera une valeur entière dans les tables Date et Unity pour gérer le cas où il existe plusieurs produits (différents ou identiques) avec une date de péremption équivalente. On les appellera NbDate la valeur dans la table Date et NbUnity dans la table Unity. On leur ajoutera de même une clef primaire IdUnity et IdListProduct'''''&lt;br /&gt;
&lt;br /&gt;
On utilisera MySql pour la gestion de nos bases de données. &lt;br /&gt;
La syntaxe pour l'implanter dans la base de donnée à été jointe au dépôt git.&lt;br /&gt;
&lt;br /&gt;
Pour lancer my SQL, on tapera:&lt;br /&gt;
&lt;br /&gt;
   mysql -h localhost -u root -p&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Web service===&lt;br /&gt;
&lt;br /&gt;
====Page init.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet d'initier l'accès à la base de donnée sur le serveur. Elle est requise pour les pages qui suivent.&lt;br /&gt;
&lt;br /&gt;
====Page post.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet l'insertion d'un produit et d'une date via l'application mobile. Elle prend donc ces deux arguments et les insère dans les tables Unity, Product et Date.&lt;br /&gt;
&lt;br /&gt;
====Page get.php====&lt;br /&gt;
&lt;br /&gt;
Page qui envoie la liste des aliments avec leur nom, leur date, leur quantité dans le frigo, la quantité d'exemplaires acheté en tout depuis la mise en place de l'appareil. Le tri se fera directement dans l'application mobile. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Application Mobile===&lt;br /&gt;
&lt;br /&gt;
====Home page====&lt;br /&gt;
&lt;br /&gt;
Page d'accueil permettant d'accéder aux pages d'ajout et de liste des produits disponibles. &amp;lt;br&amp;gt;&lt;br /&gt;
La page permet aussi d'effectuer la connexion entre la rfduino et l'application mobile. Elle montre les alertes (signaux) à l'utilisateur &lt;br /&gt;
et écrit leur signification.&lt;br /&gt;
&lt;br /&gt;
====Page d'ajout====&lt;br /&gt;
&lt;br /&gt;
Pour ajouter un produit et lire une date on utilisera un champ editText pour permettre à l'utilisateur d'écrire &amp;quot;Manuellement&amp;quot; dedans grâce au clavier du smartphone.&amp;lt;br&amp;gt;&lt;br /&gt;
De plus on utilise un bouton qui appellera la caméra pour détecter les caractères d'un produit ou d'une date. Au début nous voulions utiliser un détecteur de code barre, nous l'avons implémenté mais nous avons remarqué que la mise au point sur une surface non plane prend du temps d'autant plus qu'il faut questionner une base de donnée contenant tous les numéro de codes barres utilisés. Nous avons donc prit la décision d'utiliser uniquement la lecture de caractère et nous créerons une liste déroulante sous l'editText pour faciliter l'insertion d'un produit qui a déjà été ajouté. Pour la lecture de caractère, nous utilisons la librairie tesseract.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'envoi, nous utilisons la librairie Volley développé par google.&lt;br /&gt;
&lt;br /&gt;
====Page Liste====&lt;br /&gt;
&lt;br /&gt;
Permet de lister les produits dans la base de donnée. Une série de boutons radio permettent de trier les produits par ordre alphabétique, par date de péremption, par nombre d’occurrence dans la réserve alimentaire, par nombre d'achat depuis la mise en place du système.&amp;lt;br&amp;gt;&lt;br /&gt;
Une colonne permet de sélectionner les aliments désirés (par checkBox) pour ensuite les supprimer via un button &amp;quot;suppr&amp;quot; ou les choisir pour trouver des recettes qui les utilisent.&amp;lt;br&amp;gt;&lt;br /&gt;
Un EditText permet d'effectuer une recherche sur la base de donnée.&lt;br /&gt;
&lt;br /&gt;
===Altium Designer===&lt;br /&gt;
&lt;br /&gt;
Pour permettre au RFDuino de communiquer avec les différents composants, nous aurons besoin de quelques composants électroniques. Afin que cela soit plus esthétique pour la modélisation finale, nous allons créer une carte PCB pour rassembler tous ces composants dessus. On utilisera le logiciel Altium Designer pour cela.&lt;br /&gt;
&lt;br /&gt;
Avant de représenter notre circuit général, nous allons commencer par créer une librairie rassemblant tous les composants que nous utiliserons par la suite, en particulier nos composants CMS (accéléromètre et résistances). Pour ce qui est des LEDs et du buzzer, qui sont traversants, nous pourrons utiliser des headers classiques.&lt;br /&gt;
&lt;br /&gt;
Il a donc fallu créer le schematic ainsi que l'empreinte de nos composants CMS. Voici un exemple avec notre accéléromètre :&lt;br /&gt;
[[Fichier:Accelerosch.PNG|500px|thumb|left|Schematic de l'accéléromètre]]&lt;br /&gt;
[[Fichier:Acceleropcb.PNG|500px|thumb|center|Empreinte PCB de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les fichiers Altium sont disponibles sur notre dépôt GIT. Après cela, nous pouvons maintenant construire notre schematic du montage entier et ensuite le fichier PCB afin de pouvoir graver notre circuit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après quelques modifications sur le montage prévu initialement, c'est-à-dire en enlevant une résistance entre un GPIO et l'alimentation de l'accéléromètre ainsi qu'en rajoutant des résistances pull-up sur les broches de notre liaison i2C (SDA et SCL) et un bouton poussoir en plus pour permettre un reset du RFDuino, nous avons pu créer notre schematic global pour en faire un PCB et l'exporter au format Gerber. De ce fait, le service EEI de Polytech pourra réaliser la gravure de notre carte PCB.&lt;br /&gt;
&lt;br /&gt;
Voici quelques photos pour illustrer notre projet sur Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Finalproto_sch.PNG|400px|thumb|left|Schematic du montage final]]&lt;br /&gt;
[[Fichier:Finalproto_pcb.PNG|400px|thumb|center|PCB du montage final]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On retrouve sur notre PCB final les headers, respectivement de 8 et 5 pins, de part et d'autre de la carte, qui représentent le RFDuino, où nous souderons des broches pour qu'elles puissent être intégrées au RFDuino. On note la présence de 5 autres headers de 2 pins, dont 3 pour des LEDs puis les 2 autres pour le buzzer et le bouton poussoir. Ce qui reste sont les composants CMS avec plusieurs composants à 2 pattes qui sont toutes les résistances de notre montage, celles de protection pour les LEDs et les pull-ups pour l'accéléromètre. Le dernier composant à 8 pattes est donc bien l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quelques difficultés ont été rencontrées durant ce travail notamment concernant les contraintes de construction sur le PCB final. En effet, les composants CMS choisis (surtout l'accéléromètre) étant parfois très petits, Altium n'accepte pas forcément le faible espacement entre les différentes pattes des composants, ce qui pose problème lors de la compilation. De plus, le plan de masse ne prenait pas en compte tous les éléments devant être rattachés à la masse. Il a fallu légèrement déplacer les headers représentant le RFDuino pour que cela soit possible. Il faudra alors peut-être légèrement plier les broches qui viendront s'intégrer sur le RFDuino pour ajouter notre PCB sur le RFDuino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons envoyé nos fichiers Altium au service EEI afin qu'il puisse réaliser physiquement notre carte. Nous nous retrouvons donc avec notre carte PCB récupérée auprès du service EEI. Voici le rendu :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:P46_carte.jpg|400px|thumb|center|Fabrication de notre carte PCB]]&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=41312</id>
		<title>IMA4 2016/2017 P46 : Aide anti-gaspillage alimentaire</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=41312"/>
				<updated>2017-04-19T14:37:33Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : /* Semaine 12 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
En France, nous jetons en moyenne 21% des aliments que nous achetons, ce qui représente une perte de 100 à 160 euros par an par habitant. Cela est en partie dû à la date limite de consommation associée à chaque produit. En effet, à partir du moment où cette date sera dépassée le consommateur jettera les produits concernés sans réfléchir, même si ceux-ci peuvent parfois être encore mangeables. Plutôt que d'essayer de les convaincre du contraire, il serait judicieux de proposer aux adeptes du gaspillage une aide permettant de gérer tous les aliments dont ils disposent chez eux afin d'éviter la surprise de tomber sur plusieurs produits périmés lorsqu'ils ouvrent la porte de leur frigo. &lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Ce projet permet d'aider les utilisateurs d'une part à mémoriser les denrées périssables qu'ils disposent dans leur réserve alimentaire et d'autre part d'avertir l'utilisateur qu'un événement important a lieu. Ceci peut être une notification qu'un aliment va bientôt dépasser sa date de péremption, que la porte du frigidaire est restée ouverte ou encore que le nombre d'aliments dans la réserve devient critique et qu'il faudra de nouveau l'alimenter. Enfin, le système aidera l'utilisateur à trouver des idées de repas pouvant permettre de consommer les aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Notre prototype permettra d'éviter le gaspillage alimentaire ainsi que d'aider l'utilisateur dans sa gestion du stockage d'aliments.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
&lt;br /&gt;
Notre système sera composé de 3 éléments. &lt;br /&gt;
&lt;br /&gt;
Premièrement, un ou des smartphones appartenant aux utilisateurs. Ces derniers permettront de scanner grâce à son appareil photo, le code barre du produit ainsi que sa date de péremption. Il servira aussi d'interface utilisateur pour notre système. En effet, c'est par cet outil que l'utilisateur pourra lister tous les aliments que l'utilisateur a dans sa base et tout ça en les triant par date de péremption, ou encore voir les recettes possibles pour consommer des aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Deuxièmement, un serveur, de type Raspberry, qui permettra de stocker la base de donnée contenant les aliments de la réserve. Ce serveur sera connecté par wifi.&lt;br /&gt;
 &lt;br /&gt;
Troisièmement, un contrôleur (Rfduino) qui comportera une LED pour indiquer la mise sous tension du contrôleur, une LED pour prévenir l'utilisateur qu'un aliment va bientôt passer sa date de péremption et une dernière LED pour prévenir l'utilisateur que son niveau de réserve est critique ainsi qu'un buzzer et un accéléromètre pour buzzer quand la porte du frigo est restée trop longtemps ouverte. Ce dernier sera fixé au frigo par l'intermédiaire d'un dispositif adapté qui sera un système aimanté qui se pose sur le frigo.&lt;br /&gt;
&lt;br /&gt;
Nous implémenterons donc une application mobile Android qui fera le lien entre les 2 autres systèmes.&lt;br /&gt;
&lt;br /&gt;
Pour la partie électronique que nous aurons à réaliser, nous utiliserons une Breadboard pour faire des premiers tests puis nous créerons une carte PCB pour notre montage final.&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
On utilisera une Raspberry Pi en guise de serveur pour pouvoir s'occuper du stockage de toutes les données dans notre projet puisque notre contrôleur sera incapable de les contenir, ce n'est d'ailleurs pas son but ici.&lt;br /&gt;
&lt;br /&gt;
Notre smartphone fera donc le lien entre notre base de données et notre système embarqué par l'intermédiaire de l'application mobile.&lt;br /&gt;
&lt;br /&gt;
Nous prendrons ici un RFduino puisque celui-ci nous permet d'ajouter des modules comme bon nous semble afin d'adapter le système aux besoins de notre application. Il est également parfaitement compatible avec les applications Android. De plus, nous avons un Bluetooth directement intégré au RFduino pour s'assurer que les liaisons RFduino-application mobile se fassent correctement. &lt;br /&gt;
On notera également que ce contrôleur consomme peu de courant et ne demande qu'une faible tension d'alimentation, critères importants pour ce genre de projet. C'est la raison principale de son utilisation pour être utilisé comme interface physique sur le frigo, en ajoutant également sa taille réduite comparée à la Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
&lt;br /&gt;
Nous avons donc besoin du matériel suivant :&lt;br /&gt;
&lt;br /&gt;
*Raspberry Pi.&lt;br /&gt;
*Clef wifi&lt;br /&gt;
*RFduino (RFD22102 DIP Board, RFD22121 USB Shield, RFD22126 Dual AAA battery shield).&lt;br /&gt;
*2 piles AAA.&lt;br /&gt;
*3 leds tranversantes.&lt;br /&gt;
*3 Résistances 330 Ohm.&lt;br /&gt;
*1 Résistance 10 kOhm.&lt;br /&gt;
*Un buzzer.&lt;br /&gt;
*Accéléromètre.&lt;br /&gt;
*Aimants&lt;br /&gt;
*Un boîtier permettant d'intégrer la RFduino + fixation sur le frigo (modélisation à voir).&lt;br /&gt;
&lt;br /&gt;
Pour le buzzer, l'accéléromètre et les résistances, nous choisirons des composants CMS pour nous permettre d'avoir une carte plus petite.&lt;br /&gt;
&lt;br /&gt;
===Calendrier prévisionnel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Liste des tâches à effectuer====&lt;br /&gt;
&lt;br /&gt;
* Configurer la Raspberry :&lt;br /&gt;
** Installer et configurer le serveur.&lt;br /&gt;
** Créer le diagramme UML de notre future base de données.&lt;br /&gt;
** Créer la base sur le serveur.&lt;br /&gt;
** Configurer la connexion WiFi.&lt;br /&gt;
&lt;br /&gt;
* Monter et programmer la RFduino :&lt;br /&gt;
** Connecter les différents modules au RFduino (accéléromètre, LEDs, buzzer, Batterie, module Bluetooth).&lt;br /&gt;
** Récupérer les consignes du smartphone grâce au Bluetooth.&lt;br /&gt;
** Programmer le comportement du RFduino en fonction des consignes.&lt;br /&gt;
** Construire le boitier final.&lt;br /&gt;
&lt;br /&gt;
* Implémenter l'application mobile Android :&lt;br /&gt;
** Une première activité permettant de se connecter au RFduino et à la Raspberry.&lt;br /&gt;
** Scanner une date et un code barre.&lt;br /&gt;
** Ajout/suppression d'un aliment dans la base de donnée.&lt;br /&gt;
** Envoi d'une consigne au RFduino.&lt;br /&gt;
** Rendre l'interface utilisateur ergonomique (lister aliments, envoyer vers page de recettes avec l'utilisation des aliments bientôt périmés...).&lt;br /&gt;
&lt;br /&gt;
====Calendrier====&lt;br /&gt;
&lt;br /&gt;
Répartition du temps consacré au projet (120h *2) :&lt;br /&gt;
&lt;br /&gt;
*Partie Raspberry : 60h&lt;br /&gt;
*Partie RFduino : 60h&lt;br /&gt;
*Partie développement mobile : 120h&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
&lt;br /&gt;
===Résumé===&lt;br /&gt;
&lt;br /&gt;
====Semaine 1====&lt;br /&gt;
&lt;br /&gt;
'''23/01''' :  &lt;br /&gt;
* Installation du logiciel Android Studio pour être prêt à commencer l'application mobile.&lt;br /&gt;
* Création du Repository Git sur GitHub : https://github.com/FrancoisLefevre12/Optali.git&lt;br /&gt;
* Réalisation de différents schémas fonctionnels pour se donner une idée du travail à effectuer, aussi bien du software que du hardware.&lt;br /&gt;
* Quelques précisions supplémentaires apportées sur le cahier des charges.&lt;br /&gt;
* Ajout de liens de référence pour la liste de matériel à acheter.&lt;br /&gt;
&lt;br /&gt;
'''25/01''' :  &lt;br /&gt;
* Précision des composants requis (accéléromètre, buzzer, LEDs, résistances).&lt;br /&gt;
* Écriture du montage à la main.&lt;br /&gt;
* Étude du fonctionnement de l'accéléromètre, du buzzer.&lt;br /&gt;
* Écriture de la structure de l'application à la main.&lt;br /&gt;
&lt;br /&gt;
'''26/01''' :&lt;br /&gt;
*Réalisation graphique de la première page de l'application.&lt;br /&gt;
*Conception du schéma électrique pour tous les composants connectés au RFduino.&lt;br /&gt;
&lt;br /&gt;
====Semaine 2====&lt;br /&gt;
&lt;br /&gt;
'''30/01''' :&lt;br /&gt;
*Réalisation du diagramme UML de la base de données qui sera stockée sur la Raspberry Pi&lt;br /&gt;
*Installation de l'outil de développement mobile sur le second PC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''01/02''' :&lt;br /&gt;
*Nous nous sommes d'abord rendus compte que la résistance entre un des GPIO et l'accéléromètre était inutile, nos premiers calculs étaient erronés. Nous ne la garderons donc pas sur notre schéma électrique final.&lt;br /&gt;
*Avancement sur la partie application mobile : réalisation de la page &amp;quot;Ajout&amp;quot; sur laquelle nous tomberons après avoir cliquer sur &amp;quot;ajout&amp;quot; sur la page principale de l'application. Nous avons étendu l'activité principale jusqu'à cette nouvelle activité &amp;quot;Ajout&amp;quot;.&lt;br /&gt;
*Nous avons récupéré notre Raspberry Pi pour commencer à installer notre base de données dessus. Nous avons actuellement quelques problèmes pour nous connecter sur la Raspberry. Nous travaillons sur ce point.&lt;br /&gt;
&lt;br /&gt;
'''02/02''' :&lt;br /&gt;
* Application mobile : Mise en place des LEDs sur la home page et de la zone de notification avec les messages associés.&lt;br /&gt;
&lt;br /&gt;
====Semaine 3====&lt;br /&gt;
&lt;br /&gt;
'''06/02''' :&lt;br /&gt;
*Nous arrivons à accéder à la Raspberry via le port série de celle-ci. Nous avons également configuré sa connexion Ethernet afin de pouvoir télécharger des paquets dessus et installer notre base de données. &lt;br /&gt;
*Nous rencontrions des problèmes sur le second PC de travail pour récupérer le projet Optali sur Android Studio via notre dépôt GIT. Nous avons pu rectifier ce souci.&lt;br /&gt;
&lt;br /&gt;
'''08/02''' :&lt;br /&gt;
*Tentative d'établissement d'un point d'accès WiFi sur notre Raspberry. Nous n'avons pas réussi pour le moment.&lt;br /&gt;
*Restructuration du Repository git.&lt;br /&gt;
*Essai d'importation de la librairie Zxing qui permettra de décoder les code-barres.&lt;br /&gt;
&lt;br /&gt;
====Semaine 4====&lt;br /&gt;
&lt;br /&gt;
'''13/02'''&lt;br /&gt;
*Configuration du wifi de la Raspberry. &lt;br /&gt;
*Étude d'une mise en place d'un service web via php.&lt;br /&gt;
&lt;br /&gt;
'''15/02'''&lt;br /&gt;
*Mise en place d'un lecteur de caractère sur l'application. On utilisera tesseract.&lt;br /&gt;
*Début de la création du PCB via Altium designer. Création d'une librairie pour l'accéléromètre qui est un composant CMS assez spécial. On pourra cependant utiliser des headers classiques pour le buzzer et les LEDs puisque ce sont des composants traversants.&lt;br /&gt;
*Création des premiers fichiers php de connection à la base de donnée et d'insertion d'aliments. Tous ces fichiers seront déposés de la même manière sur le dépôt git.&lt;br /&gt;
&lt;br /&gt;
'''16/02'''&lt;br /&gt;
*Adaptation avec prise en compte des cas du code php d'insertion de produits par requête sur la base de donnée.&lt;br /&gt;
*Ajout du code d'implantation de la base de donnée.&lt;br /&gt;
*Altium: Accéléromètre terminé, mise en place des résistances.&lt;br /&gt;
&lt;br /&gt;
====Semaine 5 (interruption pédagogique)====&lt;br /&gt;
&lt;br /&gt;
'''22/02 (3 heures)'''&lt;br /&gt;
*Installation de l'OS de la raspberry.&lt;br /&gt;
*Installation d'Openssh-server, apache2, php5, iptables, mysql-server, php5-mysql.&lt;br /&gt;
*Redirection des ports du routeur vers la raspberry.&lt;br /&gt;
*Configuration de iptables de la raspberry.&lt;br /&gt;
&lt;br /&gt;
'''23/02 (2 heures)'''&lt;br /&gt;
*Implantation de la base de donnée sur la raspberry pi.&lt;br /&gt;
&lt;br /&gt;
====Semaine 6====&lt;br /&gt;
'''27/02'''&lt;br /&gt;
*Vérification de la syntaxe de l'insertion de valeurs dans la base de donnée.&lt;br /&gt;
*Création des premières requêtes sur la base de donnée.&lt;br /&gt;
*Finalisation du PCB de l'Optali Board.&lt;br /&gt;
&lt;br /&gt;
'''01/03'''&lt;br /&gt;
*Étude et ajout de la librairie volley pour communiquer avec le serveur.&lt;br /&gt;
*Implantation de la fonction d'envoi de données jusqu'au serveur.&lt;br /&gt;
*Après avoir vu avec un professeur, nous avons remarqué que le routage n'était pas adéquat et la disposition des composants n'était pas optimal. Du travail reste donc encore à effectuer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Semaine 7====&lt;br /&gt;
'''06/03'''&lt;br /&gt;
*Correction du fichier post.php&lt;br /&gt;
*Finition du protocole d'ajout d'aliment sur la base de donnée. (Code php et page ajout terminée).&lt;br /&gt;
*PCB terminé.&lt;br /&gt;
*Installation d'arduino IDE, doc arduino collecté.&lt;br /&gt;
&lt;br /&gt;
'''08/03'''&lt;br /&gt;
*Implémentation de la page ListeIngredient.xml et de l'activité listActivity.java.&lt;br /&gt;
*Documentation sur la procédure de communication bluetooth entre la Rfduino et l'application mobile.&lt;br /&gt;
*Obtention de librairie en lien avec cela.&lt;br /&gt;
*Prise en main de programmation rfduino.&lt;br /&gt;
&lt;br /&gt;
'''09/03'''&lt;br /&gt;
*Nous nous sommes rendus compte qu'il était nécessaire de rajouter un bouton poussoir sur notre montage afin de permettre la réinitialisation de notre RFDuino si nécessaire. Nous devons également faire en sorte de pouvoir poser notre carte PCB directement sur notre RFDuino en utilisant des broches. Nous devons donc rajouter ces éléments-ci.&lt;br /&gt;
*Ecriture de la page get.php&lt;br /&gt;
*Premiers tests sur la ListView de l'activité ListActivity.&lt;br /&gt;
&lt;br /&gt;
====Semaine 8====&lt;br /&gt;
'''13/03'''&lt;br /&gt;
*Recherche de pistes concernant la programmation RFDuino. Nous pouvons la détecter en bluetooth via un smartphone Android.&lt;br /&gt;
*Finition du Tablelayout et du code java associé sur la page ListActivity.&lt;br /&gt;
&lt;br /&gt;
'''15/03'''&lt;br /&gt;
*Ajout de la JsonArrayRequest dans la page ListActivity.&lt;br /&gt;
*Nous nous sommes rendus compte au moment de programmer la liaison I2C de l'accéléromètre avec la RFDuino que nous avions oublié de mettre des résistances pull-up entre l'alimentation du composant et les broches SDA et SCL. Les modifications ont donc été faites puis nous avons envoyé finalement notre PCB à la fabrication.&lt;br /&gt;
&lt;br /&gt;
'''16/03'''&lt;br /&gt;
*Changement de stratégie au niveau de la requête JsonArrayRequest. On récupère toute la base et ensuite le traitement sera effectuer dans l'application mobile.&lt;br /&gt;
*Rédaction de la partie Altium du wiki.&lt;br /&gt;
*Recherche de docs sur le système bluetooth du RFduino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Semaine 9====&lt;br /&gt;
'''20/03'''&lt;br /&gt;
*Réalisation de différents réglages pour pouvoir utiliser l'application Optali sur l'Android phone fourni par notre professeur (LG G4c)&lt;br /&gt;
*Recherche de docs concernant la partie java responsable de la communication Bluetooth.&lt;br /&gt;
*Reprise de la solution Tesseract pour la lecture de caractères.&lt;br /&gt;
&lt;br /&gt;
'''21/03''' (séance supplémentaire de 3 heures)&lt;br /&gt;
*Début du développement de la partie communication entre RFDuino et l'appli mobile. Nous pouvons détecter le RFduino à partir de Android Studio mais nous n'arrivons pas encore à nous connecter dessus directement.&lt;br /&gt;
*Finition de la fonctionnalité tesseract. La lecture de caractères est donc maintenant possible.&lt;br /&gt;
&lt;br /&gt;
'''22/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity&lt;br /&gt;
*Connexion possible entre le RFduino et notre appli mobile. Il faut maintenant pouvoir assurer un échange de données via du GATT.&lt;br /&gt;
&lt;br /&gt;
====Semaine 10====&lt;br /&gt;
'''27/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity (suite). Utilisation de la solution postman.&lt;br /&gt;
*Mise à jour du wiki pour la partie Altium.&lt;br /&gt;
*Gestion du dépôt git.&lt;br /&gt;
*Récupération de la carte PCB au service EEI.&lt;br /&gt;
&lt;br /&gt;
'''29/03'''&lt;br /&gt;
*Mise en place du tri des Produits avec un critère d'ordonnabilité variable&lt;br /&gt;
*Implémentation du champs recherche et action sur la liste&lt;br /&gt;
*Écriture des pages Php consume.php et delete.php pour décrémenter le nombre d'aliment dans le frigo ou le supprimer&lt;br /&gt;
*Récupération des composants&lt;br /&gt;
*Passage au four pour souder les premiers composants en CMS&lt;br /&gt;
&lt;br /&gt;
====Semaine 11====&lt;br /&gt;
&lt;br /&gt;
'''03/04'''&lt;br /&gt;
*Dé-soudage et resoudage de l'accéléromètre.&lt;br /&gt;
*Soudure des composants&lt;br /&gt;
&lt;br /&gt;
'''05/04'''&lt;br /&gt;
*Test du Buzzer&lt;br /&gt;
*Code de l'accéléromètre&lt;br /&gt;
*Création de l'Optali box (la boite qui contient le RFduino fixé au frigo)&lt;br /&gt;
*Finition de la fonction 'delete'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''06/04'''&lt;br /&gt;
*Problème pour faire fonctionner le code de l'accéléro. Il faudra le tester électriquement.&lt;br /&gt;
*Implantation du logo de l'appli &lt;br /&gt;
*Debuggage d'une requête de la page 'list'&lt;br /&gt;
*Documentation sur les listes déroulantes sous les EditTexts.&lt;br /&gt;
&lt;br /&gt;
====Semaine 12==== (Interruption pédagogique)&lt;br /&gt;
&lt;br /&gt;
'''11/04''' (3 heures)&lt;br /&gt;
*Après avoir remarqué que le code de l'accéléro ne fonctionnait pas alors qu'il paraît correct, nous avons décidez de vérifier les propriétés électriques de notre montage.&lt;br /&gt;
En observant à l'analyseur logique, il semblerait que l'horloge de la liaison i2C n'est en fait qu'un signal bruité. Il faudra donc retenter de souder le composant quand cela sera possible.&lt;br /&gt;
&lt;br /&gt;
'''13/04''' (6 heures)&lt;br /&gt;
*Terminaison du programme RFduino qui fonctionne théoriquement, nous attendons de terminer les dernières soudures pour pouvoir le tester physiquement.&lt;br /&gt;
*En attendant de pouvoir réaliser des soudures, nous avons repris la partie communication bluetooth entre le RFduino et l'appli. Après avoir tenté d'utiliser un programme permettant de gérer le protocole GATT sans savoir envoyer ou recevoir de données, nous nous sommes orientés sur une communication plus basique basée sur de nombreux exemples que l'on peut voir sur le web.&lt;br /&gt;
&lt;br /&gt;
'''15/04''' (6 heures)&lt;br /&gt;
*Après s'être rendu compte que la communication plus &amp;quot;basique&amp;quot; que nous voulions utiliser n'était pas compatible avec le BLE, nous sommes une fois de plus repartis de zéro pour cette partie.&lt;br /&gt;
*Après quelques recherches, nous avons trouvé un programme réalisant la gestion d'un socket BLE sur le principe du protocole GATT. Grâce à celui-ci, il nous est possible de recevoir et d'envoyer des données via BLE sur RFduino ainsi que sur l'appli mobile.&lt;br /&gt;
&lt;br /&gt;
====Semaine 13====&lt;br /&gt;
&lt;br /&gt;
'''17/04 (4 heures)'''&lt;br /&gt;
*Ajout du singleton Etat pour partager l'état des aliments dans la réserve alimentaire&lt;br /&gt;
*Transfert des requêtes de la base de donnée vers le singleton pour optimiser l'actualisation et le partage des données.&lt;br /&gt;
*Actualisation automatique des données sur la page principale.&lt;br /&gt;
&lt;br /&gt;
===Premières idées===&lt;br /&gt;
&lt;br /&gt;
Voici les premières idées de l'application mobile et du composant fixé sur le frigo.&lt;br /&gt;
[[Fichier:Optali_v1.jpg|400px|thumb|left|Optali version 1]]&lt;br /&gt;
[[Fichier:OptaliBox_v1.jpg|400px|thumb|center|OptaliBox version 1]]&lt;br /&gt;
[[Fichier:P46_schema.jpg|400px|thumb|center|Schéma électrique version 1]]&lt;br /&gt;
&lt;br /&gt;
En s'intéressant aux différentes datasheets ou données constructeur des composants que nous voulons utiliser, nous trouvons indispensable d'utiliser des résistances de 330 Ohms pour l'utilisation des LEDs, pour éviter de les griller.&lt;br /&gt;
&lt;br /&gt;
Edit : Retrait de la résistance R2.&lt;br /&gt;
&lt;br /&gt;
Concernant l'accéléromètre, nous avons choisi un modèle qui nous permet de brancher directement ce module sur une broche du RFDuino. On branchera directement les GPIOs de la RFduino sur les ports SDA et SCL de l'accéléromètre qui correspondent à l'interface I2C pour pouvoir communiquer. On utilisera aussi la broche INT1 pour pouvoir générer des interruptions directement depuis l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
On connectera le buzzer directement à une broche de la RFduino aussi. Concernant celui-ci il reste une incertitude puisqu'on ne trouve aucune information sur le courant à fournir pour l'alimentation de ce composant sur sa datasheet. Après différentes recherches sur Internet, il pourrait être nécessaire d'utiliser un montage amplificateur à transistor comme un émetteur commun pour booster le courant en sortie d'une broche GPIO. Quelques buzzers trouvés avec des données constructeur montrent que ce type de composant nécessite généralement un courant d'environ 30 mA. Nous verrons dans la pratique si cela sera vraiment nécessaire. Par sécurité, on ajoutera un transistor bipolaire dans la liste de matériel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:screen_LED.png|400px|thumb|left|Données constructeur pour LEDs]]&lt;br /&gt;
[[Fichier:screen_accel.png|400px|thumb|center|Datasheet de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
===Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
====Configuration école====&lt;br /&gt;
&lt;br /&gt;
*Pour configurer notre Raspberry Pi, nous utilisons son port série et &amp;quot;minicom&amp;quot;. Pour pouvoir télécharger des paquets, il fallait la connecter au réseau. Nous lui avons donc affecté une adresse IP fixe avec le fichier /etc/network/interfaces. Voici les modifications qui ont été apportées : &lt;br /&gt;
&lt;br /&gt;
   auto eth0&lt;br /&gt;
   iface eth0 inet static&lt;br /&gt;
   address 172.26.78.15&lt;br /&gt;
   netmask 255.255.240.0&lt;br /&gt;
   gateway 172.26.79.254&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il a également fallu ajouter la commande &amp;quot;export http_proxy=http://proxy.polytech-lille.fr:3128&amp;quot; (il faudra effectuer cette commande à chaque démarrage de la Pi) pour pouvoir utiliser le proxy de l'école. &lt;br /&gt;
Nous avons de plus modifier le fichier /etc/resolv.conf avec la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
   nameserver 193.48.57.34&lt;br /&gt;
&lt;br /&gt;
Malgré cela, nous avions des soucis pour nous connecter au réseau. Il y avait en fait un processus dhcp en tâche de fond qui nous empêchait de garder le contenu de resolv.conf. Il a donc fallu trouver ce processus pour le &amp;quot;kill&amp;quot; et pouvoir accéder correctement au réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons du coup pu installer postgresql pour pouvoir configurer une base de données sur notre Pi.&lt;br /&gt;
&lt;br /&gt;
====Configuration à domicile====&lt;br /&gt;
&lt;br /&gt;
Pour nous mettre dans une situation plus fidèle à notre projet, nous avons configuré la raspberry à domicile.&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abords installé Raspbian, puis installé les paquets nécessaire au fonctionnement du serveur.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Openssh-server''': permettre d'accès à distance à la raspberry pour pouvoir y accéder depuis l'école.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Iptables''': pour sécuriser les ports non utilisé et libérer l'accès aux ports qui nous intéressent (ssh 22,http 80,https 443).&amp;lt;br&amp;gt;&lt;br /&gt;
- '''apache2, php5, mysql-server''' : pour mettre en place notre service web.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons rediriger les ports 80 et 22 du routeur pour pouvoir accéder à la raspberry de l'extérieur.&lt;br /&gt;
&lt;br /&gt;
Pour finir, nous avons créer un fichier de config iptables permettant de sécuriser un minimum la base de donnée et de permettre d'autoriser la communication des ports 22, 80 et 443 correspondants aux ports ssh, http et https. le fichier de configuration a été déposé dans le dépôt git. Il nous a fallut le rendre exécutable via un chmod. Puis pour l'exécuter à chaque démarrage du system, dans le fichier /etc/init.d/ taper : &lt;br /&gt;
&lt;br /&gt;
    sudo update-rc.d firewall defaults (si notrefichier s'appelle firewall et s'il est dans init.d)&lt;br /&gt;
&lt;br /&gt;
===Base de donnée===&lt;br /&gt;
&lt;br /&gt;
Nos données alimentaires disponibles par toute la famille doivent être stocké sur un serveur de base de donnée externe (tel une Raspberry pi). Nous nous proposons de créer le diagramme UML représentant cette future base de donnée.&lt;br /&gt;
[[Fichier:Optali_UML.jpg|700px|thumb|center|Diagramme UML base de donnée]]&lt;br /&gt;
&lt;br /&gt;
On créera donc 3 entités. Date, Product et Recipe. &lt;br /&gt;
&lt;br /&gt;
- Product rassemble les aliments qui sont ou ont été dans la réserve alimentaire. NbProdIn permet de connaître le nombre de produits identiques (possibilité de date différentes mais pas de doublons et on garde l'information de quantité. NbProdBought donne une information sur le nombre de produits identique ayant été acheté depuis la mise en service de la base de donnée. Ainsi nous pourrons par la suite proposer une liste de course à l'utilisateur en fonction de la fréquence d'achat des produits.&lt;br /&gt;
&lt;br /&gt;
- Recipe contient les recettes que pourra rentrer l'utilisateur sur l'application. L'utilisateur pourra ainsi se voir proposer des recettes en fonction de ce qu'il a dans son frigo et de ses recettes personnelles.&lt;br /&gt;
&lt;br /&gt;
'''''Edit : On ajoutera une valeur entière dans les tables Date et Unity pour gérer le cas où il existe plusieurs produits (différents ou identiques) avec une date de péremption équivalente. On les appellera NbDate la valeur dans la table Date et NbUnity dans la table Unity. On leur ajoutera de même une clef primaire IdUnity et IdListProduct'''''&lt;br /&gt;
&lt;br /&gt;
On utilisera MySql pour la gestion de nos bases de données. &lt;br /&gt;
La syntaxe pour l'implanter dans la base de donnée à été jointe au dépôt git.&lt;br /&gt;
&lt;br /&gt;
Pour lancer my SQL, on tapera:&lt;br /&gt;
&lt;br /&gt;
   mysql -h localhost -u root -p&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Web service===&lt;br /&gt;
&lt;br /&gt;
====Page init.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet d'initier l'accès à la base de donnée sur le serveur. Elle est requise pour les pages qui suivent.&lt;br /&gt;
&lt;br /&gt;
====Page post.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet l'insertion d'un produit et d'une date via l'application mobile. Elle prend donc ces deux arguments et les insère dans les tables Unity, Product et Date.&lt;br /&gt;
&lt;br /&gt;
====Page get.php====&lt;br /&gt;
&lt;br /&gt;
Page qui envoie la liste des aliments avec leur nom, leur date, leur quantité dans le frigo, la quantité d'exemplaires acheté en tout depuis la mise en place de l'appareil. Le tri se fera directement dans l'application mobile. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Application Mobile===&lt;br /&gt;
&lt;br /&gt;
====Home page====&lt;br /&gt;
&lt;br /&gt;
Page d'accueil permettant d'accéder aux pages d'ajout et de liste des produits disponibles. &amp;lt;br&amp;gt;&lt;br /&gt;
La page permet aussi d'effectuer la connexion entre la rfduino et l'application mobile. Elle montre les alertes (signaux) à l'utilisateur &lt;br /&gt;
et écrit leur signification.&lt;br /&gt;
&lt;br /&gt;
====Page d'ajout====&lt;br /&gt;
&lt;br /&gt;
Pour ajouter un produit et lire une date on utilisera un champ editText pour permettre à l'utilisateur d'écrire &amp;quot;Manuellement&amp;quot; dedans grâce au clavier du smartphone.&amp;lt;br&amp;gt;&lt;br /&gt;
De plus on utilise un bouton qui appellera la caméra pour détecter les caractères d'un produit ou d'une date. Au début nous voulions utiliser un détecteur de code barre, nous l'avons implémenté mais nous avons remarqué que la mise au point sur une surface non plane prend du temps d'autant plus qu'il faut questionner une base de donnée contenant tous les numéro de codes barres utilisés. Nous avons donc prit la décision d'utiliser uniquement la lecture de caractère et nous créerons une liste déroulante sous l'editText pour faciliter l'insertion d'un produit qui a déjà été ajouté. Pour la lecture de caractère, nous utilisons la librairie tesseract.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'envoi, nous utilisons la librairie Volley développé par google.&lt;br /&gt;
&lt;br /&gt;
====Page Liste====&lt;br /&gt;
&lt;br /&gt;
Permet de lister les produits dans la base de donnée. Une série de boutons radio permettent de trier les produits par ordre alphabétique, par date de péremption, par nombre d’occurrence dans la réserve alimentaire, par nombre d'achat depuis la mise en place du système.&amp;lt;br&amp;gt;&lt;br /&gt;
Une colonne permet de sélectionner les aliments désirés (par checkBox) pour ensuite les supprimer via un button &amp;quot;suppr&amp;quot; ou les choisir pour trouver des recettes qui les utilisent.&amp;lt;br&amp;gt;&lt;br /&gt;
Un EditText permet d'effectuer une recherche sur la base de donnée.&lt;br /&gt;
&lt;br /&gt;
===Altium Designer===&lt;br /&gt;
&lt;br /&gt;
Pour permettre au RFDuino de communiquer avec les différents composants, nous aurons besoin de quelques composants électroniques. Afin que cela soit plus esthétique pour la modélisation finale, nous allons créer une carte PCB pour rassembler tous ces composants dessus. On utilisera le logiciel Altium Designer pour cela.&lt;br /&gt;
&lt;br /&gt;
Avant de représenter notre circuit général, nous allons commencer par créer une librairie rassemblant tous les composants que nous utiliserons par la suite, en particulier nos composants CMS (accéléromètre et résistances). Pour ce qui est des LEDs et du buzzer, qui sont traversants, nous pourrons utiliser des headers classiques.&lt;br /&gt;
&lt;br /&gt;
Il a donc fallu créer le schematic ainsi que l'empreinte de nos composants CMS. Voici un exemple avec notre accéléromètre :&lt;br /&gt;
[[Fichier:Accelerosch.PNG|500px|thumb|left|Schematic de l'accéléromètre]]&lt;br /&gt;
[[Fichier:Acceleropcb.PNG|500px|thumb|center|Empreinte PCB de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les fichiers Altium sont disponibles sur notre dépôt GIT. Après cela, nous pouvons maintenant construire notre schematic du montage entier et ensuite le fichier PCB afin de pouvoir graver notre circuit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après quelques modifications sur le montage prévu initialement, c'est-à-dire en enlevant une résistance entre un GPIO et l'alimentation de l'accéléromètre ainsi qu'en rajoutant des résistances pull-up sur les broches de notre liaison i2C (SDA et SCL) et un bouton poussoir en plus pour permettre un reset du RFDuino, nous avons pu créer notre schematic global pour en faire un PCB et l'exporter au format Gerber. De ce fait, le service EEI de Polytech pourra réaliser la gravure de notre carte PCB.&lt;br /&gt;
&lt;br /&gt;
Voici quelques photos pour illustrer notre projet sur Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Finalproto_sch.PNG|400px|thumb|left|Schematic du montage final]]&lt;br /&gt;
[[Fichier:Finalproto_pcb.PNG|400px|thumb|center|PCB du montage final]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On retrouve sur notre PCB final les headers, respectivement de 8 et 5 pins, de part et d'autre de la carte, qui représentent le RFDuino, où nous souderons des broches pour qu'elles puissent être intégrées au RFDuino. On note la présence de 5 autres headers de 2 pins, dont 3 pour des LEDs puis les 2 autres pour le buzzer et le bouton poussoir. Ce qui reste sont les composants CMS avec plusieurs composants à 2 pattes qui sont toutes les résistances de notre montage, celles de protection pour les LEDs et les pull-ups pour l'accéléromètre. Le dernier composant à 8 pattes est donc bien l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quelques difficultés ont été rencontrées durant ce travail notamment concernant les contraintes de construction sur le PCB final. En effet, les composants CMS choisis (surtout l'accéléromètre) étant parfois très petits, Altium n'accepte pas forcément le faible espacement entre les différentes pattes des composants, ce qui pose problème lors de la compilation. De plus, le plan de masse ne prenait pas en compte tous les éléments devant être rattachés à la masse. Il a fallu légèrement déplacer les headers représentant le RFDuino pour que cela soit possible. Il faudra alors peut-être légèrement plier les broches qui viendront s'intégrer sur le RFDuino pour ajouter notre PCB sur le RFDuino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons envoyé nos fichiers Altium au service EEI afin qu'il puisse réaliser physiquement notre carte. Nous nous retrouvons donc avec notre carte PCB récupérée auprès du service EEI. Voici le rendu :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:P46_carte.jpg|400px|thumb|center|Fabrication de notre carte PCB]]&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=41311</id>
		<title>IMA4 2016/2017 P46 : Aide anti-gaspillage alimentaire</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=41311"/>
				<updated>2017-04-19T14:37:08Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : /* Avancement du Projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
En France, nous jetons en moyenne 21% des aliments que nous achetons, ce qui représente une perte de 100 à 160 euros par an par habitant. Cela est en partie dû à la date limite de consommation associée à chaque produit. En effet, à partir du moment où cette date sera dépassée le consommateur jettera les produits concernés sans réfléchir, même si ceux-ci peuvent parfois être encore mangeables. Plutôt que d'essayer de les convaincre du contraire, il serait judicieux de proposer aux adeptes du gaspillage une aide permettant de gérer tous les aliments dont ils disposent chez eux afin d'éviter la surprise de tomber sur plusieurs produits périmés lorsqu'ils ouvrent la porte de leur frigo. &lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Ce projet permet d'aider les utilisateurs d'une part à mémoriser les denrées périssables qu'ils disposent dans leur réserve alimentaire et d'autre part d'avertir l'utilisateur qu'un événement important a lieu. Ceci peut être une notification qu'un aliment va bientôt dépasser sa date de péremption, que la porte du frigidaire est restée ouverte ou encore que le nombre d'aliments dans la réserve devient critique et qu'il faudra de nouveau l'alimenter. Enfin, le système aidera l'utilisateur à trouver des idées de repas pouvant permettre de consommer les aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Notre prototype permettra d'éviter le gaspillage alimentaire ainsi que d'aider l'utilisateur dans sa gestion du stockage d'aliments.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
&lt;br /&gt;
Notre système sera composé de 3 éléments. &lt;br /&gt;
&lt;br /&gt;
Premièrement, un ou des smartphones appartenant aux utilisateurs. Ces derniers permettront de scanner grâce à son appareil photo, le code barre du produit ainsi que sa date de péremption. Il servira aussi d'interface utilisateur pour notre système. En effet, c'est par cet outil que l'utilisateur pourra lister tous les aliments que l'utilisateur a dans sa base et tout ça en les triant par date de péremption, ou encore voir les recettes possibles pour consommer des aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Deuxièmement, un serveur, de type Raspberry, qui permettra de stocker la base de donnée contenant les aliments de la réserve. Ce serveur sera connecté par wifi.&lt;br /&gt;
 &lt;br /&gt;
Troisièmement, un contrôleur (Rfduino) qui comportera une LED pour indiquer la mise sous tension du contrôleur, une LED pour prévenir l'utilisateur qu'un aliment va bientôt passer sa date de péremption et une dernière LED pour prévenir l'utilisateur que son niveau de réserve est critique ainsi qu'un buzzer et un accéléromètre pour buzzer quand la porte du frigo est restée trop longtemps ouverte. Ce dernier sera fixé au frigo par l'intermédiaire d'un dispositif adapté qui sera un système aimanté qui se pose sur le frigo.&lt;br /&gt;
&lt;br /&gt;
Nous implémenterons donc une application mobile Android qui fera le lien entre les 2 autres systèmes.&lt;br /&gt;
&lt;br /&gt;
Pour la partie électronique que nous aurons à réaliser, nous utiliserons une Breadboard pour faire des premiers tests puis nous créerons une carte PCB pour notre montage final.&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
On utilisera une Raspberry Pi en guise de serveur pour pouvoir s'occuper du stockage de toutes les données dans notre projet puisque notre contrôleur sera incapable de les contenir, ce n'est d'ailleurs pas son but ici.&lt;br /&gt;
&lt;br /&gt;
Notre smartphone fera donc le lien entre notre base de données et notre système embarqué par l'intermédiaire de l'application mobile.&lt;br /&gt;
&lt;br /&gt;
Nous prendrons ici un RFduino puisque celui-ci nous permet d'ajouter des modules comme bon nous semble afin d'adapter le système aux besoins de notre application. Il est également parfaitement compatible avec les applications Android. De plus, nous avons un Bluetooth directement intégré au RFduino pour s'assurer que les liaisons RFduino-application mobile se fassent correctement. &lt;br /&gt;
On notera également que ce contrôleur consomme peu de courant et ne demande qu'une faible tension d'alimentation, critères importants pour ce genre de projet. C'est la raison principale de son utilisation pour être utilisé comme interface physique sur le frigo, en ajoutant également sa taille réduite comparée à la Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
&lt;br /&gt;
Nous avons donc besoin du matériel suivant :&lt;br /&gt;
&lt;br /&gt;
*Raspberry Pi.&lt;br /&gt;
*Clef wifi&lt;br /&gt;
*RFduino (RFD22102 DIP Board, RFD22121 USB Shield, RFD22126 Dual AAA battery shield).&lt;br /&gt;
*2 piles AAA.&lt;br /&gt;
*3 leds tranversantes.&lt;br /&gt;
*3 Résistances 330 Ohm.&lt;br /&gt;
*1 Résistance 10 kOhm.&lt;br /&gt;
*Un buzzer.&lt;br /&gt;
*Accéléromètre.&lt;br /&gt;
*Aimants&lt;br /&gt;
*Un boîtier permettant d'intégrer la RFduino + fixation sur le frigo (modélisation à voir).&lt;br /&gt;
&lt;br /&gt;
Pour le buzzer, l'accéléromètre et les résistances, nous choisirons des composants CMS pour nous permettre d'avoir une carte plus petite.&lt;br /&gt;
&lt;br /&gt;
===Calendrier prévisionnel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Liste des tâches à effectuer====&lt;br /&gt;
&lt;br /&gt;
* Configurer la Raspberry :&lt;br /&gt;
** Installer et configurer le serveur.&lt;br /&gt;
** Créer le diagramme UML de notre future base de données.&lt;br /&gt;
** Créer la base sur le serveur.&lt;br /&gt;
** Configurer la connexion WiFi.&lt;br /&gt;
&lt;br /&gt;
* Monter et programmer la RFduino :&lt;br /&gt;
** Connecter les différents modules au RFduino (accéléromètre, LEDs, buzzer, Batterie, module Bluetooth).&lt;br /&gt;
** Récupérer les consignes du smartphone grâce au Bluetooth.&lt;br /&gt;
** Programmer le comportement du RFduino en fonction des consignes.&lt;br /&gt;
** Construire le boitier final.&lt;br /&gt;
&lt;br /&gt;
* Implémenter l'application mobile Android :&lt;br /&gt;
** Une première activité permettant de se connecter au RFduino et à la Raspberry.&lt;br /&gt;
** Scanner une date et un code barre.&lt;br /&gt;
** Ajout/suppression d'un aliment dans la base de donnée.&lt;br /&gt;
** Envoi d'une consigne au RFduino.&lt;br /&gt;
** Rendre l'interface utilisateur ergonomique (lister aliments, envoyer vers page de recettes avec l'utilisation des aliments bientôt périmés...).&lt;br /&gt;
&lt;br /&gt;
====Calendrier====&lt;br /&gt;
&lt;br /&gt;
Répartition du temps consacré au projet (120h *2) :&lt;br /&gt;
&lt;br /&gt;
*Partie Raspberry : 60h&lt;br /&gt;
*Partie RFduino : 60h&lt;br /&gt;
*Partie développement mobile : 120h&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
&lt;br /&gt;
===Résumé===&lt;br /&gt;
&lt;br /&gt;
====Semaine 1====&lt;br /&gt;
&lt;br /&gt;
'''23/01''' :  &lt;br /&gt;
* Installation du logiciel Android Studio pour être prêt à commencer l'application mobile.&lt;br /&gt;
* Création du Repository Git sur GitHub : https://github.com/FrancoisLefevre12/Optali.git&lt;br /&gt;
* Réalisation de différents schémas fonctionnels pour se donner une idée du travail à effectuer, aussi bien du software que du hardware.&lt;br /&gt;
* Quelques précisions supplémentaires apportées sur le cahier des charges.&lt;br /&gt;
* Ajout de liens de référence pour la liste de matériel à acheter.&lt;br /&gt;
&lt;br /&gt;
'''25/01''' :  &lt;br /&gt;
* Précision des composants requis (accéléromètre, buzzer, LEDs, résistances).&lt;br /&gt;
* Écriture du montage à la main.&lt;br /&gt;
* Étude du fonctionnement de l'accéléromètre, du buzzer.&lt;br /&gt;
* Écriture de la structure de l'application à la main.&lt;br /&gt;
&lt;br /&gt;
'''26/01''' :&lt;br /&gt;
*Réalisation graphique de la première page de l'application.&lt;br /&gt;
*Conception du schéma électrique pour tous les composants connectés au RFduino.&lt;br /&gt;
&lt;br /&gt;
====Semaine 2====&lt;br /&gt;
&lt;br /&gt;
'''30/01''' :&lt;br /&gt;
*Réalisation du diagramme UML de la base de données qui sera stockée sur la Raspberry Pi&lt;br /&gt;
*Installation de l'outil de développement mobile sur le second PC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''01/02''' :&lt;br /&gt;
*Nous nous sommes d'abord rendus compte que la résistance entre un des GPIO et l'accéléromètre était inutile, nos premiers calculs étaient erronés. Nous ne la garderons donc pas sur notre schéma électrique final.&lt;br /&gt;
*Avancement sur la partie application mobile : réalisation de la page &amp;quot;Ajout&amp;quot; sur laquelle nous tomberons après avoir cliquer sur &amp;quot;ajout&amp;quot; sur la page principale de l'application. Nous avons étendu l'activité principale jusqu'à cette nouvelle activité &amp;quot;Ajout&amp;quot;.&lt;br /&gt;
*Nous avons récupéré notre Raspberry Pi pour commencer à installer notre base de données dessus. Nous avons actuellement quelques problèmes pour nous connecter sur la Raspberry. Nous travaillons sur ce point.&lt;br /&gt;
&lt;br /&gt;
'''02/02''' :&lt;br /&gt;
* Application mobile : Mise en place des LEDs sur la home page et de la zone de notification avec les messages associés.&lt;br /&gt;
&lt;br /&gt;
====Semaine 3====&lt;br /&gt;
&lt;br /&gt;
'''06/02''' :&lt;br /&gt;
*Nous arrivons à accéder à la Raspberry via le port série de celle-ci. Nous avons également configuré sa connexion Ethernet afin de pouvoir télécharger des paquets dessus et installer notre base de données. &lt;br /&gt;
*Nous rencontrions des problèmes sur le second PC de travail pour récupérer le projet Optali sur Android Studio via notre dépôt GIT. Nous avons pu rectifier ce souci.&lt;br /&gt;
&lt;br /&gt;
'''08/02''' :&lt;br /&gt;
*Tentative d'établissement d'un point d'accès WiFi sur notre Raspberry. Nous n'avons pas réussi pour le moment.&lt;br /&gt;
*Restructuration du Repository git.&lt;br /&gt;
*Essai d'importation de la librairie Zxing qui permettra de décoder les code-barres.&lt;br /&gt;
&lt;br /&gt;
====Semaine 4====&lt;br /&gt;
&lt;br /&gt;
'''13/02'''&lt;br /&gt;
*Configuration du wifi de la Raspberry. &lt;br /&gt;
*Étude d'une mise en place d'un service web via php.&lt;br /&gt;
&lt;br /&gt;
'''15/02'''&lt;br /&gt;
*Mise en place d'un lecteur de caractère sur l'application. On utilisera tesseract.&lt;br /&gt;
*Début de la création du PCB via Altium designer. Création d'une librairie pour l'accéléromètre qui est un composant CMS assez spécial. On pourra cependant utiliser des headers classiques pour le buzzer et les LEDs puisque ce sont des composants traversants.&lt;br /&gt;
*Création des premiers fichiers php de connection à la base de donnée et d'insertion d'aliments. Tous ces fichiers seront déposés de la même manière sur le dépôt git.&lt;br /&gt;
&lt;br /&gt;
'''16/02'''&lt;br /&gt;
*Adaptation avec prise en compte des cas du code php d'insertion de produits par requête sur la base de donnée.&lt;br /&gt;
*Ajout du code d'implantation de la base de donnée.&lt;br /&gt;
*Altium: Accéléromètre terminé, mise en place des résistances.&lt;br /&gt;
&lt;br /&gt;
====Semaine 5 (interruption pédagogique)====&lt;br /&gt;
&lt;br /&gt;
'''22/02 (3 heures)'''&lt;br /&gt;
*Installation de l'OS de la raspberry.&lt;br /&gt;
*Installation d'Openssh-server, apache2, php5, iptables, mysql-server, php5-mysql.&lt;br /&gt;
*Redirection des ports du routeur vers la raspberry.&lt;br /&gt;
*Configuration de iptables de la raspberry.&lt;br /&gt;
&lt;br /&gt;
'''23/02 (2 heures)'''&lt;br /&gt;
*Implantation de la base de donnée sur la raspberry pi.&lt;br /&gt;
&lt;br /&gt;
====Semaine 6====&lt;br /&gt;
'''27/02'''&lt;br /&gt;
*Vérification de la syntaxe de l'insertion de valeurs dans la base de donnée.&lt;br /&gt;
*Création des premières requêtes sur la base de donnée.&lt;br /&gt;
*Finalisation du PCB de l'Optali Board.&lt;br /&gt;
&lt;br /&gt;
'''01/03'''&lt;br /&gt;
*Étude et ajout de la librairie volley pour communiquer avec le serveur.&lt;br /&gt;
*Implantation de la fonction d'envoi de données jusqu'au serveur.&lt;br /&gt;
*Après avoir vu avec un professeur, nous avons remarqué que le routage n'était pas adéquat et la disposition des composants n'était pas optimal. Du travail reste donc encore à effectuer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Semaine 7====&lt;br /&gt;
'''06/03'''&lt;br /&gt;
*Correction du fichier post.php&lt;br /&gt;
*Finition du protocole d'ajout d'aliment sur la base de donnée. (Code php et page ajout terminée).&lt;br /&gt;
*PCB terminé.&lt;br /&gt;
*Installation d'arduino IDE, doc arduino collecté.&lt;br /&gt;
&lt;br /&gt;
'''08/03'''&lt;br /&gt;
*Implémentation de la page ListeIngredient.xml et de l'activité listActivity.java.&lt;br /&gt;
*Documentation sur la procédure de communication bluetooth entre la Rfduino et l'application mobile.&lt;br /&gt;
*Obtention de librairie en lien avec cela.&lt;br /&gt;
*Prise en main de programmation rfduino.&lt;br /&gt;
&lt;br /&gt;
'''09/03'''&lt;br /&gt;
*Nous nous sommes rendus compte qu'il était nécessaire de rajouter un bouton poussoir sur notre montage afin de permettre la réinitialisation de notre RFDuino si nécessaire. Nous devons également faire en sorte de pouvoir poser notre carte PCB directement sur notre RFDuino en utilisant des broches. Nous devons donc rajouter ces éléments-ci.&lt;br /&gt;
*Ecriture de la page get.php&lt;br /&gt;
*Premiers tests sur la ListView de l'activité ListActivity.&lt;br /&gt;
&lt;br /&gt;
====Semaine 8====&lt;br /&gt;
'''13/03'''&lt;br /&gt;
*Recherche de pistes concernant la programmation RFDuino. Nous pouvons la détecter en bluetooth via un smartphone Android.&lt;br /&gt;
*Finition du Tablelayout et du code java associé sur la page ListActivity.&lt;br /&gt;
&lt;br /&gt;
'''15/03'''&lt;br /&gt;
*Ajout de la JsonArrayRequest dans la page ListActivity.&lt;br /&gt;
*Nous nous sommes rendus compte au moment de programmer la liaison I2C de l'accéléromètre avec la RFDuino que nous avions oublié de mettre des résistances pull-up entre l'alimentation du composant et les broches SDA et SCL. Les modifications ont donc été faites puis nous avons envoyé finalement notre PCB à la fabrication.&lt;br /&gt;
&lt;br /&gt;
'''16/03'''&lt;br /&gt;
*Changement de stratégie au niveau de la requête JsonArrayRequest. On récupère toute la base et ensuite le traitement sera effectuer dans l'application mobile.&lt;br /&gt;
*Rédaction de la partie Altium du wiki.&lt;br /&gt;
*Recherche de docs sur le système bluetooth du RFduino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Semaine 9====&lt;br /&gt;
'''20/03'''&lt;br /&gt;
*Réalisation de différents réglages pour pouvoir utiliser l'application Optali sur l'Android phone fourni par notre professeur (LG G4c)&lt;br /&gt;
*Recherche de docs concernant la partie java responsable de la communication Bluetooth.&lt;br /&gt;
*Reprise de la solution Tesseract pour la lecture de caractères.&lt;br /&gt;
&lt;br /&gt;
'''21/03''' (séance supplémentaire de 3 heures)&lt;br /&gt;
*Début du développement de la partie communication entre RFDuino et l'appli mobile. Nous pouvons détecter le RFduino à partir de Android Studio mais nous n'arrivons pas encore à nous connecter dessus directement.&lt;br /&gt;
*Finition de la fonctionnalité tesseract. La lecture de caractères est donc maintenant possible.&lt;br /&gt;
&lt;br /&gt;
'''22/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity&lt;br /&gt;
*Connexion possible entre le RFduino et notre appli mobile. Il faut maintenant pouvoir assurer un échange de données via du GATT.&lt;br /&gt;
&lt;br /&gt;
====Semaine 10====&lt;br /&gt;
'''27/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity (suite). Utilisation de la solution postman.&lt;br /&gt;
*Mise à jour du wiki pour la partie Altium.&lt;br /&gt;
*Gestion du dépôt git.&lt;br /&gt;
*Récupération de la carte PCB au service EEI.&lt;br /&gt;
&lt;br /&gt;
'''29/03'''&lt;br /&gt;
*Mise en place du tri des Produits avec un critère d'ordonnabilité variable&lt;br /&gt;
*Implémentation du champs recherche et action sur la liste&lt;br /&gt;
*Écriture des pages Php consume.php et delete.php pour décrémenter le nombre d'aliment dans le frigo ou le supprimer&lt;br /&gt;
*Récupération des composants&lt;br /&gt;
*Passage au four pour souder les premiers composants en CMS&lt;br /&gt;
&lt;br /&gt;
====Semaine 11====&lt;br /&gt;
&lt;br /&gt;
'''03/04'''&lt;br /&gt;
*Dé-soudage et resoudage de l'accéléromètre.&lt;br /&gt;
*Soudure des composants&lt;br /&gt;
&lt;br /&gt;
'''05/04'''&lt;br /&gt;
*Test du Buzzer&lt;br /&gt;
*Code de l'accéléromètre&lt;br /&gt;
*Création de l'Optali box (la boite qui contient le RFduino fixé au frigo)&lt;br /&gt;
*Finition de la fonction 'delete'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''06/04'''&lt;br /&gt;
*Problème pour faire fonctionner le code de l'accéléro. Il faudra le tester électriquement.&lt;br /&gt;
*Implantation du logo de l'appli &lt;br /&gt;
*Debuggage d'une requête de la page 'list'&lt;br /&gt;
*Documentation sur les listes déroulantes sous les EditTexts.&lt;br /&gt;
&lt;br /&gt;
====Semaine 12====&lt;br /&gt;
&lt;br /&gt;
'''11/04''' (3 heures)&lt;br /&gt;
*Après avoir remarqué que le code de l'accéléro ne fonctionnait pas alors qu'il paraît correct, nous avons décidez de vérifier les propriétés électriques de notre montage.&lt;br /&gt;
En observant à l'analyseur logique, il semblerait que l'horloge de la liaison i2C n'est en fait qu'un signal bruité. Il faudra donc retenter de souder le composant quand cela sera possible.&lt;br /&gt;
&lt;br /&gt;
'''13/04''' (6 heures)&lt;br /&gt;
*Terminaison du programme RFduino qui fonctionne théoriquement, nous attendons de terminer les dernières soudures pour pouvoir le tester physiquement.&lt;br /&gt;
*En attendant de pouvoir réaliser des soudures, nous avons repris la partie communication bluetooth entre le RFduino et l'appli. Après avoir tenté d'utiliser un programme permettant de gérer le protocole GATT sans savoir envoyer ou recevoir de données, nous nous sommes orientés sur une communication plus basique basée sur de nombreux exemples que l'on peut voir sur le web.&lt;br /&gt;
&lt;br /&gt;
'''15/04''' (6 heures)&lt;br /&gt;
*Après s'être rendu compte que la communication plus &amp;quot;basique&amp;quot; que nous voulions utiliser n'était pas compatible avec le BLE, nous sommes une fois de plus repartis de zéro pour cette partie.&lt;br /&gt;
*Après quelques recherches, nous avons trouvé un programme réalisant la gestion d'un socket BLE sur le principe du protocole GATT. Grâce à celui-ci, il nous est possible de recevoir et d'envoyer des données via BLE sur RFduino ainsi que sur l'appli mobile.&lt;br /&gt;
&lt;br /&gt;
====Semaine 13====&lt;br /&gt;
&lt;br /&gt;
'''17/04 (4 heures)'''&lt;br /&gt;
*Ajout du singleton Etat pour partager l'état des aliments dans la réserve alimentaire&lt;br /&gt;
*Transfert des requêtes de la base de donnée vers le singleton pour optimiser l'actualisation et le partage des données.&lt;br /&gt;
*Actualisation automatique des données sur la page principale.&lt;br /&gt;
&lt;br /&gt;
===Premières idées===&lt;br /&gt;
&lt;br /&gt;
Voici les premières idées de l'application mobile et du composant fixé sur le frigo.&lt;br /&gt;
[[Fichier:Optali_v1.jpg|400px|thumb|left|Optali version 1]]&lt;br /&gt;
[[Fichier:OptaliBox_v1.jpg|400px|thumb|center|OptaliBox version 1]]&lt;br /&gt;
[[Fichier:P46_schema.jpg|400px|thumb|center|Schéma électrique version 1]]&lt;br /&gt;
&lt;br /&gt;
En s'intéressant aux différentes datasheets ou données constructeur des composants que nous voulons utiliser, nous trouvons indispensable d'utiliser des résistances de 330 Ohms pour l'utilisation des LEDs, pour éviter de les griller.&lt;br /&gt;
&lt;br /&gt;
Edit : Retrait de la résistance R2.&lt;br /&gt;
&lt;br /&gt;
Concernant l'accéléromètre, nous avons choisi un modèle qui nous permet de brancher directement ce module sur une broche du RFDuino. On branchera directement les GPIOs de la RFduino sur les ports SDA et SCL de l'accéléromètre qui correspondent à l'interface I2C pour pouvoir communiquer. On utilisera aussi la broche INT1 pour pouvoir générer des interruptions directement depuis l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
On connectera le buzzer directement à une broche de la RFduino aussi. Concernant celui-ci il reste une incertitude puisqu'on ne trouve aucune information sur le courant à fournir pour l'alimentation de ce composant sur sa datasheet. Après différentes recherches sur Internet, il pourrait être nécessaire d'utiliser un montage amplificateur à transistor comme un émetteur commun pour booster le courant en sortie d'une broche GPIO. Quelques buzzers trouvés avec des données constructeur montrent que ce type de composant nécessite généralement un courant d'environ 30 mA. Nous verrons dans la pratique si cela sera vraiment nécessaire. Par sécurité, on ajoutera un transistor bipolaire dans la liste de matériel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:screen_LED.png|400px|thumb|left|Données constructeur pour LEDs]]&lt;br /&gt;
[[Fichier:screen_accel.png|400px|thumb|center|Datasheet de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
===Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
====Configuration école====&lt;br /&gt;
&lt;br /&gt;
*Pour configurer notre Raspberry Pi, nous utilisons son port série et &amp;quot;minicom&amp;quot;. Pour pouvoir télécharger des paquets, il fallait la connecter au réseau. Nous lui avons donc affecté une adresse IP fixe avec le fichier /etc/network/interfaces. Voici les modifications qui ont été apportées : &lt;br /&gt;
&lt;br /&gt;
   auto eth0&lt;br /&gt;
   iface eth0 inet static&lt;br /&gt;
   address 172.26.78.15&lt;br /&gt;
   netmask 255.255.240.0&lt;br /&gt;
   gateway 172.26.79.254&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il a également fallu ajouter la commande &amp;quot;export http_proxy=http://proxy.polytech-lille.fr:3128&amp;quot; (il faudra effectuer cette commande à chaque démarrage de la Pi) pour pouvoir utiliser le proxy de l'école. &lt;br /&gt;
Nous avons de plus modifier le fichier /etc/resolv.conf avec la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
   nameserver 193.48.57.34&lt;br /&gt;
&lt;br /&gt;
Malgré cela, nous avions des soucis pour nous connecter au réseau. Il y avait en fait un processus dhcp en tâche de fond qui nous empêchait de garder le contenu de resolv.conf. Il a donc fallu trouver ce processus pour le &amp;quot;kill&amp;quot; et pouvoir accéder correctement au réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons du coup pu installer postgresql pour pouvoir configurer une base de données sur notre Pi.&lt;br /&gt;
&lt;br /&gt;
====Configuration à domicile====&lt;br /&gt;
&lt;br /&gt;
Pour nous mettre dans une situation plus fidèle à notre projet, nous avons configuré la raspberry à domicile.&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abords installé Raspbian, puis installé les paquets nécessaire au fonctionnement du serveur.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Openssh-server''': permettre d'accès à distance à la raspberry pour pouvoir y accéder depuis l'école.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Iptables''': pour sécuriser les ports non utilisé et libérer l'accès aux ports qui nous intéressent (ssh 22,http 80,https 443).&amp;lt;br&amp;gt;&lt;br /&gt;
- '''apache2, php5, mysql-server''' : pour mettre en place notre service web.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons rediriger les ports 80 et 22 du routeur pour pouvoir accéder à la raspberry de l'extérieur.&lt;br /&gt;
&lt;br /&gt;
Pour finir, nous avons créer un fichier de config iptables permettant de sécuriser un minimum la base de donnée et de permettre d'autoriser la communication des ports 22, 80 et 443 correspondants aux ports ssh, http et https. le fichier de configuration a été déposé dans le dépôt git. Il nous a fallut le rendre exécutable via un chmod. Puis pour l'exécuter à chaque démarrage du system, dans le fichier /etc/init.d/ taper : &lt;br /&gt;
&lt;br /&gt;
    sudo update-rc.d firewall defaults (si notrefichier s'appelle firewall et s'il est dans init.d)&lt;br /&gt;
&lt;br /&gt;
===Base de donnée===&lt;br /&gt;
&lt;br /&gt;
Nos données alimentaires disponibles par toute la famille doivent être stocké sur un serveur de base de donnée externe (tel une Raspberry pi). Nous nous proposons de créer le diagramme UML représentant cette future base de donnée.&lt;br /&gt;
[[Fichier:Optali_UML.jpg|700px|thumb|center|Diagramme UML base de donnée]]&lt;br /&gt;
&lt;br /&gt;
On créera donc 3 entités. Date, Product et Recipe. &lt;br /&gt;
&lt;br /&gt;
- Product rassemble les aliments qui sont ou ont été dans la réserve alimentaire. NbProdIn permet de connaître le nombre de produits identiques (possibilité de date différentes mais pas de doublons et on garde l'information de quantité. NbProdBought donne une information sur le nombre de produits identique ayant été acheté depuis la mise en service de la base de donnée. Ainsi nous pourrons par la suite proposer une liste de course à l'utilisateur en fonction de la fréquence d'achat des produits.&lt;br /&gt;
&lt;br /&gt;
- Recipe contient les recettes que pourra rentrer l'utilisateur sur l'application. L'utilisateur pourra ainsi se voir proposer des recettes en fonction de ce qu'il a dans son frigo et de ses recettes personnelles.&lt;br /&gt;
&lt;br /&gt;
'''''Edit : On ajoutera une valeur entière dans les tables Date et Unity pour gérer le cas où il existe plusieurs produits (différents ou identiques) avec une date de péremption équivalente. On les appellera NbDate la valeur dans la table Date et NbUnity dans la table Unity. On leur ajoutera de même une clef primaire IdUnity et IdListProduct'''''&lt;br /&gt;
&lt;br /&gt;
On utilisera MySql pour la gestion de nos bases de données. &lt;br /&gt;
La syntaxe pour l'implanter dans la base de donnée à été jointe au dépôt git.&lt;br /&gt;
&lt;br /&gt;
Pour lancer my SQL, on tapera:&lt;br /&gt;
&lt;br /&gt;
   mysql -h localhost -u root -p&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Web service===&lt;br /&gt;
&lt;br /&gt;
====Page init.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet d'initier l'accès à la base de donnée sur le serveur. Elle est requise pour les pages qui suivent.&lt;br /&gt;
&lt;br /&gt;
====Page post.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet l'insertion d'un produit et d'une date via l'application mobile. Elle prend donc ces deux arguments et les insère dans les tables Unity, Product et Date.&lt;br /&gt;
&lt;br /&gt;
====Page get.php====&lt;br /&gt;
&lt;br /&gt;
Page qui envoie la liste des aliments avec leur nom, leur date, leur quantité dans le frigo, la quantité d'exemplaires acheté en tout depuis la mise en place de l'appareil. Le tri se fera directement dans l'application mobile. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Application Mobile===&lt;br /&gt;
&lt;br /&gt;
====Home page====&lt;br /&gt;
&lt;br /&gt;
Page d'accueil permettant d'accéder aux pages d'ajout et de liste des produits disponibles. &amp;lt;br&amp;gt;&lt;br /&gt;
La page permet aussi d'effectuer la connexion entre la rfduino et l'application mobile. Elle montre les alertes (signaux) à l'utilisateur &lt;br /&gt;
et écrit leur signification.&lt;br /&gt;
&lt;br /&gt;
====Page d'ajout====&lt;br /&gt;
&lt;br /&gt;
Pour ajouter un produit et lire une date on utilisera un champ editText pour permettre à l'utilisateur d'écrire &amp;quot;Manuellement&amp;quot; dedans grâce au clavier du smartphone.&amp;lt;br&amp;gt;&lt;br /&gt;
De plus on utilise un bouton qui appellera la caméra pour détecter les caractères d'un produit ou d'une date. Au début nous voulions utiliser un détecteur de code barre, nous l'avons implémenté mais nous avons remarqué que la mise au point sur une surface non plane prend du temps d'autant plus qu'il faut questionner une base de donnée contenant tous les numéro de codes barres utilisés. Nous avons donc prit la décision d'utiliser uniquement la lecture de caractère et nous créerons une liste déroulante sous l'editText pour faciliter l'insertion d'un produit qui a déjà été ajouté. Pour la lecture de caractère, nous utilisons la librairie tesseract.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'envoi, nous utilisons la librairie Volley développé par google.&lt;br /&gt;
&lt;br /&gt;
====Page Liste====&lt;br /&gt;
&lt;br /&gt;
Permet de lister les produits dans la base de donnée. Une série de boutons radio permettent de trier les produits par ordre alphabétique, par date de péremption, par nombre d’occurrence dans la réserve alimentaire, par nombre d'achat depuis la mise en place du système.&amp;lt;br&amp;gt;&lt;br /&gt;
Une colonne permet de sélectionner les aliments désirés (par checkBox) pour ensuite les supprimer via un button &amp;quot;suppr&amp;quot; ou les choisir pour trouver des recettes qui les utilisent.&amp;lt;br&amp;gt;&lt;br /&gt;
Un EditText permet d'effectuer une recherche sur la base de donnée.&lt;br /&gt;
&lt;br /&gt;
===Altium Designer===&lt;br /&gt;
&lt;br /&gt;
Pour permettre au RFDuino de communiquer avec les différents composants, nous aurons besoin de quelques composants électroniques. Afin que cela soit plus esthétique pour la modélisation finale, nous allons créer une carte PCB pour rassembler tous ces composants dessus. On utilisera le logiciel Altium Designer pour cela.&lt;br /&gt;
&lt;br /&gt;
Avant de représenter notre circuit général, nous allons commencer par créer une librairie rassemblant tous les composants que nous utiliserons par la suite, en particulier nos composants CMS (accéléromètre et résistances). Pour ce qui est des LEDs et du buzzer, qui sont traversants, nous pourrons utiliser des headers classiques.&lt;br /&gt;
&lt;br /&gt;
Il a donc fallu créer le schematic ainsi que l'empreinte de nos composants CMS. Voici un exemple avec notre accéléromètre :&lt;br /&gt;
[[Fichier:Accelerosch.PNG|500px|thumb|left|Schematic de l'accéléromètre]]&lt;br /&gt;
[[Fichier:Acceleropcb.PNG|500px|thumb|center|Empreinte PCB de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les fichiers Altium sont disponibles sur notre dépôt GIT. Après cela, nous pouvons maintenant construire notre schematic du montage entier et ensuite le fichier PCB afin de pouvoir graver notre circuit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après quelques modifications sur le montage prévu initialement, c'est-à-dire en enlevant une résistance entre un GPIO et l'alimentation de l'accéléromètre ainsi qu'en rajoutant des résistances pull-up sur les broches de notre liaison i2C (SDA et SCL) et un bouton poussoir en plus pour permettre un reset du RFDuino, nous avons pu créer notre schematic global pour en faire un PCB et l'exporter au format Gerber. De ce fait, le service EEI de Polytech pourra réaliser la gravure de notre carte PCB.&lt;br /&gt;
&lt;br /&gt;
Voici quelques photos pour illustrer notre projet sur Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Finalproto_sch.PNG|400px|thumb|left|Schematic du montage final]]&lt;br /&gt;
[[Fichier:Finalproto_pcb.PNG|400px|thumb|center|PCB du montage final]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On retrouve sur notre PCB final les headers, respectivement de 8 et 5 pins, de part et d'autre de la carte, qui représentent le RFDuino, où nous souderons des broches pour qu'elles puissent être intégrées au RFDuino. On note la présence de 5 autres headers de 2 pins, dont 3 pour des LEDs puis les 2 autres pour le buzzer et le bouton poussoir. Ce qui reste sont les composants CMS avec plusieurs composants à 2 pattes qui sont toutes les résistances de notre montage, celles de protection pour les LEDs et les pull-ups pour l'accéléromètre. Le dernier composant à 8 pattes est donc bien l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quelques difficultés ont été rencontrées durant ce travail notamment concernant les contraintes de construction sur le PCB final. En effet, les composants CMS choisis (surtout l'accéléromètre) étant parfois très petits, Altium n'accepte pas forcément le faible espacement entre les différentes pattes des composants, ce qui pose problème lors de la compilation. De plus, le plan de masse ne prenait pas en compte tous les éléments devant être rattachés à la masse. Il a fallu légèrement déplacer les headers représentant le RFDuino pour que cela soit possible. Il faudra alors peut-être légèrement plier les broches qui viendront s'intégrer sur le RFDuino pour ajouter notre PCB sur le RFDuino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons envoyé nos fichiers Altium au service EEI afin qu'il puisse réaliser physiquement notre carte. Nous nous retrouvons donc avec notre carte PCB récupérée auprès du service EEI. Voici le rendu :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:P46_carte.jpg|400px|thumb|center|Fabrication de notre carte PCB]]&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=41185</id>
		<title>IMA4 2016/2017 P46 : Aide anti-gaspillage alimentaire</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=41185"/>
				<updated>2017-04-09T16:30:22Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : /* Semaine 11 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
En France, nous jetons en moyenne 21% des aliments que nous achetons, ce qui représente une perte de 100 à 160 euros par an par habitant. Cela est en partie dû à la date limite de consommation associée à chaque produit. En effet, à partir du moment où cette date sera dépassée le consommateur jettera les produits concernés sans réfléchir, même si ceux-ci peuvent parfois être encore mangeables. Plutôt que d'essayer de les convaincre du contraire, il serait judicieux de proposer aux adeptes du gaspillage une aide permettant de gérer tous les aliments dont ils disposent chez eux afin d'éviter la surprise de tomber sur plusieurs produits périmés lorsqu'ils ouvrent la porte de leur frigo. &lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Ce projet permet d'aider les utilisateurs d'une part à mémoriser les denrées périssables qu'ils disposent dans leur réserve alimentaire et d'autre part d'avertir l'utilisateur qu'un événement important a lieu. Ceci peut être une notification qu'un aliment va bientôt dépasser sa date de péremption, que la porte du frigidaire est restée ouverte ou encore que le nombre d'aliments dans la réserve devient critique et qu'il faudra de nouveau l'alimenter. Enfin, le système aidera l'utilisateur à trouver des idées de repas pouvant permettre de consommer les aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Notre prototype permettra d'éviter le gaspillage alimentaire ainsi que d'aider l'utilisateur dans sa gestion du stockage d'aliments.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
&lt;br /&gt;
Notre système sera composé de 3 éléments. &lt;br /&gt;
&lt;br /&gt;
Premièrement, un ou des smartphones appartenant aux utilisateurs. Ces derniers permettront de scanner grâce à son appareil photo, le code barre du produit ainsi que sa date de péremption. Il servira aussi d'interface utilisateur pour notre système. En effet, c'est par cet outil que l'utilisateur pourra lister tous les aliments que l'utilisateur a dans sa base et tout ça en les triant par date de péremption, ou encore voir les recettes possibles pour consommer des aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Deuxièmement, un serveur, de type Raspberry, qui permettra de stocker la base de donnée contenant les aliments de la réserve. Ce serveur sera connecté par wifi.&lt;br /&gt;
 &lt;br /&gt;
Troisièmement, un contrôleur (Rfduino) qui comportera une LED pour indiquer la mise sous tension du contrôleur, une LED pour prévenir l'utilisateur qu'un aliment va bientôt passer sa date de péremption et une dernière LED pour prévenir l'utilisateur que son niveau de réserve est critique ainsi qu'un buzzer et un accéléromètre pour buzzer quand la porte du frigo est restée trop longtemps ouverte. Ce dernier sera fixé au frigo par l'intermédiaire d'un dispositif adapté qui sera un système aimanté qui se pose sur le frigo.&lt;br /&gt;
&lt;br /&gt;
Nous implémenterons donc une application mobile Android qui fera le lien entre les 2 autres systèmes.&lt;br /&gt;
&lt;br /&gt;
Pour la partie électronique que nous aurons à réaliser, nous utiliserons une Breadboard pour faire des premiers tests puis nous créerons une carte PCB pour notre montage final.&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
On utilisera une Raspberry Pi en guise de serveur pour pouvoir s'occuper du stockage de toutes les données dans notre projet puisque notre contrôleur sera incapable de les contenir, ce n'est d'ailleurs pas son but ici.&lt;br /&gt;
&lt;br /&gt;
Notre smartphone fera donc le lien entre notre base de données et notre système embarqué par l'intermédiaire de l'application mobile.&lt;br /&gt;
&lt;br /&gt;
Nous prendrons ici un RFduino puisque celui-ci nous permet d'ajouter des modules comme bon nous semble afin d'adapter le système aux besoins de notre application. Il est également parfaitement compatible avec les applications Android. De plus, nous avons un Bluetooth directement intégré au RFduino pour s'assurer que les liaisons RFduino-application mobile se fassent correctement. &lt;br /&gt;
On notera également que ce contrôleur consomme peu de courant et ne demande qu'une faible tension d'alimentation, critères importants pour ce genre de projet. C'est la raison principale de son utilisation pour être utilisé comme interface physique sur le frigo, en ajoutant également sa taille réduite comparée à la Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
&lt;br /&gt;
Nous avons donc besoin du matériel suivant :&lt;br /&gt;
&lt;br /&gt;
*Raspberry Pi.&lt;br /&gt;
*Clef wifi&lt;br /&gt;
*RFduino (RFD22102 DIP Board, RFD22121 USB Shield, RFD22126 Dual AAA battery shield).&lt;br /&gt;
*2 piles AAA.&lt;br /&gt;
*3 leds tranversantes.&lt;br /&gt;
*3 Résistances 330 Ohm.&lt;br /&gt;
*1 Résistance 10 kOhm.&lt;br /&gt;
*Un buzzer.&lt;br /&gt;
*Accéléromètre.&lt;br /&gt;
*Aimants&lt;br /&gt;
*Un boîtier permettant d'intégrer la RFduino + fixation sur le frigo (modélisation à voir).&lt;br /&gt;
&lt;br /&gt;
Pour le buzzer, l'accéléromètre et les résistances, nous choisirons des composants CMS pour nous permettre d'avoir une carte plus petite.&lt;br /&gt;
&lt;br /&gt;
===Calendrier prévisionnel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Liste des tâches à effectuer====&lt;br /&gt;
&lt;br /&gt;
* Configurer la Raspberry :&lt;br /&gt;
** Installer et configurer le serveur.&lt;br /&gt;
** Créer le diagramme UML de notre future base de données.&lt;br /&gt;
** Créer la base sur le serveur.&lt;br /&gt;
** Configurer la connexion WiFi.&lt;br /&gt;
&lt;br /&gt;
* Monter et programmer la RFduino :&lt;br /&gt;
** Connecter les différents modules au RFduino (accéléromètre, LEDs, buzzer, Batterie, module Bluetooth).&lt;br /&gt;
** Récupérer les consignes du smartphone grâce au Bluetooth.&lt;br /&gt;
** Programmer le comportement du RFduino en fonction des consignes.&lt;br /&gt;
** Construire le boitier final.&lt;br /&gt;
&lt;br /&gt;
* Implémenter l'application mobile Android :&lt;br /&gt;
** Une première activité permettant de se connecter au RFduino et à la Raspberry.&lt;br /&gt;
** Scanner une date et un code barre.&lt;br /&gt;
** Ajout/suppression d'un aliment dans la base de donnée.&lt;br /&gt;
** Envoi d'une consigne au RFduino.&lt;br /&gt;
** Rendre l'interface utilisateur ergonomique (lister aliments, envoyer vers page de recettes avec l'utilisation des aliments bientôt périmés...).&lt;br /&gt;
&lt;br /&gt;
====Calendrier====&lt;br /&gt;
&lt;br /&gt;
Répartition du temps consacré au projet (120h *2) :&lt;br /&gt;
&lt;br /&gt;
*Partie Raspberry : 60h&lt;br /&gt;
*Partie RFduino : 60h&lt;br /&gt;
*Partie développement mobile : 120h&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
&lt;br /&gt;
===Résumé===&lt;br /&gt;
&lt;br /&gt;
====Semaine 1====&lt;br /&gt;
&lt;br /&gt;
'''23/01''' :  &lt;br /&gt;
* Installation du logiciel Android Studio pour être prêt à commencer l'application mobile.&lt;br /&gt;
* Création du Repository Git sur GitHub : https://github.com/FrancoisLefevre12/Optali.git&lt;br /&gt;
* Réalisation de différents schémas fonctionnels pour se donner une idée du travail à effectuer, aussi bien du software que du hardware.&lt;br /&gt;
* Quelques précisions supplémentaires apportées sur le cahier des charges.&lt;br /&gt;
* Ajout de liens de référence pour la liste de matériel à acheter.&lt;br /&gt;
&lt;br /&gt;
'''25/01''' :  &lt;br /&gt;
* Précision des composants requis (accéléromètre, buzzer, LEDs, résistances).&lt;br /&gt;
* Écriture du montage à la main.&lt;br /&gt;
* Étude du fonctionnement de l'accéléromètre, du buzzer.&lt;br /&gt;
* Écriture de la structure de l'application à la main.&lt;br /&gt;
&lt;br /&gt;
'''26/01''' :&lt;br /&gt;
*Réalisation graphique de la première page de l'application.&lt;br /&gt;
*Conception du schéma électrique pour tous les composants connectés au RFduino.&lt;br /&gt;
&lt;br /&gt;
====Semaine 2====&lt;br /&gt;
&lt;br /&gt;
'''30/01''' :&lt;br /&gt;
*Réalisation du diagramme UML de la base de données qui sera stockée sur la Raspberry Pi&lt;br /&gt;
*Installation de l'outil de développement mobile sur le second PC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''01/02''' :&lt;br /&gt;
*Nous nous sommes d'abord rendus compte que la résistance entre un des GPIO et l'accéléromètre était inutile, nos premiers calculs étaient erronés. Nous ne la garderons donc pas sur notre schéma électrique final.&lt;br /&gt;
*Avancement sur la partie application mobile : réalisation de la page &amp;quot;Ajout&amp;quot; sur laquelle nous tomberons après avoir cliquer sur &amp;quot;ajout&amp;quot; sur la page principale de l'application. Nous avons étendu l'activité principale jusqu'à cette nouvelle activité &amp;quot;Ajout&amp;quot;.&lt;br /&gt;
*Nous avons récupéré notre Raspberry Pi pour commencer à installer notre base de données dessus. Nous avons actuellement quelques problèmes pour nous connecter sur la Raspberry. Nous travaillons sur ce point.&lt;br /&gt;
&lt;br /&gt;
'''02/02''' :&lt;br /&gt;
* Application mobile : Mise en place des LEDs sur la home page et de la zone de notification avec les messages associés.&lt;br /&gt;
&lt;br /&gt;
====Semaine 3====&lt;br /&gt;
&lt;br /&gt;
'''06/02''' :&lt;br /&gt;
*Nous arrivons à accéder à la Raspberry via le port série de celle-ci. Nous avons également configuré sa connexion Ethernet afin de pouvoir télécharger des paquets dessus et installer notre base de données. &lt;br /&gt;
*Nous rencontrions des problèmes sur le second PC de travail pour récupérer le projet Optali sur Android Studio via notre dépôt GIT. Nous avons pu rectifier ce souci.&lt;br /&gt;
&lt;br /&gt;
'''08/02''' :&lt;br /&gt;
*Tentative d'établissement d'un point d'accès WiFi sur notre Raspberry. Nous n'avons pas réussi pour le moment.&lt;br /&gt;
*Restructuration du Repository git.&lt;br /&gt;
*Essai d'importation de la librairie Zxing qui permettra de décoder les code-barres.&lt;br /&gt;
&lt;br /&gt;
====Semaine 4====&lt;br /&gt;
&lt;br /&gt;
'''13/02'''&lt;br /&gt;
*Configuration du wifi de la Raspberry. &lt;br /&gt;
*Étude d'une mise en place d'un service web via php.&lt;br /&gt;
&lt;br /&gt;
'''15/02'''&lt;br /&gt;
*Mise en place d'un lecteur de caractère sur l'application. On utilisera tesseract.&lt;br /&gt;
*Début de la création du PCB via Altium designer. Création d'une librairie pour l'accéléromètre qui est un composant CMS assez spécial. On pourra cependant utiliser des headers classiques pour le buzzer et les LEDs puisque ce sont des composants traversants.&lt;br /&gt;
*Création des premiers fichiers php de connection à la base de donnée et d'insertion d'aliments. Tous ces fichiers seront déposés de la même manière sur le dépôt git.&lt;br /&gt;
&lt;br /&gt;
'''16/02'''&lt;br /&gt;
*Adaptation avec prise en compte des cas du code php d'insertion de produits par requête sur la base de donnée.&lt;br /&gt;
*Ajout du code d'implantation de la base de donnée.&lt;br /&gt;
*Altium: Accéléromètre terminé, mise en place des résistances.&lt;br /&gt;
&lt;br /&gt;
====Semaine 5 (interruption pédagogique)====&lt;br /&gt;
&lt;br /&gt;
'''22/02 (3 heures)'''&lt;br /&gt;
*Installation de l'OS de la raspberry.&lt;br /&gt;
*Installation d'Openssh-server, apache2, php5, iptables, mysql-server, php5-mysql.&lt;br /&gt;
*Redirection des ports du routeur vers la raspberry.&lt;br /&gt;
*Configuration de iptables de la raspberry.&lt;br /&gt;
&lt;br /&gt;
'''23/02 (2 heures)'''&lt;br /&gt;
*Implantation de la base de donnée sur la raspberry pi.&lt;br /&gt;
&lt;br /&gt;
====Semaine 6====&lt;br /&gt;
'''27/02'''&lt;br /&gt;
*Vérification de la syntaxe de l'insertion de valeurs dans la base de donnée.&lt;br /&gt;
*Création des premières requêtes sur la base de donnée.&lt;br /&gt;
*Finalisation du PCB de l'Optali Board.&lt;br /&gt;
&lt;br /&gt;
'''01/03'''&lt;br /&gt;
*Étude et ajout de la librairie volley pour communiquer avec le serveur.&lt;br /&gt;
*Implantation de la fonction d'envoi de données jusqu'au serveur.&lt;br /&gt;
*Après avoir vu avec un professeur, nous avons remarqué que le routage n'était pas adéquat et la disposition des composants n'était pas optimal. Du travail reste donc encore à effectuer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Semaine 7====&lt;br /&gt;
'''06/03'''&lt;br /&gt;
*Correction du fichier post.php&lt;br /&gt;
*Finition du protocole d'ajout d'aliment sur la base de donnée. (Code php et page ajout terminée).&lt;br /&gt;
*PCB terminé.&lt;br /&gt;
*Installation d'arduino IDE, doc arduino collecté.&lt;br /&gt;
&lt;br /&gt;
'''08/03'''&lt;br /&gt;
*Implémentation de la page ListeIngredient.xml et de l'activité listActivity.java.&lt;br /&gt;
*Documentation sur la procédure de communication bluetooth entre la Rfduino et l'application mobile.&lt;br /&gt;
*Obtention de librairie en lien avec cela.&lt;br /&gt;
*Prise en main de programmation rfduino.&lt;br /&gt;
&lt;br /&gt;
'''09/03'''&lt;br /&gt;
*Nous nous sommes rendus compte qu'il était nécessaire de rajouter un bouton poussoir sur notre montage afin de permettre la réinitialisation de notre RFDuino si nécessaire. Nous devons également faire en sorte de pouvoir poser notre carte PCB directement sur notre RFDuino en utilisant des broches. Nous devons donc rajouter ces éléments-ci.&lt;br /&gt;
*Ecriture de la page get.php&lt;br /&gt;
*Premiers tests sur la ListView de l'activité ListActivity.&lt;br /&gt;
&lt;br /&gt;
====Semaine 8====&lt;br /&gt;
'''13/03'''&lt;br /&gt;
*Recherche de pistes concernant la programmation RFDuino. Nous pouvons la détecter en bluetooth via un smartphone Android.&lt;br /&gt;
*Finition du Tablelayout et du code java associé sur la page ListActivity.&lt;br /&gt;
&lt;br /&gt;
'''15/03'''&lt;br /&gt;
*Ajout de la JsonArrayRequest dans la page ListActivity.&lt;br /&gt;
*Nous nous sommes rendus compte au moment de programmer la liaison I2C de l'accéléromètre avec la RFDuino que nous avions oublié de mettre des résistances pull-up entre l'alimentation du composant et les broches SDA et SCL. Les modifications ont donc été faites puis nous avons envoyé finalement notre PCB à la fabrication.&lt;br /&gt;
&lt;br /&gt;
'''16/03'''&lt;br /&gt;
*Changement de stratégie au niveau de la requête JsonArrayRequest. On récupère toute la base et ensuite le traitement sera effectuer dans l'application mobile.&lt;br /&gt;
*Rédaction de la partie Altium du wiki.&lt;br /&gt;
*Recherche de docs sur le système bluetooth du RFduino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Semaine 9====&lt;br /&gt;
'''20/03'''&lt;br /&gt;
*Réalisation de différents réglages pour pouvoir utiliser l'application Optali sur l'Android phone fourni par notre professeur (LG G4c)&lt;br /&gt;
*Recherche de docs concernant la partie java responsable de la communication Bluetooth.&lt;br /&gt;
*Reprise de la solution Tesseract pour la lecture de caractères.&lt;br /&gt;
&lt;br /&gt;
'''21/03''' (séance supplémentaire de 3 heures)&lt;br /&gt;
*Début du développement de la partie communication entre RFDuino et l'appli mobile. Nous pouvons détecter le RFduino à partir de Android Studio mais nous n'arrivons pas encore à nous connecter dessus directement.&lt;br /&gt;
*Finition de la fonctionnalité tesseract. La lecture de caractères est donc maintenant possible.&lt;br /&gt;
&lt;br /&gt;
'''22/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity&lt;br /&gt;
*Connexion possible entre le RFduino et notre appli mobile. Il faut maintenant pouvoir assurer un échange de données via du GATT.&lt;br /&gt;
&lt;br /&gt;
====Semaine 10====&lt;br /&gt;
'''27/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity (suite). Utilisation de la solution postman.&lt;br /&gt;
*Mise à jour du wiki pour la partie Altium.&lt;br /&gt;
*Gestion du dépôt git.&lt;br /&gt;
*Récupération de la carte PCB au service EEI.&lt;br /&gt;
&lt;br /&gt;
'''29/03'''&lt;br /&gt;
*Mise en place du tri des Produits avec un critère d'ordonnabilité variable&lt;br /&gt;
*Implémentation du champs recherche et action sur la liste&lt;br /&gt;
*Écriture des pages Php consume.php et delete.php pour décrémenter le nombre d'aliment dans le frigo ou le supprimer&lt;br /&gt;
*Récupération des composants&lt;br /&gt;
*Passage au four pour souder les premiers composants en CMS&lt;br /&gt;
&lt;br /&gt;
====Semaine 11====&lt;br /&gt;
&lt;br /&gt;
'''03/04'''&lt;br /&gt;
*Dé-soudage et resoudage de l'accéléromètre.&lt;br /&gt;
*Soudure des composants&lt;br /&gt;
&lt;br /&gt;
'''05/04'''&lt;br /&gt;
*Test du Buzzer&lt;br /&gt;
*Code de l'accéléromètre&lt;br /&gt;
*Création de l'Optali box (la boite qui contient le RFduino fixé au frigo)&lt;br /&gt;
*Finition de la fonction 'delete'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''06/04'''&lt;br /&gt;
*Problème pour faire fonctionner le code de l'accéléro. Il faudra le tester électriquement.&lt;br /&gt;
*Implantation du logo de l'appli &lt;br /&gt;
*Debuggage d'une requête de la page 'list'&lt;br /&gt;
*Documentation sur les listes déroulantes sous les EditTexts.&lt;br /&gt;
&lt;br /&gt;
===Premières idées===&lt;br /&gt;
&lt;br /&gt;
Voici les premières idées de l'application mobile et du composant fixé sur le frigo.&lt;br /&gt;
[[Fichier:Optali_v1.jpg|400px|thumb|left|Optali version 1]]&lt;br /&gt;
[[Fichier:OptaliBox_v1.jpg|400px|thumb|center|OptaliBox version 1]]&lt;br /&gt;
[[Fichier:P46_schema.jpg|400px|thumb|center|Schéma électrique version 1]]&lt;br /&gt;
&lt;br /&gt;
En s'intéressant aux différentes datasheets ou données constructeur des composants que nous voulons utiliser, nous trouvons indispensable d'utiliser des résistances de 330 Ohms pour l'utilisation des LEDs, pour éviter de les griller.&lt;br /&gt;
&lt;br /&gt;
Edit : Retrait de la résistance R2.&lt;br /&gt;
&lt;br /&gt;
Concernant l'accéléromètre, nous avons choisi un modèle qui nous permet de brancher directement ce module sur une broche du RFDuino. On branchera directement les GPIOs de la RFduino sur les ports SDA et SCL de l'accéléromètre qui correspondent à l'interface I2C pour pouvoir communiquer. On utilisera aussi la broche INT1 pour pouvoir générer des interruptions directement depuis l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
On connectera le buzzer directement à une broche de la RFduino aussi. Concernant celui-ci il reste une incertitude puisqu'on ne trouve aucune information sur le courant à fournir pour l'alimentation de ce composant sur sa datasheet. Après différentes recherches sur Internet, il pourrait être nécessaire d'utiliser un montage amplificateur à transistor comme un émetteur commun pour booster le courant en sortie d'une broche GPIO. Quelques buzzers trouvés avec des données constructeur montrent que ce type de composant nécessite généralement un courant d'environ 30 mA. Nous verrons dans la pratique si cela sera vraiment nécessaire. Par sécurité, on ajoutera un transistor bipolaire dans la liste de matériel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:screen_LED.png|400px|thumb|left|Données constructeur pour LEDs]]&lt;br /&gt;
[[Fichier:screen_accel.png|400px|thumb|center|Datasheet de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
===Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
====Configuration école====&lt;br /&gt;
&lt;br /&gt;
*Pour configurer notre Raspberry Pi, nous utilisons son port série et &amp;quot;minicom&amp;quot;. Pour pouvoir télécharger des paquets, il fallait la connecter au réseau. Nous lui avons donc affecté une adresse IP fixe avec le fichier /etc/network/interfaces. Voici les modifications qui ont été apportées : &lt;br /&gt;
&lt;br /&gt;
   auto eth0&lt;br /&gt;
   iface eth0 inet static&lt;br /&gt;
   address 172.26.78.15&lt;br /&gt;
   netmask 255.255.240.0&lt;br /&gt;
   gateway 172.26.79.254&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il a également fallu ajouter la commande &amp;quot;export http_proxy=http://proxy.polytech-lille.fr:3128&amp;quot; (il faudra effectuer cette commande à chaque démarrage de la Pi) pour pouvoir utiliser le proxy de l'école. &lt;br /&gt;
Nous avons de plus modifier le fichier /etc/resolv.conf avec la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
   nameserver 193.48.57.34&lt;br /&gt;
&lt;br /&gt;
Malgré cela, nous avions des soucis pour nous connecter au réseau. Il y avait en fait un processus dhcp en tâche de fond qui nous empêchait de garder le contenu de resolv.conf. Il a donc fallu trouver ce processus pour le &amp;quot;kill&amp;quot; et pouvoir accéder correctement au réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons du coup pu installer postgresql pour pouvoir configurer une base de données sur notre Pi.&lt;br /&gt;
&lt;br /&gt;
====Configuration à domicile====&lt;br /&gt;
&lt;br /&gt;
Pour nous mettre dans une situation plus fidèle à notre projet, nous avons configuré la raspberry à domicile.&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abords installé Raspbian, puis installé les paquets nécessaire au fonctionnement du serveur.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Openssh-server''': permettre d'accès à distance à la raspberry pour pouvoir y accéder depuis l'école.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Iptables''': pour sécuriser les ports non utilisé et libérer l'accès aux ports qui nous intéressent (ssh 22,http 80,https 443).&amp;lt;br&amp;gt;&lt;br /&gt;
- '''apache2, php5, mysql-server''' : pour mettre en place notre service web.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons rediriger les ports 80 et 22 du routeur pour pouvoir accéder à la raspberry de l'extérieur.&lt;br /&gt;
&lt;br /&gt;
Pour finir, nous avons créer un fichier de config iptables permettant de sécuriser un minimum la base de donnée et de permettre d'autoriser la communication des ports 22, 80 et 443 correspondants aux ports ssh, http et https. le fichier de configuration a été déposé dans le dépôt git. Il nous a fallut le rendre exécutable via un chmod. Puis pour l'exécuter à chaque démarrage du system, dans le fichier /etc/init.d/ taper : &lt;br /&gt;
&lt;br /&gt;
    sudo update-rc.d firewall defaults (si notrefichier s'appelle firewall et s'il est dans init.d)&lt;br /&gt;
&lt;br /&gt;
===Base de donnée===&lt;br /&gt;
&lt;br /&gt;
Nos données alimentaires disponibles par toute la famille doivent être stocké sur un serveur de base de donnée externe (tel une Raspberry pi). Nous nous proposons de créer le diagramme UML représentant cette future base de donnée.&lt;br /&gt;
[[Fichier:Optali_UML.jpg|700px|thumb|center|Diagramme UML base de donnée]]&lt;br /&gt;
&lt;br /&gt;
On créera donc 3 entités. Date, Product et Recipe. &lt;br /&gt;
&lt;br /&gt;
- Product rassemble les aliments qui sont ou ont été dans la réserve alimentaire. NbProdIn permet de connaître le nombre de produits identiques (possibilité de date différentes mais pas de doublons et on garde l'information de quantité. NbProdBought donne une information sur le nombre de produits identique ayant été acheté depuis la mise en service de la base de donnée. Ainsi nous pourrons par la suite proposer une liste de course à l'utilisateur en fonction de la fréquence d'achat des produits.&lt;br /&gt;
&lt;br /&gt;
- Recipe contient les recettes que pourra rentrer l'utilisateur sur l'application. L'utilisateur pourra ainsi se voir proposer des recettes en fonction de ce qu'il a dans son frigo et de ses recettes personnelles.&lt;br /&gt;
&lt;br /&gt;
'''''Edit : On ajoutera une valeur entière dans les tables Date et Unity pour gérer le cas où il existe plusieurs produits (différents ou identiques) avec une date de péremption équivalente. On les appellera NbDate la valeur dans la table Date et NbUnity dans la table Unity. On leur ajoutera de même une clef primaire IdUnity et IdListProduct'''''&lt;br /&gt;
&lt;br /&gt;
On utilisera MySql pour la gestion de nos bases de données. &lt;br /&gt;
La syntaxe pour l'implanter dans la base de donnée à été jointe au dépôt git.&lt;br /&gt;
&lt;br /&gt;
Pour lancer my SQL, on tapera:&lt;br /&gt;
&lt;br /&gt;
   mysql -h localhost -u root -p&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Web service===&lt;br /&gt;
&lt;br /&gt;
====Page init.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet d'initier l'accès à la base de donnée sur le serveur. Elle est requise pour les pages qui suivent.&lt;br /&gt;
&lt;br /&gt;
====Page post.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet l'insertion d'un produit et d'une date via l'application mobile. Elle prend donc ces deux arguments et les insère dans les tables Unity, Product et Date.&lt;br /&gt;
&lt;br /&gt;
====Page get.php====&lt;br /&gt;
&lt;br /&gt;
Page qui envoie la liste des aliments avec leur nom, leur date, leur quantité dans le frigo, la quantité d'exemplaires acheté en tout depuis la mise en place de l'appareil. Le tri se fera directement dans l'application mobile. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Application Mobile===&lt;br /&gt;
&lt;br /&gt;
====Home page====&lt;br /&gt;
&lt;br /&gt;
Page d'accueil permettant d'accéder aux pages d'ajout et de liste des produits disponibles. &amp;lt;br&amp;gt;&lt;br /&gt;
La page permet aussi d'effectuer la connexion entre la rfduino et l'application mobile. Elle montre les alertes (signaux) à l'utilisateur &lt;br /&gt;
et écrit leur signification.&lt;br /&gt;
&lt;br /&gt;
====Page d'ajout====&lt;br /&gt;
&lt;br /&gt;
Pour ajouter un produit et lire une date on utilisera un champ editText pour permettre à l'utilisateur d'écrire &amp;quot;Manuellement&amp;quot; dedans grâce au clavier du smartphone.&amp;lt;br&amp;gt;&lt;br /&gt;
De plus on utilise un bouton qui appellera la caméra pour détecter les caractères d'un produit ou d'une date. Au début nous voulions utiliser un détecteur de code barre, nous l'avons implémenté mais nous avons remarqué que la mise au point sur une surface non plane prend du temps d'autant plus qu'il faut questionner une base de donnée contenant tous les numéro de codes barres utilisés. Nous avons donc prit la décision d'utiliser uniquement la lecture de caractère et nous créerons une liste déroulante sous l'editText pour faciliter l'insertion d'un produit qui a déjà été ajouté. Pour la lecture de caractère, nous utilisons la librairie tesseract.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'envoi, nous utilisons la librairie Volley développé par google.&lt;br /&gt;
&lt;br /&gt;
====Page Liste====&lt;br /&gt;
&lt;br /&gt;
Permet de lister les produits dans la base de donnée. Une série de boutons radio permettent de trier les produits par ordre alphabétique, par date de péremption, par nombre d’occurrence dans la réserve alimentaire, par nombre d'achat depuis la mise en place du système.&amp;lt;br&amp;gt;&lt;br /&gt;
Une colonne permet de sélectionner les aliments désirés (par checkBox) pour ensuite les supprimer via un button &amp;quot;suppr&amp;quot; ou les choisir pour trouver des recettes qui les utilisent.&amp;lt;br&amp;gt;&lt;br /&gt;
Un EditText permet d'effectuer une recherche sur la base de donnée.&lt;br /&gt;
&lt;br /&gt;
===Altium Designer===&lt;br /&gt;
&lt;br /&gt;
Pour permettre au RFDuino de communiquer avec les différents composants, nous aurons besoin de quelques composants électroniques. Afin que cela soit plus esthétique pour la modélisation finale, nous allons créer une carte PCB pour rassembler tous ces composants dessus. On utilisera le logiciel Altium Designer pour cela.&lt;br /&gt;
&lt;br /&gt;
Avant de représenter notre circuit général, nous allons commencer par créer une librairie rassemblant tous les composants que nous utiliserons par la suite, en particulier nos composants CMS (accéléromètre et résistances). Pour ce qui est des LEDs et du buzzer, qui sont traversants, nous pourrons utiliser des headers classiques.&lt;br /&gt;
&lt;br /&gt;
Il a donc fallu créer le schematic ainsi que l'empreinte de nos composants CMS. Voici un exemple avec notre accéléromètre :&lt;br /&gt;
[[Fichier:Accelerosch.PNG|500px|thumb|left|Schematic de l'accéléromètre]]&lt;br /&gt;
[[Fichier:Acceleropcb.PNG|500px|thumb|center|Empreinte PCB de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les fichiers Altium sont disponibles sur notre dépôt GIT. Après cela, nous pouvons maintenant construire notre schematic du montage entier et ensuite le fichier PCB afin de pouvoir graver notre circuit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après quelques modifications sur le montage prévu initialement, c'est-à-dire en enlevant une résistance entre un GPIO et l'alimentation de l'accéléromètre ainsi qu'en rajoutant des résistances pull-up sur les broches de notre liaison i2C (SDA et SCL) et un bouton poussoir en plus pour permettre un reset du RFDuino, nous avons pu créer notre schematic global pour en faire un PCB et l'exporter au format Gerber. De ce fait, le service EEI de Polytech pourra réaliser la gravure de notre carte PCB.&lt;br /&gt;
&lt;br /&gt;
Voici quelques photos pour illustrer notre projet sur Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Finalproto_sch.PNG|400px|thumb|left|Schematic du montage final]]&lt;br /&gt;
[[Fichier:Finalproto_pcb.PNG|400px|thumb|center|PCB du montage final]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On retrouve sur notre PCB final les headers, respectivement de 8 et 5 pins, de part et d'autre de la carte, qui représentent le RFDuino, où nous souderons des broches pour qu'elles puissent être intégrées au RFDuino. On note la présence de 5 autres headers de 2 pins, dont 3 pour des LEDs puis les 2 autres pour le buzzer et le bouton poussoir. Ce qui reste sont les composants CMS avec plusieurs composants à 2 pattes qui sont toutes les résistances de notre montage, celles de protection pour les LEDs et les pull-ups pour l'accéléromètre. Le dernier composant à 8 pattes est donc bien l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quelques difficultés ont été rencontrées durant ce travail notamment concernant les contraintes de construction sur le PCB final. En effet, les composants CMS choisis (surtout l'accéléromètre) étant parfois très petits, Altium n'accepte pas forcément le faible espacement entre les différentes pattes des composants, ce qui pose problème lors de la compilation. De plus, le plan de masse ne prenait pas en compte tous les éléments devant être rattachés à la masse. Il a fallu légèrement déplacer les headers représentant le RFDuino pour que cela soit possible. Il faudra alors peut-être légèrement plier les broches qui viendront s'intégrer sur le RFDuino pour ajouter notre PCB sur le RFDuino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons envoyé nos fichiers Altium au service EEI afin qu'il puisse réaliser physiquement notre carte. Nous nous retrouvons donc avec notre carte PCB récupérée auprès du service EEI. Voici le rendu :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:P46_carte.jpg|400px|thumb|center|Fabrication de notre carte PCB]]&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=40805</id>
		<title>IMA4 2016/2017 P46 : Aide anti-gaspillage alimentaire</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=40805"/>
				<updated>2017-03-27T15:53:32Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : /* Semaine 10 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
En France, nous jetons en moyenne 21% des aliments que nous achetons, ce qui représente une perte de 100 à 160 euros par an par habitant. Cela est en partie dû à la date limite de consommation associée à chaque produit. En effet, à partir du moment où cette date sera dépassée le consommateur jettera les produits concernés sans réfléchir, même si ceux-ci peuvent parfois être encore mangeables. Plutôt que d'essayer de les convaincre du contraire, il serait judicieux de proposer aux adeptes du gaspillage une aide permettant de gérer tous les aliments dont ils disposent chez eux afin d'éviter la surprise de tomber sur plusieurs produits périmés lorsqu'ils ouvrent la porte de leur frigo. &lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Ce projet permet d'aider les utilisateurs d'une part à mémoriser les denrées périssables qu'ils disposent dans leur réserve alimentaire et d'autre part d'avertir l'utilisateur qu'un événement important a lieu. Ceci peut être une notification qu'un aliment va bientôt dépasser sa date de péremption, que la porte du frigidaire est restée ouverte ou encore que le nombre d'aliments dans la réserve devient critique et qu'il faudra de nouveau l'alimenter. Enfin, le système aidera l'utilisateur à trouver des idées de repas pouvant permettre de consommer les aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Notre prototype permettra d'éviter le gaspillage alimentaire ainsi que d'aider l'utilisateur dans sa gestion du stockage d'aliments.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
&lt;br /&gt;
Notre système sera composé de 3 éléments. &lt;br /&gt;
&lt;br /&gt;
Premièrement, un ou des smartphones appartenant aux utilisateurs. Ces derniers permettront de scanner grâce à son appareil photo, le code barre du produit ainsi que sa date de péremption. Il servira aussi d'interface utilisateur pour notre système. En effet, c'est par cet outil que l'utilisateur pourra lister tous les aliments que l'utilisateur a dans sa base et tout ça en les triant par date de péremption, ou encore voir les recettes possibles pour consommer des aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Deuxièmement, un serveur, de type Raspberry, qui permettra de stocker la base de donnée contenant les aliments de la réserve. Ce serveur sera connecté par wifi.&lt;br /&gt;
 &lt;br /&gt;
Troisièmement, un contrôleur (Rfduino) qui comportera une LED pour indiquer la mise sous tension du contrôleur, une LED pour prévenir l'utilisateur qu'un aliment va bientôt passer sa date de péremption et une dernière LED pour prévenir l'utilisateur que son niveau de réserve est critique ainsi qu'un buzzer et un accéléromètre pour buzzer quand la porte du frigo est restée trop longtemps ouverte. Ce dernier sera fixé au frigo par l'intermédiaire d'un dispositif adapté qui sera un système aimanté qui se pose sur le frigo.&lt;br /&gt;
&lt;br /&gt;
Nous implémenterons donc une application mobile Android qui fera le lien entre les 2 autres systèmes.&lt;br /&gt;
&lt;br /&gt;
Pour la partie électronique que nous aurons à réaliser, nous utiliserons une Breadboard pour faire des premiers tests puis nous créerons une carte PCB pour notre montage final.&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
On utilisera une Raspberry Pi en guise de serveur pour pouvoir s'occuper du stockage de toutes les données dans notre projet puisque notre contrôleur sera incapable de les contenir, ce n'est d'ailleurs pas son but ici.&lt;br /&gt;
&lt;br /&gt;
Notre smartphone fera donc le lien entre notre base de données et notre système embarqué par l'intermédiaire de l'application mobile.&lt;br /&gt;
&lt;br /&gt;
Nous prendrons ici un RFduino puisque celui-ci nous permet d'ajouter des modules comme bon nous semble afin d'adapter le système aux besoins de notre application. Il est également parfaitement compatible avec les applications Android. De plus, nous avons un Bluetooth directement intégré au RFduino pour s'assurer que les liaisons RFduino-application mobile se fassent correctement. &lt;br /&gt;
On notera également que ce contrôleur consomme peu de courant et ne demande qu'une faible tension d'alimentation, critères importants pour ce genre de projet. C'est la raison principale de son utilisation pour être utilisé comme interface physique sur le frigo, en ajoutant également sa taille réduite comparée à la Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
&lt;br /&gt;
Nous avons donc besoin du matériel suivant :&lt;br /&gt;
&lt;br /&gt;
*Raspberry Pi.&lt;br /&gt;
*Clef wifi&lt;br /&gt;
*RFduino (RFD22102 DIP Board, RFD22121 USB Shield, RFD22126 Dual AAA battery shield).&lt;br /&gt;
*2 piles AAA.&lt;br /&gt;
*3 leds tranversantes.&lt;br /&gt;
*3 Résistances 330 Ohm.&lt;br /&gt;
*1 Résistance 10 kOhm.&lt;br /&gt;
*Un buzzer.&lt;br /&gt;
*Accéléromètre.&lt;br /&gt;
*Aimants&lt;br /&gt;
*Un boîtier permettant d'intégrer la RFduino + fixation sur le frigo (modélisation à voir).&lt;br /&gt;
&lt;br /&gt;
Pour le buzzer, l'accéléromètre et les résistances, nous choisirons des composants CMS pour nous permettre d'avoir une carte plus petite.&lt;br /&gt;
&lt;br /&gt;
===Calendrier prévisionnel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Liste des tâches à effectuer====&lt;br /&gt;
&lt;br /&gt;
* Configurer la Raspberry :&lt;br /&gt;
** Installer et configurer le serveur.&lt;br /&gt;
** Créer le diagramme UML de notre future base de données.&lt;br /&gt;
** Créer la base sur le serveur.&lt;br /&gt;
** Configurer la connexion WiFi.&lt;br /&gt;
&lt;br /&gt;
* Monter et programmer la RFduino :&lt;br /&gt;
** Connecter les différents modules au RFduino (accéléromètre, LEDs, buzzer, Batterie, module Bluetooth).&lt;br /&gt;
** Récupérer les consignes du smartphone grâce au Bluetooth.&lt;br /&gt;
** Programmer le comportement du RFduino en fonction des consignes.&lt;br /&gt;
** Construire le boitier final.&lt;br /&gt;
&lt;br /&gt;
* Implémenter l'application mobile Android :&lt;br /&gt;
** Une première activité permettant de se connecter au RFduino et à la Raspberry.&lt;br /&gt;
** Scanner une date et un code barre.&lt;br /&gt;
** Ajout/suppression d'un aliment dans la base de donnée.&lt;br /&gt;
** Envoi d'une consigne au RFduino.&lt;br /&gt;
** Rendre l'interface utilisateur ergonomique (lister aliments, envoyer vers page de recettes avec l'utilisation des aliments bientôt périmés...).&lt;br /&gt;
&lt;br /&gt;
====Calendrier====&lt;br /&gt;
&lt;br /&gt;
Répartition du temps consacré au projet (120h *2) :&lt;br /&gt;
&lt;br /&gt;
*Partie Raspberry : 60h&lt;br /&gt;
*Partie RFduino : 60h&lt;br /&gt;
*Partie développement mobile : 120h&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
&lt;br /&gt;
===Résumé===&lt;br /&gt;
&lt;br /&gt;
====Semaine 1====&lt;br /&gt;
&lt;br /&gt;
'''23/01''' :  &lt;br /&gt;
* Installation du logiciel Android Studio pour être prêt à commencer l'application mobile.&lt;br /&gt;
* Création du Repository Git sur GitHub : https://github.com/FrancoisLefevre12/Optali.git&lt;br /&gt;
* Réalisation de différents schémas fonctionnels pour se donner une idée du travail à effectuer, aussi bien du software que du hardware.&lt;br /&gt;
* Quelques précisions supplémentaires apportées sur le cahier des charges.&lt;br /&gt;
* Ajout de liens de référence pour la liste de matériel à acheter.&lt;br /&gt;
&lt;br /&gt;
'''25/01''' :  &lt;br /&gt;
* Précision des composants requis (accéléromètre, buzzer, LEDs, résistances).&lt;br /&gt;
* Écriture du montage à la main.&lt;br /&gt;
* Étude du fonctionnement de l'accéléromètre, du buzzer.&lt;br /&gt;
* Écriture de la structure de l'application à la main.&lt;br /&gt;
&lt;br /&gt;
'''26/01''' :&lt;br /&gt;
*Réalisation graphique de la première page de l'application.&lt;br /&gt;
*Conception du schéma électrique pour tous les composants connectés au RFduino.&lt;br /&gt;
&lt;br /&gt;
====Semaine 2====&lt;br /&gt;
&lt;br /&gt;
'''30/01''' :&lt;br /&gt;
*Réalisation du diagramme UML de la base de données qui sera stockée sur la Raspberry Pi&lt;br /&gt;
*Installation de l'outil de développement mobile sur le second PC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''01/02''' :&lt;br /&gt;
*Nous nous sommes d'abord rendus compte que la résistance entre un des GPIO et l'accéléromètre était inutile, nos premiers calculs étaient erronés. Nous ne la garderons donc pas sur notre schéma électrique final.&lt;br /&gt;
*Avancement sur la partie application mobile : réalisation de la page &amp;quot;Ajout&amp;quot; sur laquelle nous tomberons après avoir cliquer sur &amp;quot;ajout&amp;quot; sur la page principale de l'application. Nous avons étendu l'activité principale jusqu'à cette nouvelle activité &amp;quot;Ajout&amp;quot;.&lt;br /&gt;
*Nous avons récupéré notre Raspberry Pi pour commencer à installer notre base de données dessus. Nous avons actuellement quelques problèmes pour nous connecter sur la Raspberry. Nous travaillons sur ce point.&lt;br /&gt;
&lt;br /&gt;
'''02/02''' :&lt;br /&gt;
* Application mobile : Mise en place des LEDs sur la home page et de la zone de notification avec les messages associés.&lt;br /&gt;
&lt;br /&gt;
====Semaine 3====&lt;br /&gt;
&lt;br /&gt;
'''06/02''' :&lt;br /&gt;
*Nous arrivons à accéder à la Raspberry via le port série de celle-ci. Nous avons également configuré sa connexion Ethernet afin de pouvoir télécharger des paquets dessus et installer notre base de données. &lt;br /&gt;
*Nous rencontrions des problèmes sur le second PC de travail pour récupérer le projet Optali sur Android Studio via notre dépôt GIT. Nous avons pu rectifier ce souci.&lt;br /&gt;
&lt;br /&gt;
'''08/02''' :&lt;br /&gt;
*Tentative d'établissement d'un point d'accès WiFi sur notre Raspberry. Nous n'avons pas réussi pour le moment.&lt;br /&gt;
*Restructuration du Repository git.&lt;br /&gt;
*Essai d'importation de la librairie Zxing qui permettra de décoder les code-barres.&lt;br /&gt;
&lt;br /&gt;
====Semaine 4====&lt;br /&gt;
&lt;br /&gt;
'''13/02'''&lt;br /&gt;
*Configuration du wifi de la Raspberry. &lt;br /&gt;
*Étude d'une mise en place d'un service web via php.&lt;br /&gt;
&lt;br /&gt;
'''15/02'''&lt;br /&gt;
*Mise en place d'un lecteur de caractère sur l'application. On utilisera tesseract.&lt;br /&gt;
*Début de la création du PCB via Altium designer. Création d'une librairie pour l'accéléromètre qui est un composant CMS assez spécial. On pourra cependant utiliser des headers classiques pour le buzzer et les LEDs puisque ce sont des composants traversants.&lt;br /&gt;
*Création des premiers fichiers php de connection à la base de donnée et d'insertion d'aliments. Tous ces fichiers seront déposés de la même manière sur le dépôt git.&lt;br /&gt;
&lt;br /&gt;
'''16/02'''&lt;br /&gt;
*Adaptation avec prise en compte des cas du code php d'insertion de produits par requête sur la base de donnée.&lt;br /&gt;
*Ajout du code d'implantation de la base de donnée.&lt;br /&gt;
*Altium: Accéléromètre terminé, mise en place des résistances.&lt;br /&gt;
&lt;br /&gt;
====Semaine 5 (interruption pédagogique)====&lt;br /&gt;
&lt;br /&gt;
'''22/02 (3 heures)'''&lt;br /&gt;
*Installation de l'OS de la raspberry.&lt;br /&gt;
*Installation d'Openssh-server, apache2, php5, iptables, mysql-server, php5-mysql.&lt;br /&gt;
*Redirection des ports du routeur vers la raspberry.&lt;br /&gt;
*Configuration de iptables de la raspberry.&lt;br /&gt;
&lt;br /&gt;
'''23/02 (2 heures)'''&lt;br /&gt;
*Implantation de la base de donnée sur la raspberry pi.&lt;br /&gt;
&lt;br /&gt;
====Semaine 6====&lt;br /&gt;
'''27/02'''&lt;br /&gt;
*Vérification de la syntaxe de l'insertion de valeurs dans la base de donnée.&lt;br /&gt;
*Création des premières requêtes sur la base de donnée.&lt;br /&gt;
*Finalisation du PCB de l'Optali Board.&lt;br /&gt;
&lt;br /&gt;
'''01/03'''&lt;br /&gt;
*Étude et ajout de la librairie volley pour communiquer avec le serveur.&lt;br /&gt;
*Implantation de la fonction d'envoi de données jusqu'au serveur.&lt;br /&gt;
*Après avoir vu avec un professeur, nous avons remarqué que le routage n'était pas adéquat et la disposition des composants n'était pas optimal. Du travail reste donc encore à effectuer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Semaine 7====&lt;br /&gt;
'''06/03'''&lt;br /&gt;
*Correction du fichier post.php&lt;br /&gt;
*Finition du protocole d'ajout d'aliment sur la base de donnée. (Code php et page ajout terminée).&lt;br /&gt;
*PCB terminé.&lt;br /&gt;
*Installation d'arduino IDE, doc arduino collecté.&lt;br /&gt;
&lt;br /&gt;
'''08/03'''&lt;br /&gt;
*Implémentation de la page ListeIngredient.xml et de l'activité listActivity.java.&lt;br /&gt;
*Documentation sur la procédure de communication bluetooth entre la Rfduino et l'application mobile.&lt;br /&gt;
*Obtention de librairie en lien avec cela.&lt;br /&gt;
*Prise en main de programmation rfduino.&lt;br /&gt;
&lt;br /&gt;
'''09/03'''&lt;br /&gt;
*Nous nous sommes rendus compte qu'il était nécessaire de rajouter un bouton poussoir sur notre montage afin de permettre la réinitialisation de notre RFDuino si nécessaire. Nous devons également faire en sorte de pouvoir poser notre carte PCB directement sur notre RFDuino en utilisant des broches. Nous devons donc rajouter ces éléments-ci.&lt;br /&gt;
*Ecriture de la page get.php&lt;br /&gt;
*Premiers tests sur la ListView de l'activité ListActivity.&lt;br /&gt;
&lt;br /&gt;
====Semaine 8====&lt;br /&gt;
'''13/03'''&lt;br /&gt;
*Recherche de pistes concernant la programmation RFDuino. Nous pouvons la détecter en bluetooth via un smartphone Android.&lt;br /&gt;
*Finition du Tablelayout et du code java associé sur la page ListActivity.&lt;br /&gt;
&lt;br /&gt;
'''15/03'''&lt;br /&gt;
*Ajout de la JsonArrayRequest dans la page ListActivity.&lt;br /&gt;
*Nous nous sommes rendus compte au moment de programmer la liaison I2C de l'accéléromètre avec la RFDuino que nous avions oublié de mettre des résistances pull-up entre l'alimentation du composant et les broches SDA et SCL. Les modifications ont donc été faites puis nous avons envoyé finalement notre PCB à la fabrication.&lt;br /&gt;
&lt;br /&gt;
'''16/03'''&lt;br /&gt;
*Changement de stratégie au niveau de la requête JsonArrayRequest. On récupère toute la base et ensuite le traitement sera effectuer dans l'application mobile.&lt;br /&gt;
*Rédaction de la partie Altium du wiki.&lt;br /&gt;
*Recherche de docs sur le système bluetooth du RFduino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Semaine 9====&lt;br /&gt;
'''20/03'''&lt;br /&gt;
*Réalisation de différents réglages pour pouvoir utiliser l'application Optali sur l'Android phone fourni par notre professeur (LG G4c)&lt;br /&gt;
*Recherche de docs concernant la partie java responsable de la communication Bluetooth.&lt;br /&gt;
*Reprise de la solution Tesseract pour la lecture de caractères.&lt;br /&gt;
&lt;br /&gt;
'''21/03''' (séance supplémentaire de 3 heures)&lt;br /&gt;
*Début du développement de la partie communication entre RFDuino et l'appli mobile. Nous pouvons détecter le RFduino à partir de Android Studio mais nous n'arrivons pas encore à nous connecter dessus directement.&lt;br /&gt;
*Finition de la fonctionnalité tesseract. La lecture de caractères est donc maintenant possible.&lt;br /&gt;
&lt;br /&gt;
'''22/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity&lt;br /&gt;
*Connexion possible entre le RFduino et notre appli mobile. Il faut maintenant pouvoir assurer un échange de données via du GATT.&lt;br /&gt;
&lt;br /&gt;
====Semaine 10====&lt;br /&gt;
'''27/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity (suite). Utilisation de la solution postman.&lt;br /&gt;
*Mise à jour du wiki pour la partie Altium.&lt;br /&gt;
*Gestion du dépôt git.&lt;br /&gt;
*Récupération de la carte PCB au service EEI.&lt;br /&gt;
&lt;br /&gt;
===Premières idées===&lt;br /&gt;
&lt;br /&gt;
Voici les premières idées de l'application mobile et du composant fixé sur le frigo.&lt;br /&gt;
[[Fichier:Optali_v1.jpg|400px|thumb|left|Optali version 1]]&lt;br /&gt;
[[Fichier:OptaliBox_v1.jpg|400px|thumb|center|OptaliBox version 1]]&lt;br /&gt;
[[Fichier:P46_schema.jpg|400px|thumb|center|Schéma électrique version 1]]&lt;br /&gt;
&lt;br /&gt;
En s'intéressant aux différentes datasheets ou données constructeur des composants que nous voulons utiliser, nous trouvons indispensable d'utiliser des résistances de 330 Ohms pour l'utilisation des LEDs, pour éviter de les griller.&lt;br /&gt;
&lt;br /&gt;
Edit : Retrait de la résistance R2.&lt;br /&gt;
&lt;br /&gt;
Concernant l'accéléromètre, nous avons choisi un modèle qui nous permet de brancher directement ce module sur une broche du RFDuino. On branchera directement les GPIOs de la RFduino sur les ports SDA et SCL de l'accéléromètre qui correspondent à l'interface I2C pour pouvoir communiquer. On utilisera aussi la broche INT1 pour pouvoir générer des interruptions directement depuis l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
On connectera le buzzer directement à une broche de la RFduino aussi. Concernant celui-ci il reste une incertitude puisqu'on ne trouve aucune information sur le courant à fournir pour l'alimentation de ce composant sur sa datasheet. Après différentes recherches sur Internet, il pourrait être nécessaire d'utiliser un montage amplificateur à transistor comme un émetteur commun pour booster le courant en sortie d'une broche GPIO. Quelques buzzers trouvés avec des données constructeur montrent que ce type de composant nécessite généralement un courant d'environ 30 mA. Nous verrons dans la pratique si cela sera vraiment nécessaire. Par sécurité, on ajoutera un transistor bipolaire dans la liste de matériel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:screen_LED.png|400px|thumb|left|Données constructeur pour LEDs]]&lt;br /&gt;
[[Fichier:screen_accel.png|400px|thumb|center|Datasheet de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
===Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
====Configuration école====&lt;br /&gt;
&lt;br /&gt;
*Pour configurer notre Raspberry Pi, nous utilisons son port série et &amp;quot;minicom&amp;quot;. Pour pouvoir télécharger des paquets, il fallait la connecter au réseau. Nous lui avons donc affecté une adresse IP fixe avec le fichier /etc/network/interfaces. Voici les modifications qui ont été apportées : &lt;br /&gt;
&lt;br /&gt;
   auto eth0&lt;br /&gt;
   iface eth0 inet static&lt;br /&gt;
   address 172.26.78.15&lt;br /&gt;
   netmask 255.255.240.0&lt;br /&gt;
   gateway 172.26.79.254&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il a également fallu ajouter la commande &amp;quot;export http_proxy=http://proxy.polytech-lille.fr:3128&amp;quot; (il faudra effectuer cette commande à chaque démarrage de la Pi) pour pouvoir utiliser le proxy de l'école. &lt;br /&gt;
Nous avons de plus modifier le fichier /etc/resolv.conf avec la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
   nameserver 193.48.57.34&lt;br /&gt;
&lt;br /&gt;
Malgré cela, nous avions des soucis pour nous connecter au réseau. Il y avait en fait un processus dhcp en tâche de fond qui nous empêchait de garder le contenu de resolv.conf. Il a donc fallu trouver ce processus pour le &amp;quot;kill&amp;quot; et pouvoir accéder correctement au réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons du coup pu installer postgresql pour pouvoir configurer une base de données sur notre Pi.&lt;br /&gt;
&lt;br /&gt;
====Configuration à domicile====&lt;br /&gt;
&lt;br /&gt;
Pour nous mettre dans une situation plus fidèle à notre projet, nous avons configuré la raspberry à domicile.&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abords installé Raspbian, puis installé les paquets nécessaire au fonctionnement du serveur.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Openssh-server''': permettre d'accès à distance à la raspberry pour pouvoir y accéder depuis l'école.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Iptables''': pour sécuriser les ports non utilisé et libérer l'accès aux ports qui nous intéressent (ssh 22,http 80,https 443).&amp;lt;br&amp;gt;&lt;br /&gt;
- '''apache2, php5, mysql-server''' : pour mettre en place notre service web.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons rediriger les ports 80 et 22 du routeur pour pouvoir accéder à la raspberry de l'extérieur.&lt;br /&gt;
&lt;br /&gt;
Pour finir, nous avons créer un fichier de config iptables permettant de sécuriser un minimum la base de donnée et de permettre d'autoriser la communication des ports 22, 80 et 443 correspondants aux ports ssh, http et https. le fichier de configuration a été déposé dans le dépôt git. Il nous a fallut le rendre exécutable via un chmod. Puis pour l'exécuter à chaque démarrage du system, dans le fichier /etc/init.d/ taper : &lt;br /&gt;
&lt;br /&gt;
    sudo update-rc.d firewall defaults (si notrefichier s'appelle firewall et s'il est dans init.d)&lt;br /&gt;
&lt;br /&gt;
===Base de donnée===&lt;br /&gt;
&lt;br /&gt;
Nos données alimentaires disponibles par toute la famille doivent être stocké sur un serveur de base de donnée externe (tel une Raspberry pi). Nous nous proposons de créer le diagramme UML représentant cette future base de donnée.&lt;br /&gt;
[[Fichier:Optali_UML.jpg|700px|thumb|center|Diagramme UML base de donnée]]&lt;br /&gt;
&lt;br /&gt;
On créera donc 3 entités. Date, Product et Recipe. &lt;br /&gt;
&lt;br /&gt;
- Product rassemble les aliments qui sont ou ont été dans la réserve alimentaire. NbProdIn permet de connaître le nombre de produits identiques (possibilité de date différentes mais pas de doublons et on garde l'information de quantité. NbProdBought donne une information sur le nombre de produits identique ayant été acheté depuis la mise en service de la base de donnée. Ainsi nous pourrons par la suite proposer une liste de course à l'utilisateur en fonction de la fréquence d'achat des produits.&lt;br /&gt;
&lt;br /&gt;
- Recipe contient les recettes que pourra rentrer l'utilisateur sur l'application. L'utilisateur pourra ainsi se voir proposer des recettes en fonction de ce qu'il a dans son frigo et de ses recettes personnelles.&lt;br /&gt;
&lt;br /&gt;
'''''Edit : On ajoutera une valeur entière dans les tables Date et Unity pour gérer le cas où il existe plusieurs produits (différents ou identiques) avec une date de péremption équivalente. On les appellera NbDate la valeur dans la table Date et NbUnity dans la table Unity. On leur ajoutera de même une clef primaire IdUnity et IdListProduct'''''&lt;br /&gt;
&lt;br /&gt;
On utilisera MySql pour la gestion de nos bases de données. &lt;br /&gt;
La syntaxe pour l'implanter dans la base de donnée à été jointe au dépôt git.&lt;br /&gt;
&lt;br /&gt;
Pour lancer my SQL, on tapera:&lt;br /&gt;
&lt;br /&gt;
   mysql -h localhost -u root -p&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Web service===&lt;br /&gt;
&lt;br /&gt;
====Page init.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet d'initier l'accès à la base de donnée sur le serveur. Elle est requise pour les pages qui suivent.&lt;br /&gt;
&lt;br /&gt;
====Page post.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet l'insertion d'un produit et d'une date via l'application mobile. Elle prend donc ces deux arguments et les insère dans les tables Unity, Product et Date.&lt;br /&gt;
&lt;br /&gt;
====Page get.php====&lt;br /&gt;
&lt;br /&gt;
Page qui envoie la liste des aliments avec leur nom, leur date, leur quantité dans le frigo, la quantité d'exemplaires acheté en tout depuis la mise en place de l'appareil. Le tri se fera directement dans l'application mobile. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Application Mobile===&lt;br /&gt;
&lt;br /&gt;
====Home page====&lt;br /&gt;
&lt;br /&gt;
Page d'accueil permettant d'accéder aux pages d'ajout et de liste des produits disponibles. &amp;lt;br&amp;gt;&lt;br /&gt;
La page permet aussi d'effectuer la connexion entre la rfduino et l'application mobile. Elle montre les alertes (signaux) à l'utilisateur &lt;br /&gt;
et écrit leur signification.&lt;br /&gt;
&lt;br /&gt;
====Page d'ajout====&lt;br /&gt;
&lt;br /&gt;
Pour ajouter un produit et lire une date on utilisera un champ editText pour permettre à l'utilisateur d'écrire &amp;quot;Manuellement&amp;quot; dedans grâce au clavier du smartphone.&amp;lt;br&amp;gt;&lt;br /&gt;
De plus on utilise un bouton qui appellera la caméra pour détecter les caractères d'un produit ou d'une date. Au début nous voulions utiliser un détecteur de code barre, nous l'avons implémenté mais nous avons remarqué que la mise au point sur une surface non plane prend du temps d'autant plus qu'il faut questionner une base de donnée contenant tous les numéro de codes barres utilisés. Nous avons donc prit la décision d'utiliser uniquement la lecture de caractère et nous créerons une liste déroulante sous l'editText pour faciliter l'insertion d'un produit qui a déjà été ajouté. Pour la lecture de caractère, nous utilisons la librairie tesseract.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'envoi, nous utilisons la librairie Volley développé par google.&lt;br /&gt;
&lt;br /&gt;
====Page Liste====&lt;br /&gt;
&lt;br /&gt;
Permet de lister les produits dans la base de donnée. Une série de boutons radio permettent de trier les produits par ordre alphabétique, par date de péremption, par nombre d’occurrence dans la réserve alimentaire, par nombre d'achat depuis la mise en place du système.&amp;lt;br&amp;gt;&lt;br /&gt;
Une colonne permet de sélectionner les aliments désirés (par checkBox) pour ensuite les supprimer via un button &amp;quot;suppr&amp;quot; ou les choisir pour trouver des recettes qui les utilisent.&amp;lt;br&amp;gt;&lt;br /&gt;
Un EditText permet d'effectuer une recherche sur la base de donnée.&lt;br /&gt;
&lt;br /&gt;
===Altium Designer===&lt;br /&gt;
&lt;br /&gt;
Pour permettre au RFDuino de communiquer avec les différents composants, nous aurons besoin de quelques composants électroniques. Afin que cela soit plus esthétique pour la modélisation finale, nous allons créer une carte PCB pour rassembler tous ces composants dessus. On utilisera le logiciel Altium Designer pour cela.&lt;br /&gt;
&lt;br /&gt;
Avant de représenter notre circuit général, nous allons commencer par créer une librairie rassemblant tous les composants que nous utiliserons par la suite, en particulier nos composants CMS (accéléromètre et résistances). Pour ce qui est des LEDs et du buzzer, qui sont traversants, nous pourrons utiliser des headers classiques.&lt;br /&gt;
&lt;br /&gt;
Il a donc fallu créer le schematic ainsi que l'empreinte de nos composants CMS. Voici un exemple avec notre accéléromètre :&lt;br /&gt;
[[Fichier:Accelerosch.PNG|500px|thumb|left|Schematic de l'accéléromètre]]&lt;br /&gt;
[[Fichier:Acceleropcb.PNG|500px|thumb|center|Empreinte PCB de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les fichiers Altium sont disponibles sur notre dépôt GIT. Après cela, nous pouvons maintenant construire notre schematic du montage entier et ensuite le fichier PCB afin de pouvoir graver notre circuit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après quelques modifications sur le montage prévu initialement, c'est-à-dire en enlevant une résistance entre un GPIO et l'alimentation de l'accéléromètre ainsi qu'en rajoutant des résistances pull-up sur les broches de notre liaison i2C (SDA et SCL) et un bouton poussoir en plus pour permettre un reset du RFDuino, nous avons pu créer notre schematic global pour en faire un PCB et l'exporter au format Gerber. De ce fait, le service EEI de Polytech pourra réaliser la gravure de notre carte PCB.&lt;br /&gt;
&lt;br /&gt;
Voici quelques photos pour illustrer notre projet sur Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Finalproto_sch.PNG|400px|thumb|left|Schematic du montage final]]&lt;br /&gt;
[[Fichier:Finalproto_pcb.PNG|400px|thumb|center|PCB du montage final]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On retrouve sur notre PCB final les headers, respectivement de 8 et 5 pins, de part et d'autre de la carte, qui représentent le RFDuino, où nous souderons des broches pour qu'elles puissent être intégrées au RFDuino. On note la présence de 5 autres headers de 2 pins, dont 3 pour des LEDs puis les 2 autres pour le buzzer et le bouton poussoir. Ce qui reste sont les composants CMS avec plusieurs composants à 2 pattes qui sont toutes les résistances de notre montage, celles de protection pour les LEDs et les pull-ups pour l'accéléromètre. Le dernier composant à 8 pattes est donc bien l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quelques difficultés ont été rencontrées durant ce travail notamment concernant les contraintes de construction sur le PCB final. En effet, les composants CMS choisis (surtout l'accéléromètre) étant parfois très petits, Altium n'accepte pas forcément le faible espacement entre les différentes pattes des composants, ce qui pose problème lors de la compilation. De plus, le plan de masse ne prenait pas en compte tous les éléments devant être rattachés à la masse. Il a fallu légèrement déplacer les headers représentant le RFDuino pour que cela soit possible. Il faudra alors peut-être légèrement plier les broches qui viendront s'intégrer sur le RFDuino pour ajouter notre PCB sur le RFDuino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons envoyé nos fichiers Altium au service EEI afin qu'il puisse réaliser physiquement notre carte. Nous nous retrouvons donc avec notre carte PCB récupérée auprès du service EEI. Voici le rendu :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:P46_carte.jpg|400px|thumb|center|Fabrication de notre carte PCB]]&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=40804</id>
		<title>IMA4 2016/2017 P46 : Aide anti-gaspillage alimentaire</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=40804"/>
				<updated>2017-03-27T15:53:14Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : /* Semaine 10 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
En France, nous jetons en moyenne 21% des aliments que nous achetons, ce qui représente une perte de 100 à 160 euros par an par habitant. Cela est en partie dû à la date limite de consommation associée à chaque produit. En effet, à partir du moment où cette date sera dépassée le consommateur jettera les produits concernés sans réfléchir, même si ceux-ci peuvent parfois être encore mangeables. Plutôt que d'essayer de les convaincre du contraire, il serait judicieux de proposer aux adeptes du gaspillage une aide permettant de gérer tous les aliments dont ils disposent chez eux afin d'éviter la surprise de tomber sur plusieurs produits périmés lorsqu'ils ouvrent la porte de leur frigo. &lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Ce projet permet d'aider les utilisateurs d'une part à mémoriser les denrées périssables qu'ils disposent dans leur réserve alimentaire et d'autre part d'avertir l'utilisateur qu'un événement important a lieu. Ceci peut être une notification qu'un aliment va bientôt dépasser sa date de péremption, que la porte du frigidaire est restée ouverte ou encore que le nombre d'aliments dans la réserve devient critique et qu'il faudra de nouveau l'alimenter. Enfin, le système aidera l'utilisateur à trouver des idées de repas pouvant permettre de consommer les aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Notre prototype permettra d'éviter le gaspillage alimentaire ainsi que d'aider l'utilisateur dans sa gestion du stockage d'aliments.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
&lt;br /&gt;
Notre système sera composé de 3 éléments. &lt;br /&gt;
&lt;br /&gt;
Premièrement, un ou des smartphones appartenant aux utilisateurs. Ces derniers permettront de scanner grâce à son appareil photo, le code barre du produit ainsi que sa date de péremption. Il servira aussi d'interface utilisateur pour notre système. En effet, c'est par cet outil que l'utilisateur pourra lister tous les aliments que l'utilisateur a dans sa base et tout ça en les triant par date de péremption, ou encore voir les recettes possibles pour consommer des aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Deuxièmement, un serveur, de type Raspberry, qui permettra de stocker la base de donnée contenant les aliments de la réserve. Ce serveur sera connecté par wifi.&lt;br /&gt;
 &lt;br /&gt;
Troisièmement, un contrôleur (Rfduino) qui comportera une LED pour indiquer la mise sous tension du contrôleur, une LED pour prévenir l'utilisateur qu'un aliment va bientôt passer sa date de péremption et une dernière LED pour prévenir l'utilisateur que son niveau de réserve est critique ainsi qu'un buzzer et un accéléromètre pour buzzer quand la porte du frigo est restée trop longtemps ouverte. Ce dernier sera fixé au frigo par l'intermédiaire d'un dispositif adapté qui sera un système aimanté qui se pose sur le frigo.&lt;br /&gt;
&lt;br /&gt;
Nous implémenterons donc une application mobile Android qui fera le lien entre les 2 autres systèmes.&lt;br /&gt;
&lt;br /&gt;
Pour la partie électronique que nous aurons à réaliser, nous utiliserons une Breadboard pour faire des premiers tests puis nous créerons une carte PCB pour notre montage final.&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
On utilisera une Raspberry Pi en guise de serveur pour pouvoir s'occuper du stockage de toutes les données dans notre projet puisque notre contrôleur sera incapable de les contenir, ce n'est d'ailleurs pas son but ici.&lt;br /&gt;
&lt;br /&gt;
Notre smartphone fera donc le lien entre notre base de données et notre système embarqué par l'intermédiaire de l'application mobile.&lt;br /&gt;
&lt;br /&gt;
Nous prendrons ici un RFduino puisque celui-ci nous permet d'ajouter des modules comme bon nous semble afin d'adapter le système aux besoins de notre application. Il est également parfaitement compatible avec les applications Android. De plus, nous avons un Bluetooth directement intégré au RFduino pour s'assurer que les liaisons RFduino-application mobile se fassent correctement. &lt;br /&gt;
On notera également que ce contrôleur consomme peu de courant et ne demande qu'une faible tension d'alimentation, critères importants pour ce genre de projet. C'est la raison principale de son utilisation pour être utilisé comme interface physique sur le frigo, en ajoutant également sa taille réduite comparée à la Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
&lt;br /&gt;
Nous avons donc besoin du matériel suivant :&lt;br /&gt;
&lt;br /&gt;
*Raspberry Pi.&lt;br /&gt;
*Clef wifi&lt;br /&gt;
*RFduino (RFD22102 DIP Board, RFD22121 USB Shield, RFD22126 Dual AAA battery shield).&lt;br /&gt;
*2 piles AAA.&lt;br /&gt;
*3 leds tranversantes.&lt;br /&gt;
*3 Résistances 330 Ohm.&lt;br /&gt;
*1 Résistance 10 kOhm.&lt;br /&gt;
*Un buzzer.&lt;br /&gt;
*Accéléromètre.&lt;br /&gt;
*Aimants&lt;br /&gt;
*Un boîtier permettant d'intégrer la RFduino + fixation sur le frigo (modélisation à voir).&lt;br /&gt;
&lt;br /&gt;
Pour le buzzer, l'accéléromètre et les résistances, nous choisirons des composants CMS pour nous permettre d'avoir une carte plus petite.&lt;br /&gt;
&lt;br /&gt;
===Calendrier prévisionnel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Liste des tâches à effectuer====&lt;br /&gt;
&lt;br /&gt;
* Configurer la Raspberry :&lt;br /&gt;
** Installer et configurer le serveur.&lt;br /&gt;
** Créer le diagramme UML de notre future base de données.&lt;br /&gt;
** Créer la base sur le serveur.&lt;br /&gt;
** Configurer la connexion WiFi.&lt;br /&gt;
&lt;br /&gt;
* Monter et programmer la RFduino :&lt;br /&gt;
** Connecter les différents modules au RFduino (accéléromètre, LEDs, buzzer, Batterie, module Bluetooth).&lt;br /&gt;
** Récupérer les consignes du smartphone grâce au Bluetooth.&lt;br /&gt;
** Programmer le comportement du RFduino en fonction des consignes.&lt;br /&gt;
** Construire le boitier final.&lt;br /&gt;
&lt;br /&gt;
* Implémenter l'application mobile Android :&lt;br /&gt;
** Une première activité permettant de se connecter au RFduino et à la Raspberry.&lt;br /&gt;
** Scanner une date et un code barre.&lt;br /&gt;
** Ajout/suppression d'un aliment dans la base de donnée.&lt;br /&gt;
** Envoi d'une consigne au RFduino.&lt;br /&gt;
** Rendre l'interface utilisateur ergonomique (lister aliments, envoyer vers page de recettes avec l'utilisation des aliments bientôt périmés...).&lt;br /&gt;
&lt;br /&gt;
====Calendrier====&lt;br /&gt;
&lt;br /&gt;
Répartition du temps consacré au projet (120h *2) :&lt;br /&gt;
&lt;br /&gt;
*Partie Raspberry : 60h&lt;br /&gt;
*Partie RFduino : 60h&lt;br /&gt;
*Partie développement mobile : 120h&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
&lt;br /&gt;
===Résumé===&lt;br /&gt;
&lt;br /&gt;
====Semaine 1====&lt;br /&gt;
&lt;br /&gt;
'''23/01''' :  &lt;br /&gt;
* Installation du logiciel Android Studio pour être prêt à commencer l'application mobile.&lt;br /&gt;
* Création du Repository Git sur GitHub : https://github.com/FrancoisLefevre12/Optali.git&lt;br /&gt;
* Réalisation de différents schémas fonctionnels pour se donner une idée du travail à effectuer, aussi bien du software que du hardware.&lt;br /&gt;
* Quelques précisions supplémentaires apportées sur le cahier des charges.&lt;br /&gt;
* Ajout de liens de référence pour la liste de matériel à acheter.&lt;br /&gt;
&lt;br /&gt;
'''25/01''' :  &lt;br /&gt;
* Précision des composants requis (accéléromètre, buzzer, LEDs, résistances).&lt;br /&gt;
* Écriture du montage à la main.&lt;br /&gt;
* Étude du fonctionnement de l'accéléromètre, du buzzer.&lt;br /&gt;
* Écriture de la structure de l'application à la main.&lt;br /&gt;
&lt;br /&gt;
'''26/01''' :&lt;br /&gt;
*Réalisation graphique de la première page de l'application.&lt;br /&gt;
*Conception du schéma électrique pour tous les composants connectés au RFduino.&lt;br /&gt;
&lt;br /&gt;
====Semaine 2====&lt;br /&gt;
&lt;br /&gt;
'''30/01''' :&lt;br /&gt;
*Réalisation du diagramme UML de la base de données qui sera stockée sur la Raspberry Pi&lt;br /&gt;
*Installation de l'outil de développement mobile sur le second PC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''01/02''' :&lt;br /&gt;
*Nous nous sommes d'abord rendus compte que la résistance entre un des GPIO et l'accéléromètre était inutile, nos premiers calculs étaient erronés. Nous ne la garderons donc pas sur notre schéma électrique final.&lt;br /&gt;
*Avancement sur la partie application mobile : réalisation de la page &amp;quot;Ajout&amp;quot; sur laquelle nous tomberons après avoir cliquer sur &amp;quot;ajout&amp;quot; sur la page principale de l'application. Nous avons étendu l'activité principale jusqu'à cette nouvelle activité &amp;quot;Ajout&amp;quot;.&lt;br /&gt;
*Nous avons récupéré notre Raspberry Pi pour commencer à installer notre base de données dessus. Nous avons actuellement quelques problèmes pour nous connecter sur la Raspberry. Nous travaillons sur ce point.&lt;br /&gt;
&lt;br /&gt;
'''02/02''' :&lt;br /&gt;
* Application mobile : Mise en place des LEDs sur la home page et de la zone de notification avec les messages associés.&lt;br /&gt;
&lt;br /&gt;
====Semaine 3====&lt;br /&gt;
&lt;br /&gt;
'''06/02''' :&lt;br /&gt;
*Nous arrivons à accéder à la Raspberry via le port série de celle-ci. Nous avons également configuré sa connexion Ethernet afin de pouvoir télécharger des paquets dessus et installer notre base de données. &lt;br /&gt;
*Nous rencontrions des problèmes sur le second PC de travail pour récupérer le projet Optali sur Android Studio via notre dépôt GIT. Nous avons pu rectifier ce souci.&lt;br /&gt;
&lt;br /&gt;
'''08/02''' :&lt;br /&gt;
*Tentative d'établissement d'un point d'accès WiFi sur notre Raspberry. Nous n'avons pas réussi pour le moment.&lt;br /&gt;
*Restructuration du Repository git.&lt;br /&gt;
*Essai d'importation de la librairie Zxing qui permettra de décoder les code-barres.&lt;br /&gt;
&lt;br /&gt;
====Semaine 4====&lt;br /&gt;
&lt;br /&gt;
'''13/02'''&lt;br /&gt;
*Configuration du wifi de la Raspberry. &lt;br /&gt;
*Étude d'une mise en place d'un service web via php.&lt;br /&gt;
&lt;br /&gt;
'''15/02'''&lt;br /&gt;
*Mise en place d'un lecteur de caractère sur l'application. On utilisera tesseract.&lt;br /&gt;
*Début de la création du PCB via Altium designer. Création d'une librairie pour l'accéléromètre qui est un composant CMS assez spécial. On pourra cependant utiliser des headers classiques pour le buzzer et les LEDs puisque ce sont des composants traversants.&lt;br /&gt;
*Création des premiers fichiers php de connection à la base de donnée et d'insertion d'aliments. Tous ces fichiers seront déposés de la même manière sur le dépôt git.&lt;br /&gt;
&lt;br /&gt;
'''16/02'''&lt;br /&gt;
*Adaptation avec prise en compte des cas du code php d'insertion de produits par requête sur la base de donnée.&lt;br /&gt;
*Ajout du code d'implantation de la base de donnée.&lt;br /&gt;
*Altium: Accéléromètre terminé, mise en place des résistances.&lt;br /&gt;
&lt;br /&gt;
====Semaine 5 (interruption pédagogique)====&lt;br /&gt;
&lt;br /&gt;
'''22/02 (3 heures)'''&lt;br /&gt;
*Installation de l'OS de la raspberry.&lt;br /&gt;
*Installation d'Openssh-server, apache2, php5, iptables, mysql-server, php5-mysql.&lt;br /&gt;
*Redirection des ports du routeur vers la raspberry.&lt;br /&gt;
*Configuration de iptables de la raspberry.&lt;br /&gt;
&lt;br /&gt;
'''23/02 (2 heures)'''&lt;br /&gt;
*Implantation de la base de donnée sur la raspberry pi.&lt;br /&gt;
&lt;br /&gt;
====Semaine 6====&lt;br /&gt;
'''27/02'''&lt;br /&gt;
*Vérification de la syntaxe de l'insertion de valeurs dans la base de donnée.&lt;br /&gt;
*Création des premières requêtes sur la base de donnée.&lt;br /&gt;
*Finalisation du PCB de l'Optali Board.&lt;br /&gt;
&lt;br /&gt;
'''01/03'''&lt;br /&gt;
*Étude et ajout de la librairie volley pour communiquer avec le serveur.&lt;br /&gt;
*Implantation de la fonction d'envoi de données jusqu'au serveur.&lt;br /&gt;
*Après avoir vu avec un professeur, nous avons remarqué que le routage n'était pas adéquat et la disposition des composants n'était pas optimal. Du travail reste donc encore à effectuer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Semaine 7====&lt;br /&gt;
'''06/03'''&lt;br /&gt;
*Correction du fichier post.php&lt;br /&gt;
*Finition du protocole d'ajout d'aliment sur la base de donnée. (Code php et page ajout terminée).&lt;br /&gt;
*PCB terminé.&lt;br /&gt;
*Installation d'arduino IDE, doc arduino collecté.&lt;br /&gt;
&lt;br /&gt;
'''08/03'''&lt;br /&gt;
*Implémentation de la page ListeIngredient.xml et de l'activité listActivity.java.&lt;br /&gt;
*Documentation sur la procédure de communication bluetooth entre la Rfduino et l'application mobile.&lt;br /&gt;
*Obtention de librairie en lien avec cela.&lt;br /&gt;
*Prise en main de programmation rfduino.&lt;br /&gt;
&lt;br /&gt;
'''09/03'''&lt;br /&gt;
*Nous nous sommes rendus compte qu'il était nécessaire de rajouter un bouton poussoir sur notre montage afin de permettre la réinitialisation de notre RFDuino si nécessaire. Nous devons également faire en sorte de pouvoir poser notre carte PCB directement sur notre RFDuino en utilisant des broches. Nous devons donc rajouter ces éléments-ci.&lt;br /&gt;
*Ecriture de la page get.php&lt;br /&gt;
*Premiers tests sur la ListView de l'activité ListActivity.&lt;br /&gt;
&lt;br /&gt;
====Semaine 8====&lt;br /&gt;
'''13/03'''&lt;br /&gt;
*Recherche de pistes concernant la programmation RFDuino. Nous pouvons la détecter en bluetooth via un smartphone Android.&lt;br /&gt;
*Finition du Tablelayout et du code java associé sur la page ListActivity.&lt;br /&gt;
&lt;br /&gt;
'''15/03'''&lt;br /&gt;
*Ajout de la JsonArrayRequest dans la page ListActivity.&lt;br /&gt;
*Nous nous sommes rendus compte au moment de programmer la liaison I2C de l'accéléromètre avec la RFDuino que nous avions oublié de mettre des résistances pull-up entre l'alimentation du composant et les broches SDA et SCL. Les modifications ont donc été faites puis nous avons envoyé finalement notre PCB à la fabrication.&lt;br /&gt;
&lt;br /&gt;
'''16/03'''&lt;br /&gt;
*Changement de stratégie au niveau de la requête JsonArrayRequest. On récupère toute la base et ensuite le traitement sera effectuer dans l'application mobile.&lt;br /&gt;
*Rédaction de la partie Altium du wiki.&lt;br /&gt;
*Recherche de docs sur le système bluetooth du RFduino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Semaine 9====&lt;br /&gt;
'''20/03'''&lt;br /&gt;
*Réalisation de différents réglages pour pouvoir utiliser l'application Optali sur l'Android phone fourni par notre professeur (LG G4c)&lt;br /&gt;
*Recherche de docs concernant la partie java responsable de la communication Bluetooth.&lt;br /&gt;
*Reprise de la solution Tesseract pour la lecture de caractères.&lt;br /&gt;
&lt;br /&gt;
'''21/03''' (séance supplémentaire de 3 heures)&lt;br /&gt;
*Début du développement de la partie communication entre RFDuino et l'appli mobile. Nous pouvons détecter le RFduino à partir de Android Studio mais nous n'arrivons pas encore à nous connecter dessus directement.&lt;br /&gt;
*Finition de la fonctionnalité tesseract. La lecture de caractères est donc maintenant possible.&lt;br /&gt;
&lt;br /&gt;
'''22/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity&lt;br /&gt;
*Connexion possible entre le RFduino et notre appli mobile. Il faut maintenant pouvoir assurer un échange de données via du GATT.&lt;br /&gt;
&lt;br /&gt;
====Semaine 10====&lt;br /&gt;
'''27/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity (suite). Utilisation de la solution postman.&lt;br /&gt;
*Mise à jour du wiki pour la partie Altium.&lt;br /&gt;
*Gestion du dépôt git.&lt;br /&gt;
*Récupération de la carte PCB au service EEI;&lt;br /&gt;
&lt;br /&gt;
===Premières idées===&lt;br /&gt;
&lt;br /&gt;
Voici les premières idées de l'application mobile et du composant fixé sur le frigo.&lt;br /&gt;
[[Fichier:Optali_v1.jpg|400px|thumb|left|Optali version 1]]&lt;br /&gt;
[[Fichier:OptaliBox_v1.jpg|400px|thumb|center|OptaliBox version 1]]&lt;br /&gt;
[[Fichier:P46_schema.jpg|400px|thumb|center|Schéma électrique version 1]]&lt;br /&gt;
&lt;br /&gt;
En s'intéressant aux différentes datasheets ou données constructeur des composants que nous voulons utiliser, nous trouvons indispensable d'utiliser des résistances de 330 Ohms pour l'utilisation des LEDs, pour éviter de les griller.&lt;br /&gt;
&lt;br /&gt;
Edit : Retrait de la résistance R2.&lt;br /&gt;
&lt;br /&gt;
Concernant l'accéléromètre, nous avons choisi un modèle qui nous permet de brancher directement ce module sur une broche du RFDuino. On branchera directement les GPIOs de la RFduino sur les ports SDA et SCL de l'accéléromètre qui correspondent à l'interface I2C pour pouvoir communiquer. On utilisera aussi la broche INT1 pour pouvoir générer des interruptions directement depuis l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
On connectera le buzzer directement à une broche de la RFduino aussi. Concernant celui-ci il reste une incertitude puisqu'on ne trouve aucune information sur le courant à fournir pour l'alimentation de ce composant sur sa datasheet. Après différentes recherches sur Internet, il pourrait être nécessaire d'utiliser un montage amplificateur à transistor comme un émetteur commun pour booster le courant en sortie d'une broche GPIO. Quelques buzzers trouvés avec des données constructeur montrent que ce type de composant nécessite généralement un courant d'environ 30 mA. Nous verrons dans la pratique si cela sera vraiment nécessaire. Par sécurité, on ajoutera un transistor bipolaire dans la liste de matériel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:screen_LED.png|400px|thumb|left|Données constructeur pour LEDs]]&lt;br /&gt;
[[Fichier:screen_accel.png|400px|thumb|center|Datasheet de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
===Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
====Configuration école====&lt;br /&gt;
&lt;br /&gt;
*Pour configurer notre Raspberry Pi, nous utilisons son port série et &amp;quot;minicom&amp;quot;. Pour pouvoir télécharger des paquets, il fallait la connecter au réseau. Nous lui avons donc affecté une adresse IP fixe avec le fichier /etc/network/interfaces. Voici les modifications qui ont été apportées : &lt;br /&gt;
&lt;br /&gt;
   auto eth0&lt;br /&gt;
   iface eth0 inet static&lt;br /&gt;
   address 172.26.78.15&lt;br /&gt;
   netmask 255.255.240.0&lt;br /&gt;
   gateway 172.26.79.254&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il a également fallu ajouter la commande &amp;quot;export http_proxy=http://proxy.polytech-lille.fr:3128&amp;quot; (il faudra effectuer cette commande à chaque démarrage de la Pi) pour pouvoir utiliser le proxy de l'école. &lt;br /&gt;
Nous avons de plus modifier le fichier /etc/resolv.conf avec la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
   nameserver 193.48.57.34&lt;br /&gt;
&lt;br /&gt;
Malgré cela, nous avions des soucis pour nous connecter au réseau. Il y avait en fait un processus dhcp en tâche de fond qui nous empêchait de garder le contenu de resolv.conf. Il a donc fallu trouver ce processus pour le &amp;quot;kill&amp;quot; et pouvoir accéder correctement au réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons du coup pu installer postgresql pour pouvoir configurer une base de données sur notre Pi.&lt;br /&gt;
&lt;br /&gt;
====Configuration à domicile====&lt;br /&gt;
&lt;br /&gt;
Pour nous mettre dans une situation plus fidèle à notre projet, nous avons configuré la raspberry à domicile.&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abords installé Raspbian, puis installé les paquets nécessaire au fonctionnement du serveur.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Openssh-server''': permettre d'accès à distance à la raspberry pour pouvoir y accéder depuis l'école.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Iptables''': pour sécuriser les ports non utilisé et libérer l'accès aux ports qui nous intéressent (ssh 22,http 80,https 443).&amp;lt;br&amp;gt;&lt;br /&gt;
- '''apache2, php5, mysql-server''' : pour mettre en place notre service web.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons rediriger les ports 80 et 22 du routeur pour pouvoir accéder à la raspberry de l'extérieur.&lt;br /&gt;
&lt;br /&gt;
Pour finir, nous avons créer un fichier de config iptables permettant de sécuriser un minimum la base de donnée et de permettre d'autoriser la communication des ports 22, 80 et 443 correspondants aux ports ssh, http et https. le fichier de configuration a été déposé dans le dépôt git. Il nous a fallut le rendre exécutable via un chmod. Puis pour l'exécuter à chaque démarrage du system, dans le fichier /etc/init.d/ taper : &lt;br /&gt;
&lt;br /&gt;
    sudo update-rc.d firewall defaults (si notrefichier s'appelle firewall et s'il est dans init.d)&lt;br /&gt;
&lt;br /&gt;
===Base de donnée===&lt;br /&gt;
&lt;br /&gt;
Nos données alimentaires disponibles par toute la famille doivent être stocké sur un serveur de base de donnée externe (tel une Raspberry pi). Nous nous proposons de créer le diagramme UML représentant cette future base de donnée.&lt;br /&gt;
[[Fichier:Optali_UML.jpg|700px|thumb|center|Diagramme UML base de donnée]]&lt;br /&gt;
&lt;br /&gt;
On créera donc 3 entités. Date, Product et Recipe. &lt;br /&gt;
&lt;br /&gt;
- Product rassemble les aliments qui sont ou ont été dans la réserve alimentaire. NbProdIn permet de connaître le nombre de produits identiques (possibilité de date différentes mais pas de doublons et on garde l'information de quantité. NbProdBought donne une information sur le nombre de produits identique ayant été acheté depuis la mise en service de la base de donnée. Ainsi nous pourrons par la suite proposer une liste de course à l'utilisateur en fonction de la fréquence d'achat des produits.&lt;br /&gt;
&lt;br /&gt;
- Recipe contient les recettes que pourra rentrer l'utilisateur sur l'application. L'utilisateur pourra ainsi se voir proposer des recettes en fonction de ce qu'il a dans son frigo et de ses recettes personnelles.&lt;br /&gt;
&lt;br /&gt;
'''''Edit : On ajoutera une valeur entière dans les tables Date et Unity pour gérer le cas où il existe plusieurs produits (différents ou identiques) avec une date de péremption équivalente. On les appellera NbDate la valeur dans la table Date et NbUnity dans la table Unity. On leur ajoutera de même une clef primaire IdUnity et IdListProduct'''''&lt;br /&gt;
&lt;br /&gt;
On utilisera MySql pour la gestion de nos bases de données. &lt;br /&gt;
La syntaxe pour l'implanter dans la base de donnée à été jointe au dépôt git.&lt;br /&gt;
&lt;br /&gt;
Pour lancer my SQL, on tapera:&lt;br /&gt;
&lt;br /&gt;
   mysql -h localhost -u root -p&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Web service===&lt;br /&gt;
&lt;br /&gt;
====Page init.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet d'initier l'accès à la base de donnée sur le serveur. Elle est requise pour les pages qui suivent.&lt;br /&gt;
&lt;br /&gt;
====Page post.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet l'insertion d'un produit et d'une date via l'application mobile. Elle prend donc ces deux arguments et les insère dans les tables Unity, Product et Date.&lt;br /&gt;
&lt;br /&gt;
====Page get.php====&lt;br /&gt;
&lt;br /&gt;
Page qui envoie la liste des aliments avec leur nom, leur date, leur quantité dans le frigo, la quantité d'exemplaires acheté en tout depuis la mise en place de l'appareil. Le tri se fera directement dans l'application mobile. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Application Mobile===&lt;br /&gt;
&lt;br /&gt;
====Home page====&lt;br /&gt;
&lt;br /&gt;
Page d'accueil permettant d'accéder aux pages d'ajout et de liste des produits disponibles. &amp;lt;br&amp;gt;&lt;br /&gt;
La page permet aussi d'effectuer la connexion entre la rfduino et l'application mobile. Elle montre les alertes (signaux) à l'utilisateur &lt;br /&gt;
et écrit leur signification.&lt;br /&gt;
&lt;br /&gt;
====Page d'ajout====&lt;br /&gt;
&lt;br /&gt;
Pour ajouter un produit et lire une date on utilisera un champ editText pour permettre à l'utilisateur d'écrire &amp;quot;Manuellement&amp;quot; dedans grâce au clavier du smartphone.&amp;lt;br&amp;gt;&lt;br /&gt;
De plus on utilise un bouton qui appellera la caméra pour détecter les caractères d'un produit ou d'une date. Au début nous voulions utiliser un détecteur de code barre, nous l'avons implémenté mais nous avons remarqué que la mise au point sur une surface non plane prend du temps d'autant plus qu'il faut questionner une base de donnée contenant tous les numéro de codes barres utilisés. Nous avons donc prit la décision d'utiliser uniquement la lecture de caractère et nous créerons une liste déroulante sous l'editText pour faciliter l'insertion d'un produit qui a déjà été ajouté. Pour la lecture de caractère, nous utilisons la librairie tesseract.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'envoi, nous utilisons la librairie Volley développé par google.&lt;br /&gt;
&lt;br /&gt;
====Page Liste====&lt;br /&gt;
&lt;br /&gt;
Permet de lister les produits dans la base de donnée. Une série de boutons radio permettent de trier les produits par ordre alphabétique, par date de péremption, par nombre d’occurrence dans la réserve alimentaire, par nombre d'achat depuis la mise en place du système.&amp;lt;br&amp;gt;&lt;br /&gt;
Une colonne permet de sélectionner les aliments désirés (par checkBox) pour ensuite les supprimer via un button &amp;quot;suppr&amp;quot; ou les choisir pour trouver des recettes qui les utilisent.&amp;lt;br&amp;gt;&lt;br /&gt;
Un EditText permet d'effectuer une recherche sur la base de donnée.&lt;br /&gt;
&lt;br /&gt;
===Altium Designer===&lt;br /&gt;
&lt;br /&gt;
Pour permettre au RFDuino de communiquer avec les différents composants, nous aurons besoin de quelques composants électroniques. Afin que cela soit plus esthétique pour la modélisation finale, nous allons créer une carte PCB pour rassembler tous ces composants dessus. On utilisera le logiciel Altium Designer pour cela.&lt;br /&gt;
&lt;br /&gt;
Avant de représenter notre circuit général, nous allons commencer par créer une librairie rassemblant tous les composants que nous utiliserons par la suite, en particulier nos composants CMS (accéléromètre et résistances). Pour ce qui est des LEDs et du buzzer, qui sont traversants, nous pourrons utiliser des headers classiques.&lt;br /&gt;
&lt;br /&gt;
Il a donc fallu créer le schematic ainsi que l'empreinte de nos composants CMS. Voici un exemple avec notre accéléromètre :&lt;br /&gt;
[[Fichier:Accelerosch.PNG|500px|thumb|left|Schematic de l'accéléromètre]]&lt;br /&gt;
[[Fichier:Acceleropcb.PNG|500px|thumb|center|Empreinte PCB de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les fichiers Altium sont disponibles sur notre dépôt GIT. Après cela, nous pouvons maintenant construire notre schematic du montage entier et ensuite le fichier PCB afin de pouvoir graver notre circuit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après quelques modifications sur le montage prévu initialement, c'est-à-dire en enlevant une résistance entre un GPIO et l'alimentation de l'accéléromètre ainsi qu'en rajoutant des résistances pull-up sur les broches de notre liaison i2C (SDA et SCL) et un bouton poussoir en plus pour permettre un reset du RFDuino, nous avons pu créer notre schematic global pour en faire un PCB et l'exporter au format Gerber. De ce fait, le service EEI de Polytech pourra réaliser la gravure de notre carte PCB.&lt;br /&gt;
&lt;br /&gt;
Voici quelques photos pour illustrer notre projet sur Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Finalproto_sch.PNG|400px|thumb|left|Schematic du montage final]]&lt;br /&gt;
[[Fichier:Finalproto_pcb.PNG|400px|thumb|center|PCB du montage final]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On retrouve sur notre PCB final les headers, respectivement de 8 et 5 pins, de part et d'autre de la carte, qui représentent le RFDuino, où nous souderons des broches pour qu'elles puissent être intégrées au RFDuino. On note la présence de 5 autres headers de 2 pins, dont 3 pour des LEDs puis les 2 autres pour le buzzer et le bouton poussoir. Ce qui reste sont les composants CMS avec plusieurs composants à 2 pattes qui sont toutes les résistances de notre montage, celles de protection pour les LEDs et les pull-ups pour l'accéléromètre. Le dernier composant à 8 pattes est donc bien l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quelques difficultés ont été rencontrées durant ce travail notamment concernant les contraintes de construction sur le PCB final. En effet, les composants CMS choisis (surtout l'accéléromètre) étant parfois très petits, Altium n'accepte pas forcément le faible espacement entre les différentes pattes des composants, ce qui pose problème lors de la compilation. De plus, le plan de masse ne prenait pas en compte tous les éléments devant être rattachés à la masse. Il a fallu légèrement déplacer les headers représentant le RFDuino pour que cela soit possible. Il faudra alors peut-être légèrement plier les broches qui viendront s'intégrer sur le RFDuino pour ajouter notre PCB sur le RFDuino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons envoyé nos fichiers Altium au service EEI afin qu'il puisse réaliser physiquement notre carte. Nous nous retrouvons donc avec notre carte PCB récupérée auprès du service EEI. Voici le rendu :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:P46_carte.jpg|400px|thumb|center|Fabrication de notre carte PCB]]&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=40800</id>
		<title>IMA4 2016/2017 P46 : Aide anti-gaspillage alimentaire</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=40800"/>
				<updated>2017-03-27T15:00:45Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : /* Altium Designer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
En France, nous jetons en moyenne 21% des aliments que nous achetons, ce qui représente une perte de 100 à 160 euros par an par habitant. Cela est en partie dû à la date limite de consommation associée à chaque produit. En effet, à partir du moment où cette date sera dépassée le consommateur jettera les produits concernés sans réfléchir, même si ceux-ci peuvent parfois être encore mangeables. Plutôt que d'essayer de les convaincre du contraire, il serait judicieux de proposer aux adeptes du gaspillage une aide permettant de gérer tous les aliments dont ils disposent chez eux afin d'éviter la surprise de tomber sur plusieurs produits périmés lorsqu'ils ouvrent la porte de leur frigo. &lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Ce projet permet d'aider les utilisateurs d'une part à mémoriser les denrées périssables qu'ils disposent dans leur réserve alimentaire et d'autre part d'avertir l'utilisateur qu'un événement important a lieu. Ceci peut être une notification qu'un aliment va bientôt dépasser sa date de péremption, que la porte du frigidaire est restée ouverte ou encore que le nombre d'aliments dans la réserve devient critique et qu'il faudra de nouveau l'alimenter. Enfin, le système aidera l'utilisateur à trouver des idées de repas pouvant permettre de consommer les aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Notre prototype permettra d'éviter le gaspillage alimentaire ainsi que d'aider l'utilisateur dans sa gestion du stockage d'aliments.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
&lt;br /&gt;
Notre système sera composé de 3 éléments. &lt;br /&gt;
&lt;br /&gt;
Premièrement, un ou des smartphones appartenant aux utilisateurs. Ces derniers permettront de scanner grâce à son appareil photo, le code barre du produit ainsi que sa date de péremption. Il servira aussi d'interface utilisateur pour notre système. En effet, c'est par cet outil que l'utilisateur pourra lister tous les aliments que l'utilisateur a dans sa base et tout ça en les triant par date de péremption, ou encore voir les recettes possibles pour consommer des aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Deuxièmement, un serveur, de type Raspberry, qui permettra de stocker la base de donnée contenant les aliments de la réserve. Ce serveur sera connecté par wifi.&lt;br /&gt;
 &lt;br /&gt;
Troisièmement, un contrôleur (Rfduino) qui comportera une LED pour indiquer la mise sous tension du contrôleur, une LED pour prévenir l'utilisateur qu'un aliment va bientôt passer sa date de péremption et une dernière LED pour prévenir l'utilisateur que son niveau de réserve est critique ainsi qu'un buzzer et un accéléromètre pour buzzer quand la porte du frigo est restée trop longtemps ouverte. Ce dernier sera fixé au frigo par l'intermédiaire d'un dispositif adapté qui sera un système aimanté qui se pose sur le frigo.&lt;br /&gt;
&lt;br /&gt;
Nous implémenterons donc une application mobile Android qui fera le lien entre les 2 autres systèmes.&lt;br /&gt;
&lt;br /&gt;
Pour la partie électronique que nous aurons à réaliser, nous utiliserons une Breadboard pour faire des premiers tests puis nous créerons une carte PCB pour notre montage final.&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
On utilisera une Raspberry Pi en guise de serveur pour pouvoir s'occuper du stockage de toutes les données dans notre projet puisque notre contrôleur sera incapable de les contenir, ce n'est d'ailleurs pas son but ici.&lt;br /&gt;
&lt;br /&gt;
Notre smartphone fera donc le lien entre notre base de données et notre système embarqué par l'intermédiaire de l'application mobile.&lt;br /&gt;
&lt;br /&gt;
Nous prendrons ici un RFduino puisque celui-ci nous permet d'ajouter des modules comme bon nous semble afin d'adapter le système aux besoins de notre application. Il est également parfaitement compatible avec les applications Android. De plus, nous avons un Bluetooth directement intégré au RFduino pour s'assurer que les liaisons RFduino-application mobile se fassent correctement. &lt;br /&gt;
On notera également que ce contrôleur consomme peu de courant et ne demande qu'une faible tension d'alimentation, critères importants pour ce genre de projet. C'est la raison principale de son utilisation pour être utilisé comme interface physique sur le frigo, en ajoutant également sa taille réduite comparée à la Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
&lt;br /&gt;
Nous avons donc besoin du matériel suivant :&lt;br /&gt;
&lt;br /&gt;
*Raspberry Pi.&lt;br /&gt;
*Clef wifi&lt;br /&gt;
*RFduino (RFD22102 DIP Board, RFD22121 USB Shield, RFD22126 Dual AAA battery shield).&lt;br /&gt;
*2 piles AAA.&lt;br /&gt;
*3 leds tranversantes.&lt;br /&gt;
*3 Résistances 330 Ohm.&lt;br /&gt;
*1 Résistance 10 kOhm.&lt;br /&gt;
*Un buzzer.&lt;br /&gt;
*Accéléromètre.&lt;br /&gt;
*Aimants&lt;br /&gt;
*Un boîtier permettant d'intégrer la RFduino + fixation sur le frigo (modélisation à voir).&lt;br /&gt;
&lt;br /&gt;
Pour le buzzer, l'accéléromètre et les résistances, nous choisirons des composants CMS pour nous permettre d'avoir une carte plus petite.&lt;br /&gt;
&lt;br /&gt;
===Calendrier prévisionnel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Liste des tâches à effectuer====&lt;br /&gt;
&lt;br /&gt;
* Configurer la Raspberry :&lt;br /&gt;
** Installer et configurer le serveur.&lt;br /&gt;
** Créer le diagramme UML de notre future base de données.&lt;br /&gt;
** Créer la base sur le serveur.&lt;br /&gt;
** Configurer la connexion WiFi.&lt;br /&gt;
&lt;br /&gt;
* Monter et programmer la RFduino :&lt;br /&gt;
** Connecter les différents modules au RFduino (accéléromètre, LEDs, buzzer, Batterie, module Bluetooth).&lt;br /&gt;
** Récupérer les consignes du smartphone grâce au Bluetooth.&lt;br /&gt;
** Programmer le comportement du RFduino en fonction des consignes.&lt;br /&gt;
** Construire le boitier final.&lt;br /&gt;
&lt;br /&gt;
* Implémenter l'application mobile Android :&lt;br /&gt;
** Une première activité permettant de se connecter au RFduino et à la Raspberry.&lt;br /&gt;
** Scanner une date et un code barre.&lt;br /&gt;
** Ajout/suppression d'un aliment dans la base de donnée.&lt;br /&gt;
** Envoi d'une consigne au RFduino.&lt;br /&gt;
** Rendre l'interface utilisateur ergonomique (lister aliments, envoyer vers page de recettes avec l'utilisation des aliments bientôt périmés...).&lt;br /&gt;
&lt;br /&gt;
====Calendrier====&lt;br /&gt;
&lt;br /&gt;
Répartition du temps consacré au projet (120h *2) :&lt;br /&gt;
&lt;br /&gt;
*Partie Raspberry : 60h&lt;br /&gt;
*Partie RFduino : 60h&lt;br /&gt;
*Partie développement mobile : 120h&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
&lt;br /&gt;
===Résumé===&lt;br /&gt;
&lt;br /&gt;
====Semaine 1====&lt;br /&gt;
&lt;br /&gt;
'''23/01''' :  &lt;br /&gt;
* Installation du logiciel Android Studio pour être prêt à commencer l'application mobile.&lt;br /&gt;
* Création du Repository Git sur GitHub : https://github.com/FrancoisLefevre12/Optali.git&lt;br /&gt;
* Réalisation de différents schémas fonctionnels pour se donner une idée du travail à effectuer, aussi bien du software que du hardware.&lt;br /&gt;
* Quelques précisions supplémentaires apportées sur le cahier des charges.&lt;br /&gt;
* Ajout de liens de référence pour la liste de matériel à acheter.&lt;br /&gt;
&lt;br /&gt;
'''25/01''' :  &lt;br /&gt;
* Précision des composants requis (accéléromètre, buzzer, LEDs, résistances).&lt;br /&gt;
* Écriture du montage à la main.&lt;br /&gt;
* Étude du fonctionnement de l'accéléromètre, du buzzer.&lt;br /&gt;
* Écriture de la structure de l'application à la main.&lt;br /&gt;
&lt;br /&gt;
'''26/01''' :&lt;br /&gt;
*Réalisation graphique de la première page de l'application.&lt;br /&gt;
*Conception du schéma électrique pour tous les composants connectés au RFduino.&lt;br /&gt;
&lt;br /&gt;
====Semaine 2====&lt;br /&gt;
&lt;br /&gt;
'''30/01''' :&lt;br /&gt;
*Réalisation du diagramme UML de la base de données qui sera stockée sur la Raspberry Pi&lt;br /&gt;
*Installation de l'outil de développement mobile sur le second PC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''01/02''' :&lt;br /&gt;
*Nous nous sommes d'abord rendus compte que la résistance entre un des GPIO et l'accéléromètre était inutile, nos premiers calculs étaient erronés. Nous ne la garderons donc pas sur notre schéma électrique final.&lt;br /&gt;
*Avancement sur la partie application mobile : réalisation de la page &amp;quot;Ajout&amp;quot; sur laquelle nous tomberons après avoir cliquer sur &amp;quot;ajout&amp;quot; sur la page principale de l'application. Nous avons étendu l'activité principale jusqu'à cette nouvelle activité &amp;quot;Ajout&amp;quot;.&lt;br /&gt;
*Nous avons récupéré notre Raspberry Pi pour commencer à installer notre base de données dessus. Nous avons actuellement quelques problèmes pour nous connecter sur la Raspberry. Nous travaillons sur ce point.&lt;br /&gt;
&lt;br /&gt;
'''02/02''' :&lt;br /&gt;
* Application mobile : Mise en place des LEDs sur la home page et de la zone de notification avec les messages associés.&lt;br /&gt;
&lt;br /&gt;
====Semaine 3====&lt;br /&gt;
&lt;br /&gt;
'''06/02''' :&lt;br /&gt;
*Nous arrivons à accéder à la Raspberry via le port série de celle-ci. Nous avons également configuré sa connexion Ethernet afin de pouvoir télécharger des paquets dessus et installer notre base de données. &lt;br /&gt;
*Nous rencontrions des problèmes sur le second PC de travail pour récupérer le projet Optali sur Android Studio via notre dépôt GIT. Nous avons pu rectifier ce souci.&lt;br /&gt;
&lt;br /&gt;
'''08/02''' :&lt;br /&gt;
*Tentative d'établissement d'un point d'accès WiFi sur notre Raspberry. Nous n'avons pas réussi pour le moment.&lt;br /&gt;
*Restructuration du Repository git.&lt;br /&gt;
*Essai d'importation de la librairie Zxing qui permettra de décoder les code-barres.&lt;br /&gt;
&lt;br /&gt;
====Semaine 4====&lt;br /&gt;
&lt;br /&gt;
'''13/02'''&lt;br /&gt;
*Configuration du wifi de la Raspberry. &lt;br /&gt;
*Étude d'une mise en place d'un service web via php.&lt;br /&gt;
&lt;br /&gt;
'''15/02'''&lt;br /&gt;
*Mise en place d'un lecteur de caractère sur l'application. On utilisera tesseract.&lt;br /&gt;
*Début de la création du PCB via Altium designer. Création d'une librairie pour l'accéléromètre qui est un composant CMS assez spécial. On pourra cependant utiliser des headers classiques pour le buzzer et les LEDs puisque ce sont des composants traversants.&lt;br /&gt;
*Création des premiers fichiers php de connection à la base de donnée et d'insertion d'aliments. Tous ces fichiers seront déposés de la même manière sur le dépôt git.&lt;br /&gt;
&lt;br /&gt;
'''16/02'''&lt;br /&gt;
*Adaptation avec prise en compte des cas du code php d'insertion de produits par requête sur la base de donnée.&lt;br /&gt;
*Ajout du code d'implantation de la base de donnée.&lt;br /&gt;
*Altium: Accéléromètre terminé, mise en place des résistances.&lt;br /&gt;
&lt;br /&gt;
====Semaine 5 (interruption pédagogique)====&lt;br /&gt;
&lt;br /&gt;
'''22/02 (3 heures)'''&lt;br /&gt;
*Installation de l'OS de la raspberry.&lt;br /&gt;
*Installation d'Openssh-server, apache2, php5, iptables, mysql-server, php5-mysql.&lt;br /&gt;
*Redirection des ports du routeur vers la raspberry.&lt;br /&gt;
*Configuration de iptables de la raspberry.&lt;br /&gt;
&lt;br /&gt;
'''23/02 (2 heures)'''&lt;br /&gt;
*Implantation de la base de donnée sur la raspberry pi.&lt;br /&gt;
&lt;br /&gt;
====Semaine 6====&lt;br /&gt;
'''27/02'''&lt;br /&gt;
*Vérification de la syntaxe de l'insertion de valeurs dans la base de donnée.&lt;br /&gt;
*Création des premières requêtes sur la base de donnée.&lt;br /&gt;
*Finalisation du PCB de l'Optali Board.&lt;br /&gt;
&lt;br /&gt;
'''01/03'''&lt;br /&gt;
*Étude et ajout de la librairie volley pour communiquer avec le serveur.&lt;br /&gt;
*Implantation de la fonction d'envoi de données jusqu'au serveur.&lt;br /&gt;
*Après avoir vu avec un professeur, nous avons remarqué que le routage n'était pas adéquat et la disposition des composants n'était pas optimal. Du travail reste donc encore à effectuer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Semaine 7====&lt;br /&gt;
'''06/03'''&lt;br /&gt;
*Correction du fichier post.php&lt;br /&gt;
*Finition du protocole d'ajout d'aliment sur la base de donnée. (Code php et page ajout terminée).&lt;br /&gt;
*PCB terminé.&lt;br /&gt;
*Installation d'arduino IDE, doc arduino collecté.&lt;br /&gt;
&lt;br /&gt;
'''08/03'''&lt;br /&gt;
*Implémentation de la page ListeIngredient.xml et de l'activité listActivity.java.&lt;br /&gt;
*Documentation sur la procédure de communication bluetooth entre la Rfduino et l'application mobile.&lt;br /&gt;
*Obtention de librairie en lien avec cela.&lt;br /&gt;
*Prise en main de programmation rfduino.&lt;br /&gt;
&lt;br /&gt;
'''09/03'''&lt;br /&gt;
*Nous nous sommes rendus compte qu'il était nécessaire de rajouter un bouton poussoir sur notre montage afin de permettre la réinitialisation de notre RFDuino si nécessaire. Nous devons également faire en sorte de pouvoir poser notre carte PCB directement sur notre RFDuino en utilisant des broches. Nous devons donc rajouter ces éléments-ci.&lt;br /&gt;
*Ecriture de la page get.php&lt;br /&gt;
*Premiers tests sur la ListView de l'activité ListActivity.&lt;br /&gt;
&lt;br /&gt;
====Semaine 8====&lt;br /&gt;
'''13/03'''&lt;br /&gt;
*Recherche de pistes concernant la programmation RFDuino. Nous pouvons la détecter en bluetooth via un smartphone Android.&lt;br /&gt;
*Finition du Tablelayout et du code java associé sur la page ListActivity.&lt;br /&gt;
&lt;br /&gt;
'''15/03'''&lt;br /&gt;
*Ajout de la JsonArrayRequest dans la page ListActivity.&lt;br /&gt;
*Nous nous sommes rendus compte au moment de programmer la liaison I2C de l'accéléromètre avec la RFDuino que nous avions oublié de mettre des résistances pull-up entre l'alimentation du composant et les broches SDA et SCL. Les modifications ont donc été faites puis nous avons envoyé finalement notre PCB à la fabrication.&lt;br /&gt;
&lt;br /&gt;
'''16/03'''&lt;br /&gt;
*Changement de stratégie au niveau de la requête JsonArrayRequest. On récupère toute la base et ensuite le traitement sera effectuer dans l'application mobile.&lt;br /&gt;
*Rédaction de la partie Altium du wiki.&lt;br /&gt;
*Recherche de docs sur le système bluetooth du RFduino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Semaine 9====&lt;br /&gt;
'''20/03'''&lt;br /&gt;
*Réalisation de différents réglages pour pouvoir utiliser l'application Optali sur l'Android phone fourni par notre professeur (LG G4c)&lt;br /&gt;
*Recherche de docs concernant la partie java responsable de la communication Bluetooth.&lt;br /&gt;
*Reprise de la solution Tesseract pour la lecture de caractères.&lt;br /&gt;
&lt;br /&gt;
'''21/03''' (séance supplémentaire de 3 heures)&lt;br /&gt;
*Début du développement de la partie communication entre RFDuino et l'appli mobile. Nous pouvons détecter le RFduino à partir de Android Studio mais nous n'arrivons pas encore à nous connecter dessus directement.&lt;br /&gt;
*Finition de la fonctionnalité tesseract. La lecture de caractères est donc maintenant possible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''22/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity&lt;br /&gt;
*Connexion possible entre le RFduino et notre appli mobile. Il faut maintenant pouvoir assurer un échange de données via du GATT.&lt;br /&gt;
&lt;br /&gt;
===Premières idées===&lt;br /&gt;
&lt;br /&gt;
Voici les premières idées de l'application mobile et du composant fixé sur le frigo.&lt;br /&gt;
[[Fichier:Optali_v1.jpg|400px|thumb|left|Optali version 1]]&lt;br /&gt;
[[Fichier:OptaliBox_v1.jpg|400px|thumb|center|OptaliBox version 1]]&lt;br /&gt;
[[Fichier:P46_schema.jpg|400px|thumb|center|Schéma électrique version 1]]&lt;br /&gt;
&lt;br /&gt;
En s'intéressant aux différentes datasheets ou données constructeur des composants que nous voulons utiliser, nous trouvons indispensable d'utiliser des résistances de 330 Ohms pour l'utilisation des LEDs, pour éviter de les griller.&lt;br /&gt;
&lt;br /&gt;
Edit : Retrait de la résistance R2.&lt;br /&gt;
&lt;br /&gt;
Concernant l'accéléromètre, nous avons choisi un modèle qui nous permet de brancher directement ce module sur une broche du RFDuino. On branchera directement les GPIOs de la RFduino sur les ports SDA et SCL de l'accéléromètre qui correspondent à l'interface I2C pour pouvoir communiquer. On utilisera aussi la broche INT1 pour pouvoir générer des interruptions directement depuis l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
On connectera le buzzer directement à une broche de la RFduino aussi. Concernant celui-ci il reste une incertitude puisqu'on ne trouve aucune information sur le courant à fournir pour l'alimentation de ce composant sur sa datasheet. Après différentes recherches sur Internet, il pourrait être nécessaire d'utiliser un montage amplificateur à transistor comme un émetteur commun pour booster le courant en sortie d'une broche GPIO. Quelques buzzers trouvés avec des données constructeur montrent que ce type de composant nécessite généralement un courant d'environ 30 mA. Nous verrons dans la pratique si cela sera vraiment nécessaire. Par sécurité, on ajoutera un transistor bipolaire dans la liste de matériel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:screen_LED.png|400px|thumb|left|Données constructeur pour LEDs]]&lt;br /&gt;
[[Fichier:screen_accel.png|400px|thumb|center|Datasheet de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
===Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
====Configuration école====&lt;br /&gt;
&lt;br /&gt;
*Pour configurer notre Raspberry Pi, nous utilisons son port série et &amp;quot;minicom&amp;quot;. Pour pouvoir télécharger des paquets, il fallait la connecter au réseau. Nous lui avons donc affecté une adresse IP fixe avec le fichier /etc/network/interfaces. Voici les modifications qui ont été apportées : &lt;br /&gt;
&lt;br /&gt;
   auto eth0&lt;br /&gt;
   iface eth0 inet static&lt;br /&gt;
   address 172.26.78.15&lt;br /&gt;
   netmask 255.255.240.0&lt;br /&gt;
   gateway 172.26.79.254&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il a également fallu ajouter la commande &amp;quot;export http_proxy=http://proxy.polytech-lille.fr:3128&amp;quot; (il faudra effectuer cette commande à chaque démarrage de la Pi) pour pouvoir utiliser le proxy de l'école. &lt;br /&gt;
Nous avons de plus modifier le fichier /etc/resolv.conf avec la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
   nameserver 193.48.57.34&lt;br /&gt;
&lt;br /&gt;
Malgré cela, nous avions des soucis pour nous connecter au réseau. Il y avait en fait un processus dhcp en tâche de fond qui nous empêchait de garder le contenu de resolv.conf. Il a donc fallu trouver ce processus pour le &amp;quot;kill&amp;quot; et pouvoir accéder correctement au réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons du coup pu installer postgresql pour pouvoir configurer une base de données sur notre Pi.&lt;br /&gt;
&lt;br /&gt;
====Configuration à domicile====&lt;br /&gt;
&lt;br /&gt;
Pour nous mettre dans une situation plus fidèle à notre projet, nous avons configuré la raspberry à domicile.&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abords installé Raspbian, puis installé les paquets nécessaire au fonctionnement du serveur.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Openssh-server''': permettre d'accès à distance à la raspberry pour pouvoir y accéder depuis l'école.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Iptables''': pour sécuriser les ports non utilisé et libérer l'accès aux ports qui nous intéressent (ssh 22,http 80,https 443).&amp;lt;br&amp;gt;&lt;br /&gt;
- '''apache2, php5, mysql-server''' : pour mettre en place notre service web.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons rediriger les ports 80 et 22 du routeur pour pouvoir accéder à la raspberry de l'extérieur.&lt;br /&gt;
&lt;br /&gt;
Pour finir, nous avons créer un fichier de config iptables permettant de sécuriser un minimum la base de donnée et de permettre d'autoriser la communication des ports 22, 80 et 443 correspondants aux ports ssh, http et https. le fichier de configuration a été déposé dans le dépôt git. Il nous a fallut le rendre exécutable via un chmod. Puis pour l'exécuter à chaque démarrage du system, dans le fichier /etc/init.d/ taper : &lt;br /&gt;
&lt;br /&gt;
    sudo update-rc.d firewall defaults (si notrefichier s'appelle firewall et s'il est dans init.d)&lt;br /&gt;
&lt;br /&gt;
===Base de donnée===&lt;br /&gt;
&lt;br /&gt;
Nos données alimentaires disponibles par toute la famille doivent être stocké sur un serveur de base de donnée externe (tel une Raspberry pi). Nous nous proposons de créer le diagramme UML représentant cette future base de donnée.&lt;br /&gt;
[[Fichier:Optali_UML.jpg|700px|thumb|center|Diagramme UML base de donnée]]&lt;br /&gt;
&lt;br /&gt;
On créera donc 3 entités. Date, Product et Recipe. &lt;br /&gt;
&lt;br /&gt;
- Product rassemble les aliments qui sont ou ont été dans la réserve alimentaire. NbProdIn permet de connaître le nombre de produits identiques (possibilité de date différentes mais pas de doublons et on garde l'information de quantité. NbProdBought donne une information sur le nombre de produits identique ayant été acheté depuis la mise en service de la base de donnée. Ainsi nous pourrons par la suite proposer une liste de course à l'utilisateur en fonction de la fréquence d'achat des produits.&lt;br /&gt;
&lt;br /&gt;
- Recipe contient les recettes que pourra rentrer l'utilisateur sur l'application. L'utilisateur pourra ainsi se voir proposer des recettes en fonction de ce qu'il a dans son frigo et de ses recettes personnelles.&lt;br /&gt;
&lt;br /&gt;
'''''Edit : On ajoutera une valeur entière dans les tables Date et Unity pour gérer le cas où il existe plusieurs produits (différents ou identiques) avec une date de péremption équivalente. On les appellera NbDate la valeur dans la table Date et NbUnity dans la table Unity. On leur ajoutera de même une clef primaire IdUnity et IdListProduct'''''&lt;br /&gt;
&lt;br /&gt;
On utilisera MySql pour la gestion de nos bases de données. &lt;br /&gt;
La syntaxe pour l'implanter dans la base de donnée à été jointe au dépôt git.&lt;br /&gt;
&lt;br /&gt;
Pour lancer my SQL, on tapera:&lt;br /&gt;
&lt;br /&gt;
   mysql -h localhost -u root -p&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Web service===&lt;br /&gt;
&lt;br /&gt;
====Page init.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet d'initier l'accès à la base de donnée sur le serveur. Elle est requise pour les pages qui suivent.&lt;br /&gt;
&lt;br /&gt;
====Page post.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet l'insertion d'un produit et d'une date via l'application mobile. Elle prend donc ces deux arguments et les insère dans les tables Unity, Product et Date.&lt;br /&gt;
&lt;br /&gt;
====Page get.php====&lt;br /&gt;
&lt;br /&gt;
Page qui envoie la liste des aliments avec leur nom, leur date, leur quantité dans le frigo, la quantité d'exemplaires acheté en tout depuis la mise en place de l'appareil. Le tri se fera directement dans l'application mobile. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Application Mobile===&lt;br /&gt;
&lt;br /&gt;
====Home page====&lt;br /&gt;
&lt;br /&gt;
Page d'accueil permettant d'accéder aux pages d'ajout et de liste des produits disponibles. &amp;lt;br&amp;gt;&lt;br /&gt;
La page permet aussi d'effectuer la connexion entre la rfduino et l'application mobile. Elle montre les alertes (signaux) à l'utilisateur &lt;br /&gt;
et écrit leur signification.&lt;br /&gt;
&lt;br /&gt;
====Page d'ajout====&lt;br /&gt;
&lt;br /&gt;
Pour ajouter un produit et lire une date on utilisera un champ editText pour permettre à l'utilisateur d'écrire &amp;quot;Manuellement&amp;quot; dedans grâce au clavier du smartphone.&amp;lt;br&amp;gt;&lt;br /&gt;
De plus on utilise un bouton qui appellera la caméra pour détecter les caractères d'un produit ou d'une date. Au début nous voulions utiliser un détecteur de code barre, nous l'avons implémenté mais nous avons remarqué que la mise au point sur une surface non plane prend du temps d'autant plus qu'il faut questionner une base de donnée contenant tous les numéro de codes barres utilisés. Nous avons donc prit la décision d'utiliser uniquement la lecture de caractère et nous créerons une liste déroulante sous l'editText pour faciliter l'insertion d'un produit qui a déjà été ajouté. Pour la lecture de caractère, nous utilisons la librairie tesseract.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'envoi, nous utilisons la librairie Volley développé par google.&lt;br /&gt;
&lt;br /&gt;
====Page Liste====&lt;br /&gt;
&lt;br /&gt;
Permet de lister les produits dans la base de donnée. Une série de boutons radio permettent de trier les produits par ordre alphabétique, par date de péremption, par nombre d’occurrence dans la réserve alimentaire, par nombre d'achat depuis la mise en place du système.&amp;lt;br&amp;gt;&lt;br /&gt;
Une colonne permet de sélectionner les aliments désirés (par checkBox) pour ensuite les supprimer via un button &amp;quot;suppr&amp;quot; ou les choisir pour trouver des recettes qui les utilisent.&amp;lt;br&amp;gt;&lt;br /&gt;
Un EditText permet d'effectuer une recherche sur la base de donnée.&lt;br /&gt;
&lt;br /&gt;
===Altium Designer===&lt;br /&gt;
&lt;br /&gt;
Pour permettre au RFDuino de communiquer avec les différents composants, nous aurons besoin de quelques composants électroniques. Afin que cela soit plus esthétique pour la modélisation finale, nous allons créer une carte PCB pour rassembler tous ces composants dessus. On utilisera le logiciel Altium Designer pour cela.&lt;br /&gt;
&lt;br /&gt;
Avant de représenter notre circuit général, nous allons commencer par créer une librairie rassemblant tous les composants que nous utiliserons par la suite, en particulier nos composants CMS (accéléromètre et résistances). Pour ce qui est des LEDs et du buzzer, qui sont traversants, nous pourrons utiliser des headers classiques.&lt;br /&gt;
&lt;br /&gt;
Il a donc fallu créer le schematic ainsi que l'empreinte de nos composants CMS. Voici un exemple avec notre accéléromètre :&lt;br /&gt;
[[Fichier:Accelerosch.PNG|500px|thumb|left|Schematic de l'accéléromètre]]&lt;br /&gt;
[[Fichier:Acceleropcb.PNG|500px|thumb|center|Empreinte PCB de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les fichiers Altium sont disponibles sur notre dépôt GIT. Après cela, nous pouvons maintenant construire notre schematic du montage entier et ensuite le fichier PCB afin de pouvoir graver notre circuit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après quelques modifications sur le montage prévu initialement, c'est-à-dire en enlevant une résistance entre un GPIO et l'alimentation de l'accéléromètre ainsi qu'en rajoutant des résistances pull-up sur les broches de notre liaison i2C (SDA et SCL) et un bouton poussoir en plus pour permettre un reset du RFDuino, nous avons pu créer notre schematic global pour en faire un PCB et l'exporter au format Gerber. De ce fait, le service EEI de Polytech pourra réaliser la gravure de notre carte PCB.&lt;br /&gt;
&lt;br /&gt;
Voici quelques photos pour illustrer notre projet sur Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Finalproto_sch.PNG|400px|thumb|left|Schematic du montage final]]&lt;br /&gt;
[[Fichier:Finalproto_pcb.PNG|400px|thumb|center|PCB du montage final]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On retrouve sur notre PCB final les headers, respectivement de 8 et 5 pins, de part et d'autre de la carte, qui représentent le RFDuino, où nous souderons des broches pour qu'elles puissent être intégrées au RFDuino. On note la présence de 5 autres headers de 2 pins, dont 3 pour des LEDs puis les 2 autres pour le buzzer et le bouton poussoir. Ce qui reste sont les composants CMS avec plusieurs composants à 2 pattes qui sont toutes les résistances de notre montage, celles de protection pour les LEDs et les pull-ups pour l'accéléromètre. Le dernier composant à 8 pattes est donc bien l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quelques difficultés ont été rencontrées durant ce travail notamment concernant les contraintes de construction sur le PCB final. En effet, les composants CMS choisis (surtout l'accéléromètre) étant parfois très petits, Altium n'accepte pas forcément le faible espacement entre les différentes pattes des composants, ce qui pose problème lors de la compilation. De plus, le plan de masse ne prenait pas en compte tous les éléments devant être rattachés à la masse. Il a fallu légèrement déplacer les headers représentant le RFDuino pour que cela soit possible. Il faudra alors peut-être légèrement plier les broches qui viendront s'intégrer sur le RFDuino pour ajouter notre PCB sur le RFDuino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons envoyé nos fichiers Altium au service EEI afin qu'il puisse réaliser physiquement notre carte. Nous nous retrouvons donc avec notre carte PCB récupérée auprès du service EEI. Voici le rendu :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:P46_carte.jpg|400px|thumb|center|Fabrication de notre carte PCB]]&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:P46_carte.jpg&amp;diff=40799</id>
		<title>Fichier:P46 carte.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:P46_carte.jpg&amp;diff=40799"/>
				<updated>2017-03-27T14:55:52Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_IMA4_SC_%26_SA_2016/2017&amp;diff=40798</id>
		<title>Projets IMA4 SC &amp; SA 2016/2017</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_IMA4_SC_%26_SA_2016/2017&amp;diff=40798"/>
				<updated>2017-03-27T14:40:03Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : /* Matériel à acquérir */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Merci de référencer vos pages de projets ici. Merci aussi d'uniformiser vos formats que ce soit en regardant la présentation des projets déjà créés ou en demandant une modification du format des précédents si votre façon de faire vous semble la meilleure. Dans tous les cas un minimum de communication entre les binômes est conseillée.&lt;br /&gt;
&lt;br /&gt;
Toutes les sources doivent être déposées sur notre archive GIT. Le service est disponible à l'URL [https://archives.plil.fr archives.plil.fr]. Connectez-vous avec vos identifiants Polytech'Lille. Sauf indication contraire de vos encadrants, rendez le projet public et mettez le lien sur votre Wiki. Vous pouvez trouver de la documentation sur ce système d'archives sur ce [https://git-scm.com/book/fr/v1 site].&lt;br /&gt;
&lt;br /&gt;
== Répartition des binômes ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Projet !! Encadrants école !! Elèves&lt;br /&gt;
|-&lt;br /&gt;
| P1 [[IMA4 2016/2017 P1|Climatisation du pauvre]]&lt;br /&gt;
| Xavier Redon&lt;br /&gt;
| Haroun Abdelali&lt;br /&gt;
|-&lt;br /&gt;
| P2 [[IMA4 2016/2017 P2|Réseau de capteurs sur smartphone]]&lt;br /&gt;
| Alexandre Boé / Xavier Redon / Thomas Vantroys&lt;br /&gt;
| Wenyu sun / Xinyue xu&lt;br /&gt;
|-&lt;br /&gt;
| P10 [[IMA4 2016/2017 P10|Application de suivi de prise de médicaments]]&lt;br /&gt;
| Fanny Moreau / Alexandre Boé / Xavier Redon / Thomas Vantroys&lt;br /&gt;
| Martin Rohmer / Kévin Godesence&lt;br /&gt;
|-&lt;br /&gt;
| P11 [[IMA4 2016/2017 P11|Amélioration de l'accueil d'enfants hospitalisés]]&lt;br /&gt;
| Marion Binninger / Alexandre Boé / Xavier Redon / Thomas Vantroys&lt;br /&gt;
| Robin Cavalieri / Edmur Lopes&lt;br /&gt;
|-&lt;br /&gt;
| P14 [[IMA4 2016/2017 P14|Sex toy connecté]]&lt;br /&gt;
| Alexandre Boé / Xavier Redon&lt;br /&gt;
| Cedric Roussel / Thomas Stievenard&lt;br /&gt;
|-&lt;br /&gt;
| P18 [[IMA4 2016/2017 P18|Education de la position de tête]]&lt;br /&gt;
| Rodolphe Astori / Alexandre Boé / Xavier Redon / Thomas Vantroys&lt;br /&gt;
| Mame Arame Diop / Amina Fahem&lt;br /&gt;
|-&lt;br /&gt;
| P19 [[IMA4 2016/2017 P19|Orchestre électronique]]&lt;br /&gt;
| Lucas Prieux / Hidéo Vinot / Xavier Redon / Thomas Vantroys&lt;br /&gt;
| Antoine Arnaudet / Vivian Senaffe&lt;br /&gt;
|-&lt;br /&gt;
| P20 [[IMA4 2016/2017 P20|Création d’un environnement virtuel de test]]&lt;br /&gt;
| Rochdi Merzouki / Vincent Coelen / Valentin Vergez&lt;br /&gt;
| Butaye Marianne / François Duport&lt;br /&gt;
|-&lt;br /&gt;
| P21 [[IMA4 2016/2017 P21|Conception d’une MPS Polyvalente]]&lt;br /&gt;
| Rochdi Merzouki / Thomas Danel / Valentin Vergez&lt;br /&gt;
| Samy Belhouachi / François Xavier Cockenpot&lt;br /&gt;
|-&lt;br /&gt;
| P25 [[IMA4 2016/2017 P25|Robot mobile Polytech'Lille]]&lt;br /&gt;
| Xavier Redon / Alexandre Boé&lt;br /&gt;
| Cheikh Said Ahmed / Khadija El Messnaoui&lt;br /&gt;
|-&lt;br /&gt;
| P26 [[IMA4 2016/2017 P26|Train de véhicules]]&lt;br /&gt;
| Xavier Redon / Alexandre Boé&lt;br /&gt;
| Manlu Luo / Xinyi Wang&lt;br /&gt;
|-&lt;br /&gt;
| P27 [[IMA4 2016/2017 P27|Sonde atmosphérique]]&lt;br /&gt;
| Xavier Redon / Thomas Vantroys / Alexandre Boé&lt;br /&gt;
| Olivier Mahieux / Grillère Baptiste&lt;br /&gt;
|-&lt;br /&gt;
| P28 [[IMA4 2016/2017 P28|Adaptation d'un émulateur de calculatrices TI]]&lt;br /&gt;
| Xavier Redon / Gilles Dhaussy&lt;br /&gt;
| Rodolphe Toin&lt;br /&gt;
|-&lt;br /&gt;
| P29 [[IMA4 2016/2017 P29|Conteneurs pour site Web]]&lt;br /&gt;
| Xavier Redon / Thomas Vantroys&lt;br /&gt;
| Jade Dupont (valentin)&lt;br /&gt;
|-&lt;br /&gt;
| P30 [[IMA4 2016/2017 P30|Voiture radiocommandée controlée par gant]]&lt;br /&gt;
| Alexandre Boé / Xavier Redon / Thomas Vantroys&lt;br /&gt;
| Thomas Gosse / Bacem Hagui&lt;br /&gt;
|-&lt;br /&gt;
| P31 [[IMA4 2016/2017 P31|Accueil personnalisé par drone]]&lt;br /&gt;
| Alexandre Boé / Xavier Redon / Thomas Vantroys&lt;br /&gt;
| Tristan Hart / Etienne Profit&lt;br /&gt;
|-&lt;br /&gt;
| P32 [[IMA4 2016/2017 P32|Sécurité: brouilleur d'ondes]]&lt;br /&gt;
| Thomas Vantroys / Alexandre Boé / Xavier Redon&lt;br /&gt;
| Nicky Ung / Alexis Macherez&lt;br /&gt;
|-&lt;br /&gt;
| P33 [[IMA4 2016/2017 P33|Sécurité: ingénierie inverse de protocole réseau]]&lt;br /&gt;
| Thomas Vantroys / Alexandre Boé / Xavier Redon&lt;br /&gt;
| Oumaima Naanaa&lt;br /&gt;
|-&lt;br /&gt;
| P34 [[IMA4 2016/2017 P34|Interface Haptique, simulateur de formes et de textures]]&lt;br /&gt;
| Betty Semail / Laurent Grisoni / Frédéric Giraud&lt;br /&gt;
| Alice Coffin / Diana Marrucho&lt;br /&gt;
|-&lt;br /&gt;
| P37 [[IMA4 2016/2017 P37|Gamelle connectée]]&lt;br /&gt;
| Alexandre Boé / Thomas Vantroys / Xavier Redon&lt;br /&gt;
| Lutecia Damiens / Alexis Dorian&lt;br /&gt;
|-&lt;br /&gt;
| P38 [[IMA4 2016/2017 P38|Veilleuse enfant connectée]]&lt;br /&gt;
| Thomas Vantroys / Alexandre Boé&lt;br /&gt;
| Hugo Delatte&lt;br /&gt;
|-&lt;br /&gt;
| P39 [[IMA4 2016/2017 P39|Projecteur laser]]&lt;br /&gt;
| Xavier Redon / Alexandre Boé / Thomas Vantroys&lt;br /&gt;
| Loïc Tombazzi / Marius Trimbur&lt;br /&gt;
|-&lt;br /&gt;
| P44 [[IMA4 2016/2017 P44|3615 Facebook]]&lt;br /&gt;
| Thomas Vantroys&lt;br /&gt;
| Marouan Mcharfi / Tristan Lopez&lt;br /&gt;
|-&lt;br /&gt;
| P46 [[IMA4 2016/2017 P46|Aide anti-gaspillage alimentaire ]]&lt;br /&gt;
| Alexandre Boé / Xavier Redon / Thomas Vantroys&lt;br /&gt;
| Alexandre Huet / François Lefevre&lt;br /&gt;
|-&lt;br /&gt;
| P47 [[IMA4 2016/2017 P47|Modélisation d’un robot mobile]]&lt;br /&gt;
| Midzodzi Pekpe&lt;br /&gt;
| Djamil Mohammed / Hamza Kerroum&lt;br /&gt;
|-&lt;br /&gt;
| P48 [[IMA4 2016/2017 P48|Surveillance d'un robot mobile]]&lt;br /&gt;
| Midzodzi Pekpe&lt;br /&gt;
| Jean-Baptiste Saison&lt;br /&gt;
|-&lt;br /&gt;
| P3 [[IMA4 2016/2017 P3|Capteurs enfuis pour vieillissement du béton]]&lt;br /&gt;
| Alexandre Boé / Thomas Vantroys&lt;br /&gt;
| Florian Giovannangeli&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Matériel à acquérir ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Projet !! Matériel&lt;br /&gt;
|-&lt;br /&gt;
| P1 [[IMA4 2016/2017 P1|Climatisation du pauvre]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Feuille de Plexiglass &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; une plaque de polystérene &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; 3 AOPs (comparateur) &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; 3 Diodes &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt; 2 Ventilateurs 100 m3/h 12V [http://www.sellande.com/sellande-webcom/home/393-ventilateur-12v-100m3-h-3752132012327.html?gclid=CjwKEAiAlZDFBRCKncm67qihiHwSJABtoNIgNjN3dRX7D5BOfBUbN9WdjSVzbfLBF_YsaI59D0MaCxoC_oDw_wcB] &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt; 1 Panneau solaire 10Wc 12V [https://www.apb-bluepower.com/panneau-solaire-photovoltaique-12v-10w-apb-energy,fr,4,QX-P-10.cfm] &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; 2 sondes de températures [http://fr.rs-online.com/web/p/sondes-de-temperature/1241079/] &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt; une Batterie 70Ah 12V [https://www.manomano.fr/batterie-2319?model_id=1988070&amp;amp;referer_id=537135&amp;amp;gclid=CjwKEAiAlZDFBRCKncm67qihiHwSJABtoNIgcniSnImZEGSLytrHpgv4fTHGFuj1r30kH340E0wmPxoC6ovw_wcB] &amp;lt;/span&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| P2 [[IMA4 2016/2017 P2|Réseau de capteurs sur smartphone]]&lt;br /&gt;
|   &lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;6* Capteur de température[http://www.mouser.fr/ProductDetail/Microchip-Technology/TC1047VNBTR/?qs=sGAEpiMZZMucenltShoSnjkfRJmEyKRQimeb4yJa%2fn8%3d]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;1* Smartphone sous Android 6.0+&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;6* ATmega32u4-AU (package TQFP), [http://www.mouser.fr/ProductDetail/Microchip-Technology-Atmel/ATMEGA32U4RC-AU/?qs=sGAEpiMZZMvqv2n3s2xjsWfDNH99npBWOb9m5kVBeoM%3d]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;6* Connecteur USB Zx20-B-5S-UINT(30)[http://www.mouser.fr/ProductDetail/Hirose-Electric/ZX20-B-5S-UNIT30/?qs=%2fha2pyFaduiI1PHIQp025swiTaQgBs3xrF3lm%2fjmZrmtw6zfCgwPXHsVofi5faNN]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;5* quartz 16Mhz [http://fr.farnell.com/multicomp/mcrsd16000f183000rr/quartz-16mhz-18pf-hc49-us-smd/dp/2395958]&amp;lt;/span&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;6* Chip guard[http://eu.mouser.com/ProductDetail/Bourns/CG0603MLC-05E/?qs=%2fha2pyFaduj8GWc5RpRwWsoz%252bsBNDfM0b%2fMwO0m8cAS%252b28tb9AwLWQ%3d%3d]&amp;lt;/span&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;10* Fusibles réarmables[http://eu.mouser.com/ProductDetail/Bourns/MF-MSMF050-2/?qs=%2fha2pyFadujDIyYlSEAmAtmxzhQX2R56dU6AOyKWoF1gS%2fKyt5ZQcQ%3d%3d]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;5* header(36 contacts) [http://fr.farnell.com/3m/929974-01-36/connecteur-rcpt-36pos-1-rangee/dp/2396216?MER=sy-me-pd-mi-alte]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;20* résistances de 22 ohm[http://fr.farnell.com/multicomp/mc0063w0603522r/res-couche-epaisse-22r-5-0-063w/dp/9331891]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;10* résistances de 10k ohm[http://fr.farnell.com/susumu/rr0816p-103-b-t5/res-couche-mince-10k-0-1-0-063w/dp/1653253]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;10* résistances de 1M ohm[http://fr.farnell.com/multicomp/mc0063w060311m/res-couche-epaisse-1m-1-0-063w/dp/9330410?ost=9330410&amp;amp;selectedCategoryId=&amp;amp;categoryNameResp=Toutes%2Bles%2Bcat%25C3%25A9gories&amp;amp;searchView=table&amp;amp;iscrfnonsku=false]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;10* capacités(CMS) de 22 pF[http://fr.farnell.com/multicomp/mc0603n220j500ct/condensateur-mlcc-c0g-np0-22pf/dp/1759057]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;10* capacité(CMS) de 1 uF[http://fr.farnell.com/walsin/0603x105k100ct/condensateur-mlcc-x5r-1uf-10v/dp/2496916]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;10* capacité(CMS) de 100 nF[http://fr.farnell.com/walsin/0603b104k500ct/condensateur-mlcc-x7r-0-1uf-50v/dp/2496834]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;10* diode[http://www.mouser.fr/ProductDetail/Wolfspeed-Cree/C3D16065A/?qs=sGAEpiMZZMtbRapU8LlZD2p%2ftt67Z%252br4005PkgBuAD1SM4AyiGk4XA%3d%3d]&amp;lt;/span&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| P10 [[IMA4 2016/2017 P10|Application de suivi de prise de médicaments]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Smartphone sous Android&amp;lt;/span&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| P11 [[IMA4 2016/2017 P11|Amélioration de l'accueil d'enfants hospitalisés]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Raspberry Pi&amp;lt;/span&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| P14 [[IMA4 2016/2017 P14|Sex toy connecté]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; 2*Adaptateur 5V [http://www.gotronic.fr/art-adaptateur-mv530n-8000.htm]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; 2*Embase adaptateur [http://www.gotronic.fr/art-embase-alim-sa21a-14961.htm]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; 2*Arduino mini [http://fr.rs-online.com/web/p/kits-de-developpement-pour-processeurs-et-microcontroleurs/7617327/]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; 2*Modules bluetooth [http://fr.rs-online.com/web/p/modules-bluetooth/1244407/]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; Capteur de température [http://www.mouser.fr/ProductDetail/Maxim-Integrated/MAX31725MTA+/?qs=sGAEpiMZZMucenltShoSnuJtr4xlG60lboc%252bnebe514%3d]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; 2*Accéléromètre [http://www.mouser.fr/ProductDetail/NXP-Freescale/MMA8652FCR1/?qs=sGAEpiMZZMs0JOhy9PM0USp5vOY2ClxODTM36syD6sQ%3d]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; 4*Vibreurs [http://www.gotronic.fr/art-vibreur-miniature-vm1201-20685.htm]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; 5*Servomoteurs [http://www.gotronic.fr/art-servomoteur-s07nf-25182.htm]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; 5* Capacité 0.1µF (*1 capteur température, *2 accéléromètre, 2* régulateur)[http://fr.farnell.com/walsin/0805b104k500ct/condensateur-mlcc-x7r-0-1uf-50v/dp/2496944]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; 3*Résistance 4.7kohms ( capteur température) [http://fr.farnell.com/vishay/crcw08054k70fkta/res-couche-epaisse-4-7k-1-0-125w/dp/1653013RL]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;2*Capacité 0.33µF (régulateur) [http://www.mouser.fr/ProductDetail/Wurth-Electronics/885012105003/?qs=sGAEpiMZZMvzv9EAOJZmO9b76UYLhwTmM7EN2czdHKU%3d]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; 2*Régulateur 3.3V [http://www.mouser.fr/ProductDetail/Texas-Instruments/UA78M33CDCYR/?qs=sGAEpiMZZMtUqDgmOWBjgHbKmseNGGTSe%2f5roer8H%2fU%3d]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; Silicone alimentaire (internet conseillé par un chercheur de l'inria. Prendre sorta clear 40A) [http://www.creation-silicone.com/31.la-serie-sorta-clear] (la cigale et la fourmi à lille) [http://www.cigaleetfourmi.fr/silicones-alginates-et-latex/1262-silicone-alimentaire-peau-liquide-2-kg.html#more_info_tabs] (Rougier&amp;amp;Plé à lille) [http://www.rougier-ple.fr/silicone-alimentaire-4428-1-kg.r.html]  &amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; ARduino uno pour essais&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Servomoteur pour essais&amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Deux téléphones sur android (dont un LG G4C de l'école)&amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P18 [[IMA4 2016/2017 P18|Education de la position de tête]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Accéléromètre 4 ADXL335[http://www.gotronic.fr/art-module-accelerometre-adxl335-3-axes-ef03049-23504.htm]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Module Adafruit 9-DOF [http://www.gotronic.fr/art-module-9-dof-ada2472-23896.htm]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Smartphone sous Android&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Câble 12 conducteurs  [http://fr.farnell.com/pro-power/pp000342/cable-12-conducteurs-0-5mm2-25m/dp/2440126]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Arduino Mega&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Résistance &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Module WIFI ESP 8266 [http://www.gotronic.fr/art-module-wifi-serie-esp8266-113990084-23666.htm]&amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P19 [[IMA4 2016/2017 P19|Orchestre électronique]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Arduino UNO x5.&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P20 [[IMA4 2016/2017 P20|Création d’un environnement virtuel de test]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P21 [[IMA4 2016/2017 P21|Conception d’une MPS Polyvalente]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P25 [[IMA4 2016/2017 P25|Robot mobile Polytech'Lille]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Atmega 328p [http://fr.farnell.com/atmel/atmega328p-pu/micro-8-bits-avr-32k-flash-28pdip/dp/1715487]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Atmega 328p CMS [http://fr.farnell.com/atmel/atmega328p-au/micro-8-bits-avr-32k-flash-32tqfp/dp/1715486?selectedCategoryId=&amp;amp;exaMfpn=true&amp;amp;categoryId=&amp;amp;searchRef=SearchLookAhead&amp;amp;searchView=table&amp;amp;iscrfnonsku=false]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;FT232R (*2) [http://fr.farnell.com/ftdi/ft232rl-reel/usb-vers-uart-ssop28-232/dp/1146032]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;USB (*2) [http://fr.farnell.com/wurth-elektronik/65100516121/mini-usb-2-0-type-b-receptacle/dp/1642036]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Led (*4)[http://fr.farnell.com/kingbright/kph-1608sgc/led-12mcd-vert-568nm/dp/2426215]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;bouton(*2) [http://www.mouser.fr/ProductDetail/E-Switch/LL3301NF065QG/?qs=sGAEpiMZZMvxtGF7dlGNpqqmTFthXBmf0KM%252bqj1KR%252bA%3d]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Diode(*2)[http://eu.mouser.com/ProductDetail/Microsemi/1N4148UR-1/?qs=sGAEpiMZZMtoHjESLttvkmKnFwXErGnblScnaPsZQPwnq%2fwjQSnhEg%3d%3d]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;LM1117(*2) [http://www.mouser.fr/new/Texas-Instruments/nationalLM1117/]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;TB6612FNG (*2) [http://www.gotronic.fr/art-commande-de-2-moteurs-tb6612fng-2x1a-21716.htm]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Quartz 16 MHz (*2)[http://fr.farnell.com/raltron/as-16-000-18/quartz-16mhz-18pf-hc-49s/dp/1611761?MER=bn_para_1TP_LastViewed_3]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;RJ11(*6) [http://fr.farnell.com/molex/95522-2667/fiche-rj11-cat3-6-6/dp/2060715]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Resistor 1k &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Resistor 470 &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Resistor 100 &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Resistor 1M &amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Capacité 10 nF &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Capacité 10uF &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Capacité 22pF &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;'''MATERIELS CAPTEUR DE LIGNE'''[http://projets-imasc.plil.net/mediawiki/index.php?title=Finalisation_de_cartes_de_contr%C3%B4le_de_robot#Carte_capteur_de_ligne]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;'''MATERIELS CAPTEUR ULTRASON'''[http://projets-imasc.plil.net/mediawiki/index.php?title=Finalisation_de_cartes_de_contr%C3%B4le_de_robot#Carte_capteur_ultrason_.28en_cours.29]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;'''MATERIELS CODEUR INCREMENTAL'''[http://projets-imasc.plil.net/mediawiki/index.php?title=Finalisation_de_cartes_de_contr%C3%B4le_de_robot#Carte_Odom.C3.A8tre_.28en_cours.29]&amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P26 [[IMA4 2016/2017 P26|Train de véhicules]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;LEDs IR (x20), RS [http://fr.rs-online.com/web/p/led-ir/6548334/]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Phototransistors IR (x20), RS [http://fr.rs-online.com/web/p/phototransistors/6548047/]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Drivers moteur Pololu (x1), GoTronic [http://www.gotronic.fr/art-commande-de-2-moteurs-tb6612fng-2x1a-21716.htm]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Drivers moteur TB6612FNG (x3), Mouser [http://www.mouser.fr/Search/ProductDetail.aspx?qs=rsevcuukUAy2UalRuv4E%2fQ%3d%3d] &amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Borniers à vis (x20), Farnell [http://fr.farnell.com/camdenboss/ctb0502-2/bornier-carte-a-fil-2-voies-12awg/dp/2493622?MER=en-me-sr-b-all]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Résistances 220 Ohms CMS (x20), Mouser [http://www.mouser.fr/ProductDetail/Vishay-Dale/CRCW0603220RFKEA/?qs=sGAEpiMZZMtlubZbdhIBIKySljYCMs0HAiopx1mcVY0%3d] &amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Résistances 470 kOhms CMS (x30), Mouser [http://www.mouser.fr/ProductDetail/Panasonic/ERJ-3GEYJ474V/?qs=sGAEpiMZZMtlubZbdhIBIDkNbKahCB4%252bXwMzav7V8qQ%3d]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;LEDs couleur (x10), RS [http://fr.rs-online.com/web/p/led/8134845/]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Fils m-m (x1 lot de 65), Farnell [http://fr.farnell.com/multicomp/mcbbj65/assortiment-de-jumper-fil-65pcs/dp/2396146]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Capas 10uF CMS (x20) Mouser [http://www.mouser.fr/ProductDetail/Murata-Electronics/ZRB18AR61C106ME01L/?qs=sGAEpiMZZMs0AnBnWHyRQPHsfd5klL7FP%2fi0oh%252bVTwkomqr6NYKsqQ%3d%3d]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Capas 0.1uF CMS (x20) Mouser [http://www.mouser.fr/ProductDetail/Kemet/C0603C104K4RACTU/?qs=sGAEpiMZZMs0AnBnWHyRQFqPnX0OlvcoGdtRY%252bgH1%2fs%3d]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Embases CI 40 contacts 1 rangée (x6) RS [http://fr.rs-online.com/web/p/embases-de-circuit-imprime/4232841/]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Connecteur HE14 MH100 (x10) [http://www.gotronic.fr/art-connecteur-he14-mh100-4457.htm]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Connecteur HE14 MH190 (x10) [http://www.gotronic.fr/art-connecteur-he14-mh190-4458.htm]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Capteurs Ultrasons SR04 (x3)&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Piles ou accumulateurs (x16 à 1.5V)&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Odomètres codeurs (x4) &amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Boutons poussoirs (x4) [http://www.gotronic.fr/art-bp-miniature-krs1273-16976.htm] &amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Interrupteurs (x4) &amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Colliers de serrage &amp;lt;/span&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| P27 [[IMA4 2016/2017 P27|Sonde atmosphérique]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Capteur de température DS75LV [http://www.mouser.fr/ProductDetail/Maxim-Integrated/DS75LVU+/?qs=sGAEpiMZZMucenltShoSnqz2Nq7rAtSUouPEUh693aE%3d]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Capteur de pression [http://www.mouser.fr/ProductDetail/Measurement-Specialties/5525DSO-SB005GS/?qs=sGAEpiMZZMvhQj7WZhFIAJ6e00q4%2fiLk8vQEbfsXmbvuJAmWYTr67w%3d%3d]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Module LoRa [http://www.mouser.fr/ProductDetail/Adafruit/3179/?qs=sGAEpiMZZMuC4zZxLL0ZTXmUcMwoRc9uEac7jsWPYbgAg4D4CJduaQ==]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Module GPS [http://www.mouser.fr/ProductDetail/Adafruit/3179/?qs=sGAEpiMZZMuC4zZxLL0ZTXmUcMwoRc9uEac7jsWPYbgAg4D4CJduaQ==]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;1 RaspberryPi&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Batterie 5000 mAh [http://fr.rs-online.com/web/p/batteries-externes/7757508/]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;1 carte microSD pour Raspberry 8GB.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P28 [[IMA4 2016/2017 P28|Adaptation d'un émulateur de calculatrices TI]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P29 [[IMA4 2016/2017 P29|Conteneurs pour site Web]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P30 [[IMA4 2016/2017 P30|Voiture radiocommandée controlée par gant]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Accéléromètre ADXL335 &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Arduino Nano &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; 2x Module XBee + 1x Shield &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Arduino UNO &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Xbee Adapter Board&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; Raspberry Pi&amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P31 [[IMA4 2016/2017 P31|Accueil personnalisé par drone]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Carte RaspberryPi (Au minimum modèle 2)&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Alimentation MicroUSB pour RaspberryPi&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Carte MicroSD 16Gb&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Dongle Bluetooth BLED112-V1[http://fr.rs-online.com/web/p/adaptateurs-bluetooth/8077742/]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Capteur de mesure Sharp GP2Y0A02YK x3 [http://www.gotronic.fr/art-capteur-de-mesure-sharp-gp2y0a02yk-11536.htm]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Appareil mobile sous OS Android (portable ou tablette )&amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P32 [[IMA4 2016/2017 P32|Sécurité: brouilleur d'ondes]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Récepteur LoRa 433/868Mhz&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Logiciel Code compiler équipé d'un GCC pour MSP430&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Carte cc430f5137 868MHz&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;1 antenne 868MHz[http://www.mouser.fr/ProductDetail/Linx-Technologies/ANT-868-CW-HWR-RPS/?qs=sGAEpiMZZMuBTKBKvsBmlOBg0H7cD5uyLmjn8%2f6ScJQ%3d]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Breadboard&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Quelques LEDs&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;pour 433MHz&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;(carte arduino + cc1101)&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Quartz 26MHz [http://fr.farnell.com/txc/7a-26-000maaj-t/crystal-26mhz-18pf-5-x-3-2mm/dp/2061710]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;2 antennes 433MHz[http://www.mouser.fr/ProductDetail/LPRS/ANT-SR433/?qs=sGAEpiMZZMuBTKBKvsBmlL2JeKAJ5GlFgePIl66EJDQoPGtUlcrRBQ%3d%3d]&amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P33 [[IMA4 2016/2017 P33|Sécurité: ingénierie inverse de protocole réseau]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; 3 modules LoRa 3179 Adafruit [http://www.mouser.fr/ProductDetail/Adafruit/3179/?qs=sGAEpiMZZMuC4zZxLL0ZTXmUcMwoRc9uEac7jsWPYbgAg4D4CJduaQ==],&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| P34 [[IMA4 2016/2017 P34|Interface Haptique, simulateur de formes et de textures]]&lt;br /&gt;
|&lt;br /&gt;
Aucun matériel nécessaire.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P37 [[IMA4 2016/2017 P37|Gamelle connectée]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Émetteur et récepteur infrarouge/photodiode (seulement 1 de chaque prêtées, il en faut 6 à 7 de chaque)&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Adaptateur PS512S  [http://www.gotronic.fr/art-adaptateur-ps512s-19913.htm] &amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Shield carte SD (carte SD également)&amp;lt;span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Module horloge temps réel (RTC) [http://www.gotronic.fr/art-module-horloge-temps-reel-ada3296-25536.htm]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Capteur de proximité IR [http://www.gotronic.fr/art-capteur-de-proximite-ir-38-khz-2460-21766.htm]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Capteur Ultrason &amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;LEDs &amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Résistances &amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Arduino méga &amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;ESP8266 &amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Servomoteur 360 &amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;Solution de secours : Rapsberry &amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;Solution de secours : Balance &amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P38 [[IMA4 2016/2017 P38|Veilleuse enfant connectée]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Raspberry pi modèle B minimum&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;batterie&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;circuit shut down(une breadboard, une LED, une resistance 220 ohms, 3 fils M/M, 2 fils M/F)&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;un interrupteur on/off Référence : 7547 Selectronic&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;bois de palette&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;dongle wi pi&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Rétroprojecteur&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;timer(circuit de retardement 5 secondes)&amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P39 [[IMA4 2016/2017 P39|Projecteur laser]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Deux lasers de différentes couleurs&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Une paire de galvanomètres à miroir&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Arduino&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Raspberry Pi3&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Câble secteur&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Drivers galvanomètres x2&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Alimentation laser&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Lunette de sécurité x2 [https://www.amazon.fr/Uvex-S1933X-Eyewear-SCTOrange-Anti-Fog/dp/B000USRG90/ref=sr_1_1?ie=UTF8&amp;amp;qid=1485441383&amp;amp;sr=8-1&amp;amp;keywords=uvex+s1933x]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Alimentation 230V/5V 1A [http://www.miniinthebox.com/fr/dual-usb-eu-prise-murale-5v-2a-voyage-adaptateur-chargeur-d-alimentation-pour-iphone7-6-xiaomi-samsung-et-autre-telephone-portable_p5410410.html?currency=EUR&amp;amp;litb_from=paid_adwords_shopping&amp;amp;sku=429_6917%7C752_20648&amp;amp;utm_source=google_shopping&amp;amp;utm_medium=cpc&amp;amp;adword_mt=&amp;amp;adword_ct=138705676724&amp;amp;adword_kw=&amp;amp;adword_pos=1o5&amp;amp;adword_pl=&amp;amp;adword_net=g&amp;amp;adword_tar=&amp;amp;adw_src_id=9653316068_661261352_33588296076_aud-79897721311:pla-256966386459&amp;amp;gclid=Cj0KEQiA_KvEBRCtzNil4-KR-LIBEiQAmgekFxxKjJJWBYCJlDZEa3Ke_2_WR0DzGVbz-jaCZHVIBoMaAvld8P8HAQ]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Boitier ABS [http://fr.farnell.com/multicomp/g3118/boitier-abs-240x120x60mm-ip65/dp/1526656]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;DAC 4 canaux, avec interface I²C [http://www.mouser.fr/ProductDetail/Adafruit/1083/?qs=sGAEpiMZZMsMyYRRhGMFNtB2KhoPg%2fPbP3CExTYfM4M%3d]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Connecteur C14 [http://fr.farnell.com/schurter/3-101-141/fiche-iec-c14-c18-avec-filtre/dp/2671668]&amp;lt;/span&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P44 [[IMA4 2016/2017 P44|3615 Facebook]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Un Minitel 1 Bistandard Alcatel Telic&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; un connecteur DIN 5 broches[http://www.selectronic.fr/din-cordon-male-5-broches-45.html]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; un Arduino Uno [http://www.selectronic.fr/carte-arduino-uno.html]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; un module Ethernet [http://www.selectronic.fr/shield-ethernet-v2.html]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P46 [[IMA4 2016/2017 P46|Aide anti-gaspillage alimentaire ]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Rfduino DIP board + USB shield, Mouser [http://eu.mouser.com/ProductDetail/RF-Digital-Wireless/RFD90101/?qs=sGAEpiMZZMsrChSOYEGTCSSoddgmKGJ7o1oPrqG%2fa%2fU%3d]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Rfduino Dual AAA shield, Mouser [http://eu.mouser.com/ProductDetail/RF-Digital-Wireless/RFD22126/?qs=sGAEpiMZZMsrChSOYEGTCTCnakKeCOV7XxQSzqVKQX4%3d]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Raspberry Pi&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Clef wifi&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;2 piles de 1,5V AAA &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;1 buzzer, Mouser [http://www.mouser.fr/ProductDetail/TDK/PS1240P02BT/?qs=sGAEpiMZZMtWZVZ%2fjgUYS49cTVUJP3OaWyx1fxdmA7I%3d] &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;1 accéléromètre, mouser [http://www.mouser.fr/ProductDetail/NXP-Freescale/MMA8653FCR1/?qs=sGAEpiMZZMs0JOhy9PM0USp5vOY2ClxOY1G2fK3tzYI%3d] &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;3 LEDs de couleurs différentes, 2 Mouser Rouge[http://www.mouser.fr/ProductDetail/Lumex/SSL-LX5093LBI-SRD/?qs=sGAEpiMZZMvHYEB9WUp7ElLqM0HAvqw07NtkT0umwJ8%3d], Mouser Vert [http://www.mouser.fr/ProductDetail/Dialight/521-9465F/?qs=sGAEpiMZZMvHYEB9WUp7EvzO6BrrarQchHylkK4n3ZA%3d], &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Smartphone sous Android&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Aimants, Farnell [http://fr.farnell.com/duratool/d01767/aimant-12-x-3mm-pqt6/dp/1888096]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;3 Résistances CMS 330 Ohms, Mouser [http://www.mouser.fr/ProductDetail/Vishay/CRCW1206330RFKEA/?qs=sGAEpiMZZMvdGkrng054t%252b8cnVAnHPZkGMXtw0W%2fcW8%3d] &amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;1 Transistor Bipolaire, Mouser [http://www.mouser.fr/ProductDetail/Fairchild-Semiconductor/MMBTH10/?qs=sGAEpiMZZMvDjfggS9kWsbCZIMjqR5oUPy4t%252bWqVHyk%3d] &amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P47 [[IMA4 2016/2017 P47|Modélisation d’un robot mobile]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Logiciel MatLab Simulink&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Logiciel RobotinoView&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Robotino&amp;lt;/span&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P48 [[IMA4 2016/2017 P48|Surveillance d'un robot mobile]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Logiciel MatLab Simulink&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Logiciel RobotinoView&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Robotino&amp;lt;/span&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P3 [[IMA4 2016/2017 P3|Capteurs enfuis pour vieillissement du béton]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=40716</id>
		<title>IMA4 2016/2017 P46 : Aide anti-gaspillage alimentaire</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=40716"/>
				<updated>2017-03-23T13:06:33Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : /* Semaine 9 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
En France, nous jetons en moyenne 21% des aliments que nous achetons, ce qui représente une perte de 100 à 160 euros par an par habitant. Cela est en partie dû à la date limite de consommation associée à chaque produit. En effet, à partir du moment où cette date sera dépassée le consommateur jettera les produits concernés sans réfléchir, même si ceux-ci peuvent parfois être encore mangeables. Plutôt que d'essayer de les convaincre du contraire, il serait judicieux de proposer aux adeptes du gaspillage une aide permettant de gérer tous les aliments dont ils disposent chez eux afin d'éviter la surprise de tomber sur plusieurs produits périmés lorsqu'ils ouvrent la porte de leur frigo. &lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Ce projet permet d'aider les utilisateurs d'une part à mémoriser les denrées périssables qu'ils disposent dans leur réserve alimentaire et d'autre part d'avertir l'utilisateur qu'un événement important a lieu. Ceci peut être une notification qu'un aliment va bientôt dépasser sa date de péremption, que la porte du frigidaire est restée ouverte ou encore que le nombre d'aliments dans la réserve devient critique et qu'il faudra de nouveau l'alimenter. Enfin, le système aidera l'utilisateur à trouver des idées de repas pouvant permettre de consommer les aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Notre prototype permettra d'éviter le gaspillage alimentaire ainsi que d'aider l'utilisateur dans sa gestion du stockage d'aliments.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
&lt;br /&gt;
Notre système sera composé de 3 éléments. &lt;br /&gt;
&lt;br /&gt;
Premièrement, un ou des smartphones appartenant aux utilisateurs. Ces derniers permettront de scanner grâce à son appareil photo, le code barre du produit ainsi que sa date de péremption. Il servira aussi d'interface utilisateur pour notre système. En effet, c'est par cet outil que l'utilisateur pourra lister tous les aliments que l'utilisateur a dans sa base et tout ça en les triant par date de péremption, ou encore voir les recettes possibles pour consommer des aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Deuxièmement, un serveur, de type Raspberry, qui permettra de stocker la base de donnée contenant les aliments de la réserve. Ce serveur sera connecté par wifi.&lt;br /&gt;
 &lt;br /&gt;
Troisièmement, un contrôleur (Rfduino) qui comportera une LED pour indiquer la mise sous tension du contrôleur, une LED pour prévenir l'utilisateur qu'un aliment va bientôt passer sa date de péremption et une dernière LED pour prévenir l'utilisateur que son niveau de réserve est critique ainsi qu'un buzzer et un accéléromètre pour buzzer quand la porte du frigo est restée trop longtemps ouverte. Ce dernier sera fixé au frigo par l'intermédiaire d'un dispositif adapté qui sera un système aimanté qui se pose sur le frigo.&lt;br /&gt;
&lt;br /&gt;
Nous implémenterons donc une application mobile Android qui fera le lien entre les 2 autres systèmes.&lt;br /&gt;
&lt;br /&gt;
Pour la partie électronique que nous aurons à réaliser, nous utiliserons une Breadboard pour faire des premiers tests puis nous créerons une carte PCB pour notre montage final.&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
On utilisera une Raspberry Pi en guise de serveur pour pouvoir s'occuper du stockage de toutes les données dans notre projet puisque notre contrôleur sera incapable de les contenir, ce n'est d'ailleurs pas son but ici.&lt;br /&gt;
&lt;br /&gt;
Notre smartphone fera donc le lien entre notre base de données et notre système embarqué par l'intermédiaire de l'application mobile.&lt;br /&gt;
&lt;br /&gt;
Nous prendrons ici un RFduino puisque celui-ci nous permet d'ajouter des modules comme bon nous semble afin d'adapter le système aux besoins de notre application. Il est également parfaitement compatible avec les applications Android. De plus, nous avons un Bluetooth directement intégré au RFduino pour s'assurer que les liaisons RFduino-application mobile se fassent correctement. &lt;br /&gt;
On notera également que ce contrôleur consomme peu de courant et ne demande qu'une faible tension d'alimentation, critères importants pour ce genre de projet. C'est la raison principale de son utilisation pour être utilisé comme interface physique sur le frigo, en ajoutant également sa taille réduite comparée à la Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
&lt;br /&gt;
Nous avons donc besoin du matériel suivant :&lt;br /&gt;
&lt;br /&gt;
*Raspberry Pi.&lt;br /&gt;
*Clef wifi&lt;br /&gt;
*RFduino (RFD22102 DIP Board, RFD22121 USB Shield, RFD22126 Dual AAA battery shield).&lt;br /&gt;
*2 piles AAA.&lt;br /&gt;
*3 leds tranversantes.&lt;br /&gt;
*3 Résistances 330 Ohm.&lt;br /&gt;
*1 Résistance 10 kOhm.&lt;br /&gt;
*Un buzzer.&lt;br /&gt;
*Accéléromètre.&lt;br /&gt;
*Aimants&lt;br /&gt;
*Un boîtier permettant d'intégrer la RFduino + fixation sur le frigo (modélisation à voir).&lt;br /&gt;
&lt;br /&gt;
Pour le buzzer, l'accéléromètre et les résistances, nous choisirons des composants CMS pour nous permettre d'avoir une carte plus petite.&lt;br /&gt;
&lt;br /&gt;
===Calendrier prévisionnel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Liste des tâches à effectuer====&lt;br /&gt;
&lt;br /&gt;
* Configurer la Raspberry :&lt;br /&gt;
** Installer et configurer le serveur.&lt;br /&gt;
** Créer le diagramme UML de notre future base de données.&lt;br /&gt;
** Créer la base sur le serveur.&lt;br /&gt;
** Configurer la connexion WiFi.&lt;br /&gt;
&lt;br /&gt;
* Monter et programmer la RFduino :&lt;br /&gt;
** Connecter les différents modules au RFduino (accéléromètre, LEDs, buzzer, Batterie, module Bluetooth).&lt;br /&gt;
** Récupérer les consignes du smartphone grâce au Bluetooth.&lt;br /&gt;
** Programmer le comportement du RFduino en fonction des consignes.&lt;br /&gt;
** Construire le boitier final.&lt;br /&gt;
&lt;br /&gt;
* Implémenter l'application mobile Android :&lt;br /&gt;
** Une première activité permettant de se connecter au RFduino et à la Raspberry.&lt;br /&gt;
** Scanner une date et un code barre.&lt;br /&gt;
** Ajout/suppression d'un aliment dans la base de donnée.&lt;br /&gt;
** Envoi d'une consigne au RFduino.&lt;br /&gt;
** Rendre l'interface utilisateur ergonomique (lister aliments, envoyer vers page de recettes avec l'utilisation des aliments bientôt périmés...).&lt;br /&gt;
&lt;br /&gt;
====Calendrier====&lt;br /&gt;
&lt;br /&gt;
Répartition du temps consacré au projet (120h *2) :&lt;br /&gt;
&lt;br /&gt;
*Partie Raspberry : 60h&lt;br /&gt;
*Partie RFduino : 60h&lt;br /&gt;
*Partie développement mobile : 120h&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
&lt;br /&gt;
===Résumé===&lt;br /&gt;
&lt;br /&gt;
====Semaine 1====&lt;br /&gt;
&lt;br /&gt;
'''23/01''' :  &lt;br /&gt;
* Installation du logiciel Android Studio pour être prêt à commencer l'application mobile.&lt;br /&gt;
* Création du Repository Git sur GitHub : https://github.com/FrancoisLefevre12/Optali.git&lt;br /&gt;
* Réalisation de différents schémas fonctionnels pour se donner une idée du travail à effectuer, aussi bien du software que du hardware.&lt;br /&gt;
* Quelques précisions supplémentaires apportées sur le cahier des charges.&lt;br /&gt;
* Ajout de liens de référence pour la liste de matériel à acheter.&lt;br /&gt;
&lt;br /&gt;
'''25/01''' :  &lt;br /&gt;
* Précision des composants requis (accéléromètre, buzzer, LEDs, résistances).&lt;br /&gt;
* Écriture du montage à la main.&lt;br /&gt;
* Étude du fonctionnement de l'accéléromètre, du buzzer.&lt;br /&gt;
* Écriture de la structure de l'application à la main.&lt;br /&gt;
&lt;br /&gt;
'''26/01''' :&lt;br /&gt;
*Réalisation graphique de la première page de l'application.&lt;br /&gt;
*Conception du schéma électrique pour tous les composants connectés au RFduino.&lt;br /&gt;
&lt;br /&gt;
====Semaine 2====&lt;br /&gt;
&lt;br /&gt;
'''30/01''' :&lt;br /&gt;
*Réalisation du diagramme UML de la base de données qui sera stockée sur la Raspberry Pi&lt;br /&gt;
*Installation de l'outil de développement mobile sur le second PC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''01/02''' :&lt;br /&gt;
*Nous nous sommes d'abord rendus compte que la résistance entre un des GPIO et l'accéléromètre était inutile, nos premiers calculs étaient erronés. Nous ne la garderons donc pas sur notre schéma électrique final.&lt;br /&gt;
*Avancement sur la partie application mobile : réalisation de la page &amp;quot;Ajout&amp;quot; sur laquelle nous tomberons après avoir cliquer sur &amp;quot;ajout&amp;quot; sur la page principale de l'application. Nous avons étendu l'activité principale jusqu'à cette nouvelle activité &amp;quot;Ajout&amp;quot;.&lt;br /&gt;
*Nous avons récupéré notre Raspberry Pi pour commencer à installer notre base de données dessus. Nous avons actuellement quelques problèmes pour nous connecter sur la Raspberry. Nous travaillons sur ce point.&lt;br /&gt;
&lt;br /&gt;
'''02/02''' :&lt;br /&gt;
* Application mobile : Mise en place des LEDs sur la home page et de la zone de notification avec les messages associés.&lt;br /&gt;
&lt;br /&gt;
====Semaine 3====&lt;br /&gt;
&lt;br /&gt;
'''06/02''' :&lt;br /&gt;
*Nous arrivons à accéder à la Raspberry via le port série de celle-ci. Nous avons également configuré sa connexion Ethernet afin de pouvoir télécharger des paquets dessus et installer notre base de données. &lt;br /&gt;
*Nous rencontrions des problèmes sur le second PC de travail pour récupérer le projet Optali sur Android Studio via notre dépôt GIT. Nous avons pu rectifier ce souci.&lt;br /&gt;
&lt;br /&gt;
'''08/02''' :&lt;br /&gt;
*Tentative d'établissement d'un point d'accès WiFi sur notre Raspberry. Nous n'avons pas réussi pour le moment.&lt;br /&gt;
*Restructuration du Repository git.&lt;br /&gt;
*Essai d'importation de la librairie Zxing qui permettra de décoder les code-barres.&lt;br /&gt;
&lt;br /&gt;
====Semaine 4====&lt;br /&gt;
&lt;br /&gt;
'''13/02'''&lt;br /&gt;
*Configuration du wifi de la Raspberry. &lt;br /&gt;
*Étude d'une mise en place d'un service web via php.&lt;br /&gt;
&lt;br /&gt;
'''15/02'''&lt;br /&gt;
*Mise en place d'un lecteur de caractère sur l'application. On utilisera tesseract.&lt;br /&gt;
*Début de la création du PCB via Altium designer. Création d'une librairie pour l'accéléromètre qui est un composant CMS assez spécial. On pourra cependant utiliser des headers classiques pour le buzzer et les LEDs puisque ce sont des composants traversants.&lt;br /&gt;
*Création des premiers fichiers php de connection à la base de donnée et d'insertion d'aliments. Tous ces fichiers seront déposés de la même manière sur le dépôt git.&lt;br /&gt;
&lt;br /&gt;
'''16/02'''&lt;br /&gt;
*Adaptation avec prise en compte des cas du code php d'insertion de produits par requête sur la base de donnée.&lt;br /&gt;
*Ajout du code d'implantation de la base de donnée.&lt;br /&gt;
*Altium: Accéléromètre terminé, mise en place des résistances.&lt;br /&gt;
&lt;br /&gt;
====Semaine 5 (interruption pédagogique)====&lt;br /&gt;
&lt;br /&gt;
'''22/02 (3 heures)'''&lt;br /&gt;
*Installation de l'OS de la raspberry.&lt;br /&gt;
*Installation d'Openssh-server, apache2, php5, iptables, mysql-server, php5-mysql.&lt;br /&gt;
*Redirection des ports du routeur vers la raspberry.&lt;br /&gt;
*Configuration de iptables de la raspberry.&lt;br /&gt;
&lt;br /&gt;
'''23/02 (2 heures)'''&lt;br /&gt;
*Implantation de la base de donnée sur la raspberry pi.&lt;br /&gt;
&lt;br /&gt;
====Semaine 6====&lt;br /&gt;
'''27/02'''&lt;br /&gt;
*Vérification de la syntaxe de l'insertion de valeurs dans la base de donnée.&lt;br /&gt;
*Création des premières requêtes sur la base de donnée.&lt;br /&gt;
*Finalisation du PCB de l'Optali Board.&lt;br /&gt;
&lt;br /&gt;
'''01/03'''&lt;br /&gt;
*Étude et ajout de la librairie volley pour communiquer avec le serveur.&lt;br /&gt;
*Implantation de la fonction d'envoi de données jusqu'au serveur.&lt;br /&gt;
*Après avoir vu avec un professeur, nous avons remarqué que le routage n'était pas adéquat et la disposition des composants n'était pas optimal. Du travail reste donc encore à effectuer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Semaine 7====&lt;br /&gt;
'''06/03'''&lt;br /&gt;
*Correction du fichier post.php&lt;br /&gt;
*Finition du protocole d'ajout d'aliment sur la base de donnée. (Code php et page ajout terminée).&lt;br /&gt;
*PCB terminé.&lt;br /&gt;
*Installation d'arduino IDE, doc arduino collecté.&lt;br /&gt;
&lt;br /&gt;
'''08/03'''&lt;br /&gt;
*Implémentation de la page ListeIngredient.xml et de l'activité listActivity.java.&lt;br /&gt;
*Documentation sur la procédure de communication bluetooth entre la Rfduino et l'application mobile.&lt;br /&gt;
*Obtention de librairie en lien avec cela.&lt;br /&gt;
*Prise en main de programmation rfduino.&lt;br /&gt;
&lt;br /&gt;
'''09/03'''&lt;br /&gt;
*Nous nous sommes rendus compte qu'il était nécessaire de rajouter un bouton poussoir sur notre montage afin de permettre la réinitialisation de notre RFDuino si nécessaire. Nous devons également faire en sorte de pouvoir poser notre carte PCB directement sur notre RFDuino en utilisant des broches. Nous devons donc rajouter ces éléments-ci.&lt;br /&gt;
*Ecriture de la page get.php&lt;br /&gt;
*Premiers tests sur la ListView de l'activité ListActivity.&lt;br /&gt;
&lt;br /&gt;
====Semaine 8====&lt;br /&gt;
'''13/03'''&lt;br /&gt;
*Recherche de pistes concernant la programmation RFDuino. Nous pouvons la détecter en bluetooth via un smartphone Android.&lt;br /&gt;
*Finition du Tablelayout et du code java associé sur la page ListActivity.&lt;br /&gt;
&lt;br /&gt;
'''15/03'''&lt;br /&gt;
*Ajout de la JsonArrayRequest dans la page ListActivity.&lt;br /&gt;
*Nous nous sommes rendus compte au moment de programmer la liaison I2C de l'accéléromètre avec la RFDuino que nous avions oublié de mettre des résistances pull-up entre l'alimentation du composant et les broches SDA et SCL. Les modifications ont donc été faites puis nous avons envoyé finalement notre PCB à la fabrication.&lt;br /&gt;
&lt;br /&gt;
'''16/03'''&lt;br /&gt;
*Changement de stratégie au niveau de la requête JsonArrayRequest. On récupère toute la base et ensuite le traitement sera effectuer dans l'application mobile.&lt;br /&gt;
*Rédaction de la partie Altium du wiki.&lt;br /&gt;
*Recherche de docs sur le système bluetooth du RFduino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Semaine 9====&lt;br /&gt;
'''20/03'''&lt;br /&gt;
*Réalisation de différents réglages pour pouvoir utiliser l'application Optali sur l'Android phone fourni par notre professeur (LG G4c)&lt;br /&gt;
*Recherche de docs concernant la partie java responsable de la communication Bluetooth.&lt;br /&gt;
*Reprise de la solution Tesseract pour la lecture de caractères.&lt;br /&gt;
&lt;br /&gt;
'''21/03''' (séance supplémentaire de 3 heures)&lt;br /&gt;
*Début du développement de la partie communication entre RFDuino et l'appli mobile. Nous pouvons détecter le RFduino à partir de Android Studio mais nous n'arrivons pas encore à nous connecter dessus directement.&lt;br /&gt;
*Finition de la fonctionnalité tesseract. La lecture de caractères est donc maintenant possible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''22/03'''&lt;br /&gt;
*Debuggage de la requête get de l'activité ListActivity&lt;br /&gt;
*Connexion possible entre le RFduino et notre appli mobile. Il faut maintenant pouvoir assurer un échange de données via du GATT.&lt;br /&gt;
&lt;br /&gt;
===Premières idées===&lt;br /&gt;
&lt;br /&gt;
Voici les premières idées de l'application mobile et du composant fixé sur le frigo.&lt;br /&gt;
[[Fichier:Optali_v1.jpg|400px|thumb|left|Optali version 1]]&lt;br /&gt;
[[Fichier:OptaliBox_v1.jpg|400px|thumb|center|OptaliBox version 1]]&lt;br /&gt;
[[Fichier:P46_schema.jpg|400px|thumb|center|Schéma électrique version 1]]&lt;br /&gt;
&lt;br /&gt;
En s'intéressant aux différentes datasheets ou données constructeur des composants que nous voulons utiliser, nous trouvons indispensable d'utiliser des résistances de 330 Ohms pour l'utilisation des LEDs, pour éviter de les griller.&lt;br /&gt;
&lt;br /&gt;
Edit : Retrait de la résistance R2.&lt;br /&gt;
&lt;br /&gt;
Concernant l'accéléromètre, nous avons choisi un modèle qui nous permet de brancher directement ce module sur une broche du RFDuino. On branchera directement les GPIOs de la RFduino sur les ports SDA et SCL de l'accéléromètre qui correspondent à l'interface I2C pour pouvoir communiquer. On utilisera aussi la broche INT1 pour pouvoir générer des interruptions directement depuis l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
On connectera le buzzer directement à une broche de la RFduino aussi. Concernant celui-ci il reste une incertitude puisqu'on ne trouve aucune information sur le courant à fournir pour l'alimentation de ce composant sur sa datasheet. Après différentes recherches sur Internet, il pourrait être nécessaire d'utiliser un montage amplificateur à transistor comme un émetteur commun pour booster le courant en sortie d'une broche GPIO. Quelques buzzers trouvés avec des données constructeur montrent que ce type de composant nécessite généralement un courant d'environ 30 mA. Nous verrons dans la pratique si cela sera vraiment nécessaire. Par sécurité, on ajoutera un transistor bipolaire dans la liste de matériel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:screen_LED.png|400px|thumb|left|Données constructeur pour LEDs]]&lt;br /&gt;
[[Fichier:screen_accel.png|400px|thumb|center|Datasheet de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
===Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
====Configuration école====&lt;br /&gt;
&lt;br /&gt;
*Pour configurer notre Raspberry Pi, nous utilisons son port série et &amp;quot;minicom&amp;quot;. Pour pouvoir télécharger des paquets, il fallait la connecter au réseau. Nous lui avons donc affecté une adresse IP fixe avec le fichier /etc/network/interfaces. Voici les modifications qui ont été apportées : &lt;br /&gt;
&lt;br /&gt;
   auto eth0&lt;br /&gt;
   iface eth0 inet static&lt;br /&gt;
   address 172.26.78.15&lt;br /&gt;
   netmask 255.255.240.0&lt;br /&gt;
   gateway 172.26.79.254&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il a également fallu ajouter la commande &amp;quot;export http_proxy=http://proxy.polytech-lille.fr:3128&amp;quot; (il faudra effectuer cette commande à chaque démarrage de la Pi) pour pouvoir utiliser le proxy de l'école. &lt;br /&gt;
Nous avons de plus modifier le fichier /etc/resolv.conf avec la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
   nameserver 193.48.57.34&lt;br /&gt;
&lt;br /&gt;
Malgré cela, nous avions des soucis pour nous connecter au réseau. Il y avait en fait un processus dhcp en tâche de fond qui nous empêchait de garder le contenu de resolv.conf. Il a donc fallu trouver ce processus pour le &amp;quot;kill&amp;quot; et pouvoir accéder correctement au réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons du coup pu installer postgresql pour pouvoir configurer une base de données sur notre Pi.&lt;br /&gt;
&lt;br /&gt;
====Configuration à domicile====&lt;br /&gt;
&lt;br /&gt;
Pour nous mettre dans une situation plus fidèle à notre projet, nous avons configuré la raspberry à domicile.&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abords installé Raspbian, puis installé les paquets nécessaire au fonctionnement du serveur.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Openssh-server''': permettre d'accès à distance à la raspberry pour pouvoir y accéder depuis l'école.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Iptables''': pour sécuriser les ports non utilisé et libérer l'accès aux ports qui nous intéressent (ssh 22,http 80,https 443).&amp;lt;br&amp;gt;&lt;br /&gt;
- '''apache2, php5, mysql-server''' : pour mettre en place notre service web.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons rediriger les ports 80 et 22 du routeur pour pouvoir accéder à la raspberry de l'extérieur.&lt;br /&gt;
&lt;br /&gt;
Pour finir, nous avons créer un fichier de config iptables permettant de sécuriser un minimum la base de donnée et de permettre d'autoriser la communication des ports 22, 80 et 443 correspondants aux ports ssh, http et https. le fichier de configuration a été déposé dans le dépôt git. Il nous a fallut le rendre exécutable via un chmod. Puis pour l'exécuter à chaque démarrage du system, dans le fichier /etc/init.d/ taper : &lt;br /&gt;
&lt;br /&gt;
    sudo update-rc.d firewall defaults (si notrefichier s'appelle firewall et s'il est dans init.d)&lt;br /&gt;
&lt;br /&gt;
===Base de donnée===&lt;br /&gt;
&lt;br /&gt;
Nos données alimentaires disponibles par toute la famille doivent être stocké sur un serveur de base de donnée externe (tel une Raspberry pi). Nous nous proposons de créer le diagramme UML représentant cette future base de donnée.&lt;br /&gt;
[[Fichier:Optali_UML.jpg|700px|thumb|center|Diagramme UML base de donnée]]&lt;br /&gt;
&lt;br /&gt;
On créera donc 3 entités. Date, Product et Recipe. &lt;br /&gt;
&lt;br /&gt;
- Product rassemble les aliments qui sont ou ont été dans la réserve alimentaire. NbProdIn permet de connaître le nombre de produits identiques (possibilité de date différentes mais pas de doublons et on garde l'information de quantité. NbProdBought donne une information sur le nombre de produits identique ayant été acheté depuis la mise en service de la base de donnée. Ainsi nous pourrons par la suite proposer une liste de course à l'utilisateur en fonction de la fréquence d'achat des produits.&lt;br /&gt;
&lt;br /&gt;
- Recipe contient les recettes que pourra rentrer l'utilisateur sur l'application. L'utilisateur pourra ainsi se voir proposer des recettes en fonction de ce qu'il a dans son frigo et de ses recettes personnelles.&lt;br /&gt;
&lt;br /&gt;
'''''Edit : On ajoutera une valeur entière dans les tables Date et Unity pour gérer le cas où il existe plusieurs produits (différents ou identiques) avec une date de péremption équivalente. On les appellera NbDate la valeur dans la table Date et NbUnity dans la table Unity. On leur ajoutera de même une clef primaire IdUnity et IdListProduct'''''&lt;br /&gt;
&lt;br /&gt;
On utilisera MySql pour la gestion de nos bases de données. &lt;br /&gt;
La syntaxe pour l'implanter dans la base de donnée à été jointe au dépôt git.&lt;br /&gt;
&lt;br /&gt;
Pour lancer my SQL, on tapera:&lt;br /&gt;
&lt;br /&gt;
   mysql -h localhost -u root -p&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Web service===&lt;br /&gt;
&lt;br /&gt;
====Page init.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet d'initier l'accès à la base de donnée sur le serveur. Elle est requise pour les pages qui suivent.&lt;br /&gt;
&lt;br /&gt;
====Page post.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet l'insertion d'un produit et d'une date via l'application mobile. Elle prend donc ces deux arguments et les insère dans les tables Unity, Product et Date.&lt;br /&gt;
&lt;br /&gt;
====Page get.php====&lt;br /&gt;
&lt;br /&gt;
Page qui envoie la liste des aliments avec leur nom, leur date, leur quantité dans le frigo, la quantité d'exemplaires acheté en tout depuis la mise en place de l'appareil. Le tri se fera directement dans l'application mobile. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Application Mobile===&lt;br /&gt;
&lt;br /&gt;
====Home page====&lt;br /&gt;
&lt;br /&gt;
Page d'accueil permettant d'accéder aux pages d'ajout et de liste des produits disponibles. &amp;lt;br&amp;gt;&lt;br /&gt;
La page permet aussi d'effectuer la connexion entre la rfduino et l'application mobile. Elle montre les alertes (signaux) à l'utilisateur &lt;br /&gt;
et écrit leur signification.&lt;br /&gt;
&lt;br /&gt;
====Page d'ajout====&lt;br /&gt;
&lt;br /&gt;
Pour ajouter un produit et lire une date on utilisera un champ editText pour permettre à l'utilisateur d'écrire &amp;quot;Manuellement&amp;quot; dedans grâce au clavier du smartphone.&amp;lt;br&amp;gt;&lt;br /&gt;
De plus on utilise un bouton qui appellera la caméra pour détecter les caractères d'un produit ou d'une date. Au début nous voulions utiliser un détecteur de code barre, nous l'avons implémenté mais nous avons remarqué que la mise au point sur une surface non plane prend du temps d'autant plus qu'il faut questionner une base de donnée contenant tous les numéro de codes barres utilisés. Nous avons donc prit la décision d'utiliser uniquement la lecture de caractère et nous créerons une liste déroulante sous l'editText pour faciliter l'insertion d'un produit qui a déjà été ajouté. Pour la lecture de caractère, nous utilisons la librairie tesseract.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'envoi, nous utilisons la librairie Volley développé par google.&lt;br /&gt;
&lt;br /&gt;
====Page Liste====&lt;br /&gt;
&lt;br /&gt;
Permet de lister les produits dans la base de donnée. Une série de boutons radio permettent de trier les produits par ordre alphabétique, par date de péremption, par nombre d’occurrence dans la réserve alimentaire, par nombre d'achat depuis la mise en place du système.&amp;lt;br&amp;gt;&lt;br /&gt;
Une colonne permet de sélectionner les aliments désirés (par checkBox) pour ensuite les supprimer via un button &amp;quot;suppr&amp;quot; ou les choisir pour trouver des recettes qui les utilisent.&amp;lt;br&amp;gt;&lt;br /&gt;
Un EditText permet d'effectuer une recherche sur la base de donnée.&lt;br /&gt;
&lt;br /&gt;
===Altium Designer===&lt;br /&gt;
&lt;br /&gt;
Pour permettre au RFDuino de communiquer avec les différents composants, nous aurons besoin de quelques composants électroniques. Afin que cela soit plus esthétique pour la modélisation finale, nous allons créer une carte PCB pour rassembler tous ces composants dessus. On utilisera le logiciel Altium Designer pour cela.&lt;br /&gt;
&lt;br /&gt;
Avant de représenter notre circuit général, nous allons commencer par créer une librairie rassemblant tous les composants que nous utiliserons par la suite, en particulier nos composants CMS (accéléromètre et résistances). Pour ce qui est des LEDs et du buzzer, qui sont traversants, nous pourrons utiliser des headers classiques.&lt;br /&gt;
&lt;br /&gt;
Il a donc fallu créer le schematic ainsi que l'empreinte de nos composants CMS. Voici un exemple avec notre accéléromètre :&lt;br /&gt;
[[Fichier:Accelerosch.PNG|500px|thumb|left|Schematic de l'accéléromètre]]&lt;br /&gt;
[[Fichier:Acceleropcb.PNG|500px|thumb|center|Empreinte PCB de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les fichiers Altium sont disponibles sur notre dépôt GIT. Après cela, nous pouvons maintenant construire notre schematic du montage entier et ensuite le fichier PCB afin de pouvoir graver notre circuit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après quelques modifications sur le montage prévu initialement, c'est-à-dire en enlevant une résistance entre un GPIO et l'alimentation de l'accéléromètre ainsi qu'en rajoutant des résistances pull-up sur les broches de notre liaison i2C (SDA et SCL) et un bouton poussoir en plus pour permettre un reset du RFDuino, nous avons pu créer notre schematic global pour en faire un PCB et l'exporter au format Gerber. De ce fait, le service EEI de Polytech pourra réaliser la gravure de notre carte PCB.&lt;br /&gt;
&lt;br /&gt;
Voici quelques photos pour illustrer notre projet sur Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Finalproto_sch.PNG|400px|thumb|left|Schematic du montage final]]&lt;br /&gt;
[[Fichier:Finalproto_pcb.PNG|400px|thumb|center|PCB du montage final]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On retrouve sur notre PCB final les headers, respectivement de 8 et 5 pins, de part et d'autre de la carte, qui représentent le RFDuino, où nous souderons des broches pour qu'elles puissent être intégrées au RFDuino. On note la présence de 5 autres headers de 2 pins, dont 3 pour des LEDs puis les 2 autres pour le buzzer et le bouton poussoir. Ce qui reste sont les composants CMS avec plusieurs composants à 2 pattes qui sont toutes les résistances de notre montage, celles de protection pour les LEDs et les pull-ups pour l'accéléromètre. Le dernier composant à 8 pattes est donc bien l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quelques difficultés ont été rencontrées durant ce travail notamment concernant les contraintes de construction sur le PCB final. En effet, les composants CMS choisis (surtout l'accéléromètre) étant parfois très petits, Altium n'accepte pas forcément le faible espacement entre les différentes pattes des composants, ce qui pose problème lors de la compilation. De plus, le plan de masse ne prenait pas en compte tous les éléments devant être rattachés à la masse. Il a fallu légèrement déplacer les headers représentant le RFDuino pour que cela soit possible. Il faudra alors peut-être légèrement plier les broches qui viendront s'intégrer sur le RFDuino pour ajouter notre PCB sur le RFDuino.&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=40611</id>
		<title>IMA4 2016/2017 P46 : Aide anti-gaspillage alimentaire</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=40611"/>
				<updated>2017-03-21T12:04:53Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : /* Semaine 9 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
En France, nous jetons en moyenne 21% des aliments que nous achetons, ce qui représente une perte de 100 à 160 euros par an par habitant. Cela est en partie dû à la date limite de consommation associée à chaque produit. En effet, à partir du moment où cette date sera dépassée le consommateur jettera les produits concernés sans réfléchir, même si ceux-ci peuvent parfois être encore mangeables. Plutôt que d'essayer de les convaincre du contraire, il serait judicieux de proposer aux adeptes du gaspillage une aide permettant de gérer tous les aliments dont ils disposent chez eux afin d'éviter la surprise de tomber sur plusieurs produits périmés lorsqu'ils ouvrent la porte de leur frigo. &lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Ce projet permet d'aider les utilisateurs d'une part à mémoriser les denrées périssables qu'ils disposent dans leur réserve alimentaire et d'autre part d'avertir l'utilisateur qu'un événement important a lieu. Ceci peut être une notification qu'un aliment va bientôt dépasser sa date de péremption, que la porte du frigidaire est restée ouverte ou encore que le nombre d'aliments dans la réserve devient critique et qu'il faudra de nouveau l'alimenter. Enfin, le système aidera l'utilisateur à trouver des idées de repas pouvant permettre de consommer les aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Notre prototype permettra d'éviter le gaspillage alimentaire ainsi que d'aider l'utilisateur dans sa gestion du stockage d'aliments.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
&lt;br /&gt;
Notre système sera composé de 3 éléments. &lt;br /&gt;
&lt;br /&gt;
Premièrement, un ou des smartphones appartenant aux utilisateurs. Ces derniers permettront de scanner grâce à son appareil photo, le code barre du produit ainsi que sa date de péremption. Il servira aussi d'interface utilisateur pour notre système. En effet, c'est par cet outil que l'utilisateur pourra lister tous les aliments que l'utilisateur a dans sa base et tout ça en les triant par date de péremption, ou encore voir les recettes possibles pour consommer des aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Deuxièmement, un serveur, de type Raspberry, qui permettra de stocker la base de donnée contenant les aliments de la réserve. Ce serveur sera connecté par wifi.&lt;br /&gt;
 &lt;br /&gt;
Troisièmement, un contrôleur (Rfduino) qui comportera une LED pour indiquer la mise sous tension du contrôleur, une LED pour prévenir l'utilisateur qu'un aliment va bientôt passer sa date de péremption et une dernière LED pour prévenir l'utilisateur que son niveau de réserve est critique ainsi qu'un buzzer et un accéléromètre pour buzzer quand la porte du frigo est restée trop longtemps ouverte. Ce dernier sera fixé au frigo par l'intermédiaire d'un dispositif adapté qui sera un système aimanté qui se pose sur le frigo.&lt;br /&gt;
&lt;br /&gt;
Nous implémenterons donc une application mobile Android qui fera le lien entre les 2 autres systèmes.&lt;br /&gt;
&lt;br /&gt;
Pour la partie électronique que nous aurons à réaliser, nous utiliserons une Breadboard pour faire des premiers tests puis nous créerons une carte PCB pour notre montage final.&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
On utilisera une Raspberry Pi en guise de serveur pour pouvoir s'occuper du stockage de toutes les données dans notre projet puisque notre contrôleur sera incapable de les contenir, ce n'est d'ailleurs pas son but ici.&lt;br /&gt;
&lt;br /&gt;
Notre smartphone fera donc le lien entre notre base de données et notre système embarqué par l'intermédiaire de l'application mobile.&lt;br /&gt;
&lt;br /&gt;
Nous prendrons ici un RFduino puisque celui-ci nous permet d'ajouter des modules comme bon nous semble afin d'adapter le système aux besoins de notre application. Il est également parfaitement compatible avec les applications Android. De plus, nous avons un Bluetooth directement intégré au RFduino pour s'assurer que les liaisons RFduino-application mobile se fassent correctement. &lt;br /&gt;
On notera également que ce contrôleur consomme peu de courant et ne demande qu'une faible tension d'alimentation, critères importants pour ce genre de projet. C'est la raison principale de son utilisation pour être utilisé comme interface physique sur le frigo, en ajoutant également sa taille réduite comparée à la Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
&lt;br /&gt;
Nous avons donc besoin du matériel suivant :&lt;br /&gt;
&lt;br /&gt;
*Raspberry Pi.&lt;br /&gt;
*Clef wifi&lt;br /&gt;
*RFduino (RFD22102 DIP Board, RFD22121 USB Shield, RFD22126 Dual AAA battery shield).&lt;br /&gt;
*2 piles AAA.&lt;br /&gt;
*3 leds tranversantes.&lt;br /&gt;
*3 Résistances 330 Ohm.&lt;br /&gt;
*1 Résistance 10 kOhm.&lt;br /&gt;
*Un buzzer.&lt;br /&gt;
*Accéléromètre.&lt;br /&gt;
*Aimants&lt;br /&gt;
*Un boîtier permettant d'intégrer la RFduino + fixation sur le frigo (modélisation à voir).&lt;br /&gt;
&lt;br /&gt;
Pour le buzzer, l'accéléromètre et les résistances, nous choisirons des composants CMS pour nous permettre d'avoir une carte plus petite.&lt;br /&gt;
&lt;br /&gt;
===Calendrier prévisionnel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Liste des tâches à effectuer====&lt;br /&gt;
&lt;br /&gt;
* Configurer la Raspberry :&lt;br /&gt;
** Installer et configurer le serveur.&lt;br /&gt;
** Créer le diagramme UML de notre future base de données.&lt;br /&gt;
** Créer la base sur le serveur.&lt;br /&gt;
** Configurer la connexion WiFi.&lt;br /&gt;
&lt;br /&gt;
* Monter et programmer la RFduino :&lt;br /&gt;
** Connecter les différents modules au RFduino (accéléromètre, LEDs, buzzer, Batterie, module Bluetooth).&lt;br /&gt;
** Récupérer les consignes du smartphone grâce au Bluetooth.&lt;br /&gt;
** Programmer le comportement du RFduino en fonction des consignes.&lt;br /&gt;
** Construire le boitier final.&lt;br /&gt;
&lt;br /&gt;
* Implémenter l'application mobile Android :&lt;br /&gt;
** Une première activité permettant de se connecter au RFduino et à la Raspberry.&lt;br /&gt;
** Scanner une date et un code barre.&lt;br /&gt;
** Ajout/suppression d'un aliment dans la base de donnée.&lt;br /&gt;
** Envoi d'une consigne au RFduino.&lt;br /&gt;
** Rendre l'interface utilisateur ergonomique (lister aliments, envoyer vers page de recettes avec l'utilisation des aliments bientôt périmés...).&lt;br /&gt;
&lt;br /&gt;
====Calendrier====&lt;br /&gt;
&lt;br /&gt;
Répartition du temps consacré au projet (120h *2) :&lt;br /&gt;
&lt;br /&gt;
*Partie Raspberry : 60h&lt;br /&gt;
*Partie RFduino : 60h&lt;br /&gt;
*Partie développement mobile : 120h&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
&lt;br /&gt;
===Résumé===&lt;br /&gt;
&lt;br /&gt;
====Semaine 1====&lt;br /&gt;
&lt;br /&gt;
'''23/01''' :  &lt;br /&gt;
* Installation du logiciel Android Studio pour être prêt à commencer l'application mobile.&lt;br /&gt;
* Création du Repository Git sur GitHub : https://github.com/FrancoisLefevre12/Optali.git&lt;br /&gt;
* Réalisation de différents schémas fonctionnels pour se donner une idée du travail à effectuer, aussi bien du software que du hardware.&lt;br /&gt;
* Quelques précisions supplémentaires apportées sur le cahier des charges.&lt;br /&gt;
* Ajout de liens de référence pour la liste de matériel à acheter.&lt;br /&gt;
&lt;br /&gt;
'''25/01''' :  &lt;br /&gt;
* Précision des composants requis (accéléromètre, buzzer, LEDs, résistances).&lt;br /&gt;
* Écriture du montage à la main.&lt;br /&gt;
* Étude du fonctionnement de l'accéléromètre, du buzzer.&lt;br /&gt;
* Écriture de la structure de l'application à la main.&lt;br /&gt;
&lt;br /&gt;
'''26/01''' :&lt;br /&gt;
*Réalisation graphique de la première page de l'application.&lt;br /&gt;
*Conception du schéma électrique pour tous les composants connectés au RFduino.&lt;br /&gt;
&lt;br /&gt;
====Semaine 2====&lt;br /&gt;
&lt;br /&gt;
'''30/01''' :&lt;br /&gt;
*Réalisation du diagramme UML de la base de données qui sera stockée sur la Raspberry Pi&lt;br /&gt;
*Installation de l'outil de développement mobile sur le second PC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''01/02''' :&lt;br /&gt;
*Nous nous sommes d'abord rendus compte que la résistance entre un des GPIO et l'accéléromètre était inutile, nos premiers calculs étaient erronés. Nous ne la garderons donc pas sur notre schéma électrique final.&lt;br /&gt;
*Avancement sur la partie application mobile : réalisation de la page &amp;quot;Ajout&amp;quot; sur laquelle nous tomberons après avoir cliquer sur &amp;quot;ajout&amp;quot; sur la page principale de l'application. Nous avons étendu l'activité principale jusqu'à cette nouvelle activité &amp;quot;Ajout&amp;quot;.&lt;br /&gt;
*Nous avons récupéré notre Raspberry Pi pour commencer à installer notre base de données dessus. Nous avons actuellement quelques problèmes pour nous connecter sur la Raspberry. Nous travaillons sur ce point.&lt;br /&gt;
&lt;br /&gt;
'''02/02''' :&lt;br /&gt;
* Application mobile : Mise en place des LEDs sur la home page et de la zone de notification avec les messages associés.&lt;br /&gt;
&lt;br /&gt;
====Semaine 3====&lt;br /&gt;
&lt;br /&gt;
'''06/02''' :&lt;br /&gt;
*Nous arrivons à accéder à la Raspberry via le port série de celle-ci. Nous avons également configuré sa connexion Ethernet afin de pouvoir télécharger des paquets dessus et installer notre base de données. &lt;br /&gt;
*Nous rencontrions des problèmes sur le second PC de travail pour récupérer le projet Optali sur Android Studio via notre dépôt GIT. Nous avons pu rectifier ce souci.&lt;br /&gt;
&lt;br /&gt;
'''08/02''' :&lt;br /&gt;
*Tentative d'établissement d'un point d'accès WiFi sur notre Raspberry. Nous n'avons pas réussi pour le moment.&lt;br /&gt;
*Restructuration du Repository git.&lt;br /&gt;
*Essai d'importation de la librairie Zxing qui permettra de décoder les code-barres.&lt;br /&gt;
&lt;br /&gt;
====Semaine 4====&lt;br /&gt;
&lt;br /&gt;
'''13/02'''&lt;br /&gt;
*Configuration du wifi de la Raspberry. &lt;br /&gt;
*Étude d'une mise en place d'un service web via php.&lt;br /&gt;
&lt;br /&gt;
'''15/02'''&lt;br /&gt;
*Mise en place d'un lecteur de caractère sur l'application. On utilisera tesseract.&lt;br /&gt;
*Début de la création du PCB via Altium designer. Création d'une librairie pour l'accéléromètre qui est un composant CMS assez spécial. On pourra cependant utiliser des headers classiques pour le buzzer et les LEDs puisque ce sont des composants traversants.&lt;br /&gt;
*Création des premiers fichiers php de connection à la base de donnée et d'insertion d'aliments. Tous ces fichiers seront déposés de la même manière sur le dépôt git.&lt;br /&gt;
&lt;br /&gt;
'''16/02'''&lt;br /&gt;
*Adaptation avec prise en compte des cas du code php d'insertion de produits par requête sur la base de donnée.&lt;br /&gt;
*Ajout du code d'implantation de la base de donnée.&lt;br /&gt;
*Altium: Accéléromètre terminé, mise en place des résistances.&lt;br /&gt;
&lt;br /&gt;
====Semaine 5 (interruption pédagogique)====&lt;br /&gt;
&lt;br /&gt;
'''22/02 (3 heures)'''&lt;br /&gt;
*Installation de l'OS de la raspberry.&lt;br /&gt;
*Installation d'Openssh-server, apache2, php5, iptables, mysql-server, php5-mysql.&lt;br /&gt;
*Redirection des ports du routeur vers la raspberry.&lt;br /&gt;
*Configuration de iptables de la raspberry.&lt;br /&gt;
&lt;br /&gt;
'''23/02 (2 heures)'''&lt;br /&gt;
*Implantation de la base de donnée sur la raspberry pi.&lt;br /&gt;
&lt;br /&gt;
====Semaine 6====&lt;br /&gt;
'''27/02'''&lt;br /&gt;
*Vérification de la syntaxe de l'insertion de valeurs dans la base de donnée.&lt;br /&gt;
*Création des premières requêtes sur la base de donnée.&lt;br /&gt;
*Finalisation du PCB de l'Optali Board.&lt;br /&gt;
&lt;br /&gt;
'''01/03'''&lt;br /&gt;
*Étude et ajout de la librairie volley pour communiquer avec le serveur.&lt;br /&gt;
*Implantation de la fonction d'envoi de données jusqu'au serveur.&lt;br /&gt;
*Après avoir vu avec un professeur, nous avons remarqué que le routage n'était pas adéquat et la disposition des composants n'était pas optimal. Du travail reste donc encore à effectuer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Semaine 7====&lt;br /&gt;
'''06/03'''&lt;br /&gt;
*Correction du fichier post.php&lt;br /&gt;
*Finition du protocole d'ajout d'aliment sur la base de donnée. (Code php et page ajout terminée).&lt;br /&gt;
*PCB terminé.&lt;br /&gt;
*Installation d'arduino IDE, doc arduino collecté.&lt;br /&gt;
&lt;br /&gt;
'''08/03'''&lt;br /&gt;
*Implémentation de la page ListeIngredient.xml et de l'activité listActivity.java.&lt;br /&gt;
*Documentation sur la procédure de communication bluetooth entre la Rfduino et l'application mobile.&lt;br /&gt;
*Obtention de librairie en lien avec cela.&lt;br /&gt;
*Prise en main de programmation rfduino.&lt;br /&gt;
&lt;br /&gt;
'''09/03'''&lt;br /&gt;
*Nous nous sommes rendus compte qu'il était nécessaire de rajouter un bouton poussoir sur notre montage afin de permettre la réinitialisation de notre RFDuino si nécessaire. Nous devons également faire en sorte de pouvoir poser notre carte PCB directement sur notre RFDuino en utilisant des broches. Nous devons donc rajouter ces éléments-ci.&lt;br /&gt;
*Ecriture de la page get.php&lt;br /&gt;
*Premiers tests sur la ListView de l'activité ListActivity.&lt;br /&gt;
&lt;br /&gt;
====Semaine 8====&lt;br /&gt;
'''13/03'''&lt;br /&gt;
*Recherche de pistes concernant la programmation RFDuino. Nous pouvons la détecter en bluetooth via un smartphone Android.&lt;br /&gt;
*Finition du Tablelayout et du code java associé sur la page ListActivity.&lt;br /&gt;
&lt;br /&gt;
'''15/03'''&lt;br /&gt;
*Ajout de la JsonArrayRequest dans la page ListActivity.&lt;br /&gt;
*Nous nous sommes rendus compte au moment de programmer la liaison I2C de l'accéléromètre avec la RFDuino que nous avions oublié de mettre des résistances pull-up entre l'alimentation du composant et les broches SDA et SCL. Les modifications ont donc été faites puis nous avons envoyé finalement notre PCB à la fabrication.&lt;br /&gt;
&lt;br /&gt;
'''16/03'''&lt;br /&gt;
*Changement de stratégie au niveau de la requête JsonArrayRequest. On récupère toute la base et ensuite le traitement sera effectuer dans l'application mobile.&lt;br /&gt;
*Rédaction de la partie Altium du wiki.&lt;br /&gt;
*Recherche de docs sur le système bluetooth du RFduino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Semaine 9====&lt;br /&gt;
'''20/03'''&lt;br /&gt;
*Réalisation de différents réglages pour pouvoir utiliser l'application Optali sur l'Android phone fourni par notre professeur (LG G4c)&lt;br /&gt;
*Recherche de docs concernant la partie java responsable de la communication Bluetooth.&lt;br /&gt;
*Reprise de la solution Tesseract pour la lecture de caractères.&lt;br /&gt;
&lt;br /&gt;
'''21/03''' (séance supplémentaire de 3 heures)&lt;br /&gt;
*Début du développement de la partie communication entre RFDuino et l'appli mobile. Nous pouvons détecter le RFduino à partir de Android Studio mais nous n'arrivons pas encore à nous connecter dessus directement.&lt;br /&gt;
*Finition de la fonctionnalité tesseract. La lecture de caractères est donc maintenant possible.&lt;br /&gt;
&lt;br /&gt;
===Premières idées===&lt;br /&gt;
&lt;br /&gt;
Voici les premières idées de l'application mobile et du composant fixé sur le frigo.&lt;br /&gt;
[[Fichier:Optali_v1.jpg|400px|thumb|left|Optali version 1]]&lt;br /&gt;
[[Fichier:OptaliBox_v1.jpg|400px|thumb|center|OptaliBox version 1]]&lt;br /&gt;
[[Fichier:P46_schema.jpg|400px|thumb|center|Schéma électrique version 1]]&lt;br /&gt;
&lt;br /&gt;
En s'intéressant aux différentes datasheets ou données constructeur des composants que nous voulons utiliser, nous trouvons indispensable d'utiliser des résistances de 330 Ohms pour l'utilisation des LEDs, pour éviter de les griller.&lt;br /&gt;
&lt;br /&gt;
Edit : Retrait de la résistance R2.&lt;br /&gt;
&lt;br /&gt;
Concernant l'accéléromètre, nous avons choisi un modèle qui nous permet de brancher directement ce module sur une broche du RFDuino. On branchera directement les GPIOs de la RFduino sur les ports SDA et SCL de l'accéléromètre qui correspondent à l'interface I2C pour pouvoir communiquer. On utilisera aussi la broche INT1 pour pouvoir générer des interruptions directement depuis l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
On connectera le buzzer directement à une broche de la RFduino aussi. Concernant celui-ci il reste une incertitude puisqu'on ne trouve aucune information sur le courant à fournir pour l'alimentation de ce composant sur sa datasheet. Après différentes recherches sur Internet, il pourrait être nécessaire d'utiliser un montage amplificateur à transistor comme un émetteur commun pour booster le courant en sortie d'une broche GPIO. Quelques buzzers trouvés avec des données constructeur montrent que ce type de composant nécessite généralement un courant d'environ 30 mA. Nous verrons dans la pratique si cela sera vraiment nécessaire. Par sécurité, on ajoutera un transistor bipolaire dans la liste de matériel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:screen_LED.png|400px|thumb|left|Données constructeur pour LEDs]]&lt;br /&gt;
[[Fichier:screen_accel.png|400px|thumb|center|Datasheet de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
===Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
====Configuration école====&lt;br /&gt;
&lt;br /&gt;
*Pour configurer notre Raspberry Pi, nous utilisons son port série et &amp;quot;minicom&amp;quot;. Pour pouvoir télécharger des paquets, il fallait la connecter au réseau. Nous lui avons donc affecté une adresse IP fixe avec le fichier /etc/network/interfaces. Voici les modifications qui ont été apportées : &lt;br /&gt;
&lt;br /&gt;
   auto eth0&lt;br /&gt;
   iface eth0 inet static&lt;br /&gt;
   address 172.26.78.15&lt;br /&gt;
   netmask 255.255.240.0&lt;br /&gt;
   gateway 172.26.79.254&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il a également fallu ajouter la commande &amp;quot;export http_proxy=http://proxy.polytech-lille.fr:3128&amp;quot; (il faudra effectuer cette commande à chaque démarrage de la Pi) pour pouvoir utiliser le proxy de l'école. &lt;br /&gt;
Nous avons de plus modifier le fichier /etc/resolv.conf avec la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
   nameserver 193.48.57.34&lt;br /&gt;
&lt;br /&gt;
Malgré cela, nous avions des soucis pour nous connecter au réseau. Il y avait en fait un processus dhcp en tâche de fond qui nous empêchait de garder le contenu de resolv.conf. Il a donc fallu trouver ce processus pour le &amp;quot;kill&amp;quot; et pouvoir accéder correctement au réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons du coup pu installer postgresql pour pouvoir configurer une base de données sur notre Pi.&lt;br /&gt;
&lt;br /&gt;
====Configuration à domicile====&lt;br /&gt;
&lt;br /&gt;
Pour nous mettre dans une situation plus fidèle à notre projet, nous avons configuré la raspberry à domicile.&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abords installé Raspbian, puis installé les paquets nécessaire au fonctionnement du serveur.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Openssh-server''': permettre d'accès à distance à la raspberry pour pouvoir y accéder depuis l'école.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Iptables''': pour sécuriser les ports non utilisé et libérer l'accès aux ports qui nous intéressent (ssh 22,http 80,https 443).&amp;lt;br&amp;gt;&lt;br /&gt;
- '''apache2, php5, mysql-server''' : pour mettre en place notre service web.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons rediriger les ports 80 et 22 du routeur pour pouvoir accéder à la raspberry de l'extérieur.&lt;br /&gt;
&lt;br /&gt;
Pour finir, nous avons créer un fichier de config iptables permettant de sécuriser un minimum la base de donnée et de permettre d'autoriser la communication des ports 22, 80 et 443 correspondants aux ports ssh, http et https. le fichier de configuration a été déposé dans le dépôt git. Il nous a fallut le rendre exécutable via un chmod. Puis pour l'exécuter à chaque démarrage du system, dans le fichier /etc/init.d/ taper : &lt;br /&gt;
&lt;br /&gt;
    sudo update-rc.d firewall defaults (si notrefichier s'appelle firewall et s'il est dans init.d)&lt;br /&gt;
&lt;br /&gt;
===Base de donnée===&lt;br /&gt;
&lt;br /&gt;
Nos données alimentaires disponibles par toute la famille doivent être stocké sur un serveur de base de donnée externe (tel une Raspberry pi). Nous nous proposons de créer le diagramme UML représentant cette future base de donnée.&lt;br /&gt;
[[Fichier:Optali_UML.jpg|700px|thumb|center|Diagramme UML base de donnée]]&lt;br /&gt;
&lt;br /&gt;
On créera donc 3 entités. Date, Product et Recipe. &lt;br /&gt;
&lt;br /&gt;
- Product rassemble les aliments qui sont ou ont été dans la réserve alimentaire. NbProdIn permet de connaître le nombre de produits identiques (possibilité de date différentes mais pas de doublons et on garde l'information de quantité. NbProdBought donne une information sur le nombre de produits identique ayant été acheté depuis la mise en service de la base de donnée. Ainsi nous pourrons par la suite proposer une liste de course à l'utilisateur en fonction de la fréquence d'achat des produits.&lt;br /&gt;
&lt;br /&gt;
- Recipe contient les recettes que pourra rentrer l'utilisateur sur l'application. L'utilisateur pourra ainsi se voir proposer des recettes en fonction de ce qu'il a dans son frigo et de ses recettes personnelles.&lt;br /&gt;
&lt;br /&gt;
'''''Edit : On ajoutera une valeur entière dans les tables Date et Unity pour gérer le cas où il existe plusieurs produits (différents ou identiques) avec une date de péremption équivalente. On les appellera NbDate la valeur dans la table Date et NbUnity dans la table Unity. On leur ajoutera de même une clef primaire IdUnity et IdListProduct'''''&lt;br /&gt;
&lt;br /&gt;
On utilisera MySql pour la gestion de nos bases de données. &lt;br /&gt;
La syntaxe pour l'implanter dans la base de donnée à été jointe au dépôt git.&lt;br /&gt;
&lt;br /&gt;
Pour lancer my SQL, on tapera:&lt;br /&gt;
&lt;br /&gt;
   mysql -h localhost -u root -p&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Web service===&lt;br /&gt;
&lt;br /&gt;
====Page init.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet d'initier l'accès à la base de donnée sur le serveur. Elle est requise pour les pages qui suivent.&lt;br /&gt;
&lt;br /&gt;
====Page post.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet l'insertion d'un produit et d'une date via l'application mobile. Elle prend donc ces deux arguments et les insère dans les tables Unity, Product et Date.&lt;br /&gt;
&lt;br /&gt;
====Page get.php====&lt;br /&gt;
&lt;br /&gt;
Page qui récupère un nombre qui défini selon quoi la liste est trié (0=par nom, 1=par date, 2=nombre dans le frigo, 3= par nombre en tout). Elle récupère aussi un mot ou un début de mot ou rien pour faire une recherche dans la base. On utilisera la syntaxe:&amp;lt;br&amp;gt;&lt;br /&gt;
    Product.product='&amp;quot;.$Search.&amp;quot;%'&lt;br /&gt;
&lt;br /&gt;
===Application Mobile===&lt;br /&gt;
&lt;br /&gt;
====Home page====&lt;br /&gt;
&lt;br /&gt;
Page d'accueil permettant d'accéder aux pages d'ajout et de liste des produits disponibles. &amp;lt;br&amp;gt;&lt;br /&gt;
La page permet aussi d'effectuer la connexion entre la rfduino et l'application mobile. Elle montre les alertes (signaux) à l'utilisateur &lt;br /&gt;
et écrit leur signification.&lt;br /&gt;
&lt;br /&gt;
====Page d'ajout====&lt;br /&gt;
&lt;br /&gt;
Pour ajouter un produit et lire une date on utilisera un champ editText pour permettre à l'utilisateur d'écrire &amp;quot;Manuellement&amp;quot; dedans grâce au clavier du smartphone.&amp;lt;br&amp;gt;&lt;br /&gt;
De plus on utilise un bouton qui appellera la caméra pour détecter les caractères d'un produit ou d'une date. Au début nous voulions utiliser un détecteur de code barre, nous l'avons implémenté mais nous avons remarqué que la mise au point sur une surface non plane prend du temps d'autant plus qu'il faut questionner une base de donnée contenant tous les numéro de codes barres utilisés. Nous avons donc prit la décision d'utiliser uniquement la lecture de caractère et nous créerons une liste déroulante sous l'editText pour faciliter l'insertion d'un produit qui a déjà été ajouté.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'envoi, nous utilisons la librairie Volley développé par google.&lt;br /&gt;
&lt;br /&gt;
====Page Liste====&lt;br /&gt;
&lt;br /&gt;
Permet de lister les produits dans la base de donnée. Une série de boutons radio permettent de trier les produits par ordre alphabétique, par date de péremption, par nombre d’occurrence dans la réserve alimentaire, par nombre d'achat depuis la mise en place du système.&amp;lt;br&amp;gt;&lt;br /&gt;
Une colonne permet de sélectionner les aliments désirés (par checkBox) pour ensuite les supprimer via un button &amp;quot;suppr&amp;quot; ou les choisir pour trouver des recettes qui les utilisent.&amp;lt;br&amp;gt;&lt;br /&gt;
Un EditText permet d'effectuer une recherche sur la base de donnée.&lt;br /&gt;
&lt;br /&gt;
===Altium Designer===&lt;br /&gt;
&lt;br /&gt;
Pour permettre au RFDuino de communiquer avec les différents composants, nous aurons besoin de quelques composants électroniques. Afin que cela soit plus esthétique pour la modélisation finale, nous allons créer une carte PCB pour rassembler tous ces composants dessus. On utilisera le logiciel Altium Designer pour cela.&lt;br /&gt;
&lt;br /&gt;
Avant de représenter notre circuit général, nous allons commencer par créer une librairie rassemblant tous les composants que nous utiliserons par la suite, en particulier nos composants CMS (accéléromètre et résistances). Pour ce qui est des LEDs et du buzzer, qui sont traversants, nous pourrons utiliser des headers classiques.&lt;br /&gt;
&lt;br /&gt;
Il a donc fallu créer le schematic ainsi que l'empreinte de nos composants CMS. Voici un exemple avec notre accéléromètre :&lt;br /&gt;
[[Fichier:Accelerosch.PNG|500px|thumb|left|Schematic de l'accéléromètre]]&lt;br /&gt;
[[Fichier:Acceleropcb.PNG|500px|thumb|center|Empreinte PCB de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les fichiers Altium sont disponibles sur notre dépôt GIT. Après cela, nous pouvons maintenant construire notre schematic du montage entier et ensuite le fichier PCB afin de pouvoir graver notre circuit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après quelques modifications sur le montage prévu initialement, c'est-à-dire en enlevant une résistance entre un GPIO et l'alimentation de l'accéléromètre ainsi qu'en rajoutant des résistances pull-up sur les broches de notre liaison i2C (SDA et SCL) et un bouton poussoir en plus pour permettre un reset du RFDuino, nous avons pu créer notre schematic global pour en faire un PCB et l'exporter au format Gerber. De ce fait, le service EEI de Polytech pourra réaliser la gravure de notre carte PCB.&lt;br /&gt;
&lt;br /&gt;
Voici quelques photos pour illustrer notre projet sur Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Finalproto_sch.PNG|400px|thumb|left|Schematic du montage final]]&lt;br /&gt;
[[Fichier:Finalproto_pcb.PNG|400px|thumb|center|PCB du montage final]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On retrouve sur notre PCB final les headers, respectivement de 8 et 5 pins, de part et d'autre de la carte, qui représentent le RFDuino, où nous souderons des broches pour qu'elles puissent être intégrées au RFDuino. On note la présence de 5 autres headers de 2 pins, dont 3 pour des LEDs puis les 2 autres pour le buzzer et le bouton poussoir. Ce qui reste sont les composants CMS avec plusieurs composants à 2 pattes qui sont toutes les résistances de notre montage, celles de protection pour les LEDs et les pull-ups pour l'accéléromètre. Le dernier composant à 8 pattes est donc bien l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quelques difficultés ont été rencontrées durant ce travail notamment concernant les contraintes de construction sur le PCB final. En effet, les composants CMS choisis (surtout l'accéléromètre) étant parfois très petits, Altium n'accepte pas forcément le faible espacement entre les différentes pattes des composants, ce qui pose problème lors de la compilation. De plus, le plan de masse ne prenait pas en compte tous les éléments devant être rattachés à la masse. Il a fallu légèrement déplacer les headers représentant le RFDuino pour que cela soit possible. Il faudra alors peut-être légèrement plier les broches qui viendront s'intégrer sur le RFDuino pour ajouter notre PCB sur le RFDuino.&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=40573</id>
		<title>IMA4 2016/2017 P46 : Aide anti-gaspillage alimentaire</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=40573"/>
				<updated>2017-03-20T16:54:00Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : /* Semaine 8 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
En France, nous jetons en moyenne 21% des aliments que nous achetons, ce qui représente une perte de 100 à 160 euros par an par habitant. Cela est en partie dû à la date limite de consommation associée à chaque produit. En effet, à partir du moment où cette date sera dépassée le consommateur jettera les produits concernés sans réfléchir, même si ceux-ci peuvent parfois être encore mangeables. Plutôt que d'essayer de les convaincre du contraire, il serait judicieux de proposer aux adeptes du gaspillage une aide permettant de gérer tous les aliments dont ils disposent chez eux afin d'éviter la surprise de tomber sur plusieurs produits périmés lorsqu'ils ouvrent la porte de leur frigo. &lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Ce projet permet d'aider les utilisateurs d'une part à mémoriser les denrées périssables qu'ils disposent dans leur réserve alimentaire et d'autre part d'avertir l'utilisateur qu'un événement important a lieu. Ceci peut être une notification qu'un aliment va bientôt dépasser sa date de péremption, que la porte du frigidaire est restée ouverte ou encore que le nombre d'aliments dans la réserve devient critique et qu'il faudra de nouveau l'alimenter. Enfin, le système aidera l'utilisateur à trouver des idées de repas pouvant permettre de consommer les aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Notre prototype permettra d'éviter le gaspillage alimentaire ainsi que d'aider l'utilisateur dans sa gestion du stockage d'aliments.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
&lt;br /&gt;
Notre système sera composé de 3 éléments. &lt;br /&gt;
&lt;br /&gt;
Premièrement, un ou des smartphones appartenant aux utilisateurs. Ces derniers permettront de scanner grâce à son appareil photo, le code barre du produit ainsi que sa date de péremption. Il servira aussi d'interface utilisateur pour notre système. En effet, c'est par cet outil que l'utilisateur pourra lister tous les aliments que l'utilisateur a dans sa base et tout ça en les triant par date de péremption, ou encore voir les recettes possibles pour consommer des aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Deuxièmement, un serveur, de type Raspberry, qui permettra de stocker la base de donnée contenant les aliments de la réserve. Ce serveur sera connecté par wifi.&lt;br /&gt;
 &lt;br /&gt;
Troisièmement, un contrôleur (Rfduino) qui comportera une LED pour indiquer la mise sous tension du contrôleur, une LED pour prévenir l'utilisateur qu'un aliment va bientôt passer sa date de péremption et une dernière LED pour prévenir l'utilisateur que son niveau de réserve est critique ainsi qu'un buzzer et un accéléromètre pour buzzer quand la porte du frigo est restée trop longtemps ouverte. Ce dernier sera fixé au frigo par l'intermédiaire d'un dispositif adapté qui sera un système aimanté qui se pose sur le frigo.&lt;br /&gt;
&lt;br /&gt;
Nous implémenterons donc une application mobile Android qui fera le lien entre les 2 autres systèmes.&lt;br /&gt;
&lt;br /&gt;
Pour la partie électronique que nous aurons à réaliser, nous utiliserons une Breadboard pour faire des premiers tests puis nous créerons une carte PCB pour notre montage final.&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
On utilisera une Raspberry Pi en guise de serveur pour pouvoir s'occuper du stockage de toutes les données dans notre projet puisque notre contrôleur sera incapable de les contenir, ce n'est d'ailleurs pas son but ici.&lt;br /&gt;
&lt;br /&gt;
Notre smartphone fera donc le lien entre notre base de données et notre système embarqué par l'intermédiaire de l'application mobile.&lt;br /&gt;
&lt;br /&gt;
Nous prendrons ici un RFduino puisque celui-ci nous permet d'ajouter des modules comme bon nous semble afin d'adapter le système aux besoins de notre application. Il est également parfaitement compatible avec les applications Android. De plus, nous avons un Bluetooth directement intégré au RFduino pour s'assurer que les liaisons RFduino-application mobile se fassent correctement. &lt;br /&gt;
On notera également que ce contrôleur consomme peu de courant et ne demande qu'une faible tension d'alimentation, critères importants pour ce genre de projet. C'est la raison principale de son utilisation pour être utilisé comme interface physique sur le frigo, en ajoutant également sa taille réduite comparée à la Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
&lt;br /&gt;
Nous avons donc besoin du matériel suivant :&lt;br /&gt;
&lt;br /&gt;
*Raspberry Pi.&lt;br /&gt;
*Clef wifi&lt;br /&gt;
*RFduino (RFD22102 DIP Board, RFD22121 USB Shield, RFD22126 Dual AAA battery shield).&lt;br /&gt;
*2 piles AAA.&lt;br /&gt;
*3 leds tranversantes.&lt;br /&gt;
*3 Résistances 330 Ohm.&lt;br /&gt;
*1 Résistance 10 kOhm.&lt;br /&gt;
*Un buzzer.&lt;br /&gt;
*Accéléromètre.&lt;br /&gt;
*Aimants&lt;br /&gt;
*Un boîtier permettant d'intégrer la RFduino + fixation sur le frigo (modélisation à voir).&lt;br /&gt;
&lt;br /&gt;
Pour le buzzer, l'accéléromètre et les résistances, nous choisirons des composants CMS pour nous permettre d'avoir une carte plus petite.&lt;br /&gt;
&lt;br /&gt;
===Calendrier prévisionnel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Liste des tâches à effectuer====&lt;br /&gt;
&lt;br /&gt;
* Configurer la Raspberry :&lt;br /&gt;
** Installer et configurer le serveur.&lt;br /&gt;
** Créer le diagramme UML de notre future base de données.&lt;br /&gt;
** Créer la base sur le serveur.&lt;br /&gt;
** Configurer la connexion WiFi.&lt;br /&gt;
&lt;br /&gt;
* Monter et programmer la RFduino :&lt;br /&gt;
** Connecter les différents modules au RFduino (accéléromètre, LEDs, buzzer, Batterie, module Bluetooth).&lt;br /&gt;
** Récupérer les consignes du smartphone grâce au Bluetooth.&lt;br /&gt;
** Programmer le comportement du RFduino en fonction des consignes.&lt;br /&gt;
** Construire le boitier final.&lt;br /&gt;
&lt;br /&gt;
* Implémenter l'application mobile Android :&lt;br /&gt;
** Une première activité permettant de se connecter au RFduino et à la Raspberry.&lt;br /&gt;
** Scanner une date et un code barre.&lt;br /&gt;
** Ajout/suppression d'un aliment dans la base de donnée.&lt;br /&gt;
** Envoi d'une consigne au RFduino.&lt;br /&gt;
** Rendre l'interface utilisateur ergonomique (lister aliments, envoyer vers page de recettes avec l'utilisation des aliments bientôt périmés...).&lt;br /&gt;
&lt;br /&gt;
====Calendrier====&lt;br /&gt;
&lt;br /&gt;
Répartition du temps consacré au projet (120h *2) :&lt;br /&gt;
&lt;br /&gt;
*Partie Raspberry : 60h&lt;br /&gt;
*Partie RFduino : 60h&lt;br /&gt;
*Partie développement mobile : 120h&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
&lt;br /&gt;
===Résumé===&lt;br /&gt;
&lt;br /&gt;
====Semaine 1====&lt;br /&gt;
&lt;br /&gt;
'''23/01''' :  &lt;br /&gt;
* Installation du logiciel Android Studio pour être prêt à commencer l'application mobile.&lt;br /&gt;
* Création du Repository Git sur GitHub : https://github.com/FrancoisLefevre12/Optali.git&lt;br /&gt;
* Réalisation de différents schémas fonctionnels pour se donner une idée du travail à effectuer, aussi bien du software que du hardware.&lt;br /&gt;
* Quelques précisions supplémentaires apportées sur le cahier des charges.&lt;br /&gt;
* Ajout de liens de référence pour la liste de matériel à acheter.&lt;br /&gt;
&lt;br /&gt;
'''25/01''' :  &lt;br /&gt;
* Précision des composants requis (accéléromètre, buzzer, LEDs, résistances).&lt;br /&gt;
* Écriture du montage à la main.&lt;br /&gt;
* Étude du fonctionnement de l'accéléromètre, du buzzer.&lt;br /&gt;
* Écriture de la structure de l'application à la main.&lt;br /&gt;
&lt;br /&gt;
'''26/01''' :&lt;br /&gt;
*Réalisation graphique de la première page de l'application.&lt;br /&gt;
*Conception du schéma électrique pour tous les composants connectés au RFduino.&lt;br /&gt;
&lt;br /&gt;
====Semaine 2====&lt;br /&gt;
&lt;br /&gt;
'''30/01''' :&lt;br /&gt;
*Réalisation du diagramme UML de la base de données qui sera stockée sur la Raspberry Pi&lt;br /&gt;
*Installation de l'outil de développement mobile sur le second PC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''01/02''' :&lt;br /&gt;
*Nous nous sommes d'abord rendus compte que la résistance entre un des GPIO et l'accéléromètre était inutile, nos premiers calculs étaient erronés. Nous ne la garderons donc pas sur notre schéma électrique final.&lt;br /&gt;
*Avancement sur la partie application mobile : réalisation de la page &amp;quot;Ajout&amp;quot; sur laquelle nous tomberons après avoir cliquer sur &amp;quot;ajout&amp;quot; sur la page principale de l'application. Nous avons étendu l'activité principale jusqu'à cette nouvelle activité &amp;quot;Ajout&amp;quot;.&lt;br /&gt;
*Nous avons récupéré notre Raspberry Pi pour commencer à installer notre base de données dessus. Nous avons actuellement quelques problèmes pour nous connecter sur la Raspberry. Nous travaillons sur ce point.&lt;br /&gt;
&lt;br /&gt;
'''02/02''' :&lt;br /&gt;
* Application mobile : Mise en place des LEDs sur la home page et de la zone de notification avec les messages associés.&lt;br /&gt;
&lt;br /&gt;
====Semaine 3====&lt;br /&gt;
&lt;br /&gt;
'''06/02''' :&lt;br /&gt;
*Nous arrivons à accéder à la Raspberry via le port série de celle-ci. Nous avons également configuré sa connexion Ethernet afin de pouvoir télécharger des paquets dessus et installer notre base de données. &lt;br /&gt;
*Nous rencontrions des problèmes sur le second PC de travail pour récupérer le projet Optali sur Android Studio via notre dépôt GIT. Nous avons pu rectifier ce souci.&lt;br /&gt;
&lt;br /&gt;
'''08/02''' :&lt;br /&gt;
*Tentative d'établissement d'un point d'accès WiFi sur notre Raspberry. Nous n'avons pas réussi pour le moment.&lt;br /&gt;
*Restructuration du Repository git.&lt;br /&gt;
*Essai d'importation de la librairie Zxing qui permettra de décoder les code-barres.&lt;br /&gt;
&lt;br /&gt;
====Semaine 4====&lt;br /&gt;
&lt;br /&gt;
'''13/02'''&lt;br /&gt;
*Configuration du wifi de la Raspberry. &lt;br /&gt;
*Étude d'une mise en place d'un service web via php.&lt;br /&gt;
&lt;br /&gt;
'''15/02'''&lt;br /&gt;
*Mise en place d'un lecteur de caractère sur l'application. On utilisera tesseract.&lt;br /&gt;
*Début de la création du PCB via Altium designer. Création d'une librairie pour l'accéléromètre qui est un composant CMS assez spécial. On pourra cependant utiliser des headers classiques pour le buzzer et les LEDs puisque ce sont des composants traversants.&lt;br /&gt;
*Création des premiers fichiers php de connection à la base de donnée et d'insertion d'aliments. Tous ces fichiers seront déposés de la même manière sur le dépôt git.&lt;br /&gt;
&lt;br /&gt;
'''16/02'''&lt;br /&gt;
*Adaptation avec prise en compte des cas du code php d'insertion de produits par requête sur la base de donnée.&lt;br /&gt;
*Ajout du code d'implantation de la base de donnée.&lt;br /&gt;
*Altium: Accéléromètre terminé, mise en place des résistances.&lt;br /&gt;
&lt;br /&gt;
====Semaine 5 (interruption pédagogique)====&lt;br /&gt;
&lt;br /&gt;
'''22/02 (3 heures)'''&lt;br /&gt;
*Installation de l'OS de la raspberry.&lt;br /&gt;
*Installation d'Openssh-server, apache2, php5, iptables, mysql-server, php5-mysql.&lt;br /&gt;
*Redirection des ports du routeur vers la raspberry.&lt;br /&gt;
*Configuration de iptables de la raspberry.&lt;br /&gt;
&lt;br /&gt;
'''23/02 (2 heures)'''&lt;br /&gt;
*Implantation de la base de donnée sur la raspberry pi.&lt;br /&gt;
&lt;br /&gt;
====Semaine 6====&lt;br /&gt;
'''27/02'''&lt;br /&gt;
*Vérification de la syntaxe de l'insertion de valeurs dans la base de donnée.&lt;br /&gt;
*Création des premières requêtes sur la base de donnée.&lt;br /&gt;
*Finalisation du PCB de l'Optali Board.&lt;br /&gt;
&lt;br /&gt;
'''01/03'''&lt;br /&gt;
*Étude et ajout de la librairie volley pour communiquer avec le serveur.&lt;br /&gt;
*Implantation de la fonction d'envoi de données jusqu'au serveur.&lt;br /&gt;
*Après avoir vu avec un professeur, nous avons remarqué que le routage n'était pas adéquat et la disposition des composants n'était pas optimal. Du travail reste donc encore à effectuer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Semaine 7====&lt;br /&gt;
'''06/03'''&lt;br /&gt;
*Correction du fichier post.php&lt;br /&gt;
*Finition du protocole d'ajout d'aliment sur la base de donnée. (Code php et page ajout terminée).&lt;br /&gt;
*PCB terminé.&lt;br /&gt;
*Installation d'arduino IDE, doc arduino collecté.&lt;br /&gt;
&lt;br /&gt;
'''08/03'''&lt;br /&gt;
*Implémentation de la page ListeIngredient.xml et de l'activité listActivity.java.&lt;br /&gt;
*Documentation sur la procédure de communication bluetooth entre la Rfduino et l'application mobile.&lt;br /&gt;
*Obtention de librairie en lien avec cela.&lt;br /&gt;
*Prise en main de programmation rfduino.&lt;br /&gt;
&lt;br /&gt;
'''09/03'''&lt;br /&gt;
*Nous nous sommes rendus compte qu'il était nécessaire de rajouter un bouton poussoir sur notre montage afin de permettre la réinitialisation de notre RFDuino si nécessaire. Nous devons également faire en sorte de pouvoir poser notre carte PCB directement sur notre RFDuino en utilisant des broches. Nous devons donc rajouter ces éléments-ci.&lt;br /&gt;
*Ecriture de la page get.php&lt;br /&gt;
*Premiers tests sur la ListView de l'activité ListActivity.&lt;br /&gt;
&lt;br /&gt;
====Semaine 8====&lt;br /&gt;
'''13/03'''&lt;br /&gt;
*Recherche de pistes concernant la programmation RFDuino. Nous pouvons la détecter en bluetooth via un smartphone Android.&lt;br /&gt;
*Finition du Tablelayout et du code java associé sur la page ListActivity.&lt;br /&gt;
&lt;br /&gt;
'''15/03'''&lt;br /&gt;
*Ajout de la JsonArrayRequest dans la page ListActivity.&lt;br /&gt;
*Nous nous sommes rendus compte au moment de programmer la liaison I2C de l'accéléromètre avec la RFDuino que nous avions oublié de mettre des résistances pull-up entre l'alimentation du composant et les broches SDA et SCL. Les modifications ont donc été faites puis nous avons envoyé finalement notre PCB à la fabrication.&lt;br /&gt;
&lt;br /&gt;
'''16/03'''&lt;br /&gt;
*Changement de stratégie au niveau de la requête JsonArrayRequest. On récupère toute la base et ensuite le traitement sera effectuer dans l'application mobile.&lt;br /&gt;
*Rédaction de la partie Altium du wiki.&lt;br /&gt;
*Recherche de docs sur le système bluetooth du RFduino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Semaine 9====&lt;br /&gt;
'''20/03'''&lt;br /&gt;
*Réalisation de différents réglages pour pouvoir utiliser l'application Optali sur l'Android phone fourni par notre professeur (LG G4c)&lt;br /&gt;
*Recherche de docs concernant la partie java responsable de la communication Bluetooth.&lt;br /&gt;
*Reprise de la solution Tesseract pour la lecture de caractères.&lt;br /&gt;
&lt;br /&gt;
===Premières idées===&lt;br /&gt;
&lt;br /&gt;
Voici les premières idées de l'application mobile et du composant fixé sur le frigo.&lt;br /&gt;
[[Fichier:Optali_v1.jpg|400px|thumb|left|Optali version 1]]&lt;br /&gt;
[[Fichier:OptaliBox_v1.jpg|400px|thumb|center|OptaliBox version 1]]&lt;br /&gt;
[[Fichier:P46_schema.jpg|400px|thumb|center|Schéma électrique version 1]]&lt;br /&gt;
&lt;br /&gt;
En s'intéressant aux différentes datasheets ou données constructeur des composants que nous voulons utiliser, nous trouvons indispensable d'utiliser des résistances de 330 Ohms pour l'utilisation des LEDs, pour éviter de les griller.&lt;br /&gt;
&lt;br /&gt;
Edit : Retrait de la résistance R2.&lt;br /&gt;
&lt;br /&gt;
Concernant l'accéléromètre, nous avons choisi un modèle qui nous permet de brancher directement ce module sur une broche du RFDuino. On branchera directement les GPIOs de la RFduino sur les ports SDA et SCL de l'accéléromètre qui correspondent à l'interface I2C pour pouvoir communiquer. On utilisera aussi la broche INT1 pour pouvoir générer des interruptions directement depuis l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
On connectera le buzzer directement à une broche de la RFduino aussi. Concernant celui-ci il reste une incertitude puisqu'on ne trouve aucune information sur le courant à fournir pour l'alimentation de ce composant sur sa datasheet. Après différentes recherches sur Internet, il pourrait être nécessaire d'utiliser un montage amplificateur à transistor comme un émetteur commun pour booster le courant en sortie d'une broche GPIO. Quelques buzzers trouvés avec des données constructeur montrent que ce type de composant nécessite généralement un courant d'environ 30 mA. Nous verrons dans la pratique si cela sera vraiment nécessaire. Par sécurité, on ajoutera un transistor bipolaire dans la liste de matériel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:screen_LED.png|400px|thumb|left|Données constructeur pour LEDs]]&lt;br /&gt;
[[Fichier:screen_accel.png|400px|thumb|center|Datasheet de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
===Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
====Configuration école====&lt;br /&gt;
&lt;br /&gt;
*Pour configurer notre Raspberry Pi, nous utilisons son port série et &amp;quot;minicom&amp;quot;. Pour pouvoir télécharger des paquets, il fallait la connecter au réseau. Nous lui avons donc affecté une adresse IP fixe avec le fichier /etc/network/interfaces. Voici les modifications qui ont été apportées : &lt;br /&gt;
&lt;br /&gt;
   auto eth0&lt;br /&gt;
   iface eth0 inet static&lt;br /&gt;
   address 172.26.78.15&lt;br /&gt;
   netmask 255.255.240.0&lt;br /&gt;
   gateway 172.26.79.254&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il a également fallu ajouter la commande &amp;quot;export http_proxy=http://proxy.polytech-lille.fr:3128&amp;quot; (il faudra effectuer cette commande à chaque démarrage de la Pi) pour pouvoir utiliser le proxy de l'école. &lt;br /&gt;
Nous avons de plus modifier le fichier /etc/resolv.conf avec la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
   nameserver 193.48.57.34&lt;br /&gt;
&lt;br /&gt;
Malgré cela, nous avions des soucis pour nous connecter au réseau. Il y avait en fait un processus dhcp en tâche de fond qui nous empêchait de garder le contenu de resolv.conf. Il a donc fallu trouver ce processus pour le &amp;quot;kill&amp;quot; et pouvoir accéder correctement au réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons du coup pu installer postgresql pour pouvoir configurer une base de données sur notre Pi.&lt;br /&gt;
&lt;br /&gt;
====Configuration à domicile====&lt;br /&gt;
&lt;br /&gt;
Pour nous mettre dans une situation plus fidèle à notre projet, nous avons configuré la raspberry à domicile.&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abords installé Raspbian, puis installé les paquets nécessaire au fonctionnement du serveur.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Openssh-server''': permettre d'accès à distance à la raspberry pour pouvoir y accéder depuis l'école.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Iptables''': pour sécuriser les ports non utilisé et libérer l'accès aux ports qui nous intéressent (ssh 22,http 80,https 443).&amp;lt;br&amp;gt;&lt;br /&gt;
- '''apache2, php5, mysql-server''' : pour mettre en place notre service web.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons rediriger les ports 80 et 22 du routeur pour pouvoir accéder à la raspberry de l'extérieur.&lt;br /&gt;
&lt;br /&gt;
Pour finir, nous avons créer un fichier de config iptables permettant de sécuriser un minimum la base de donnée et de permettre d'autoriser la communication des ports 22, 80 et 443 correspondants aux ports ssh, http et https. le fichier de configuration a été déposé dans le dépôt git. Il nous a fallut le rendre exécutable via un chmod. Puis pour l'exécuter à chaque démarrage du system, dans le fichier /etc/init.d/ taper : &lt;br /&gt;
&lt;br /&gt;
    sudo update-rc.d firewall defaults (si notrefichier s'appelle firewall et s'il est dans init.d)&lt;br /&gt;
&lt;br /&gt;
===Base de donnée===&lt;br /&gt;
&lt;br /&gt;
Nos données alimentaires disponibles par toute la famille doivent être stocké sur un serveur de base de donnée externe (tel une Raspberry pi). Nous nous proposons de créer le diagramme UML représentant cette future base de donnée.&lt;br /&gt;
[[Fichier:Optali_UML.jpg|700px|thumb|center|Diagramme UML base de donnée]]&lt;br /&gt;
&lt;br /&gt;
On créera donc 3 entités. Date, Product et Recipe. &lt;br /&gt;
&lt;br /&gt;
- Product rassemble les aliments qui sont ou ont été dans la réserve alimentaire. NbProdIn permet de connaître le nombre de produits identiques (possibilité de date différentes mais pas de doublons et on garde l'information de quantité. NbProdBought donne une information sur le nombre de produits identique ayant été acheté depuis la mise en service de la base de donnée. Ainsi nous pourrons par la suite proposer une liste de course à l'utilisateur en fonction de la fréquence d'achat des produits.&lt;br /&gt;
&lt;br /&gt;
- Recipe contient les recettes que pourra rentrer l'utilisateur sur l'application. L'utilisateur pourra ainsi se voir proposer des recettes en fonction de ce qu'il a dans son frigo et de ses recettes personnelles.&lt;br /&gt;
&lt;br /&gt;
'''''Edit : On ajoutera une valeur entière dans les tables Date et Unity pour gérer le cas où il existe plusieurs produits (différents ou identiques) avec une date de péremption équivalente. On les appellera NbDate la valeur dans la table Date et NbUnity dans la table Unity. On leur ajoutera de même une clef primaire IdUnity et IdListProduct'''''&lt;br /&gt;
&lt;br /&gt;
On utilisera MySql pour la gestion de nos bases de données. &lt;br /&gt;
La syntaxe pour l'implanter dans la base de donnée à été jointe au dépôt git.&lt;br /&gt;
&lt;br /&gt;
Pour lancer my SQL, on tapera:&lt;br /&gt;
&lt;br /&gt;
   mysql -h localhost -u root -p&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Web service===&lt;br /&gt;
&lt;br /&gt;
====Page init.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet d'initier l'accès à la base de donnée sur le serveur. Elle est requise pour les pages qui suivent.&lt;br /&gt;
&lt;br /&gt;
====Page post.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet l'insertion d'un produit et d'une date via l'application mobile. Elle prend donc ces deux arguments et les insère dans les tables Unity, Product et Date.&lt;br /&gt;
&lt;br /&gt;
====Page get.php====&lt;br /&gt;
&lt;br /&gt;
Page qui récupère un nombre qui défini selon quoi la liste est trié (0=par nom, 1=par date, 2=nombre dans le frigo, 3= par nombre en tout). Elle récupère aussi un mot ou un début de mot ou rien pour faire une recherche dans la base. On utilisera la syntaxe:&amp;lt;br&amp;gt;&lt;br /&gt;
    Product.product='&amp;quot;.$Search.&amp;quot;%'&lt;br /&gt;
&lt;br /&gt;
===Application Mobile===&lt;br /&gt;
&lt;br /&gt;
====Home page====&lt;br /&gt;
&lt;br /&gt;
Page d'accueil permettant d'accéder aux pages d'ajout et de liste des produits disponibles. &amp;lt;br&amp;gt;&lt;br /&gt;
La page permet aussi d'effectuer la connexion entre la rfduino et l'application mobile. Elle montre les alertes (signaux) à l'utilisateur &lt;br /&gt;
et écrit leur signification.&lt;br /&gt;
&lt;br /&gt;
====Page d'ajout====&lt;br /&gt;
&lt;br /&gt;
Pour ajouter un produit et lire une date on utilisera un champ editText pour permettre à l'utilisateur d'écrire &amp;quot;Manuellement&amp;quot; dedans grâce au clavier du smartphone.&amp;lt;br&amp;gt;&lt;br /&gt;
De plus on utilise un bouton qui appellera la caméra pour détecter les caractères d'un produit ou d'une date. Au début nous voulions utiliser un détecteur de code barre, nous l'avons implémenté mais nous avons remarqué que la mise au point sur une surface non plane prend du temps d'autant plus qu'il faut questionner une base de donnée contenant tous les numéro de codes barres utilisés. Nous avons donc prit la décision d'utiliser uniquement la lecture de caractère et nous créerons une liste déroulante sous l'editText pour faciliter l'insertion d'un produit qui a déjà été ajouté.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'envoi, nous utilisons la librairie Volley développé par google.&lt;br /&gt;
&lt;br /&gt;
====Page Liste====&lt;br /&gt;
&lt;br /&gt;
Permet de lister les produits dans la base de donnée. Une série de boutons radio permettent de trier les produits par ordre alphabétique, par date de péremption, par nombre d’occurrence dans la réserve alimentaire, par nombre d'achat depuis la mise en place du système.&amp;lt;br&amp;gt;&lt;br /&gt;
Une colonne permet de sélectionner les aliments désirés (par checkBox) pour ensuite les supprimer via un button &amp;quot;suppr&amp;quot; ou les choisir pour trouver des recettes qui les utilisent.&amp;lt;br&amp;gt;&lt;br /&gt;
Un EditText permet d'effectuer une recherche sur la base de donnée.&lt;br /&gt;
&lt;br /&gt;
===Altium Designer===&lt;br /&gt;
&lt;br /&gt;
Pour permettre au RFDuino de communiquer avec les différents composants, nous aurons besoin de quelques composants électroniques. Afin que cela soit plus esthétique pour la modélisation finale, nous allons créer une carte PCB pour rassembler tous ces composants dessus. On utilisera le logiciel Altium Designer pour cela.&lt;br /&gt;
&lt;br /&gt;
Avant de représenter notre circuit général, nous allons commencer par créer une librairie rassemblant tous les composants que nous utiliserons par la suite, en particulier nos composants CMS (accéléromètre et résistances). Pour ce qui est des LEDs et du buzzer, qui sont traversants, nous pourrons utiliser des headers classiques.&lt;br /&gt;
&lt;br /&gt;
Il a donc fallu créer le schematic ainsi que l'empreinte de nos composants CMS. Voici un exemple avec notre accéléromètre :&lt;br /&gt;
[[Fichier:Accelerosch.PNG|500px|thumb|left|Schematic de l'accéléromètre]]&lt;br /&gt;
[[Fichier:Acceleropcb.PNG|500px|thumb|center|Empreinte PCB de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les fichiers Altium sont disponibles sur notre dépôt GIT. Après cela, nous pouvons maintenant construire notre schematic du montage entier et ensuite le fichier PCB afin de pouvoir graver notre circuit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après quelques modifications sur le montage prévu initialement, c'est-à-dire en enlevant une résistance entre un GPIO et l'alimentation de l'accéléromètre ainsi qu'en rajoutant des résistances pull-up sur les broches de notre liaison i2C (SDA et SCL) et un bouton poussoir en plus pour permettre un reset du RFDuino, nous avons pu créer notre schematic global pour en faire un PCB et l'exporter au format Gerber. De ce fait, le service EEI de Polytech pourra réaliser la gravure de notre carte PCB.&lt;br /&gt;
&lt;br /&gt;
Voici quelques photos pour illustrer notre projet sur Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Finalproto_sch.PNG|400px|thumb|left|Schematic du montage final]]&lt;br /&gt;
[[Fichier:Finalproto_pcb.PNG|400px|thumb|center|PCB du montage final]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On retrouve sur notre PCB final les headers, respectivement de 8 et 5 pins, de part et d'autre de la carte, qui représentent le RFDuino, où nous souderons des broches pour qu'elles puissent être intégrées au RFDuino. On note la présence de 5 autres headers de 2 pins, dont 3 pour des LEDs puis les 2 autres pour le buzzer et le bouton poussoir. Ce qui reste sont les composants CMS avec plusieurs composants à 2 pattes qui sont toutes les résistances de notre montage, celles de protection pour les LEDs et les pull-ups pour l'accéléromètre. Le dernier composant à 8 pattes est donc bien l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quelques difficultés ont été rencontrées durant ce travail notamment concernant les contraintes de construction sur le PCB final. En effet, les composants CMS choisis (surtout l'accéléromètre) étant parfois très petits, Altium n'accepte pas forcément le faible espacement entre les différentes pattes des composants, ce qui pose problème lors de la compilation. De plus, le plan de masse ne prenait pas en compte tous les éléments devant être rattachés à la masse. Il a fallu légèrement déplacer les headers représentant le RFDuino pour que cela soit possible. Il faudra alors peut-être légèrement plier les broches qui viendront s'intégrer sur le RFDuino pour ajouter notre PCB sur le RFDuino.&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=40434</id>
		<title>IMA4 2016/2017 P46 : Aide anti-gaspillage alimentaire</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=40434"/>
				<updated>2017-03-16T08:34:57Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : /* Altium Designer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
En France, nous jetons en moyenne 21% des aliments que nous achetons, ce qui représente une perte de 100 à 160 euros par an par habitant. Cela est en partie dû à la date limite de consommation associée à chaque produit. En effet, à partir du moment où cette date sera dépassée le consommateur jettera les produits concernés sans réfléchir, même si ceux-ci peuvent parfois être encore mangeables. Plutôt que d'essayer de les convaincre du contraire, il serait judicieux de proposer aux adeptes du gaspillage une aide permettant de gérer tous les aliments dont ils disposent chez eux afin d'éviter la surprise de tomber sur plusieurs produits périmés lorsqu'ils ouvrent la porte de leur frigo. &lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Ce projet permet d'aider les utilisateurs d'une part à mémoriser les denrées périssables qu'ils disposent dans leur réserve alimentaire et d'autre part d'avertir l'utilisateur qu'un événement important a lieu. Ceci peut être une notification qu'un aliment va bientôt dépasser sa date de péremption, que la porte du frigidaire est restée ouverte ou encore que le nombre d'aliments dans la réserve devient critique et qu'il faudra de nouveau l'alimenter. Enfin, le système aidera l'utilisateur à trouver des idées de repas pouvant permettre de consommer les aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Notre prototype permettra d'éviter le gaspillage alimentaire ainsi que d'aider l'utilisateur dans sa gestion du stockage d'aliments.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
&lt;br /&gt;
Notre système sera composé de 3 éléments. &lt;br /&gt;
&lt;br /&gt;
Premièrement, un ou des smartphones appartenant aux utilisateurs. Ces derniers permettront de scanner grâce à son appareil photo, le code barre du produit ainsi que sa date de péremption. Il servira aussi d'interface utilisateur pour notre système. En effet, c'est par cet outil que l'utilisateur pourra lister tous les aliments que l'utilisateur a dans sa base et tout ça en les triant par date de péremption, ou encore voir les recettes possibles pour consommer des aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Deuxièmement, un serveur, de type Raspberry, qui permettra de stocker la base de donnée contenant les aliments de la réserve. Ce serveur sera connecté par wifi.&lt;br /&gt;
 &lt;br /&gt;
Troisièmement, un contrôleur (Rfduino) qui comportera une LED pour indiquer la mise sous tension du contrôleur, une LED pour prévenir l'utilisateur qu'un aliment va bientôt passer sa date de péremption et une dernière LED pour prévenir l'utilisateur que son niveau de réserve est critique ainsi qu'un buzzer et un accéléromètre pour buzzer quand la porte du frigo est restée trop longtemps ouverte. Ce dernier sera fixé au frigo par l'intermédiaire d'un dispositif adapté qui sera un système aimanté qui se pose sur le frigo.&lt;br /&gt;
&lt;br /&gt;
Nous implémenterons donc une application mobile Android qui fera le lien entre les 2 autres systèmes.&lt;br /&gt;
&lt;br /&gt;
Pour la partie électronique que nous aurons à réaliser, nous utiliserons une Breadboard pour faire des premiers tests puis nous créerons une carte PCB pour notre montage final.&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
On utilisera une Raspberry Pi en guise de serveur pour pouvoir s'occuper du stockage de toutes les données dans notre projet puisque notre contrôleur sera incapable de les contenir, ce n'est d'ailleurs pas son but ici.&lt;br /&gt;
&lt;br /&gt;
Notre smartphone fera donc le lien entre notre base de données et notre système embarqué par l'intermédiaire de l'application mobile.&lt;br /&gt;
&lt;br /&gt;
Nous prendrons ici un RFduino puisque celui-ci nous permet d'ajouter des modules comme bon nous semble afin d'adapter le système aux besoins de notre application. Il est également parfaitement compatible avec les applications Android. De plus, nous avons un Bluetooth directement intégré au RFduino pour s'assurer que les liaisons RFduino-application mobile se fassent correctement. &lt;br /&gt;
On notera également que ce contrôleur consomme peu de courant et ne demande qu'une faible tension d'alimentation, critères importants pour ce genre de projet. C'est la raison principale de son utilisation pour être utilisé comme interface physique sur le frigo, en ajoutant également sa taille réduite comparée à la Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
&lt;br /&gt;
Nous avons donc besoin du matériel suivant :&lt;br /&gt;
&lt;br /&gt;
*Raspberry Pi.&lt;br /&gt;
*Clef wifi&lt;br /&gt;
*RFduino (RFD22102 DIP Board, RFD22121 USB Shield, RFD22126 Dual AAA battery shield).&lt;br /&gt;
*2 piles AAA.&lt;br /&gt;
*3 leds tranversantes.&lt;br /&gt;
*3 Résistances 330 Ohm.&lt;br /&gt;
*1 Résistance 10 kOhm.&lt;br /&gt;
*Un buzzer.&lt;br /&gt;
*Accéléromètre.&lt;br /&gt;
*Aimants&lt;br /&gt;
*Un boîtier permettant d'intégrer la RFduino + fixation sur le frigo (modélisation à voir).&lt;br /&gt;
&lt;br /&gt;
Pour le buzzer, l'accéléromètre et les résistances, nous choisirons des composants CMS pour nous permettre d'avoir une carte plus petite.&lt;br /&gt;
&lt;br /&gt;
===Calendrier prévisionnel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Liste des tâches à effectuer====&lt;br /&gt;
&lt;br /&gt;
* Configurer la Raspberry :&lt;br /&gt;
** Installer et configurer le serveur.&lt;br /&gt;
** Créer le diagramme UML de notre future base de données.&lt;br /&gt;
** Créer la base sur le serveur.&lt;br /&gt;
** Configurer la connexion WiFi.&lt;br /&gt;
&lt;br /&gt;
* Monter et programmer la RFduino :&lt;br /&gt;
** Connecter les différents modules au RFduino (accéléromètre, LEDs, buzzer, Batterie, module Bluetooth).&lt;br /&gt;
** Récupérer les consignes du smartphone grâce au Bluetooth.&lt;br /&gt;
** Programmer le comportement du RFduino en fonction des consignes.&lt;br /&gt;
** Construire le boitier final.&lt;br /&gt;
&lt;br /&gt;
* Implémenter l'application mobile Android :&lt;br /&gt;
** Une première activité permettant de se connecter au RFduino et à la Raspberry.&lt;br /&gt;
** Scanner une date et un code barre.&lt;br /&gt;
** Ajout/suppression d'un aliment dans la base de donnée.&lt;br /&gt;
** Envoi d'une consigne au RFduino.&lt;br /&gt;
** Rendre l'interface utilisateur ergonomique (lister aliments, envoyer vers page de recettes avec l'utilisation des aliments bientôt périmés...).&lt;br /&gt;
&lt;br /&gt;
====Calendrier====&lt;br /&gt;
&lt;br /&gt;
Répartition du temps consacré au projet (120h *2) :&lt;br /&gt;
&lt;br /&gt;
*Partie Raspberry : 60h&lt;br /&gt;
*Partie RFduino : 60h&lt;br /&gt;
*Partie développement mobile : 120h&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
&lt;br /&gt;
===Résumé===&lt;br /&gt;
&lt;br /&gt;
====Semaine 1====&lt;br /&gt;
&lt;br /&gt;
'''23/01''' :  &lt;br /&gt;
* Installation du logiciel Android Studio pour être prêt à commencer l'application mobile.&lt;br /&gt;
* Création du Repository Git sur GitHub : https://github.com/FrancoisLefevre12/Optali.git&lt;br /&gt;
* Réalisation de différents schémas fonctionnels pour se donner une idée du travail à effectuer, aussi bien du software que du hardware.&lt;br /&gt;
* Quelques précisions supplémentaires apportées sur le cahier des charges.&lt;br /&gt;
* Ajout de liens de référence pour la liste de matériel à acheter.&lt;br /&gt;
&lt;br /&gt;
'''25/01''' :  &lt;br /&gt;
* Précision des composants requis (accéléromètre, buzzer, LEDs, résistances).&lt;br /&gt;
* Écriture du montage à la main.&lt;br /&gt;
* Étude du fonctionnement de l'accéléromètre, du buzzer.&lt;br /&gt;
* Écriture de la structure de l'application à la main.&lt;br /&gt;
&lt;br /&gt;
'''26/01''' :&lt;br /&gt;
*Réalisation graphique de la première page de l'application.&lt;br /&gt;
*Conception du schéma électrique pour tous les composants connectés au RFduino.&lt;br /&gt;
&lt;br /&gt;
====Semaine 2====&lt;br /&gt;
&lt;br /&gt;
'''30/01''' :&lt;br /&gt;
*Réalisation du diagramme UML de la base de données qui sera stockée sur la Raspberry Pi&lt;br /&gt;
*Installation de l'outil de développement mobile sur le second PC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''01/02''' :&lt;br /&gt;
*Nous nous sommes d'abord rendus compte que la résistance entre un des GPIO et l'accéléromètre était inutile, nos premiers calculs étaient erronés. Nous ne la garderons donc pas sur notre schéma électrique final.&lt;br /&gt;
*Avancement sur la partie application mobile : réalisation de la page &amp;quot;Ajout&amp;quot; sur laquelle nous tomberons après avoir cliquer sur &amp;quot;ajout&amp;quot; sur la page principale de l'application. Nous avons étendu l'activité principale jusqu'à cette nouvelle activité &amp;quot;Ajout&amp;quot;.&lt;br /&gt;
*Nous avons récupéré notre Raspberry Pi pour commencer à installer notre base de données dessus. Nous avons actuellement quelques problèmes pour nous connecter sur la Raspberry. Nous travaillons sur ce point.&lt;br /&gt;
&lt;br /&gt;
'''02/02''' :&lt;br /&gt;
* Application mobile : Mise en place des LEDs sur la home page et de la zone de notification avec les messages associés.&lt;br /&gt;
&lt;br /&gt;
====Semaine 3====&lt;br /&gt;
&lt;br /&gt;
'''06/02''' :&lt;br /&gt;
*Nous arrivons à accéder à la Raspberry via le port série de celle-ci. Nous avons également configuré sa connexion Ethernet afin de pouvoir télécharger des paquets dessus et installer notre base de données. &lt;br /&gt;
*Nous rencontrions des problèmes sur le second PC de travail pour récupérer le projet Optali sur Android Studio via notre dépôt GIT. Nous avons pu rectifier ce souci.&lt;br /&gt;
&lt;br /&gt;
'''08/02''' :&lt;br /&gt;
*Tentative d'établissement d'un point d'accès WiFi sur notre Raspberry. Nous n'avons pas réussi pour le moment.&lt;br /&gt;
*Restructuration du Repository git.&lt;br /&gt;
*Essai d'importation de la librairie Zxing qui permettra de décoder les code-barres.&lt;br /&gt;
&lt;br /&gt;
====Semaine 4====&lt;br /&gt;
&lt;br /&gt;
'''13/02'''&lt;br /&gt;
*Configuration du wifi de la Raspberry. &lt;br /&gt;
*Étude d'une mise en place d'un service web via php.&lt;br /&gt;
&lt;br /&gt;
'''15/02'''&lt;br /&gt;
*Mise en place d'un lecteur de caractère sur l'application. On utilisera tesseract.&lt;br /&gt;
*Début de la création du PCB via Altium designer. Création d'une librairie pour l'accéléromètre qui est un composant CMS assez spécial. On pourra cependant utiliser des headers classiques pour le buzzer et les LEDs puisque ce sont des composants traversants.&lt;br /&gt;
*Création des premiers fichiers php de connection à la base de donnée et d'insertion d'aliments. Tous ces fichiers seront déposés de la même manière sur le dépôt git.&lt;br /&gt;
&lt;br /&gt;
'''16/02'''&lt;br /&gt;
*Adaptation avec prise en compte des cas du code php d'insertion de produits par requête sur la base de donnée.&lt;br /&gt;
*Ajout du code d'implantation de la base de donnée.&lt;br /&gt;
*Altium: Accéléromètre terminé, mise en place des résistances.&lt;br /&gt;
&lt;br /&gt;
====Semaine 5 (interruption pédagogique)====&lt;br /&gt;
&lt;br /&gt;
'''22/02 (3 heures)'''&lt;br /&gt;
*Installation de l'OS de la raspberry.&lt;br /&gt;
*Installation d'Openssh-server, apache2, php5, iptables, mysql-server, php5-mysql.&lt;br /&gt;
*Redirection des ports du routeur vers la raspberry.&lt;br /&gt;
*Configuration de iptables de la raspberry.&lt;br /&gt;
&lt;br /&gt;
'''23/02 (2 heures)'''&lt;br /&gt;
*Implantation de la base de donnée sur la raspberry pi.&lt;br /&gt;
&lt;br /&gt;
====Semaine 6====&lt;br /&gt;
'''27/02'''&lt;br /&gt;
*Vérification de la syntaxe de l'insertion de valeurs dans la base de donnée.&lt;br /&gt;
*Création des premières requêtes sur la base de donnée.&lt;br /&gt;
*Finalisation du PCB de l'Optali Board.&lt;br /&gt;
&lt;br /&gt;
'''01/03'''&lt;br /&gt;
*Étude et ajout de la librairie volley pour communiquer avec le serveur.&lt;br /&gt;
*Implantation de la fonction d'envoi de données jusqu'au serveur.&lt;br /&gt;
*Après avoir vu avec un professeur, nous avons remarqué que le routage n'était pas adéquat et la disposition des composants n'était pas optimal. Du travail reste donc encore à effectuer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Semaine 7====&lt;br /&gt;
'''06/03'''&lt;br /&gt;
*Correction du fichier post.php&lt;br /&gt;
*Finition du protocole d'ajout d'aliment sur la base de donnée. (Code php et page ajout terminée).&lt;br /&gt;
*PCB terminé.&lt;br /&gt;
*Installation d'arduino IDE, doc arduino collecté.&lt;br /&gt;
&lt;br /&gt;
'''08/03'''&lt;br /&gt;
*Implémentation de la page ListeIngredient.xml et de l'activité listActivity.java.&lt;br /&gt;
*Documentation sur la procédure de communication bluetooth entre la Rfduino et l'application mobile.&lt;br /&gt;
*Obtention de librairie en lien avec cela.&lt;br /&gt;
*Prise en main de programmation rfduino.&lt;br /&gt;
&lt;br /&gt;
'''09/03'''&lt;br /&gt;
*Nous nous sommes rendus compte qu'il était nécessaire de rajouter un bouton poussoir sur notre montage afin de permettre la réinitialisation de notre RFDuino si nécessaire. Nous devons également faire en sorte de pouvoir poser notre carte PCB directement sur notre RFDuino en utilisant des broches. Nous devons donc rajouter ces éléments-ci.&lt;br /&gt;
*Ecriture de la page get.php&lt;br /&gt;
*Premiers tests sur la ListView de l'activité ListActivity.&lt;br /&gt;
&lt;br /&gt;
====Semaine 8====&lt;br /&gt;
'''13/03'''&lt;br /&gt;
*Recherche de pistes concernant la programmation RFDuino. Nous pouvons la détecter en bluetooth via un smartphone Android.&lt;br /&gt;
*Finition du Tablelayout et du code java associé sur la page ListActivity.&lt;br /&gt;
&lt;br /&gt;
'''15/03'''&lt;br /&gt;
*Ajout de la JsonArrayRequest dans la page ListActivity.&lt;br /&gt;
*Nous nous sommes rendus compte au moment de programmer la liaison I2C de l'accéléromètre avec la RFDuino que nous avions oublié de mettre des résistances pull-up entre l'alimentation du composant et les broches SDA et SCL. Les modifications ont donc été faites puis nous avons envoyé finalement notre PCB à la fabrication.&lt;br /&gt;
&lt;br /&gt;
===Premières idées===&lt;br /&gt;
&lt;br /&gt;
Voici les premières idées de l'application mobile et du composant fixé sur le frigo.&lt;br /&gt;
[[Fichier:Optali_v1.jpg|400px|thumb|left|Optali version 1]]&lt;br /&gt;
[[Fichier:OptaliBox_v1.jpg|400px|thumb|center|OptaliBox version 1]]&lt;br /&gt;
[[Fichier:P46_schema.jpg|400px|thumb|center|Schéma électrique version 1]]&lt;br /&gt;
&lt;br /&gt;
En s'intéressant aux différentes datasheets ou données constructeur des composants que nous voulons utiliser, nous trouvons indispensable d'utiliser des résistances de 330 Ohms pour l'utilisation des LEDs, pour éviter de les griller.&lt;br /&gt;
&lt;br /&gt;
Edit : Retrait de la résistance R2.&lt;br /&gt;
&lt;br /&gt;
Concernant l'accéléromètre, nous avons choisi un modèle qui nous permet de brancher directement ce module sur une broche du RFDuino. On branchera directement les GPIOs de la RFduino sur les ports SDA et SCL de l'accéléromètre qui correspondent à l'interface I2C pour pouvoir communiquer. On utilisera aussi la broche INT1 pour pouvoir générer des interruptions directement depuis l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
On connectera le buzzer directement à une broche de la RFduino aussi. Concernant celui-ci il reste une incertitude puisqu'on ne trouve aucune information sur le courant à fournir pour l'alimentation de ce composant sur sa datasheet. Après différentes recherches sur Internet, il pourrait être nécessaire d'utiliser un montage amplificateur à transistor comme un émetteur commun pour booster le courant en sortie d'une broche GPIO. Quelques buzzers trouvés avec des données constructeur montrent que ce type de composant nécessite généralement un courant d'environ 30 mA. Nous verrons dans la pratique si cela sera vraiment nécessaire. Par sécurité, on ajoutera un transistor bipolaire dans la liste de matériel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:screen_LED.png|400px|thumb|left|Données constructeur pour LEDs]]&lt;br /&gt;
[[Fichier:screen_accel.png|400px|thumb|center|Datasheet de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
===Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
====Configuration école====&lt;br /&gt;
&lt;br /&gt;
*Pour configurer notre Raspberry Pi, nous utilisons son port série et &amp;quot;minicom&amp;quot;. Pour pouvoir télécharger des paquets, il fallait la connecter au réseau. Nous lui avons donc affecté une adresse IP fixe avec le fichier /etc/network/interfaces. Voici les modifications qui ont été apportées : &lt;br /&gt;
&lt;br /&gt;
   auto eth0&lt;br /&gt;
   iface eth0 inet static&lt;br /&gt;
   address 172.26.78.15&lt;br /&gt;
   netmask 255.255.240.0&lt;br /&gt;
   gateway 172.26.79.254&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il a également fallu ajouter la commande &amp;quot;export http_proxy=http://proxy.polytech-lille.fr:3128&amp;quot; (il faudra effectuer cette commande à chaque démarrage de la Pi) pour pouvoir utiliser le proxy de l'école. &lt;br /&gt;
Nous avons de plus modifier le fichier /etc/resolv.conf avec la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
   nameserver 193.48.57.34&lt;br /&gt;
&lt;br /&gt;
Malgré cela, nous avions des soucis pour nous connecter au réseau. Il y avait en fait un processus dhcp en tâche de fond qui nous empêchait de garder le contenu de resolv.conf. Il a donc fallu trouver ce processus pour le &amp;quot;kill&amp;quot; et pouvoir accéder correctement au réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons du coup pu installer postgresql pour pouvoir configurer une base de données sur notre Pi.&lt;br /&gt;
&lt;br /&gt;
====Configuration à domicile====&lt;br /&gt;
&lt;br /&gt;
Pour nous mettre dans une situation plus fidèle à notre projet, nous avons configuré la raspberry à domicile.&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abords installé Raspbian, puis installé les paquets nécessaire au fonctionnement du serveur.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Openssh-server''': permettre d'accès à distance à la raspberry pour pouvoir y accéder depuis l'école.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Iptables''': pour sécuriser les ports non utilisé et libérer l'accès aux ports qui nous intéressent (ssh 22,http 80,https 443).&amp;lt;br&amp;gt;&lt;br /&gt;
- '''apache2, php5, mysql-server''' : pour mettre en place notre service web.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons rediriger les ports 80 et 22 du routeur pour pouvoir accéder à la raspberry de l'extérieur.&lt;br /&gt;
&lt;br /&gt;
Pour finir, nous avons créer un fichier de config iptables permettant de sécuriser un minimum la base de donnée et de permettre d'autoriser la communication des ports 22, 80 et 443 correspondants aux ports ssh, http et https. le fichier de configuration a été déposé dans le dépôt git. Il nous a fallut le rendre exécutable via un chmod. Puis pour l'exécuter à chaque démarrage du system, dans le fichier /etc/init.d/ taper : &lt;br /&gt;
&lt;br /&gt;
    sudo update-rc.d firewall defaults (si notrefichier s'appelle firewall et s'il est dans init.d)&lt;br /&gt;
&lt;br /&gt;
===Base de donnée===&lt;br /&gt;
&lt;br /&gt;
Nos données alimentaires disponibles par toute la famille doivent être stocké sur un serveur de base de donnée externe (tel une Raspberry pi). Nous nous proposons de créer le diagramme UML représentant cette future base de donnée.&lt;br /&gt;
[[Fichier:Optali_UML.jpg|700px|thumb|center|Diagramme UML base de donnée]]&lt;br /&gt;
&lt;br /&gt;
On créera donc 3 entités. Date, Product et Recipe. &lt;br /&gt;
&lt;br /&gt;
- Product rassemble les aliments qui sont ou ont été dans la réserve alimentaire. NbProdIn permet de connaître le nombre de produits identiques (possibilité de date différentes mais pas de doublons et on garde l'information de quantité. NbProdBought donne une information sur le nombre de produits identique ayant été acheté depuis la mise en service de la base de donnée. Ainsi nous pourrons par la suite proposer une liste de course à l'utilisateur en fonction de la fréquence d'achat des produits.&lt;br /&gt;
&lt;br /&gt;
- Recipe contient les recettes que pourra rentrer l'utilisateur sur l'application. L'utilisateur pourra ainsi se voir proposer des recettes en fonction de ce qu'il a dans son frigo et de ses recettes personnelles.&lt;br /&gt;
&lt;br /&gt;
'''''Edit : On ajoutera une valeur entière dans les tables Date et Unity pour gérer le cas où il existe plusieurs produits (différents ou identiques) avec une date de péremption équivalente. On les appellera NbDate la valeur dans la table Date et NbUnity dans la table Unity. On leur ajoutera de même une clef primaire IdUnity et IdListProduct'''''&lt;br /&gt;
&lt;br /&gt;
On utilisera MySql pour la gestion de nos bases de données. &lt;br /&gt;
La syntaxe pour l'implanter dans la base de donnée à été jointe au dépôt git.&lt;br /&gt;
&lt;br /&gt;
Pour lancer my SQL, on tapera:&lt;br /&gt;
&lt;br /&gt;
   mysql -h localhost -u root -p&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Web service===&lt;br /&gt;
&lt;br /&gt;
====Page init.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet d'initier l'accès à la base de donnée sur le serveur. Elle est requise pour les pages qui suivent.&lt;br /&gt;
&lt;br /&gt;
====Page post.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet l'insertion d'un produit et d'une date via l'application mobile. Elle prend donc ces deux arguments et les insère dans les tables Unity, Product et Date.&lt;br /&gt;
&lt;br /&gt;
====Page get.php====&lt;br /&gt;
&lt;br /&gt;
Page qui récupère un nombre qui défini selon quoi la liste est trié (0=par nom, 1=par date, 2=nombre dans le frigo, 3= par nombre en tout). Elle récupère aussi un mot ou un début de mot ou rien pour faire une recherche dans la base. On utilisera la syntaxe:&amp;lt;br&amp;gt;&lt;br /&gt;
    Product.product='&amp;quot;.$Search.&amp;quot;%'&lt;br /&gt;
&lt;br /&gt;
===Application Mobile===&lt;br /&gt;
&lt;br /&gt;
====Home page====&lt;br /&gt;
&lt;br /&gt;
Page d'accueil permettant d'accéder aux pages d'ajout et de liste des produits disponibles. &amp;lt;br&amp;gt;&lt;br /&gt;
La page permet aussi d'effectuer la connexion entre la rfduino et l'application mobile. Elle montre les alertes (signaux) à l'utilisateur &lt;br /&gt;
et écrit leur signification.&lt;br /&gt;
&lt;br /&gt;
====Page d'ajout====&lt;br /&gt;
&lt;br /&gt;
Pour ajouter un produit et lire une date on utilisera un champ editText pour permettre à l'utilisateur d'écrire &amp;quot;Manuellement&amp;quot; dedans grâce au clavier du smartphone.&amp;lt;br&amp;gt;&lt;br /&gt;
De plus on utilise un bouton qui appellera la caméra pour détecter les caractères d'un produit ou d'une date. Au début nous voulions utiliser un détecteur de code barre, nous l'avons implémenté mais nous avons remarqué que la mise au point sur une surface non plane prend du temps d'autant plus qu'il faut questionner une base de donnée contenant tous les numéro de codes barres utilisés. Nous avons donc prit la décision d'utiliser uniquement la lecture de caractère et nous créerons une liste déroulante sous l'editText pour faciliter l'insertion d'un produit qui a déjà été ajouté.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'envoi, nous utilisons la librairie Volley développé par google.&lt;br /&gt;
&lt;br /&gt;
====Page Liste====&lt;br /&gt;
&lt;br /&gt;
Permet de lister les produits dans la base de donnée. Une série de boutons radio permettent de trier les produits par ordre alphabétique, par date de péremption, par nombre d’occurrence dans la réserve alimentaire, par nombre d'achat depuis la mise en place du système.&amp;lt;br&amp;gt;&lt;br /&gt;
Une colonne permet de sélectionner les aliments désirés (par checkBox) pour ensuite les supprimer via un button &amp;quot;suppr&amp;quot; ou les choisir pour trouver des recettes qui les utilisent.&amp;lt;br&amp;gt;&lt;br /&gt;
Un EditText permet d'effectuer une recherche sur la base de donnée.&lt;br /&gt;
&lt;br /&gt;
===Altium Designer===&lt;br /&gt;
&lt;br /&gt;
Pour permettre au RFDuino de communiquer avec les différents composants, nous aurons besoin de quelques composants électroniques. Afin que cela soit plus esthétique pour la modélisation finale, nous allons créer une carte PCB pour rassembler tous ces composants dessus. On utilisera le logiciel Altium Designer pour cela.&lt;br /&gt;
&lt;br /&gt;
Avant de représenter notre circuit général, nous allons commencer par créer une librairie rassemblant tous les composants que nous utiliserons par la suite, en particulier nos composants CMS (accéléromètre et résistances). Pour ce qui est des LEDs et du buzzer, qui sont traversants, nous pourrons utiliser des headers classiques.&lt;br /&gt;
&lt;br /&gt;
Il a donc fallu créer le schematic ainsi que l'empreinte de nos composants CMS. Voici un exemple avec notre accéléromètre :&lt;br /&gt;
[[Fichier:Accelerosch.PNG|500px|thumb|left|Schematic de l'accéléromètre]]&lt;br /&gt;
[[Fichier:Acceleropcb.PNG|500px|thumb|center|Empreinte PCB de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les fichiers Altium sont disponibles sur notre dépôt GIT. Après cela, nous pouvons maintenant construire notre schematic du montage entier et ensuite le fichier PCB afin de pouvoir graver notre circuit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après quelques modifications sur le montage prévu initialement, c'est-à-dire en enlevant une résistance entre un GPIO et l'alimentation de l'accéléromètre ainsi qu'en rajoutant des résistances pull-up sur les broches de notre liaison i2C (SDA et SCL) et un bouton poussoir en plus pour permettre un reset du RFDuino, nous avons pu créer notre schematic global pour en faire un PCB et l'exporter au format Gerber. De ce fait, le service EEI de Polytech pourra réaliser la gravure de notre carte PCB.&lt;br /&gt;
&lt;br /&gt;
Voici quelques photos pour illustrer notre projet sur Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Finalproto_sch.PNG|400px|thumb|left|Schematic du montage final]]&lt;br /&gt;
[[Fichier:Finalproto_pcb.PNG|400px|thumb|center|PCB du montage final]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On retrouve sur notre PCB final les headers, respectivement de 8 et 5 pins, de part et d'autre de la carte, qui représentent le RFDuino, où nous souderons des broches pour qu'elles puissent être intégrées au RFDuino. On note la présence de 5 autres headers de 2 pins, dont 3 pour des LEDs puis les 2 autres pour le buzzer et le bouton poussoir. Ce qui reste sont les composants CMS avec plusieurs composants à 2 pattes qui sont toutes les résistances de notre montage, celles de protection pour les LEDs et les pull-ups pour l'accéléromètre. Le dernier composant à 8 pattes est donc bien l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quelques difficultés ont été rencontrées durant ce travail notamment concernant les contraintes de construction sur le PCB final. En effet, les composants CMS choisis (surtout l'accéléromètre) étant parfois très petits, Altium n'accepte pas forcément le faible espacement entre les différentes pattes des composants, ce qui pose problème lors de la compilation. De plus, le plan de masse ne prenait pas en compte tous les éléments devant être rattachés à la masse. Il a fallu légèrement déplacer les headers représentant le RFDuino pour que cela soit possible. Il faudra alors peut-être légèrement plier les broches qui viendront s'intégrer sur le RFDuino pour ajouter notre PCB sur le RFDuino.&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Finalproto_sch.PNG&amp;diff=40432</id>
		<title>Fichier:Finalproto sch.PNG</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Finalproto_sch.PNG&amp;diff=40432"/>
				<updated>2017-03-16T08:30:04Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Finalproto_pcb.PNG&amp;diff=40431</id>
		<title>Fichier:Finalproto pcb.PNG</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Finalproto_pcb.PNG&amp;diff=40431"/>
				<updated>2017-03-16T08:29:39Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=40428</id>
		<title>IMA4 2016/2017 P46 : Aide anti-gaspillage alimentaire</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=40428"/>
				<updated>2017-03-16T08:12:30Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : /* Altium Designer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
En France, nous jetons en moyenne 21% des aliments que nous achetons, ce qui représente une perte de 100 à 160 euros par an par habitant. Cela est en partie dû à la date limite de consommation associée à chaque produit. En effet, à partir du moment où cette date sera dépassée le consommateur jettera les produits concernés sans réfléchir, même si ceux-ci peuvent parfois être encore mangeables. Plutôt que d'essayer de les convaincre du contraire, il serait judicieux de proposer aux adeptes du gaspillage une aide permettant de gérer tous les aliments dont ils disposent chez eux afin d'éviter la surprise de tomber sur plusieurs produits périmés lorsqu'ils ouvrent la porte de leur frigo. &lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Ce projet permet d'aider les utilisateurs d'une part à mémoriser les denrées périssables qu'ils disposent dans leur réserve alimentaire et d'autre part d'avertir l'utilisateur qu'un événement important a lieu. Ceci peut être une notification qu'un aliment va bientôt dépasser sa date de péremption, que la porte du frigidaire est restée ouverte ou encore que le nombre d'aliments dans la réserve devient critique et qu'il faudra de nouveau l'alimenter. Enfin, le système aidera l'utilisateur à trouver des idées de repas pouvant permettre de consommer les aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Notre prototype permettra d'éviter le gaspillage alimentaire ainsi que d'aider l'utilisateur dans sa gestion du stockage d'aliments.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
&lt;br /&gt;
Notre système sera composé de 3 éléments. &lt;br /&gt;
&lt;br /&gt;
Premièrement, un ou des smartphones appartenant aux utilisateurs. Ces derniers permettront de scanner grâce à son appareil photo, le code barre du produit ainsi que sa date de péremption. Il servira aussi d'interface utilisateur pour notre système. En effet, c'est par cet outil que l'utilisateur pourra lister tous les aliments que l'utilisateur a dans sa base et tout ça en les triant par date de péremption, ou encore voir les recettes possibles pour consommer des aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Deuxièmement, un serveur, de type Raspberry, qui permettra de stocker la base de donnée contenant les aliments de la réserve. Ce serveur sera connecté par wifi.&lt;br /&gt;
 &lt;br /&gt;
Troisièmement, un contrôleur (Rfduino) qui comportera une LED pour indiquer la mise sous tension du contrôleur, une LED pour prévenir l'utilisateur qu'un aliment va bientôt passer sa date de péremption et une dernière LED pour prévenir l'utilisateur que son niveau de réserve est critique ainsi qu'un buzzer et un accéléromètre pour buzzer quand la porte du frigo est restée trop longtemps ouverte. Ce dernier sera fixé au frigo par l'intermédiaire d'un dispositif adapté qui sera un système aimanté qui se pose sur le frigo.&lt;br /&gt;
&lt;br /&gt;
Nous implémenterons donc une application mobile Android qui fera le lien entre les 2 autres systèmes.&lt;br /&gt;
&lt;br /&gt;
Pour la partie électronique que nous aurons à réaliser, nous utiliserons une Breadboard pour faire des premiers tests puis nous créerons une carte PCB pour notre montage final.&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
On utilisera une Raspberry Pi en guise de serveur pour pouvoir s'occuper du stockage de toutes les données dans notre projet puisque notre contrôleur sera incapable de les contenir, ce n'est d'ailleurs pas son but ici.&lt;br /&gt;
&lt;br /&gt;
Notre smartphone fera donc le lien entre notre base de données et notre système embarqué par l'intermédiaire de l'application mobile.&lt;br /&gt;
&lt;br /&gt;
Nous prendrons ici un RFduino puisque celui-ci nous permet d'ajouter des modules comme bon nous semble afin d'adapter le système aux besoins de notre application. Il est également parfaitement compatible avec les applications Android. De plus, nous avons un Bluetooth directement intégré au RFduino pour s'assurer que les liaisons RFduino-application mobile se fassent correctement. &lt;br /&gt;
On notera également que ce contrôleur consomme peu de courant et ne demande qu'une faible tension d'alimentation, critères importants pour ce genre de projet. C'est la raison principale de son utilisation pour être utilisé comme interface physique sur le frigo, en ajoutant également sa taille réduite comparée à la Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
&lt;br /&gt;
Nous avons donc besoin du matériel suivant :&lt;br /&gt;
&lt;br /&gt;
*Raspberry Pi.&lt;br /&gt;
*Clef wifi&lt;br /&gt;
*RFduino (RFD22102 DIP Board, RFD22121 USB Shield, RFD22126 Dual AAA battery shield).&lt;br /&gt;
*2 piles AAA.&lt;br /&gt;
*3 leds tranversantes.&lt;br /&gt;
*3 Résistances 330 Ohm.&lt;br /&gt;
*1 Résistance 10 kOhm.&lt;br /&gt;
*Un buzzer.&lt;br /&gt;
*Accéléromètre.&lt;br /&gt;
*Aimants&lt;br /&gt;
*Un boîtier permettant d'intégrer la RFduino + fixation sur le frigo (modélisation à voir).&lt;br /&gt;
&lt;br /&gt;
Pour le buzzer, l'accéléromètre et les résistances, nous choisirons des composants CMS pour nous permettre d'avoir une carte plus petite.&lt;br /&gt;
&lt;br /&gt;
===Calendrier prévisionnel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Liste des tâches à effectuer====&lt;br /&gt;
&lt;br /&gt;
* Configurer la Raspberry :&lt;br /&gt;
** Installer et configurer le serveur.&lt;br /&gt;
** Créer le diagramme UML de notre future base de données.&lt;br /&gt;
** Créer la base sur le serveur.&lt;br /&gt;
** Configurer la connexion WiFi.&lt;br /&gt;
&lt;br /&gt;
* Monter et programmer la RFduino :&lt;br /&gt;
** Connecter les différents modules au RFduino (accéléromètre, LEDs, buzzer, Batterie, module Bluetooth).&lt;br /&gt;
** Récupérer les consignes du smartphone grâce au Bluetooth.&lt;br /&gt;
** Programmer le comportement du RFduino en fonction des consignes.&lt;br /&gt;
** Construire le boitier final.&lt;br /&gt;
&lt;br /&gt;
* Implémenter l'application mobile Android :&lt;br /&gt;
** Une première activité permettant de se connecter au RFduino et à la Raspberry.&lt;br /&gt;
** Scanner une date et un code barre.&lt;br /&gt;
** Ajout/suppression d'un aliment dans la base de donnée.&lt;br /&gt;
** Envoi d'une consigne au RFduino.&lt;br /&gt;
** Rendre l'interface utilisateur ergonomique (lister aliments, envoyer vers page de recettes avec l'utilisation des aliments bientôt périmés...).&lt;br /&gt;
&lt;br /&gt;
====Calendrier====&lt;br /&gt;
&lt;br /&gt;
Répartition du temps consacré au projet (120h *2) :&lt;br /&gt;
&lt;br /&gt;
*Partie Raspberry : 60h&lt;br /&gt;
*Partie RFduino : 60h&lt;br /&gt;
*Partie développement mobile : 120h&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
&lt;br /&gt;
===Résumé===&lt;br /&gt;
&lt;br /&gt;
====Semaine 1====&lt;br /&gt;
&lt;br /&gt;
'''23/01''' :  &lt;br /&gt;
* Installation du logiciel Android Studio pour être prêt à commencer l'application mobile.&lt;br /&gt;
* Création du Repository Git sur GitHub : https://github.com/FrancoisLefevre12/Optali.git&lt;br /&gt;
* Réalisation de différents schémas fonctionnels pour se donner une idée du travail à effectuer, aussi bien du software que du hardware.&lt;br /&gt;
* Quelques précisions supplémentaires apportées sur le cahier des charges.&lt;br /&gt;
* Ajout de liens de référence pour la liste de matériel à acheter.&lt;br /&gt;
&lt;br /&gt;
'''25/01''' :  &lt;br /&gt;
* Précision des composants requis (accéléromètre, buzzer, LEDs, résistances).&lt;br /&gt;
* Écriture du montage à la main.&lt;br /&gt;
* Étude du fonctionnement de l'accéléromètre, du buzzer.&lt;br /&gt;
* Écriture de la structure de l'application à la main.&lt;br /&gt;
&lt;br /&gt;
'''26/01''' :&lt;br /&gt;
*Réalisation graphique de la première page de l'application.&lt;br /&gt;
*Conception du schéma électrique pour tous les composants connectés au RFduino.&lt;br /&gt;
&lt;br /&gt;
====Semaine 2====&lt;br /&gt;
&lt;br /&gt;
'''30/01''' :&lt;br /&gt;
*Réalisation du diagramme UML de la base de données qui sera stockée sur la Raspberry Pi&lt;br /&gt;
*Installation de l'outil de développement mobile sur le second PC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''01/02''' :&lt;br /&gt;
*Nous nous sommes d'abord rendus compte que la résistance entre un des GPIO et l'accéléromètre était inutile, nos premiers calculs étaient erronés. Nous ne la garderons donc pas sur notre schéma électrique final.&lt;br /&gt;
*Avancement sur la partie application mobile : réalisation de la page &amp;quot;Ajout&amp;quot; sur laquelle nous tomberons après avoir cliquer sur &amp;quot;ajout&amp;quot; sur la page principale de l'application. Nous avons étendu l'activité principale jusqu'à cette nouvelle activité &amp;quot;Ajout&amp;quot;.&lt;br /&gt;
*Nous avons récupéré notre Raspberry Pi pour commencer à installer notre base de données dessus. Nous avons actuellement quelques problèmes pour nous connecter sur la Raspberry. Nous travaillons sur ce point.&lt;br /&gt;
&lt;br /&gt;
'''02/02''' :&lt;br /&gt;
* Application mobile : Mise en place des LEDs sur la home page et de la zone de notification avec les messages associés.&lt;br /&gt;
&lt;br /&gt;
====Semaine 3====&lt;br /&gt;
&lt;br /&gt;
'''06/02''' :&lt;br /&gt;
*Nous arrivons à accéder à la Raspberry via le port série de celle-ci. Nous avons également configuré sa connexion Ethernet afin de pouvoir télécharger des paquets dessus et installer notre base de données. &lt;br /&gt;
*Nous rencontrions des problèmes sur le second PC de travail pour récupérer le projet Optali sur Android Studio via notre dépôt GIT. Nous avons pu rectifier ce souci.&lt;br /&gt;
&lt;br /&gt;
'''08/02''' :&lt;br /&gt;
*Tentative d'établissement d'un point d'accès WiFi sur notre Raspberry. Nous n'avons pas réussi pour le moment.&lt;br /&gt;
*Restructuration du Repository git.&lt;br /&gt;
*Essai d'importation de la librairie Zxing qui permettra de décoder les code-barres.&lt;br /&gt;
&lt;br /&gt;
====Semaine 4====&lt;br /&gt;
&lt;br /&gt;
'''13/02'''&lt;br /&gt;
*Configuration du wifi de la Raspberry. &lt;br /&gt;
*Étude d'une mise en place d'un service web via php.&lt;br /&gt;
&lt;br /&gt;
'''15/02'''&lt;br /&gt;
*Mise en place d'un lecteur de caractère sur l'application. On utilisera tesseract.&lt;br /&gt;
*Début de la création du PCB via Altium designer. Création d'une librairie pour l'accéléromètre qui est un composant CMS assez spécial. On pourra cependant utiliser des headers classiques pour le buzzer et les LEDs puisque ce sont des composants traversants.&lt;br /&gt;
*Création des premiers fichiers php de connection à la base de donnée et d'insertion d'aliments. Tous ces fichiers seront déposés de la même manière sur le dépôt git.&lt;br /&gt;
&lt;br /&gt;
'''16/02'''&lt;br /&gt;
*Adaptation avec prise en compte des cas du code php d'insertion de produits par requête sur la base de donnée.&lt;br /&gt;
*Ajout du code d'implantation de la base de donnée.&lt;br /&gt;
*Altium: Accéléromètre terminé, mise en place des résistances.&lt;br /&gt;
&lt;br /&gt;
====Semaine 5 (interruption pédagogique)====&lt;br /&gt;
&lt;br /&gt;
'''22/02 (3 heures)'''&lt;br /&gt;
*Installation de l'OS de la raspberry.&lt;br /&gt;
*Installation d'Openssh-server, apache2, php5, iptables, mysql-server, php5-mysql.&lt;br /&gt;
*Redirection des ports du routeur vers la raspberry.&lt;br /&gt;
*Configuration de iptables de la raspberry.&lt;br /&gt;
&lt;br /&gt;
'''23/02 (2 heures)'''&lt;br /&gt;
*Implantation de la base de donnée sur la raspberry pi.&lt;br /&gt;
&lt;br /&gt;
====Semaine 6====&lt;br /&gt;
'''27/02'''&lt;br /&gt;
*Vérification de la syntaxe de l'insertion de valeurs dans la base de donnée.&lt;br /&gt;
*Création des premières requêtes sur la base de donnée.&lt;br /&gt;
*Finalisation du PCB de l'Optali Board.&lt;br /&gt;
&lt;br /&gt;
'''01/03'''&lt;br /&gt;
*Étude et ajout de la librairie volley pour communiquer avec le serveur.&lt;br /&gt;
*Implantation de la fonction d'envoi de données jusqu'au serveur.&lt;br /&gt;
*Après avoir vu avec un professeur, nous avons remarqué que le routage n'était pas adéquat et la disposition des composants n'était pas optimal. Du travail reste donc encore à effectuer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Semaine 7====&lt;br /&gt;
'''06/03'''&lt;br /&gt;
*Correction du fichier post.php&lt;br /&gt;
*Finition du protocole d'ajout d'aliment sur la base de donnée. (Code php et page ajout terminée).&lt;br /&gt;
*PCB terminé.&lt;br /&gt;
*Installation d'arduino IDE, doc arduino collecté.&lt;br /&gt;
&lt;br /&gt;
'''08/03'''&lt;br /&gt;
*Implémentation de la page ListeIngredient.xml et de l'activité listActivity.java.&lt;br /&gt;
*Documentation sur la procédure de communication bluetooth entre la Rfduino et l'application mobile.&lt;br /&gt;
*Obtention de librairie en lien avec cela.&lt;br /&gt;
*Prise en main de programmation rfduino.&lt;br /&gt;
&lt;br /&gt;
'''09/03'''&lt;br /&gt;
*Nous nous sommes rendus compte qu'il était nécessaire de rajouter un bouton poussoir sur notre montage afin de permettre la réinitialisation de notre RFDuino si nécessaire. Nous devons également faire en sorte de pouvoir poser notre carte PCB directement sur notre RFDuino en utilisant des broches. Nous devons donc rajouter ces éléments-ci.&lt;br /&gt;
*Ecriture de la page get.php&lt;br /&gt;
*Premiers tests sur la ListView de l'activité ListActivity.&lt;br /&gt;
&lt;br /&gt;
====Semaine 8====&lt;br /&gt;
'''13/03'''&lt;br /&gt;
*Recherche de pistes concernant la programmation RFDuino. Nous pouvons la détecter en bluetooth via un smartphone Android.&lt;br /&gt;
*Finition du Tablelayout et du code java associé sur la page ListActivity.&lt;br /&gt;
&lt;br /&gt;
'''15/03'''&lt;br /&gt;
*Ajout de la JsonArrayRequest dans la page ListActivity.&lt;br /&gt;
*Nous nous sommes rendus compte au moment de programmer la liaison I2C de l'accéléromètre avec la RFDuino que nous avions oublié de mettre des résistances pull-up entre l'alimentation du composant et les broches SDA et SCL. Les modifications ont donc été faites puis nous avons envoyé finalement notre PCB à la fabrication.&lt;br /&gt;
&lt;br /&gt;
===Premières idées===&lt;br /&gt;
&lt;br /&gt;
Voici les premières idées de l'application mobile et du composant fixé sur le frigo.&lt;br /&gt;
[[Fichier:Optali_v1.jpg|400px|thumb|left|Optali version 1]]&lt;br /&gt;
[[Fichier:OptaliBox_v1.jpg|400px|thumb|center|OptaliBox version 1]]&lt;br /&gt;
[[Fichier:P46_schema.jpg|400px|thumb|center|Schéma électrique version 1]]&lt;br /&gt;
&lt;br /&gt;
En s'intéressant aux différentes datasheets ou données constructeur des composants que nous voulons utiliser, nous trouvons indispensable d'utiliser des résistances de 330 Ohms pour l'utilisation des LEDs, pour éviter de les griller.&lt;br /&gt;
&lt;br /&gt;
Edit : Retrait de la résistance R2.&lt;br /&gt;
&lt;br /&gt;
Concernant l'accéléromètre, nous avons choisi un modèle qui nous permet de brancher directement ce module sur une broche du RFDuino. On branchera directement les GPIOs de la RFduino sur les ports SDA et SCL de l'accéléromètre qui correspondent à l'interface I2C pour pouvoir communiquer. On utilisera aussi la broche INT1 pour pouvoir générer des interruptions directement depuis l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
On connectera le buzzer directement à une broche de la RFduino aussi. Concernant celui-ci il reste une incertitude puisqu'on ne trouve aucune information sur le courant à fournir pour l'alimentation de ce composant sur sa datasheet. Après différentes recherches sur Internet, il pourrait être nécessaire d'utiliser un montage amplificateur à transistor comme un émetteur commun pour booster le courant en sortie d'une broche GPIO. Quelques buzzers trouvés avec des données constructeur montrent que ce type de composant nécessite généralement un courant d'environ 30 mA. Nous verrons dans la pratique si cela sera vraiment nécessaire. Par sécurité, on ajoutera un transistor bipolaire dans la liste de matériel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:screen_LED.png|400px|thumb|left|Données constructeur pour LEDs]]&lt;br /&gt;
[[Fichier:screen_accel.png|400px|thumb|center|Datasheet de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
===Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
====Configuration école====&lt;br /&gt;
&lt;br /&gt;
*Pour configurer notre Raspberry Pi, nous utilisons son port série et &amp;quot;minicom&amp;quot;. Pour pouvoir télécharger des paquets, il fallait la connecter au réseau. Nous lui avons donc affecté une adresse IP fixe avec le fichier /etc/network/interfaces. Voici les modifications qui ont été apportées : &lt;br /&gt;
&lt;br /&gt;
   auto eth0&lt;br /&gt;
   iface eth0 inet static&lt;br /&gt;
   address 172.26.78.15&lt;br /&gt;
   netmask 255.255.240.0&lt;br /&gt;
   gateway 172.26.79.254&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il a également fallu ajouter la commande &amp;quot;export http_proxy=http://proxy.polytech-lille.fr:3128&amp;quot; (il faudra effectuer cette commande à chaque démarrage de la Pi) pour pouvoir utiliser le proxy de l'école. &lt;br /&gt;
Nous avons de plus modifier le fichier /etc/resolv.conf avec la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
   nameserver 193.48.57.34&lt;br /&gt;
&lt;br /&gt;
Malgré cela, nous avions des soucis pour nous connecter au réseau. Il y avait en fait un processus dhcp en tâche de fond qui nous empêchait de garder le contenu de resolv.conf. Il a donc fallu trouver ce processus pour le &amp;quot;kill&amp;quot; et pouvoir accéder correctement au réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons du coup pu installer postgresql pour pouvoir configurer une base de données sur notre Pi.&lt;br /&gt;
&lt;br /&gt;
====Configuration à domicile====&lt;br /&gt;
&lt;br /&gt;
Pour nous mettre dans une situation plus fidèle à notre projet, nous avons configuré la raspberry à domicile.&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abords installé Raspbian, puis installé les paquets nécessaire au fonctionnement du serveur.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Openssh-server''': permettre d'accès à distance à la raspberry pour pouvoir y accéder depuis l'école.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Iptables''': pour sécuriser les ports non utilisé et libérer l'accès aux ports qui nous intéressent (ssh 22,http 80,https 443).&amp;lt;br&amp;gt;&lt;br /&gt;
- '''apache2, php5, mysql-server''' : pour mettre en place notre service web.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons rediriger les ports 80 et 22 du routeur pour pouvoir accéder à la raspberry de l'extérieur.&lt;br /&gt;
&lt;br /&gt;
Pour finir, nous avons créer un fichier de config iptables permettant de sécuriser un minimum la base de donnée et de permettre d'autoriser la communication des ports 22, 80 et 443 correspondants aux ports ssh, http et https. le fichier de configuration a été déposé dans le dépôt git. Il nous a fallut le rendre exécutable via un chmod. Puis pour l'exécuter à chaque démarrage du system, dans le fichier /etc/init.d/ taper : &lt;br /&gt;
&lt;br /&gt;
    sudo update-rc.d firewall defaults (si notrefichier s'appelle firewall et s'il est dans init.d)&lt;br /&gt;
&lt;br /&gt;
===Base de donnée===&lt;br /&gt;
&lt;br /&gt;
Nos données alimentaires disponibles par toute la famille doivent être stocké sur un serveur de base de donnée externe (tel une Raspberry pi). Nous nous proposons de créer le diagramme UML représentant cette future base de donnée.&lt;br /&gt;
[[Fichier:Optali_UML.jpg|700px|thumb|center|Diagramme UML base de donnée]]&lt;br /&gt;
&lt;br /&gt;
On créera donc 3 entités. Date, Product et Recipe. &lt;br /&gt;
&lt;br /&gt;
- Product rassemble les aliments qui sont ou ont été dans la réserve alimentaire. NbProdIn permet de connaître le nombre de produits identiques (possibilité de date différentes mais pas de doublons et on garde l'information de quantité. NbProdBought donne une information sur le nombre de produits identique ayant été acheté depuis la mise en service de la base de donnée. Ainsi nous pourrons par la suite proposer une liste de course à l'utilisateur en fonction de la fréquence d'achat des produits.&lt;br /&gt;
&lt;br /&gt;
- Recipe contient les recettes que pourra rentrer l'utilisateur sur l'application. L'utilisateur pourra ainsi se voir proposer des recettes en fonction de ce qu'il a dans son frigo et de ses recettes personnelles.&lt;br /&gt;
&lt;br /&gt;
'''''Edit : On ajoutera une valeur entière dans les tables Date et Unity pour gérer le cas où il existe plusieurs produits (différents ou identiques) avec une date de péremption équivalente. On les appellera NbDate la valeur dans la table Date et NbUnity dans la table Unity. On leur ajoutera de même une clef primaire IdUnity et IdListProduct'''''&lt;br /&gt;
&lt;br /&gt;
On utilisera MySql pour la gestion de nos bases de données. &lt;br /&gt;
La syntaxe pour l'implanter dans la base de donnée à été jointe au dépôt git.&lt;br /&gt;
&lt;br /&gt;
Pour lancer my SQL, on tapera:&lt;br /&gt;
&lt;br /&gt;
   mysql -h localhost -u root -p&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Web service===&lt;br /&gt;
&lt;br /&gt;
====Page init.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet d'initier l'accès à la base de donnée sur le serveur. Elle est requise pour les pages qui suivent.&lt;br /&gt;
&lt;br /&gt;
====Page post.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet l'insertion d'un produit et d'une date via l'application mobile. Elle prend donc ces deux arguments et les insère dans les tables Unity, Product et Date.&lt;br /&gt;
&lt;br /&gt;
====Page get.php====&lt;br /&gt;
&lt;br /&gt;
Page qui récupère un nombre qui défini selon quoi la liste est trié (0=par nom, 1=par date, 2=nombre dans le frigo, 3= par nombre en tout). Elle récupère aussi un mot ou un début de mot ou rien pour faire une recherche dans la base. On utilisera la syntaxe:&amp;lt;br&amp;gt;&lt;br /&gt;
    Product.product='&amp;quot;.$Search.&amp;quot;%'&lt;br /&gt;
&lt;br /&gt;
===Application Mobile===&lt;br /&gt;
&lt;br /&gt;
====Home page====&lt;br /&gt;
&lt;br /&gt;
Page d'accueil permettant d'accéder aux pages d'ajout et de liste des produits disponibles. &amp;lt;br&amp;gt;&lt;br /&gt;
La page permet aussi d'effectuer la connexion entre la rfduino et l'application mobile. Elle montre les alertes (signaux) à l'utilisateur &lt;br /&gt;
et écrit leur signification.&lt;br /&gt;
&lt;br /&gt;
====Page d'ajout====&lt;br /&gt;
&lt;br /&gt;
Pour ajouter un produit et lire une date on utilisera un champ editText pour permettre à l'utilisateur d'écrire &amp;quot;Manuellement&amp;quot; dedans grâce au clavier du smartphone.&amp;lt;br&amp;gt;&lt;br /&gt;
De plus on utilise un bouton qui appellera la caméra pour détecter les caractères d'un produit ou d'une date. Au début nous voulions utiliser un détecteur de code barre, nous l'avons implémenté mais nous avons remarqué que la mise au point sur une surface non plane prend du temps d'autant plus qu'il faut questionner une base de donnée contenant tous les numéro de codes barres utilisés. Nous avons donc prit la décision d'utiliser uniquement la lecture de caractère et nous créerons une liste déroulante sous l'editText pour faciliter l'insertion d'un produit qui a déjà été ajouté.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'envoi, nous utilisons la librairie Volley développé par google.&lt;br /&gt;
&lt;br /&gt;
====Page Liste====&lt;br /&gt;
&lt;br /&gt;
Permet de lister les produits dans la base de donnée. Une série de boutons radio permettent de trier les produits par ordre alphabétique, par date de péremption, par nombre d’occurrence dans la réserve alimentaire, par nombre d'achat depuis la mise en place du système.&amp;lt;br&amp;gt;&lt;br /&gt;
Une colonne permet de sélectionner les aliments désirés (par checkBox) pour ensuite les supprimer via un button &amp;quot;suppr&amp;quot; ou les choisir pour trouver des recettes qui les utilisent.&amp;lt;br&amp;gt;&lt;br /&gt;
Un EditText permet d'effectuer une recherche sur la base de donnée.&lt;br /&gt;
&lt;br /&gt;
===Altium Designer===&lt;br /&gt;
&lt;br /&gt;
Pour permettre au RFDuino de communiquer avec les différents composants, nous aurons besoin de quelques composants électroniques. Afin que cela soit plus esthétique pour la modélisation finale, nous allons créer une carte PCB pour rassembler tous ces composants dessus. On utilisera le logiciel Altium Designer pour cela.&lt;br /&gt;
&lt;br /&gt;
Avant de représenter notre circuit général, nous allons commencer par créer une librairie rassemblant tous les composants que nous utiliserons par la suite, en particulier nos composants CMS (accéléromètre et résistances). Pour ce qui est des LEDs et du buzzer, qui sont traversants, nous pourrons utiliser des headers classiques.&lt;br /&gt;
&lt;br /&gt;
Il a donc fallu créer le schematic ainsi que l'empreinte de nos composants CMS. Voici un exemple avec notre accéléromètre :&lt;br /&gt;
[[Fichier:Accelerosch.PNG|500px|thumb|left|Schematic de l'accéléromètre]]&lt;br /&gt;
[[Fichier:Acceleropcb.PNG|500px|thumb|center|Empreinte PCB de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les fichiers Altium sont disponibles sur notre dépôt GIT. Après cela, nous pouvons maintenant construire notre schematic du montage entier et ensuite le fichier PCB afin de pouvoir graver notre circuit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après quelques modifications sur le montage prévu initialement, c'est-à-dire en enlevant une résistance entre un GPIO et l'alimentation de l'accéléromètre ainsi qu'en rajoutant des résistances pull-up sur les broches de notre liaison i2C (SDA et SCL) et un bouton poussoir en plus pour permettre un reset du RFDuino, nous avons pu créer notre schematic global pour en faire un PCB et l'exporter au format Gerber. De ce fait, le service EEI de Polytech pourra réaliser la gravure de notre carte PCB.&lt;br /&gt;
&lt;br /&gt;
Voici quelques photos pour illustrer notre projet sur Altium : &lt;br /&gt;
&lt;br /&gt;
(photo schematic)&lt;br /&gt;
(photo pcb)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On retrouve sur notre PCB final les headers, respectivement de 8 et 5 pins, de part et d'autre de la carte, qui représentent le RFDuino, où nous souderons des broches pour qu'elles puissent être intégrées au RFDuino. On note la présence de 5 autres headers de 2 pins, dont 3 pour des LEDs puis les 2 autres pour le buzzer et le bouton poussoir. Ce qui reste sont les composants CMS avec plusieurs composants à 2 pattes qui sont toutes les résistances de notre montage, celles de protection pour les LEDs et les pull-ups pour l'accéléromètre. Le dernier composant à 8 pattes est donc bien l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quelques difficultés ont été rencontrées durant ce travail notamment concernant les contraintes de construction sur le PCB final. En effet, les composants CMS choisis (surtout l'accéléromètre) étant parfois très petits, Altium n'accepte pas forcément le faible espacement entre les différentes pattes des composants, ce qui pose problème lors de la compilation. De plus, le plan de masse ne prenait pas en compte tous les éléments devant être rattachés à la masse. Il a fallu légèrement déplacer les headers représentant le RFDuino pour que cela soit possible. Il faudra alors peut-être légèrement plier les broches qui viendront s'intégrer sur le RFDuino pour ajouter notre PCB sur le RFDuino.&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=40424</id>
		<title>IMA4 2016/2017 P46 : Aide anti-gaspillage alimentaire</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=40424"/>
				<updated>2017-03-16T08:00:39Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : /* Altium Designer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
En France, nous jetons en moyenne 21% des aliments que nous achetons, ce qui représente une perte de 100 à 160 euros par an par habitant. Cela est en partie dû à la date limite de consommation associée à chaque produit. En effet, à partir du moment où cette date sera dépassée le consommateur jettera les produits concernés sans réfléchir, même si ceux-ci peuvent parfois être encore mangeables. Plutôt que d'essayer de les convaincre du contraire, il serait judicieux de proposer aux adeptes du gaspillage une aide permettant de gérer tous les aliments dont ils disposent chez eux afin d'éviter la surprise de tomber sur plusieurs produits périmés lorsqu'ils ouvrent la porte de leur frigo. &lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Ce projet permet d'aider les utilisateurs d'une part à mémoriser les denrées périssables qu'ils disposent dans leur réserve alimentaire et d'autre part d'avertir l'utilisateur qu'un événement important a lieu. Ceci peut être une notification qu'un aliment va bientôt dépasser sa date de péremption, que la porte du frigidaire est restée ouverte ou encore que le nombre d'aliments dans la réserve devient critique et qu'il faudra de nouveau l'alimenter. Enfin, le système aidera l'utilisateur à trouver des idées de repas pouvant permettre de consommer les aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Notre prototype permettra d'éviter le gaspillage alimentaire ainsi que d'aider l'utilisateur dans sa gestion du stockage d'aliments.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
&lt;br /&gt;
Notre système sera composé de 3 éléments. &lt;br /&gt;
&lt;br /&gt;
Premièrement, un ou des smartphones appartenant aux utilisateurs. Ces derniers permettront de scanner grâce à son appareil photo, le code barre du produit ainsi que sa date de péremption. Il servira aussi d'interface utilisateur pour notre système. En effet, c'est par cet outil que l'utilisateur pourra lister tous les aliments que l'utilisateur a dans sa base et tout ça en les triant par date de péremption, ou encore voir les recettes possibles pour consommer des aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Deuxièmement, un serveur, de type Raspberry, qui permettra de stocker la base de donnée contenant les aliments de la réserve. Ce serveur sera connecté par wifi.&lt;br /&gt;
 &lt;br /&gt;
Troisièmement, un contrôleur (Rfduino) qui comportera une LED pour indiquer la mise sous tension du contrôleur, une LED pour prévenir l'utilisateur qu'un aliment va bientôt passer sa date de péremption et une dernière LED pour prévenir l'utilisateur que son niveau de réserve est critique ainsi qu'un buzzer et un accéléromètre pour buzzer quand la porte du frigo est restée trop longtemps ouverte. Ce dernier sera fixé au frigo par l'intermédiaire d'un dispositif adapté qui sera un système aimanté qui se pose sur le frigo.&lt;br /&gt;
&lt;br /&gt;
Nous implémenterons donc une application mobile Android qui fera le lien entre les 2 autres systèmes.&lt;br /&gt;
&lt;br /&gt;
Pour la partie électronique que nous aurons à réaliser, nous utiliserons une Breadboard pour faire des premiers tests puis nous créerons une carte PCB pour notre montage final.&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
On utilisera une Raspberry Pi en guise de serveur pour pouvoir s'occuper du stockage de toutes les données dans notre projet puisque notre contrôleur sera incapable de les contenir, ce n'est d'ailleurs pas son but ici.&lt;br /&gt;
&lt;br /&gt;
Notre smartphone fera donc le lien entre notre base de données et notre système embarqué par l'intermédiaire de l'application mobile.&lt;br /&gt;
&lt;br /&gt;
Nous prendrons ici un RFduino puisque celui-ci nous permet d'ajouter des modules comme bon nous semble afin d'adapter le système aux besoins de notre application. Il est également parfaitement compatible avec les applications Android. De plus, nous avons un Bluetooth directement intégré au RFduino pour s'assurer que les liaisons RFduino-application mobile se fassent correctement. &lt;br /&gt;
On notera également que ce contrôleur consomme peu de courant et ne demande qu'une faible tension d'alimentation, critères importants pour ce genre de projet. C'est la raison principale de son utilisation pour être utilisé comme interface physique sur le frigo, en ajoutant également sa taille réduite comparée à la Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
&lt;br /&gt;
Nous avons donc besoin du matériel suivant :&lt;br /&gt;
&lt;br /&gt;
*Raspberry Pi.&lt;br /&gt;
*Clef wifi&lt;br /&gt;
*RFduino (RFD22102 DIP Board, RFD22121 USB Shield, RFD22126 Dual AAA battery shield).&lt;br /&gt;
*2 piles AAA.&lt;br /&gt;
*3 leds tranversantes.&lt;br /&gt;
*3 Résistances 330 Ohm.&lt;br /&gt;
*1 Résistance 10 kOhm.&lt;br /&gt;
*Un buzzer.&lt;br /&gt;
*Accéléromètre.&lt;br /&gt;
*Aimants&lt;br /&gt;
*Un boîtier permettant d'intégrer la RFduino + fixation sur le frigo (modélisation à voir).&lt;br /&gt;
&lt;br /&gt;
Pour le buzzer, l'accéléromètre et les résistances, nous choisirons des composants CMS pour nous permettre d'avoir une carte plus petite.&lt;br /&gt;
&lt;br /&gt;
===Calendrier prévisionnel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Liste des tâches à effectuer====&lt;br /&gt;
&lt;br /&gt;
* Configurer la Raspberry :&lt;br /&gt;
** Installer et configurer le serveur.&lt;br /&gt;
** Créer le diagramme UML de notre future base de données.&lt;br /&gt;
** Créer la base sur le serveur.&lt;br /&gt;
** Configurer la connexion WiFi.&lt;br /&gt;
&lt;br /&gt;
* Monter et programmer la RFduino :&lt;br /&gt;
** Connecter les différents modules au RFduino (accéléromètre, LEDs, buzzer, Batterie, module Bluetooth).&lt;br /&gt;
** Récupérer les consignes du smartphone grâce au Bluetooth.&lt;br /&gt;
** Programmer le comportement du RFduino en fonction des consignes.&lt;br /&gt;
** Construire le boitier final.&lt;br /&gt;
&lt;br /&gt;
* Implémenter l'application mobile Android :&lt;br /&gt;
** Une première activité permettant de se connecter au RFduino et à la Raspberry.&lt;br /&gt;
** Scanner une date et un code barre.&lt;br /&gt;
** Ajout/suppression d'un aliment dans la base de donnée.&lt;br /&gt;
** Envoi d'une consigne au RFduino.&lt;br /&gt;
** Rendre l'interface utilisateur ergonomique (lister aliments, envoyer vers page de recettes avec l'utilisation des aliments bientôt périmés...).&lt;br /&gt;
&lt;br /&gt;
====Calendrier====&lt;br /&gt;
&lt;br /&gt;
Répartition du temps consacré au projet (120h *2) :&lt;br /&gt;
&lt;br /&gt;
*Partie Raspberry : 60h&lt;br /&gt;
*Partie RFduino : 60h&lt;br /&gt;
*Partie développement mobile : 120h&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
&lt;br /&gt;
===Résumé===&lt;br /&gt;
&lt;br /&gt;
====Semaine 1====&lt;br /&gt;
&lt;br /&gt;
'''23/01''' :  &lt;br /&gt;
* Installation du logiciel Android Studio pour être prêt à commencer l'application mobile.&lt;br /&gt;
* Création du Repository Git sur GitHub : https://github.com/FrancoisLefevre12/Optali.git&lt;br /&gt;
* Réalisation de différents schémas fonctionnels pour se donner une idée du travail à effectuer, aussi bien du software que du hardware.&lt;br /&gt;
* Quelques précisions supplémentaires apportées sur le cahier des charges.&lt;br /&gt;
* Ajout de liens de référence pour la liste de matériel à acheter.&lt;br /&gt;
&lt;br /&gt;
'''25/01''' :  &lt;br /&gt;
* Précision des composants requis (accéléromètre, buzzer, LEDs, résistances).&lt;br /&gt;
* Écriture du montage à la main.&lt;br /&gt;
* Étude du fonctionnement de l'accéléromètre, du buzzer.&lt;br /&gt;
* Écriture de la structure de l'application à la main.&lt;br /&gt;
&lt;br /&gt;
'''26/01''' :&lt;br /&gt;
*Réalisation graphique de la première page de l'application.&lt;br /&gt;
*Conception du schéma électrique pour tous les composants connectés au RFduino.&lt;br /&gt;
&lt;br /&gt;
====Semaine 2====&lt;br /&gt;
&lt;br /&gt;
'''30/01''' :&lt;br /&gt;
*Réalisation du diagramme UML de la base de données qui sera stockée sur la Raspberry Pi&lt;br /&gt;
*Installation de l'outil de développement mobile sur le second PC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''01/02''' :&lt;br /&gt;
*Nous nous sommes d'abord rendus compte que la résistance entre un des GPIO et l'accéléromètre était inutile, nos premiers calculs étaient erronés. Nous ne la garderons donc pas sur notre schéma électrique final.&lt;br /&gt;
*Avancement sur la partie application mobile : réalisation de la page &amp;quot;Ajout&amp;quot; sur laquelle nous tomberons après avoir cliquer sur &amp;quot;ajout&amp;quot; sur la page principale de l'application. Nous avons étendu l'activité principale jusqu'à cette nouvelle activité &amp;quot;Ajout&amp;quot;.&lt;br /&gt;
*Nous avons récupéré notre Raspberry Pi pour commencer à installer notre base de données dessus. Nous avons actuellement quelques problèmes pour nous connecter sur la Raspberry. Nous travaillons sur ce point.&lt;br /&gt;
&lt;br /&gt;
'''02/02''' :&lt;br /&gt;
* Application mobile : Mise en place des LEDs sur la home page et de la zone de notification avec les messages associés.&lt;br /&gt;
&lt;br /&gt;
====Semaine 3====&lt;br /&gt;
&lt;br /&gt;
'''06/02''' :&lt;br /&gt;
*Nous arrivons à accéder à la Raspberry via le port série de celle-ci. Nous avons également configuré sa connexion Ethernet afin de pouvoir télécharger des paquets dessus et installer notre base de données. &lt;br /&gt;
*Nous rencontrions des problèmes sur le second PC de travail pour récupérer le projet Optali sur Android Studio via notre dépôt GIT. Nous avons pu rectifier ce souci.&lt;br /&gt;
&lt;br /&gt;
'''08/02''' :&lt;br /&gt;
*Tentative d'établissement d'un point d'accès WiFi sur notre Raspberry. Nous n'avons pas réussi pour le moment.&lt;br /&gt;
*Restructuration du Repository git.&lt;br /&gt;
*Essai d'importation de la librairie Zxing qui permettra de décoder les code-barres.&lt;br /&gt;
&lt;br /&gt;
====Semaine 4====&lt;br /&gt;
&lt;br /&gt;
'''13/02'''&lt;br /&gt;
*Configuration du wifi de la Raspberry. &lt;br /&gt;
*Étude d'une mise en place d'un service web via php.&lt;br /&gt;
&lt;br /&gt;
'''15/02'''&lt;br /&gt;
*Mise en place d'un lecteur de caractère sur l'application. On utilisera tesseract.&lt;br /&gt;
*Début de la création du PCB via Altium designer. Création d'une librairie pour l'accéléromètre qui est un composant CMS assez spécial. On pourra cependant utiliser des headers classiques pour le buzzer et les LEDs puisque ce sont des composants traversants.&lt;br /&gt;
*Création des premiers fichiers php de connection à la base de donnée et d'insertion d'aliments. Tous ces fichiers seront déposés de la même manière sur le dépôt git.&lt;br /&gt;
&lt;br /&gt;
'''16/02'''&lt;br /&gt;
*Adaptation avec prise en compte des cas du code php d'insertion de produits par requête sur la base de donnée.&lt;br /&gt;
*Ajout du code d'implantation de la base de donnée.&lt;br /&gt;
*Altium: Accéléromètre terminé, mise en place des résistances.&lt;br /&gt;
&lt;br /&gt;
====Semaine 5 (interruption pédagogique)====&lt;br /&gt;
&lt;br /&gt;
'''22/02 (3 heures)'''&lt;br /&gt;
*Installation de l'OS de la raspberry.&lt;br /&gt;
*Installation d'Openssh-server, apache2, php5, iptables, mysql-server, php5-mysql.&lt;br /&gt;
*Redirection des ports du routeur vers la raspberry.&lt;br /&gt;
*Configuration de iptables de la raspberry.&lt;br /&gt;
&lt;br /&gt;
'''23/02 (2 heures)'''&lt;br /&gt;
*Implantation de la base de donnée sur la raspberry pi.&lt;br /&gt;
&lt;br /&gt;
====Semaine 6====&lt;br /&gt;
'''27/02'''&lt;br /&gt;
*Vérification de la syntaxe de l'insertion de valeurs dans la base de donnée.&lt;br /&gt;
*Création des premières requêtes sur la base de donnée.&lt;br /&gt;
*Finalisation du PCB de l'Optali Board.&lt;br /&gt;
&lt;br /&gt;
'''01/03'''&lt;br /&gt;
*Étude et ajout de la librairie volley pour communiquer avec le serveur.&lt;br /&gt;
*Implantation de la fonction d'envoi de données jusqu'au serveur.&lt;br /&gt;
*Après avoir vu avec un professeur, nous avons remarqué que le routage n'était pas adéquat et la disposition des composants n'était pas optimal. Du travail reste donc encore à effectuer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Semaine 7====&lt;br /&gt;
'''06/03'''&lt;br /&gt;
*Correction du fichier post.php&lt;br /&gt;
*Finition du protocole d'ajout d'aliment sur la base de donnée. (Code php et page ajout terminée).&lt;br /&gt;
*PCB terminé.&lt;br /&gt;
*Installation d'arduino IDE, doc arduino collecté.&lt;br /&gt;
&lt;br /&gt;
'''08/03'''&lt;br /&gt;
*Implémentation de la page ListeIngredient.xml et de l'activité listActivity.java.&lt;br /&gt;
*Documentation sur la procédure de communication bluetooth entre la Rfduino et l'application mobile.&lt;br /&gt;
*Obtention de librairie en lien avec cela.&lt;br /&gt;
*Prise en main de programmation rfduino.&lt;br /&gt;
&lt;br /&gt;
'''09/03'''&lt;br /&gt;
*Nous nous sommes rendus compte qu'il était nécessaire de rajouter un bouton poussoir sur notre montage afin de permettre la réinitialisation de notre RFDuino si nécessaire. Nous devons également faire en sorte de pouvoir poser notre carte PCB directement sur notre RFDuino en utilisant des broches. Nous devons donc rajouter ces éléments-ci.&lt;br /&gt;
*Ecriture de la page get.php&lt;br /&gt;
*Premiers tests sur la ListView de l'activité ListActivity.&lt;br /&gt;
&lt;br /&gt;
====Semaine 8====&lt;br /&gt;
'''13/03'''&lt;br /&gt;
*Recherche de pistes concernant la programmation RFDuino. Nous pouvons la détecter en bluetooth via un smartphone Android.&lt;br /&gt;
*Finition du Tablelayout et du code java associé sur la page ListActivity.&lt;br /&gt;
&lt;br /&gt;
'''15/03'''&lt;br /&gt;
*Ajout de la JsonArrayRequest dans la page ListActivity.&lt;br /&gt;
*Nous nous sommes rendus compte au moment de programmer la liaison I2C de l'accéléromètre avec la RFDuino que nous avions oublié de mettre des résistances pull-up entre l'alimentation du composant et les broches SDA et SCL. Les modifications ont donc été faites puis nous avons envoyé finalement notre PCB à la fabrication.&lt;br /&gt;
&lt;br /&gt;
===Premières idées===&lt;br /&gt;
&lt;br /&gt;
Voici les premières idées de l'application mobile et du composant fixé sur le frigo.&lt;br /&gt;
[[Fichier:Optali_v1.jpg|400px|thumb|left|Optali version 1]]&lt;br /&gt;
[[Fichier:OptaliBox_v1.jpg|400px|thumb|center|OptaliBox version 1]]&lt;br /&gt;
[[Fichier:P46_schema.jpg|400px|thumb|center|Schéma électrique version 1]]&lt;br /&gt;
&lt;br /&gt;
En s'intéressant aux différentes datasheets ou données constructeur des composants que nous voulons utiliser, nous trouvons indispensable d'utiliser des résistances de 330 Ohms pour l'utilisation des LEDs, pour éviter de les griller.&lt;br /&gt;
&lt;br /&gt;
Edit : Retrait de la résistance R2.&lt;br /&gt;
&lt;br /&gt;
Concernant l'accéléromètre, nous avons choisi un modèle qui nous permet de brancher directement ce module sur une broche du RFDuino. On branchera directement les GPIOs de la RFduino sur les ports SDA et SCL de l'accéléromètre qui correspondent à l'interface I2C pour pouvoir communiquer. On utilisera aussi la broche INT1 pour pouvoir générer des interruptions directement depuis l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
On connectera le buzzer directement à une broche de la RFduino aussi. Concernant celui-ci il reste une incertitude puisqu'on ne trouve aucune information sur le courant à fournir pour l'alimentation de ce composant sur sa datasheet. Après différentes recherches sur Internet, il pourrait être nécessaire d'utiliser un montage amplificateur à transistor comme un émetteur commun pour booster le courant en sortie d'une broche GPIO. Quelques buzzers trouvés avec des données constructeur montrent que ce type de composant nécessite généralement un courant d'environ 30 mA. Nous verrons dans la pratique si cela sera vraiment nécessaire. Par sécurité, on ajoutera un transistor bipolaire dans la liste de matériel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:screen_LED.png|400px|thumb|left|Données constructeur pour LEDs]]&lt;br /&gt;
[[Fichier:screen_accel.png|400px|thumb|center|Datasheet de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
===Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
====Configuration école====&lt;br /&gt;
&lt;br /&gt;
*Pour configurer notre Raspberry Pi, nous utilisons son port série et &amp;quot;minicom&amp;quot;. Pour pouvoir télécharger des paquets, il fallait la connecter au réseau. Nous lui avons donc affecté une adresse IP fixe avec le fichier /etc/network/interfaces. Voici les modifications qui ont été apportées : &lt;br /&gt;
&lt;br /&gt;
   auto eth0&lt;br /&gt;
   iface eth0 inet static&lt;br /&gt;
   address 172.26.78.15&lt;br /&gt;
   netmask 255.255.240.0&lt;br /&gt;
   gateway 172.26.79.254&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il a également fallu ajouter la commande &amp;quot;export http_proxy=http://proxy.polytech-lille.fr:3128&amp;quot; (il faudra effectuer cette commande à chaque démarrage de la Pi) pour pouvoir utiliser le proxy de l'école. &lt;br /&gt;
Nous avons de plus modifier le fichier /etc/resolv.conf avec la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
   nameserver 193.48.57.34&lt;br /&gt;
&lt;br /&gt;
Malgré cela, nous avions des soucis pour nous connecter au réseau. Il y avait en fait un processus dhcp en tâche de fond qui nous empêchait de garder le contenu de resolv.conf. Il a donc fallu trouver ce processus pour le &amp;quot;kill&amp;quot; et pouvoir accéder correctement au réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons du coup pu installer postgresql pour pouvoir configurer une base de données sur notre Pi.&lt;br /&gt;
&lt;br /&gt;
====Configuration à domicile====&lt;br /&gt;
&lt;br /&gt;
Pour nous mettre dans une situation plus fidèle à notre projet, nous avons configuré la raspberry à domicile.&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abords installé Raspbian, puis installé les paquets nécessaire au fonctionnement du serveur.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Openssh-server''': permettre d'accès à distance à la raspberry pour pouvoir y accéder depuis l'école.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Iptables''': pour sécuriser les ports non utilisé et libérer l'accès aux ports qui nous intéressent (ssh 22,http 80,https 443).&amp;lt;br&amp;gt;&lt;br /&gt;
- '''apache2, php5, mysql-server''' : pour mettre en place notre service web.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons rediriger les ports 80 et 22 du routeur pour pouvoir accéder à la raspberry de l'extérieur.&lt;br /&gt;
&lt;br /&gt;
Pour finir, nous avons créer un fichier de config iptables permettant de sécuriser un minimum la base de donnée et de permettre d'autoriser la communication des ports 22, 80 et 443 correspondants aux ports ssh, http et https. le fichier de configuration a été déposé dans le dépôt git. Il nous a fallut le rendre exécutable via un chmod. Puis pour l'exécuter à chaque démarrage du system, dans le fichier /etc/init.d/ taper : &lt;br /&gt;
&lt;br /&gt;
    sudo update-rc.d firewall defaults (si notrefichier s'appelle firewall et s'il est dans init.d)&lt;br /&gt;
&lt;br /&gt;
===Base de donnée===&lt;br /&gt;
&lt;br /&gt;
Nos données alimentaires disponibles par toute la famille doivent être stocké sur un serveur de base de donnée externe (tel une Raspberry pi). Nous nous proposons de créer le diagramme UML représentant cette future base de donnée.&lt;br /&gt;
[[Fichier:Optali_UML.jpg|700px|thumb|center|Diagramme UML base de donnée]]&lt;br /&gt;
&lt;br /&gt;
On créera donc 3 entités. Date, Product et Recipe. &lt;br /&gt;
&lt;br /&gt;
- Product rassemble les aliments qui sont ou ont été dans la réserve alimentaire. NbProdIn permet de connaître le nombre de produits identiques (possibilité de date différentes mais pas de doublons et on garde l'information de quantité. NbProdBought donne une information sur le nombre de produits identique ayant été acheté depuis la mise en service de la base de donnée. Ainsi nous pourrons par la suite proposer une liste de course à l'utilisateur en fonction de la fréquence d'achat des produits.&lt;br /&gt;
&lt;br /&gt;
- Recipe contient les recettes que pourra rentrer l'utilisateur sur l'application. L'utilisateur pourra ainsi se voir proposer des recettes en fonction de ce qu'il a dans son frigo et de ses recettes personnelles.&lt;br /&gt;
&lt;br /&gt;
'''''Edit : On ajoutera une valeur entière dans les tables Date et Unity pour gérer le cas où il existe plusieurs produits (différents ou identiques) avec une date de péremption équivalente. On les appellera NbDate la valeur dans la table Date et NbUnity dans la table Unity. On leur ajoutera de même une clef primaire IdUnity et IdListProduct'''''&lt;br /&gt;
&lt;br /&gt;
On utilisera MySql pour la gestion de nos bases de données. &lt;br /&gt;
La syntaxe pour l'implanter dans la base de donnée à été jointe au dépôt git.&lt;br /&gt;
&lt;br /&gt;
Pour lancer my SQL, on tapera:&lt;br /&gt;
&lt;br /&gt;
   mysql -h localhost -u root -p&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Web service===&lt;br /&gt;
&lt;br /&gt;
====Page init.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet d'initier l'accès à la base de donnée sur le serveur. Elle est requise pour les pages qui suivent.&lt;br /&gt;
&lt;br /&gt;
====Page post.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet l'insertion d'un produit et d'une date via l'application mobile. Elle prend donc ces deux arguments et les insère dans les tables Unity, Product et Date.&lt;br /&gt;
&lt;br /&gt;
====Page get.php====&lt;br /&gt;
&lt;br /&gt;
Page qui récupère un nombre qui défini selon quoi la liste est trié (0=par nom, 1=par date, 2=nombre dans le frigo, 3= par nombre en tout). Elle récupère aussi un mot ou un début de mot ou rien pour faire une recherche dans la base. On utilisera la syntaxe:&amp;lt;br&amp;gt;&lt;br /&gt;
    Product.product='&amp;quot;.$Search.&amp;quot;%'&lt;br /&gt;
&lt;br /&gt;
===Application Mobile===&lt;br /&gt;
&lt;br /&gt;
====Home page====&lt;br /&gt;
&lt;br /&gt;
Page d'accueil permettant d'accéder aux pages d'ajout et de liste des produits disponibles. &amp;lt;br&amp;gt;&lt;br /&gt;
La page permet aussi d'effectuer la connexion entre la rfduino et l'application mobile. Elle montre les alertes (signaux) à l'utilisateur &lt;br /&gt;
et écrit leur signification.&lt;br /&gt;
&lt;br /&gt;
====Page d'ajout====&lt;br /&gt;
&lt;br /&gt;
Pour ajouter un produit et lire une date on utilisera un champ editText pour permettre à l'utilisateur d'écrire &amp;quot;Manuellement&amp;quot; dedans grâce au clavier du smartphone.&amp;lt;br&amp;gt;&lt;br /&gt;
De plus on utilise un bouton qui appellera la caméra pour détecter les caractères d'un produit ou d'une date. Au début nous voulions utiliser un détecteur de code barre, nous l'avons implémenté mais nous avons remarqué que la mise au point sur une surface non plane prend du temps d'autant plus qu'il faut questionner une base de donnée contenant tous les numéro de codes barres utilisés. Nous avons donc prit la décision d'utiliser uniquement la lecture de caractère et nous créerons une liste déroulante sous l'editText pour faciliter l'insertion d'un produit qui a déjà été ajouté.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'envoi, nous utilisons la librairie Volley développé par google.&lt;br /&gt;
&lt;br /&gt;
====Page Liste====&lt;br /&gt;
&lt;br /&gt;
Permet de lister les produits dans la base de donnée. Une série de boutons radio permettent de trier les produits par ordre alphabétique, par date de péremption, par nombre d’occurrence dans la réserve alimentaire, par nombre d'achat depuis la mise en place du système.&amp;lt;br&amp;gt;&lt;br /&gt;
Une colonne permet de sélectionner les aliments désirés (par checkBox) pour ensuite les supprimer via un button &amp;quot;suppr&amp;quot; ou les choisir pour trouver des recettes qui les utilisent.&amp;lt;br&amp;gt;&lt;br /&gt;
Un EditText permet d'effectuer une recherche sur la base de donnée.&lt;br /&gt;
&lt;br /&gt;
===Altium Designer===&lt;br /&gt;
&lt;br /&gt;
Pour permettre au RFDuino de communiquer avec les différents composants, nous aurons besoin de quelques composants électroniques. Afin que cela soit plus esthétique pour la modélisation finale, nous allons créer une carte PCB pour rassembler tous ces composants dessus. On utilisera le logiciel Altium Designer pour cela.&lt;br /&gt;
&lt;br /&gt;
Avant de représenter notre circuit général, nous allons commencer par créer une librairie rassemblant tous les composants que nous utiliserons par la suite, en particulier nos composants CMS (accéléromètre et résistances). Pour ce qui est des LEDs et du buzzer, qui sont traversants, nous pourrons utiliser des headers classiques.&lt;br /&gt;
&lt;br /&gt;
Il a donc fallu créer le schematic ainsi que l'empreinte de nos composants CMS. Voici un exemple avec notre accéléromètre :&lt;br /&gt;
[[Fichier:Accelerosch.PNG|500px|thumb|left|Schematic de l'accéléromètre]]&lt;br /&gt;
[[Fichier:Acceleropcb.PNG|500px|thumb|center|Empreinte PCB de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les fichiers Altium sont disponibles sur notre dépôt GIT. Après cela, nous pouvons maintenant construire notre schematic du montage entier et ensuite le fichier PCB afin de pouvoir graver notre circuit.&lt;br /&gt;
&lt;br /&gt;
Après quelques modifications sur le montage prévu initialement, c'est-à-dire en enlevant une résistance entre un GPIO et l'alimentation de l'accéléromètre ainsi qu'en rajoutant des résistances pull-up sur les broches de notre liaison i2C (SDA et SCL) et un bouton poussoir en plus pour permettre un reset du RFDuino, nous avons pu créer notre schematic global pour en faire un PCB et l'exporter au format Gerber. De ce fait, le service EEI de Polytech pourra réaliser la gravure de notre carte PCB.&lt;br /&gt;
&lt;br /&gt;
Voici quelques photos pour illustrer notre projet sur Altium : &lt;br /&gt;
&lt;br /&gt;
(photo schematic)&lt;br /&gt;
(photo pcb)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quelques difficultés ont été rencontrées durant ce travail notamment concernant les contraintes de construction sur le PCB final. En effet, les composants CMS choisis (surtout l'accéléromètre) étant parfois très petits, Altium n'accepte pas forcément le faible espacement entre les différentes pattes des composants, ce qui pose problème lors de la compilation. De plus, le plan de masse ne prenait pas en compte tous les éléments devant être rattachés à la masse. Il a fallu légèrement déplacer les headers représentant le RFDuino pour que cela soit possible. Il faudra alors peut-être légèrement plier les broches qui viendront s'intégrer sur le RFDuino pour ajouter notre PCB sur le RFDuino.&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=40373</id>
		<title>IMA4 2016/2017 P46 : Aide anti-gaspillage alimentaire</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=40373"/>
				<updated>2017-03-15T17:28:16Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : /* Semaine 8 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
En France, nous jetons en moyenne 21% des aliments que nous achetons, ce qui représente une perte de 100 à 160 euros par an par habitant. Cela est en partie dû à la date limite de consommation associée à chaque produit. En effet, à partir du moment où cette date sera dépassée le consommateur jettera les produits concernés sans réfléchir, même si ceux-ci peuvent parfois être encore mangeables. Plutôt que d'essayer de les convaincre du contraire, il serait judicieux de proposer aux adeptes du gaspillage une aide permettant de gérer tous les aliments dont ils disposent chez eux afin d'éviter la surprise de tomber sur plusieurs produits périmés lorsqu'ils ouvrent la porte de leur frigo. &lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Ce projet permet d'aider les utilisateurs d'une part à mémoriser les denrées périssables qu'ils disposent dans leur réserve alimentaire et d'autre part d'avertir l'utilisateur qu'un événement important a lieu. Ceci peut être une notification qu'un aliment va bientôt dépasser sa date de péremption, que la porte du frigidaire est restée ouverte ou encore que le nombre d'aliments dans la réserve devient critique et qu'il faudra de nouveau l'alimenter. Enfin, le système aidera l'utilisateur à trouver des idées de repas pouvant permettre de consommer les aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Notre prototype permettra d'éviter le gaspillage alimentaire ainsi que d'aider l'utilisateur dans sa gestion du stockage d'aliments.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
&lt;br /&gt;
Notre système sera composé de 3 éléments. &lt;br /&gt;
&lt;br /&gt;
Premièrement, un ou des smartphones appartenant aux utilisateurs. Ces derniers permettront de scanner grâce à son appareil photo, le code barre du produit ainsi que sa date de péremption. Il servira aussi d'interface utilisateur pour notre système. En effet, c'est par cet outil que l'utilisateur pourra lister tous les aliments que l'utilisateur a dans sa base et tout ça en les triant par date de péremption, ou encore voir les recettes possibles pour consommer des aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Deuxièmement, un serveur, de type Raspberry, qui permettra de stocker la base de donnée contenant les aliments de la réserve. Ce serveur sera connecté par wifi.&lt;br /&gt;
 &lt;br /&gt;
Troisièmement, un contrôleur (Rfduino) qui comportera une LED pour indiquer la mise sous tension du contrôleur, une LED pour prévenir l'utilisateur qu'un aliment va bientôt passer sa date de péremption et une dernière LED pour prévenir l'utilisateur que son niveau de réserve est critique ainsi qu'un buzzer et un accéléromètre pour buzzer quand la porte du frigo est restée trop longtemps ouverte. Ce dernier sera fixé au frigo par l'intermédiaire d'un dispositif adapté qui sera un système aimanté qui se pose sur le frigo.&lt;br /&gt;
&lt;br /&gt;
Nous implémenterons donc une application mobile Android qui fera le lien entre les 2 autres systèmes.&lt;br /&gt;
&lt;br /&gt;
Pour la partie électronique que nous aurons à réaliser, nous utiliserons une Breadboard pour faire des premiers tests puis nous créerons une carte PCB pour notre montage final.&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
On utilisera une Raspberry Pi en guise de serveur pour pouvoir s'occuper du stockage de toutes les données dans notre projet puisque notre contrôleur sera incapable de les contenir, ce n'est d'ailleurs pas son but ici.&lt;br /&gt;
&lt;br /&gt;
Notre smartphone fera donc le lien entre notre base de données et notre système embarqué par l'intermédiaire de l'application mobile.&lt;br /&gt;
&lt;br /&gt;
Nous prendrons ici un RFduino puisque celui-ci nous permet d'ajouter des modules comme bon nous semble afin d'adapter le système aux besoins de notre application. Il est également parfaitement compatible avec les applications Android. De plus, nous avons un Bluetooth directement intégré au RFduino pour s'assurer que les liaisons RFduino-application mobile se fassent correctement. &lt;br /&gt;
On notera également que ce contrôleur consomme peu de courant et ne demande qu'une faible tension d'alimentation, critères importants pour ce genre de projet. C'est la raison principale de son utilisation pour être utilisé comme interface physique sur le frigo, en ajoutant également sa taille réduite comparée à la Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
&lt;br /&gt;
Nous avons donc besoin du matériel suivant :&lt;br /&gt;
&lt;br /&gt;
*Raspberry Pi.&lt;br /&gt;
*Clef wifi&lt;br /&gt;
*RFduino (RFD22102 DIP Board, RFD22121 USB Shield, RFD22126 Dual AAA battery shield).&lt;br /&gt;
*2 piles AAA.&lt;br /&gt;
*3 leds tranversantes.&lt;br /&gt;
*3 Résistances 330 Ohm.&lt;br /&gt;
*1 Résistance 10 kOhm.&lt;br /&gt;
*Un buzzer.&lt;br /&gt;
*Accéléromètre.&lt;br /&gt;
*Aimants&lt;br /&gt;
*Un boîtier permettant d'intégrer la RFduino + fixation sur le frigo (modélisation à voir).&lt;br /&gt;
&lt;br /&gt;
Pour le buzzer, l'accéléromètre et les résistances, nous choisirons des composants CMS pour nous permettre d'avoir une carte plus petite.&lt;br /&gt;
&lt;br /&gt;
===Calendrier prévisionnel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Liste des tâches à effectuer====&lt;br /&gt;
&lt;br /&gt;
* Configurer la Raspberry :&lt;br /&gt;
** Installer et configurer le serveur.&lt;br /&gt;
** Créer le diagramme UML de notre future base de données.&lt;br /&gt;
** Créer la base sur le serveur.&lt;br /&gt;
** Configurer la connexion WiFi.&lt;br /&gt;
&lt;br /&gt;
* Monter et programmer la RFduino :&lt;br /&gt;
** Connecter les différents modules au RFduino (accéléromètre, LEDs, buzzer, Batterie, module Bluetooth).&lt;br /&gt;
** Récupérer les consignes du smartphone grâce au Bluetooth.&lt;br /&gt;
** Programmer le comportement du RFduino en fonction des consignes.&lt;br /&gt;
** Construire le boitier final.&lt;br /&gt;
&lt;br /&gt;
* Implémenter l'application mobile Android :&lt;br /&gt;
** Une première activité permettant de se connecter au RFduino et à la Raspberry.&lt;br /&gt;
** Scanner une date et un code barre.&lt;br /&gt;
** Ajout/suppression d'un aliment dans la base de donnée.&lt;br /&gt;
** Envoi d'une consigne au RFduino.&lt;br /&gt;
** Rendre l'interface utilisateur ergonomique (lister aliments, envoyer vers page de recettes avec l'utilisation des aliments bientôt périmés...).&lt;br /&gt;
&lt;br /&gt;
====Calendrier====&lt;br /&gt;
&lt;br /&gt;
Répartition du temps consacré au projet (120h *2) :&lt;br /&gt;
&lt;br /&gt;
*Partie Raspberry : 60h&lt;br /&gt;
*Partie RFduino : 60h&lt;br /&gt;
*Partie développement mobile : 120h&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
&lt;br /&gt;
===Résumé===&lt;br /&gt;
&lt;br /&gt;
====Semaine 1====&lt;br /&gt;
&lt;br /&gt;
'''23/01''' :  &lt;br /&gt;
* Installation du logiciel Android Studio pour être prêt à commencer l'application mobile.&lt;br /&gt;
* Création du Repository Git sur GitHub : https://github.com/FrancoisLefevre12/Optali.git&lt;br /&gt;
* Réalisation de différents schémas fonctionnels pour se donner une idée du travail à effectuer, aussi bien du software que du hardware.&lt;br /&gt;
* Quelques précisions supplémentaires apportées sur le cahier des charges.&lt;br /&gt;
* Ajout de liens de référence pour la liste de matériel à acheter.&lt;br /&gt;
&lt;br /&gt;
'''25/01''' :  &lt;br /&gt;
* Précision des composants requis (accéléromètre, buzzer, LEDs, résistances).&lt;br /&gt;
* Écriture du montage à la main.&lt;br /&gt;
* Étude du fonctionnement de l'accéléromètre, du buzzer.&lt;br /&gt;
* Écriture de la structure de l'application à la main.&lt;br /&gt;
&lt;br /&gt;
'''26/01''' :&lt;br /&gt;
*Réalisation graphique de la première page de l'application.&lt;br /&gt;
*Conception du schéma électrique pour tous les composants connectés au RFduino.&lt;br /&gt;
&lt;br /&gt;
====Semaine 2====&lt;br /&gt;
&lt;br /&gt;
'''30/01''' :&lt;br /&gt;
*Réalisation du diagramme UML de la base de données qui sera stockée sur la Raspberry Pi&lt;br /&gt;
*Installation de l'outil de développement mobile sur le second PC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''01/02''' :&lt;br /&gt;
*Nous nous sommes d'abord rendus compte que la résistance entre un des GPIO et l'accéléromètre était inutile, nos premiers calculs étaient erronés. Nous ne la garderons donc pas sur notre schéma électrique final.&lt;br /&gt;
*Avancement sur la partie application mobile : réalisation de la page &amp;quot;Ajout&amp;quot; sur laquelle nous tomberons après avoir cliquer sur &amp;quot;ajout&amp;quot; sur la page principale de l'application. Nous avons étendu l'activité principale jusqu'à cette nouvelle activité &amp;quot;Ajout&amp;quot;.&lt;br /&gt;
*Nous avons récupéré notre Raspberry Pi pour commencer à installer notre base de données dessus. Nous avons actuellement quelques problèmes pour nous connecter sur la Raspberry. Nous travaillons sur ce point.&lt;br /&gt;
&lt;br /&gt;
'''02/02''' :&lt;br /&gt;
* Application mobile : Mise en place des LEDs sur la home page et de la zone de notification avec les messages associés.&lt;br /&gt;
&lt;br /&gt;
====Semaine 3====&lt;br /&gt;
&lt;br /&gt;
'''06/02''' :&lt;br /&gt;
*Nous arrivons à accéder à la Raspberry via le port série de celle-ci. Nous avons également configuré sa connexion Ethernet afin de pouvoir télécharger des paquets dessus et installer notre base de données. &lt;br /&gt;
*Nous rencontrions des problèmes sur le second PC de travail pour récupérer le projet Optali sur Android Studio via notre dépôt GIT. Nous avons pu rectifier ce souci.&lt;br /&gt;
&lt;br /&gt;
'''08/02''' :&lt;br /&gt;
*Tentative d'établissement d'un point d'accès WiFi sur notre Raspberry. Nous n'avons pas réussi pour le moment.&lt;br /&gt;
*Restructuration du Repository git.&lt;br /&gt;
*Essai d'importation de la librairie Zxing qui permettra de décoder les code-barres.&lt;br /&gt;
&lt;br /&gt;
====Semaine 4====&lt;br /&gt;
&lt;br /&gt;
'''13/02'''&lt;br /&gt;
*Configuration du wifi de la Raspberry. &lt;br /&gt;
*Étude d'une mise en place d'un service web via php.&lt;br /&gt;
&lt;br /&gt;
'''15/02'''&lt;br /&gt;
*Mise en place d'un lecteur de caractère sur l'application. On utilisera tesseract.&lt;br /&gt;
*Début de la création du PCB via Altium designer. Création d'une librairie pour l'accéléromètre qui est un composant CMS assez spécial. On pourra cependant utiliser des headers classiques pour le buzzer et les LEDs puisque ce sont des composants traversants.&lt;br /&gt;
*Création des premiers fichiers php de connection à la base de donnée et d'insertion d'aliments. Tous ces fichiers seront déposés de la même manière sur le dépôt git.&lt;br /&gt;
&lt;br /&gt;
'''16/02'''&lt;br /&gt;
*Adaptation avec prise en compte des cas du code php d'insertion de produits par requête sur la base de donnée.&lt;br /&gt;
*Ajout du code d'implantation de la base de donnée.&lt;br /&gt;
*Altium: Accéléromètre terminé, mise en place des résistances.&lt;br /&gt;
&lt;br /&gt;
====Semaine 5 (interruption pédagogique)====&lt;br /&gt;
&lt;br /&gt;
'''22/02 (3 heures)'''&lt;br /&gt;
*Installation de l'OS de la raspberry.&lt;br /&gt;
*Installation d'Openssh-server, apache2, php5, iptables, mysql-server, php5-mysql.&lt;br /&gt;
*Redirection des ports du routeur vers la raspberry.&lt;br /&gt;
*Configuration de iptables de la raspberry.&lt;br /&gt;
&lt;br /&gt;
'''23/02 (2 heures)'''&lt;br /&gt;
*Implantation de la base de donnée sur la raspberry pi.&lt;br /&gt;
&lt;br /&gt;
====Semaine 6====&lt;br /&gt;
'''27/02'''&lt;br /&gt;
*Vérification de la syntaxe de l'insertion de valeurs dans la base de donnée.&lt;br /&gt;
*Création des premières requêtes sur la base de donnée.&lt;br /&gt;
*Finalisation du PCB de l'Optali Board.&lt;br /&gt;
&lt;br /&gt;
'''01/03'''&lt;br /&gt;
*Étude et ajout de la librairie volley pour communiquer avec le serveur.&lt;br /&gt;
*Implantation de la fonction d'envoi de données jusqu'au serveur.&lt;br /&gt;
*Après avoir vu avec un professeur, nous avons remarqué que le routage n'était pas adéquat et la disposition des composants n'était pas optimal. Du travail reste donc encore à effectuer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Semaine 7====&lt;br /&gt;
'''06/03'''&lt;br /&gt;
*Correction du fichier post.php&lt;br /&gt;
*Finition du protocole d'ajout d'aliment sur la base de donnée. (Code php et page ajout terminée).&lt;br /&gt;
*PCB terminé.&lt;br /&gt;
*Installation d'arduino IDE, doc arduino collecté.&lt;br /&gt;
&lt;br /&gt;
'''08/03'''&lt;br /&gt;
*Implémentation de la page ListeIngredient.xml et de l'activité listActivity.java.&lt;br /&gt;
*Documentation sur la procédure de communication bluetooth entre la Rfduino et l'application mobile.&lt;br /&gt;
*Obtention de librairie en lien avec cela.&lt;br /&gt;
*Prise en main de programmation rfduino.&lt;br /&gt;
&lt;br /&gt;
'''09/03'''&lt;br /&gt;
*Nous nous sommes rendus compte qu'il était nécessaire de rajouter un bouton poussoir sur notre montage afin de permettre la réinitialisation de notre RFDuino si nécessaire. Nous devons également faire en sorte de pouvoir poser notre carte PCB directement sur notre RFDuino en utilisant des broches. Nous devons donc rajouter ces éléments-ci.&lt;br /&gt;
*Ecriture de la page get.php&lt;br /&gt;
*Premiers tests sur la ListView de l'activité ListActivity.&lt;br /&gt;
&lt;br /&gt;
====Semaine 8====&lt;br /&gt;
'''13/03'''&lt;br /&gt;
*Recherche de pistes concernant la programmation RFDuino. Nous pouvons la détecter en bluetooth via un smartphone Android.&lt;br /&gt;
*Finition du Tablelayout et du code java associé sur la page ListActivity.&lt;br /&gt;
&lt;br /&gt;
'''15/03'''&lt;br /&gt;
*Ajout de la JsonArrayRequest dans la page ListActivity.&lt;br /&gt;
*Nous nous sommes rendus compte au moment de programmer la liaison I2C de l'accéléromètre avec la RFDuino que nous avions oublié de mettre des résistances pull-up entre l'alimentation du composant et les broches SDA et SCL. Les modifications ont donc été faites puis nous avons envoyé finalement notre PCB à la fabrication.&lt;br /&gt;
&lt;br /&gt;
===Premières idées===&lt;br /&gt;
&lt;br /&gt;
Voici les premières idées de l'application mobile et du composant fixé sur le frigo.&lt;br /&gt;
[[Fichier:Optali_v1.jpg|400px|thumb|left|Optali version 1]]&lt;br /&gt;
[[Fichier:OptaliBox_v1.jpg|400px|thumb|center|OptaliBox version 1]]&lt;br /&gt;
[[Fichier:P46_schema.jpg|400px|thumb|center|Schéma électrique version 1]]&lt;br /&gt;
&lt;br /&gt;
En s'intéressant aux différentes datasheets ou données constructeur des composants que nous voulons utiliser, nous trouvons indispensable d'utiliser des résistances de 330 Ohms pour l'utilisation des LEDs, pour éviter de les griller.&lt;br /&gt;
&lt;br /&gt;
Edit : Retrait de la résistance R2.&lt;br /&gt;
&lt;br /&gt;
Concernant l'accéléromètre, nous avons choisi un modèle qui nous permet de brancher directement ce module sur une broche du RFDuino. On branchera directement les GPIOs de la RFduino sur les ports SDA et SCL de l'accéléromètre qui correspondent à l'interface I2C pour pouvoir communiquer. On utilisera aussi la broche INT1 pour pouvoir générer des interruptions directement depuis l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
On connectera le buzzer directement à une broche de la RFduino aussi. Concernant celui-ci il reste une incertitude puisqu'on ne trouve aucune information sur le courant à fournir pour l'alimentation de ce composant sur sa datasheet. Après différentes recherches sur Internet, il pourrait être nécessaire d'utiliser un montage amplificateur à transistor comme un émetteur commun pour booster le courant en sortie d'une broche GPIO. Quelques buzzers trouvés avec des données constructeur montrent que ce type de composant nécessite généralement un courant d'environ 30 mA. Nous verrons dans la pratique si cela sera vraiment nécessaire. Par sécurité, on ajoutera un transistor bipolaire dans la liste de matériel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:screen_LED.png|400px|thumb|left|Données constructeur pour LEDs]]&lt;br /&gt;
[[Fichier:screen_accel.png|400px|thumb|center|Datasheet de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
===Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
====Configuration école====&lt;br /&gt;
&lt;br /&gt;
*Pour configurer notre Raspberry Pi, nous utilisons son port série et &amp;quot;minicom&amp;quot;. Pour pouvoir télécharger des paquets, il fallait la connecter au réseau. Nous lui avons donc affecté une adresse IP fixe avec le fichier /etc/network/interfaces. Voici les modifications qui ont été apportées : &lt;br /&gt;
&lt;br /&gt;
   auto eth0&lt;br /&gt;
   iface eth0 inet static&lt;br /&gt;
   address 172.26.78.15&lt;br /&gt;
   netmask 255.255.240.0&lt;br /&gt;
   gateway 172.26.79.254&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il a également fallu ajouter la commande &amp;quot;export http_proxy=http://proxy.polytech-lille.fr:3128&amp;quot; (il faudra effectuer cette commande à chaque démarrage de la Pi) pour pouvoir utiliser le proxy de l'école. &lt;br /&gt;
Nous avons de plus modifier le fichier /etc/resolv.conf avec la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
   nameserver 193.48.57.34&lt;br /&gt;
&lt;br /&gt;
Malgré cela, nous avions des soucis pour nous connecter au réseau. Il y avait en fait un processus dhcp en tâche de fond qui nous empêchait de garder le contenu de resolv.conf. Il a donc fallu trouver ce processus pour le &amp;quot;kill&amp;quot; et pouvoir accéder correctement au réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons du coup pu installer postgresql pour pouvoir configurer une base de données sur notre Pi.&lt;br /&gt;
&lt;br /&gt;
====Configuration à domicile====&lt;br /&gt;
&lt;br /&gt;
Pour nous mettre dans une situation plus fidèle à notre projet, nous avons configuré la raspberry à domicile.&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abords installé Raspbian, puis installé les paquets nécessaire au fonctionnement du serveur.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Openssh-server''': permettre d'accès à distance à la raspberry pour pouvoir y accéder depuis l'école.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Iptables''': pour sécuriser les ports non utilisé et libérer l'accès aux ports qui nous intéressent (ssh 22,http 80,https 443).&amp;lt;br&amp;gt;&lt;br /&gt;
- '''apache2, php5, mysql-server''' : pour mettre en place notre service web.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons rediriger les ports 80 et 22 du routeur pour pouvoir accéder à la raspberry de l'extérieur.&lt;br /&gt;
&lt;br /&gt;
Pour finir, nous avons créer un fichier de config iptables permettant de sécuriser un minimum la base de donnée et de permettre d'autoriser la communication des ports 22, 80 et 443 correspondants aux ports ssh, http et https. le fichier de configuration a été déposé dans le dépôt git. Il nous a fallut le rendre exécutable via un chmod. Puis pour l'exécuter à chaque démarrage du system, dans le fichier /etc/init.d/ taper : &lt;br /&gt;
&lt;br /&gt;
    sudo update-rc.d firewall defaults (si notrefichier s'appelle firewall et s'il est dans init.d)&lt;br /&gt;
&lt;br /&gt;
===Base de donnée===&lt;br /&gt;
&lt;br /&gt;
Nos données alimentaires disponibles par toute la famille doivent être stocké sur un serveur de base de donnée externe (tel une Raspberry pi). Nous nous proposons de créer le diagramme UML représentant cette future base de donnée.&lt;br /&gt;
[[Fichier:Optali_UML.jpg|700px|thumb|center|Diagramme UML base de donnée]]&lt;br /&gt;
&lt;br /&gt;
On créera donc 3 entités. Date, Product et Recipe. &lt;br /&gt;
&lt;br /&gt;
- Product rassemble les aliments qui sont ou ont été dans la réserve alimentaire. NbProdIn permet de connaître le nombre de produits identiques (possibilité de date différentes mais pas de doublons et on garde l'information de quantité. NbProdBought donne une information sur le nombre de produits identique ayant été acheté depuis la mise en service de la base de donnée. Ainsi nous pourrons par la suite proposer une liste de course à l'utilisateur en fonction de la fréquence d'achat des produits.&lt;br /&gt;
&lt;br /&gt;
- Recipe contient les recettes que pourra rentrer l'utilisateur sur l'application. L'utilisateur pourra ainsi se voir proposer des recettes en fonction de ce qu'il a dans son frigo et de ses recettes personnelles.&lt;br /&gt;
&lt;br /&gt;
'''''Edit : On ajoutera une valeur entière dans les tables Date et Unity pour gérer le cas où il existe plusieurs produits (différents ou identiques) avec une date de péremption équivalente. On les appellera NbDate la valeur dans la table Date et NbUnity dans la table Unity. On leur ajoutera de même une clef primaire IdUnity et IdListProduct'''''&lt;br /&gt;
&lt;br /&gt;
On utilisera MySql pour la gestion de nos bases de données. &lt;br /&gt;
La syntaxe pour l'implanter dans la base de donnée à été jointe au dépôt git.&lt;br /&gt;
&lt;br /&gt;
Pour lancer my SQL, on tapera:&lt;br /&gt;
&lt;br /&gt;
   mysql -h localhost -u root -p&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Web service===&lt;br /&gt;
&lt;br /&gt;
====Page init.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet d'initier l'accès à la base de donnée sur le serveur. Elle est requise pour les pages qui suivent.&lt;br /&gt;
&lt;br /&gt;
====Page post.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet l'insertion d'un produit et d'une date via l'application mobile. Elle prend donc ces deux arguments et les insère dans les tables Unity, Product et Date.&lt;br /&gt;
&lt;br /&gt;
====Page get.php====&lt;br /&gt;
&lt;br /&gt;
Page qui récupère un nombre qui défini selon quoi la liste est trié (0=par nom, 1=par date, 2=nombre dans le frigo, 3= par nombre en tout). Elle récupère aussi un mot ou un début de mot ou rien pour faire une recherche dans la base. On utilisera la syntaxe:&amp;lt;br&amp;gt;&lt;br /&gt;
    Product.product='&amp;quot;.$Search.&amp;quot;%'&lt;br /&gt;
&lt;br /&gt;
===Application Mobile===&lt;br /&gt;
&lt;br /&gt;
====Home page====&lt;br /&gt;
&lt;br /&gt;
Page d'accueil permettant d'accéder aux pages d'ajout et de liste des produits disponibles. &amp;lt;br&amp;gt;&lt;br /&gt;
La page permet aussi d'effectuer la connexion entre la rfduino et l'application mobile. Elle montre les alertes (signaux) à l'utilisateur &lt;br /&gt;
et écrit leur signification.&lt;br /&gt;
&lt;br /&gt;
====Page d'ajout====&lt;br /&gt;
&lt;br /&gt;
Pour ajouter un produit et lire une date on utilisera un champ editText pour permettre à l'utilisateur d'écrire &amp;quot;Manuellement&amp;quot; dedans grâce au clavier du smartphone.&amp;lt;br&amp;gt;&lt;br /&gt;
De plus on utilise un bouton qui appellera la caméra pour détecter les caractères d'un produit ou d'une date. Au début nous voulions utiliser un détecteur de code barre, nous l'avons implémenté mais nous avons remarqué que la mise au point sur une surface non plane prend du temps d'autant plus qu'il faut questionner une base de donnée contenant tous les numéro de codes barres utilisés. Nous avons donc prit la décision d'utiliser uniquement la lecture de caractère et nous créerons une liste déroulante sous l'editText pour faciliter l'insertion d'un produit qui a déjà été ajouté.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'envoi, nous utilisons la librairie Volley développé par google.&lt;br /&gt;
&lt;br /&gt;
====Page Liste====&lt;br /&gt;
&lt;br /&gt;
Permet de lister les produits dans la base de donnée. Une série de boutons radio permettent de trier les produits par ordre alphabétique, par date de péremption, par nombre d’occurrence dans la réserve alimentaire, par nombre d'achat depuis la mise en place du système.&amp;lt;br&amp;gt;&lt;br /&gt;
Une colonne permet de sélectionner les aliments désirés (par checkBox) pour ensuite les supprimer via un button &amp;quot;suppr&amp;quot; ou les choisir pour trouver des recettes qui les utilisent.&amp;lt;br&amp;gt;&lt;br /&gt;
Un EditText permet d'effectuer une recherche sur la base de donnée.&lt;br /&gt;
&lt;br /&gt;
===Altium Designer===&lt;br /&gt;
&lt;br /&gt;
Pour permettre au RFDuino de communiquer avec les différents composants, nous aurons besoin de quelques composants électroniques. Afin que cela soit plus esthétique pour la modélisation finale, nous allons créer une carte PCB pour rassembler tous ces composants dessus. On utilisera le logiciel Altium Designer pour cela.&lt;br /&gt;
&lt;br /&gt;
Avant de représenter notre circuit général, nous allons commencer par créer une librairie rassemblant tous les composants que nous utiliserons par la suite, en particulier nos composants CMS (accéléromètre et résistances). Pour ce qui est des LEDs et du buzzer, qui sont traversants, nous pourrons utiliser des headers classiques.&lt;br /&gt;
&lt;br /&gt;
Il a donc fallu créer le schematic ainsi que l'empreinte de nos composants CMS. Voici un exemple avec notre accéléromètre :&lt;br /&gt;
[[Fichier:Accelerosch.PNG|500px|thumb|left|Schematic de l'accéléromètre]]&lt;br /&gt;
[[Fichier:Acceleropcb.PNG|500px|thumb|center|Empreinte PCB de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les fichiers Altium sont disponibles sur notre dépôt GIT. Après cela, nous pouvons maintenant construire notre schematic du montage entier et ensuite le fichier PCB afin de pouvoir graver notre circuit.&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=40235</id>
		<title>IMA4 2016/2017 P46 : Aide anti-gaspillage alimentaire</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=40235"/>
				<updated>2017-03-13T17:17:37Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : /* Semaine 7 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
En France, nous jetons en moyenne 21% des aliments que nous achetons, ce qui représente une perte de 100 à 160 euros par an par habitant. Cela est en partie dû à la date limite de consommation associée à chaque produit. En effet, à partir du moment où cette date sera dépassée le consommateur jettera les produits concernés sans réfléchir, même si ceux-ci peuvent parfois être encore mangeables. Plutôt que d'essayer de les convaincre du contraire, il serait judicieux de proposer aux adeptes du gaspillage une aide permettant de gérer tous les aliments dont ils disposent chez eux afin d'éviter la surprise de tomber sur plusieurs produits périmés lorsqu'ils ouvrent la porte de leur frigo. &lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Ce projet permet d'aider les utilisateurs d'une part à mémoriser les denrées périssables qu'ils disposent dans leur réserve alimentaire et d'autre part d'avertir l'utilisateur qu'un événement important a lieu. Ceci peut être une notification qu'un aliment va bientôt dépasser sa date de péremption, que la porte du frigidaire est restée ouverte ou encore que le nombre d'aliments dans la réserve devient critique et qu'il faudra de nouveau l'alimenter. Enfin, le système aidera l'utilisateur à trouver des idées de repas pouvant permettre de consommer les aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Notre prototype permettra d'éviter le gaspillage alimentaire ainsi que d'aider l'utilisateur dans sa gestion du stockage d'aliments.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
&lt;br /&gt;
Notre système sera composé de 3 éléments. &lt;br /&gt;
&lt;br /&gt;
Premièrement, un ou des smartphones appartenant aux utilisateurs. Ces derniers permettront de scanner grâce à son appareil photo, le code barre du produit ainsi que sa date de péremption. Il servira aussi d'interface utilisateur pour notre système. En effet, c'est par cet outil que l'utilisateur pourra lister tous les aliments que l'utilisateur a dans sa base et tout ça en les triant par date de péremption, ou encore voir les recettes possibles pour consommer des aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Deuxièmement, un serveur, de type Raspberry, qui permettra de stocker la base de donnée contenant les aliments de la réserve. Ce serveur sera connecté par wifi.&lt;br /&gt;
 &lt;br /&gt;
Troisièmement, un contrôleur (Rfduino) qui comportera une LED pour indiquer la mise sous tension du contrôleur, une LED pour prévenir l'utilisateur qu'un aliment va bientôt passer sa date de péremption et une dernière LED pour prévenir l'utilisateur que son niveau de réserve est critique ainsi qu'un buzzer et un accéléromètre pour buzzer quand la porte du frigo est restée trop longtemps ouverte. Ce dernier sera fixé au frigo par l'intermédiaire d'un dispositif adapté qui sera un système aimanté qui se pose sur le frigo.&lt;br /&gt;
&lt;br /&gt;
Nous implémenterons donc une application mobile Android qui fera le lien entre les 2 autres systèmes.&lt;br /&gt;
&lt;br /&gt;
Pour la partie électronique que nous aurons à réaliser, nous utiliserons une Breadboard pour faire des premiers tests puis nous créerons une carte PCB pour notre montage final.&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
On utilisera une Raspberry Pi en guise de serveur pour pouvoir s'occuper du stockage de toutes les données dans notre projet puisque notre contrôleur sera incapable de les contenir, ce n'est d'ailleurs pas son but ici.&lt;br /&gt;
&lt;br /&gt;
Notre smartphone fera donc le lien entre notre base de données et notre système embarqué par l'intermédiaire de l'application mobile.&lt;br /&gt;
&lt;br /&gt;
Nous prendrons ici un RFduino puisque celui-ci nous permet d'ajouter des modules comme bon nous semble afin d'adapter le système aux besoins de notre application. Il est également parfaitement compatible avec les applications Android. De plus, nous avons un Bluetooth directement intégré au RFduino pour s'assurer que les liaisons RFduino-application mobile se fassent correctement. &lt;br /&gt;
On notera également que ce contrôleur consomme peu de courant et ne demande qu'une faible tension d'alimentation, critères importants pour ce genre de projet. C'est la raison principale de son utilisation pour être utilisé comme interface physique sur le frigo, en ajoutant également sa taille réduite comparée à la Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
&lt;br /&gt;
Nous avons donc besoin du matériel suivant :&lt;br /&gt;
&lt;br /&gt;
*Raspberry Pi.&lt;br /&gt;
*Clef wifi&lt;br /&gt;
*RFduino (RFD22102 DIP Board, RFD22121 USB Shield, RFD22126 Dual AAA battery shield).&lt;br /&gt;
*2 piles AAA.&lt;br /&gt;
*3 leds tranversantes.&lt;br /&gt;
*3 Résistances 330 Ohm.&lt;br /&gt;
*1 Résistance 10 kOhm.&lt;br /&gt;
*Un buzzer.&lt;br /&gt;
*Accéléromètre.&lt;br /&gt;
*Aimants&lt;br /&gt;
*Un boîtier permettant d'intégrer la RFduino + fixation sur le frigo (modélisation à voir).&lt;br /&gt;
&lt;br /&gt;
Pour le buzzer, l'accéléromètre et les résistances, nous choisirons des composants CMS pour nous permettre d'avoir une carte plus petite.&lt;br /&gt;
&lt;br /&gt;
===Calendrier prévisionnel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Liste des tâches à effectuer====&lt;br /&gt;
&lt;br /&gt;
* Configurer la Raspberry :&lt;br /&gt;
** Installer et configurer le serveur.&lt;br /&gt;
** Créer le diagramme UML de notre future base de données.&lt;br /&gt;
** Créer la base sur le serveur.&lt;br /&gt;
** Configurer la connexion WiFi.&lt;br /&gt;
&lt;br /&gt;
* Monter et programmer la RFduino :&lt;br /&gt;
** Connecter les différents modules au RFduino (accéléromètre, LEDs, buzzer, Batterie, module Bluetooth).&lt;br /&gt;
** Récupérer les consignes du smartphone grâce au Bluetooth.&lt;br /&gt;
** Programmer le comportement du RFduino en fonction des consignes.&lt;br /&gt;
** Construire le boitier final.&lt;br /&gt;
&lt;br /&gt;
* Implémenter l'application mobile Android :&lt;br /&gt;
** Une première activité permettant de se connecter au RFduino et à la Raspberry.&lt;br /&gt;
** Scanner une date et un code barre.&lt;br /&gt;
** Ajout/suppression d'un aliment dans la base de donnée.&lt;br /&gt;
** Envoi d'une consigne au RFduino.&lt;br /&gt;
** Rendre l'interface utilisateur ergonomique (lister aliments, envoyer vers page de recettes avec l'utilisation des aliments bientôt périmés...).&lt;br /&gt;
&lt;br /&gt;
====Calendrier====&lt;br /&gt;
&lt;br /&gt;
Répartition du temps consacré au projet (120h *2) :&lt;br /&gt;
&lt;br /&gt;
*Partie Raspberry : 60h&lt;br /&gt;
*Partie RFduino : 60h&lt;br /&gt;
*Partie développement mobile : 120h&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
&lt;br /&gt;
===Résumé===&lt;br /&gt;
&lt;br /&gt;
====Semaine 1====&lt;br /&gt;
&lt;br /&gt;
'''23/01''' :  &lt;br /&gt;
* Installation du logiciel Android Studio pour être prêt à commencer l'application mobile.&lt;br /&gt;
* Création du Repository Git sur GitHub : https://github.com/FrancoisLefevre12/Optali.git&lt;br /&gt;
* Réalisation de différents schémas fonctionnels pour se donner une idée du travail à effectuer, aussi bien du software que du hardware.&lt;br /&gt;
* Quelques précisions supplémentaires apportées sur le cahier des charges.&lt;br /&gt;
* Ajout de liens de référence pour la liste de matériel à acheter.&lt;br /&gt;
&lt;br /&gt;
'''25/01''' :  &lt;br /&gt;
* Précision des composants requis (accéléromètre, buzzer, LEDs, résistances).&lt;br /&gt;
* Écriture du montage à la main.&lt;br /&gt;
* Étude du fonctionnement de l'accéléromètre, du buzzer.&lt;br /&gt;
* Écriture de la structure de l'application à la main.&lt;br /&gt;
&lt;br /&gt;
'''26/01''' :&lt;br /&gt;
*Réalisation graphique de la première page de l'application.&lt;br /&gt;
*Conception du schéma électrique pour tous les composants connectés au RFduino.&lt;br /&gt;
&lt;br /&gt;
====Semaine 2====&lt;br /&gt;
&lt;br /&gt;
'''30/01''' :&lt;br /&gt;
*Réalisation du diagramme UML de la base de données qui sera stockée sur la Raspberry Pi&lt;br /&gt;
*Installation de l'outil de développement mobile sur le second PC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''01/02''' :&lt;br /&gt;
*Nous nous sommes d'abord rendus compte que la résistance entre un des GPIO et l'accéléromètre était inutile, nos premiers calculs étaient erronés. Nous ne la garderons donc pas sur notre schéma électrique final.&lt;br /&gt;
*Avancement sur la partie application mobile : réalisation de la page &amp;quot;Ajout&amp;quot; sur laquelle nous tomberons après avoir cliquer sur &amp;quot;ajout&amp;quot; sur la page principale de l'application. Nous avons étendu l'activité principale jusqu'à cette nouvelle activité &amp;quot;Ajout&amp;quot;.&lt;br /&gt;
*Nous avons récupéré notre Raspberry Pi pour commencer à installer notre base de données dessus. Nous avons actuellement quelques problèmes pour nous connecter sur la Raspberry. Nous travaillons sur ce point.&lt;br /&gt;
&lt;br /&gt;
'''02/02''' :&lt;br /&gt;
* Application mobile : Mise en place des LEDs sur la home page et de la zone de notification avec les messages associés.&lt;br /&gt;
&lt;br /&gt;
====Semaine 3====&lt;br /&gt;
&lt;br /&gt;
'''06/02''' :&lt;br /&gt;
*Nous arrivons à accéder à la Raspberry via le port série de celle-ci. Nous avons également configuré sa connexion Ethernet afin de pouvoir télécharger des paquets dessus et installer notre base de données. &lt;br /&gt;
*Nous rencontrions des problèmes sur le second PC de travail pour récupérer le projet Optali sur Android Studio via notre dépôt GIT. Nous avons pu rectifier ce souci.&lt;br /&gt;
&lt;br /&gt;
'''08/02''' :&lt;br /&gt;
*Tentative d'établissement d'un point d'accès WiFi sur notre Raspberry. Nous n'avons pas réussi pour le moment.&lt;br /&gt;
*Restructuration du Repository git.&lt;br /&gt;
*Essai d'importation de la librairie Zxing qui permettra de décoder les code-barres.&lt;br /&gt;
&lt;br /&gt;
====Semaine 4====&lt;br /&gt;
&lt;br /&gt;
'''13/02'''&lt;br /&gt;
*Configuration du wifi de la Raspberry. &lt;br /&gt;
*Étude d'une mise en place d'un service web via php.&lt;br /&gt;
&lt;br /&gt;
'''15/02'''&lt;br /&gt;
*Mise en place d'un lecteur de caractère sur l'application. On utilisera tesseract.&lt;br /&gt;
*Début de la création du PCB via Altium designer. Création d'une librairie pour l'accéléromètre qui est un composant CMS assez spécial. On pourra cependant utiliser des headers classiques pour le buzzer et les LEDs puisque ce sont des composants traversants.&lt;br /&gt;
*Création des premiers fichiers php de connection à la base de donnée et d'insertion d'aliments. Tous ces fichiers seront déposés de la même manière sur le dépôt git.&lt;br /&gt;
&lt;br /&gt;
'''16/02'''&lt;br /&gt;
*Adaptation avec prise en compte des cas du code php d'insertion de produits par requête sur la base de donnée.&lt;br /&gt;
*Ajout du code d'implantation de la base de donnée.&lt;br /&gt;
*Altium: Accéléromètre terminé, mise en place des résistances.&lt;br /&gt;
&lt;br /&gt;
====Semaine 5 (interruption pédagogique)====&lt;br /&gt;
&lt;br /&gt;
'''22/02 (3 heures)'''&lt;br /&gt;
*Installation de l'OS de la raspberry.&lt;br /&gt;
*Installation d'Openssh-server, apache2, php5, iptables, mysql-server, php5-mysql.&lt;br /&gt;
*Redirection des ports du routeur vers la raspberry.&lt;br /&gt;
*Configuration de iptables de la raspberry.&lt;br /&gt;
&lt;br /&gt;
'''23/02 (2 heures)'''&lt;br /&gt;
*Implantation de la base de donnée sur la raspberry pi.&lt;br /&gt;
&lt;br /&gt;
====Semaine 6====&lt;br /&gt;
'''27/02'''&lt;br /&gt;
*Vérification de la syntaxe de l'insertion de valeurs dans la base de donnée.&lt;br /&gt;
*Création des premières requêtes sur la base de donnée.&lt;br /&gt;
*Finalisation du PCB de l'Optali Board.&lt;br /&gt;
&lt;br /&gt;
'''01/03'''&lt;br /&gt;
*Étude et ajout de la librairie volley pour communiquer avec le serveur.&lt;br /&gt;
*Implantation de la fonction d'envoi de données jusqu'au serveur.&lt;br /&gt;
*Après avoir vu avec un professeur, nous avons remarqué que le routage n'était pas adéquat et la disposition des composants n'était pas optimal. Du travail reste donc encore à effectuer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Semaine 7====&lt;br /&gt;
'''06/03'''&lt;br /&gt;
*Correction du fichier post.php&lt;br /&gt;
*Finition du protocole d'ajout d'aliment sur la base de donnée. (Code php et page ajout terminée).&lt;br /&gt;
*PCB terminé.&lt;br /&gt;
*Installation d'arduino IDE, doc arduino collecté.&lt;br /&gt;
&lt;br /&gt;
'''08/03'''&lt;br /&gt;
*Implémentation de la page ListeIngredient.xml et de l'activité listActivity.java.&lt;br /&gt;
*Documentation sur la procédure de communication bluetooth entre la Rfduino et l'application mobile.&lt;br /&gt;
*Obtention de librairie en lien avec cela.&lt;br /&gt;
*Prise en main de programmation rfduino.&lt;br /&gt;
&lt;br /&gt;
'''09/03'''&lt;br /&gt;
*Nous nous sommes rendus compte qu'il était nécessaire de rajouter un bouton poussoir sur notre montage afin de permettre la réinitialisation de notre RFDuino si nécessaire. Nous devons également faire en sorte de pouvoir poser notre carte PCB directement sur notre RFDuino en utilisant des broches. Nous devons donc rajouter ces éléments-ci.&lt;br /&gt;
*Ecriture de la page get.php&lt;br /&gt;
*Premiers tests sur la ListView de l'activité ListActivity.&lt;br /&gt;
&lt;br /&gt;
====Semaine 8====&lt;br /&gt;
'''13/03'''&lt;br /&gt;
*Recherche de pistes concernant la programmation RFDuino. Nous pouvons la détecter en bluetooth via un smartphone Android.&lt;br /&gt;
&lt;br /&gt;
===Premières idées===&lt;br /&gt;
&lt;br /&gt;
Voici les premières idées de l'application mobile et du composant fixé sur le frigo.&lt;br /&gt;
[[Fichier:Optali_v1.jpg|400px|thumb|left|Optali version 1]]&lt;br /&gt;
[[Fichier:OptaliBox_v1.jpg|400px|thumb|center|OptaliBox version 1]]&lt;br /&gt;
[[Fichier:P46_schema.jpg|400px|thumb|center|Schéma électrique version 1]]&lt;br /&gt;
&lt;br /&gt;
En s'intéressant aux différentes datasheets ou données constructeur des composants que nous voulons utiliser, nous trouvons indispensable d'utiliser des résistances de 330 Ohms pour l'utilisation des LEDs, pour éviter de les griller.&lt;br /&gt;
&lt;br /&gt;
Edit : Retrait de la résistance R2.&lt;br /&gt;
&lt;br /&gt;
Concernant l'accéléromètre, nous avons choisi un modèle qui nous permet de brancher directement ce module sur une broche du RFDuino. On branchera directement les GPIOs de la RFduino sur les ports SDA et SCL de l'accéléromètre qui correspondent à l'interface I2C pour pouvoir communiquer. On utilisera aussi la broche INT1 pour pouvoir générer des interruptions directement depuis l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
On connectera le buzzer directement à une broche de la RFduino aussi. Concernant celui-ci il reste une incertitude puisqu'on ne trouve aucune information sur le courant à fournir pour l'alimentation de ce composant sur sa datasheet. Après différentes recherches sur Internet, il pourrait être nécessaire d'utiliser un montage amplificateur à transistor comme un émetteur commun pour booster le courant en sortie d'une broche GPIO. Quelques buzzers trouvés avec des données constructeur montrent que ce type de composant nécessite généralement un courant d'environ 30 mA. Nous verrons dans la pratique si cela sera vraiment nécessaire. Par sécurité, on ajoutera un transistor bipolaire dans la liste de matériel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:screen_LED.png|400px|thumb|left|Données constructeur pour LEDs]]&lt;br /&gt;
[[Fichier:screen_accel.png|400px|thumb|center|Datasheet de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
===Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
====Configuration école====&lt;br /&gt;
&lt;br /&gt;
*Pour configurer notre Raspberry Pi, nous utilisons son port série et &amp;quot;minicom&amp;quot;. Pour pouvoir télécharger des paquets, il fallait la connecter au réseau. Nous lui avons donc affecté une adresse IP fixe avec le fichier /etc/network/interfaces. Voici les modifications qui ont été apportées : &lt;br /&gt;
&lt;br /&gt;
   auto eth0&lt;br /&gt;
   iface eth0 inet static&lt;br /&gt;
   address 172.26.78.15&lt;br /&gt;
   netmask 255.255.240.0&lt;br /&gt;
   gateway 172.26.79.254&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il a également fallu ajouter la commande &amp;quot;export http_proxy=http://proxy.polytech-lille.fr:3128&amp;quot; (il faudra effectuer cette commande à chaque démarrage de la Pi) pour pouvoir utiliser le proxy de l'école. &lt;br /&gt;
Nous avons de plus modifier le fichier /etc/resolv.conf avec la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
   nameserver 193.48.57.34&lt;br /&gt;
&lt;br /&gt;
Malgré cela, nous avions des soucis pour nous connecter au réseau. Il y avait en fait un processus dhcp en tâche de fond qui nous empêchait de garder le contenu de resolv.conf. Il a donc fallu trouver ce processus pour le &amp;quot;kill&amp;quot; et pouvoir accéder correctement au réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons du coup pu installer postgresql pour pouvoir configurer une base de données sur notre Pi.&lt;br /&gt;
&lt;br /&gt;
====Configuration à domicile====&lt;br /&gt;
&lt;br /&gt;
Pour nous mettre dans une situation plus fidèle à notre projet, nous avons configuré la raspberry à domicile.&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abords installé Raspbian, puis installé les paquets nécessaire au fonctionnement du serveur.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Openssh-server''': permettre d'accès à distance à la raspberry pour pouvoir y accéder depuis l'école.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Iptables''': pour sécuriser les ports non utilisé et libérer l'accès aux ports qui nous intéressent (ssh 22,http 80,https 443).&amp;lt;br&amp;gt;&lt;br /&gt;
- '''apache2, php5, mysql-server''' : pour mettre en place notre service web.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons rediriger les ports 80 et 22 du routeur pour pouvoir accéder à la raspberry de l'extérieur.&lt;br /&gt;
&lt;br /&gt;
Pour finir, nous avons créer un fichier de config iptables permettant de sécuriser un minimum la base de donnée et de permettre d'autoriser la communication des ports 22, 80 et 443 correspondants aux ports ssh, http et https. le fichier de configuration a été déposé dans le dépôt git. Il nous a fallut le rendre exécutable via un chmod. Puis pour l'exécuter à chaque démarrage du system, dans le fichier /etc/init.d/ taper : &lt;br /&gt;
&lt;br /&gt;
    sudo update-rc.d firewall defaults (si notrefichier s'appelle firewall et s'il est dans init.d)&lt;br /&gt;
&lt;br /&gt;
===Base de donnée===&lt;br /&gt;
&lt;br /&gt;
Nos données alimentaires disponibles par toute la famille doivent être stocké sur un serveur de base de donnée externe (tel une Raspberry pi). Nous nous proposons de créer le diagramme UML représentant cette future base de donnée.&lt;br /&gt;
[[Fichier:Optali_UML.jpg|700px|thumb|center|Diagramme UML base de donnée]]&lt;br /&gt;
&lt;br /&gt;
On créera donc 3 entités. Date, Product et Recipe. &lt;br /&gt;
&lt;br /&gt;
- Product rassemble les aliments qui sont ou ont été dans la réserve alimentaire. NbProdIn permet de connaître le nombre de produits identiques (possibilité de date différentes mais pas de doublons et on garde l'information de quantité. NbProdBought donne une information sur le nombre de produits identique ayant été acheté depuis la mise en service de la base de donnée. Ainsi nous pourrons par la suite proposer une liste de course à l'utilisateur en fonction de la fréquence d'achat des produits.&lt;br /&gt;
&lt;br /&gt;
- Recipe contient les recettes que pourra rentrer l'utilisateur sur l'application. L'utilisateur pourra ainsi se voir proposer des recettes en fonction de ce qu'il a dans son frigo et de ses recettes personnelles.&lt;br /&gt;
&lt;br /&gt;
'''''Edit : On ajoutera une valeur entière dans les tables Date et Unity pour gérer le cas où il existe plusieurs produits (différents ou identiques) avec une date de péremption équivalente. On les appellera NbDate la valeur dans la table Date et NbUnity dans la table Unity. On leur ajoutera de même une clef primaire IdUnity et IdListProduct'''''&lt;br /&gt;
&lt;br /&gt;
On utilisera MySql pour la gestion de nos bases de données. &lt;br /&gt;
La syntaxe pour l'implanter dans la base de donnée à été jointe au dépôt git.&lt;br /&gt;
&lt;br /&gt;
Pour lancer my SQL, on tapera:&lt;br /&gt;
&lt;br /&gt;
   mysql -h localhost -u root -p&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Web service===&lt;br /&gt;
&lt;br /&gt;
====Page post.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet l'insertion d'un produit et d'une date via l'application mobile. Elle prend donc ces deux arguments et les insère dans les tables Unity, Product et Date.&lt;br /&gt;
&lt;br /&gt;
===Application Mobile===&lt;br /&gt;
&lt;br /&gt;
====Home page====&lt;br /&gt;
&lt;br /&gt;
Page d'accueil permettant d'accéder aux pages d'ajout et de liste des produits disponibles. &amp;lt;br&amp;gt;&lt;br /&gt;
La page permet aussi d'effectuer la connexion entre la rfduino et l'application mobile. Elle montre les alertes (signaux) à l'utilisateur &lt;br /&gt;
et écrit leur signification.&lt;br /&gt;
&lt;br /&gt;
====Page d'ajout====&lt;br /&gt;
&lt;br /&gt;
Pour ajouter un produit et lire une date on utilisera un champ editText pour permettre à l'utilisateur d'écrire &amp;quot;Manuellement&amp;quot; dedans grâce au clavier du smartphone.&amp;lt;br&amp;gt;&lt;br /&gt;
De plus on utilise un bouton qui appellera la caméra pour détecter les caractères d'un produit ou d'une date. Au début nous voulions utiliser un détecteur de code barre, nous l'avons implémenté mais nous avons remarqué que la mise au point sur une surface non plane prend du temps d'autant plus qu'il faut questionner une base de donnée contenant tous les numéro de codes barres utilisés. Nous avons donc prit la décision d'utiliser uniquement la lecture de caractère et nous créerons une liste déroulante sous l'editText pour faciliter l'insertion d'un produit qui a déjà été ajouté.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'envoi, nous utilisons la librairie Volley développé par google.&lt;br /&gt;
&lt;br /&gt;
====Page Liste====&lt;br /&gt;
&lt;br /&gt;
Permet de lister les produits dans la base de donnée. Une série de boutons radio permettent de trier les produits par ordre alphabétique, par date de péremption, par nombre d’occurrence dans la réserve alimentaire, par nombre d'achat depuis la mise en place du système.&amp;lt;br&amp;gt;&lt;br /&gt;
Une colonne permet de sélectionner les aliments désirés (par checkBox) pour ensuite les supprimer via un button &amp;quot;suppr&amp;quot; ou les choisir pour trouver des recettes qui les utilisent.&amp;lt;br&amp;gt;&lt;br /&gt;
Un EditText permet d'effectuer une recherche sur la base de donnée.&lt;br /&gt;
&lt;br /&gt;
===Altium Designer===&lt;br /&gt;
&lt;br /&gt;
Pour permettre au RFDuino de communiquer avec les différents composants, nous aurons besoin de quelques composants électroniques. Afin que cela soit plus esthétique pour la modélisation finale, nous allons créer une carte PCB pour rassembler tous ces composants dessus. On utilisera le logiciel Altium Designer pour cela.&lt;br /&gt;
&lt;br /&gt;
Avant de représenter notre circuit général, nous allons commencer par créer une librairie rassemblant tous les composants que nous utiliserons par la suite, en particulier nos composants CMS (accéléromètre et résistances). Pour ce qui est des LEDs et du buzzer, qui sont traversants, nous pourrons utiliser des headers classiques.&lt;br /&gt;
&lt;br /&gt;
Il a donc fallu créer le schematic ainsi que l'empreinte de nos composants CMS. Voici un exemple avec notre accéléromètre :&lt;br /&gt;
[[Fichier:Accelerosch.PNG|500px|thumb|left|Schematic de l'accéléromètre]]&lt;br /&gt;
[[Fichier:Acceleropcb.PNG|500px|thumb|center|Empreinte PCB de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les fichiers Altium sont disponibles sur notre dépôt GIT. Après cela, nous pouvons maintenant construire notre schematic du montage entier et ensuite le fichier PCB afin de pouvoir graver notre circuit.&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=40092</id>
		<title>IMA4 2016/2017 P46 : Aide anti-gaspillage alimentaire</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=40092"/>
				<updated>2017-03-09T08:51:05Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : /* Semaine 7 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
En France, nous jetons en moyenne 21% des aliments que nous achetons, ce qui représente une perte de 100 à 160 euros par an par habitant. Cela est en partie dû à la date limite de consommation associée à chaque produit. En effet, à partir du moment où cette date sera dépassée le consommateur jettera les produits concernés sans réfléchir, même si ceux-ci peuvent parfois être encore mangeables. Plutôt que d'essayer de les convaincre du contraire, il serait judicieux de proposer aux adeptes du gaspillage une aide permettant de gérer tous les aliments dont ils disposent chez eux afin d'éviter la surprise de tomber sur plusieurs produits périmés lorsqu'ils ouvrent la porte de leur frigo. &lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Ce projet permet d'aider les utilisateurs d'une part à mémoriser les denrées périssables qu'ils disposent dans leur réserve alimentaire et d'autre part d'avertir l'utilisateur qu'un événement important a lieu. Ceci peut être une notification qu'un aliment va bientôt dépasser sa date de péremption, que la porte du frigidaire est restée ouverte ou encore que le nombre d'aliments dans la réserve devient critique et qu'il faudra de nouveau l'alimenter. Enfin, le système aidera l'utilisateur à trouver des idées de repas pouvant permettre de consommer les aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Notre prototype permettra d'éviter le gaspillage alimentaire ainsi que d'aider l'utilisateur dans sa gestion du stockage d'aliments.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
&lt;br /&gt;
Notre système sera composé de 3 éléments. &lt;br /&gt;
&lt;br /&gt;
Premièrement, un ou des smartphones appartenant aux utilisateurs. Ces derniers permettront de scanner grâce à son appareil photo, le code barre du produit ainsi que sa date de péremption. Il servira aussi d'interface utilisateur pour notre système. En effet, c'est par cet outil que l'utilisateur pourra lister tous les aliments que l'utilisateur a dans sa base et tout ça en les triant par date de péremption, ou encore voir les recettes possibles pour consommer des aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Deuxièmement, un serveur, de type Raspberry, qui permettra de stocker la base de donnée contenant les aliments de la réserve. Ce serveur sera connecté par wifi.&lt;br /&gt;
 &lt;br /&gt;
Troisièmement, un contrôleur (Rfduino) qui comportera une LED pour indiquer la mise sous tension du contrôleur, une LED pour prévenir l'utilisateur qu'un aliment va bientôt passer sa date de péremption et une dernière LED pour prévenir l'utilisateur que son niveau de réserve est critique ainsi qu'un buzzer et un accéléromètre pour buzzer quand la porte du frigo est restée trop longtemps ouverte. Ce dernier sera fixé au frigo par l'intermédiaire d'un dispositif adapté qui sera un système aimanté qui se pose sur le frigo.&lt;br /&gt;
&lt;br /&gt;
Nous implémenterons donc une application mobile Android qui fera le lien entre les 2 autres systèmes.&lt;br /&gt;
&lt;br /&gt;
Pour la partie électronique que nous aurons à réaliser, nous utiliserons une Breadboard pour faire des premiers tests puis nous créerons une carte PCB pour notre montage final.&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
On utilisera une Raspberry Pi en guise de serveur pour pouvoir s'occuper du stockage de toutes les données dans notre projet puisque notre contrôleur sera incapable de les contenir, ce n'est d'ailleurs pas son but ici.&lt;br /&gt;
&lt;br /&gt;
Notre smartphone fera donc le lien entre notre base de données et notre système embarqué par l'intermédiaire de l'application mobile.&lt;br /&gt;
&lt;br /&gt;
Nous prendrons ici un RFduino puisque celui-ci nous permet d'ajouter des modules comme bon nous semble afin d'adapter le système aux besoins de notre application. Il est également parfaitement compatible avec les applications Android. De plus, nous avons un Bluetooth directement intégré au RFduino pour s'assurer que les liaisons RFduino-application mobile se fassent correctement. &lt;br /&gt;
On notera également que ce contrôleur consomme peu de courant et ne demande qu'une faible tension d'alimentation, critères importants pour ce genre de projet. C'est la raison principale de son utilisation pour être utilisé comme interface physique sur le frigo, en ajoutant également sa taille réduite comparée à la Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
&lt;br /&gt;
Nous avons donc besoin du matériel suivant :&lt;br /&gt;
&lt;br /&gt;
*Raspberry Pi.&lt;br /&gt;
*Clef wifi&lt;br /&gt;
*RFduino (RFD22102 DIP Board, RFD22121 USB Shield, RFD22126 Dual AAA battery shield).&lt;br /&gt;
*2 piles AAA.&lt;br /&gt;
*3 leds tranversantes.&lt;br /&gt;
*3 Résistances 330 Ohm.&lt;br /&gt;
*1 Résistance 10 kOhm.&lt;br /&gt;
*Un buzzer.&lt;br /&gt;
*Accéléromètre.&lt;br /&gt;
*Aimants&lt;br /&gt;
*Un boîtier permettant d'intégrer la RFduino + fixation sur le frigo (modélisation à voir).&lt;br /&gt;
&lt;br /&gt;
Pour le buzzer, l'accéléromètre et les résistances, nous choisirons des composants CMS pour nous permettre d'avoir une carte plus petite.&lt;br /&gt;
&lt;br /&gt;
===Calendrier prévisionnel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Liste des tâches à effectuer====&lt;br /&gt;
&lt;br /&gt;
* Configurer la Raspberry :&lt;br /&gt;
** Installer et configurer le serveur.&lt;br /&gt;
** Créer le diagramme UML de notre future base de données.&lt;br /&gt;
** Créer la base sur le serveur.&lt;br /&gt;
** Configurer la connexion WiFi.&lt;br /&gt;
&lt;br /&gt;
* Monter et programmer la RFduino :&lt;br /&gt;
** Connecter les différents modules au RFduino (accéléromètre, LEDs, buzzer, Batterie, module Bluetooth).&lt;br /&gt;
** Récupérer les consignes du smartphone grâce au Bluetooth.&lt;br /&gt;
** Programmer le comportement du RFduino en fonction des consignes.&lt;br /&gt;
** Construire le boitier final.&lt;br /&gt;
&lt;br /&gt;
* Implémenter l'application mobile Android :&lt;br /&gt;
** Une première activité permettant de se connecter au RFduino et à la Raspberry.&lt;br /&gt;
** Scanner une date et un code barre.&lt;br /&gt;
** Ajout/suppression d'un aliment dans la base de donnée.&lt;br /&gt;
** Envoi d'une consigne au RFduino.&lt;br /&gt;
** Rendre l'interface utilisateur ergonomique (lister aliments, envoyer vers page de recettes avec l'utilisation des aliments bientôt périmés...).&lt;br /&gt;
&lt;br /&gt;
====Calendrier====&lt;br /&gt;
&lt;br /&gt;
Répartition du temps consacré au projet (120h *2) :&lt;br /&gt;
&lt;br /&gt;
*Partie Raspberry : 60h&lt;br /&gt;
*Partie RFduino : 60h&lt;br /&gt;
*Partie développement mobile : 120h&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
&lt;br /&gt;
===Résumé===&lt;br /&gt;
&lt;br /&gt;
====Semaine 1====&lt;br /&gt;
&lt;br /&gt;
'''23/01''' :  &lt;br /&gt;
* Installation du logiciel Android Studio pour être prêt à commencer l'application mobile.&lt;br /&gt;
* Création du Repository Git sur GitHub : https://github.com/FrancoisLefevre12/Optali.git&lt;br /&gt;
* Réalisation de différents schémas fonctionnels pour se donner une idée du travail à effectuer, aussi bien du software que du hardware.&lt;br /&gt;
* Quelques précisions supplémentaires apportées sur le cahier des charges.&lt;br /&gt;
* Ajout de liens de référence pour la liste de matériel à acheter.&lt;br /&gt;
&lt;br /&gt;
'''25/01''' :  &lt;br /&gt;
* Précision des composants requis (accéléromètre, buzzer, LEDs, résistances).&lt;br /&gt;
* Écriture du montage à la main.&lt;br /&gt;
* Étude du fonctionnement de l'accéléromètre, du buzzer.&lt;br /&gt;
* Écriture de la structure de l'application à la main.&lt;br /&gt;
&lt;br /&gt;
'''26/01''' :&lt;br /&gt;
*Réalisation graphique de la première page de l'application.&lt;br /&gt;
*Conception du schéma électrique pour tous les composants connectés au RFduino.&lt;br /&gt;
&lt;br /&gt;
====Semaine 2====&lt;br /&gt;
&lt;br /&gt;
'''30/01''' :&lt;br /&gt;
*Réalisation du diagramme UML de la base de données qui sera stockée sur la Raspberry Pi&lt;br /&gt;
*Installation de l'outil de développement mobile sur le second PC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''01/02''' :&lt;br /&gt;
*Nous nous sommes d'abord rendus compte que la résistance entre un des GPIO et l'accéléromètre était inutile, nos premiers calculs étaient erronés. Nous ne la garderons donc pas sur notre schéma électrique final.&lt;br /&gt;
*Avancement sur la partie application mobile : réalisation de la page &amp;quot;Ajout&amp;quot; sur laquelle nous tomberons après avoir cliquer sur &amp;quot;ajout&amp;quot; sur la page principale de l'application. Nous avons étendu l'activité principale jusqu'à cette nouvelle activité &amp;quot;Ajout&amp;quot;.&lt;br /&gt;
*Nous avons récupéré notre Raspberry Pi pour commencer à installer notre base de données dessus. Nous avons actuellement quelques problèmes pour nous connecter sur la Raspberry. Nous travaillons sur ce point.&lt;br /&gt;
&lt;br /&gt;
'''02/02''' :&lt;br /&gt;
* Application mobile : Mise en place des LEDs sur la home page et de la zone de notification avec les messages associés.&lt;br /&gt;
&lt;br /&gt;
====Semaine 3====&lt;br /&gt;
&lt;br /&gt;
'''06/02''' :&lt;br /&gt;
*Nous arrivons à accéder à la Raspberry via le port série de celle-ci. Nous avons également configuré sa connexion Ethernet afin de pouvoir télécharger des paquets dessus et installer notre base de données. &lt;br /&gt;
*Nous rencontrions des problèmes sur le second PC de travail pour récupérer le projet Optali sur Android Studio via notre dépôt GIT. Nous avons pu rectifier ce souci.&lt;br /&gt;
&lt;br /&gt;
'''08/02''' :&lt;br /&gt;
*Tentative d'établissement d'un point d'accès WiFi sur notre Raspberry. Nous n'avons pas réussi pour le moment.&lt;br /&gt;
*Restructuration du Repository git.&lt;br /&gt;
*Essai d'importation de la librairie Zxing qui permettra de décoder les code-barres.&lt;br /&gt;
&lt;br /&gt;
====Semaine 4====&lt;br /&gt;
&lt;br /&gt;
'''13/02'''&lt;br /&gt;
*Configuration du wifi de la Raspberry. &lt;br /&gt;
*Étude d'une mise en place d'un service web via php.&lt;br /&gt;
&lt;br /&gt;
'''15/02'''&lt;br /&gt;
*Mise en place d'un lecteur de caractère sur l'application. On utilisera tesseract.&lt;br /&gt;
*Début de la création du PCB via Altium designer. Création d'une librairie pour l'accéléromètre qui est un composant CMS assez spécial. On pourra cependant utiliser des headers classiques pour le buzzer et les LEDs puisque ce sont des composants traversants.&lt;br /&gt;
*Création des premiers fichiers php de connection à la base de donnée et d'insertion d'aliments. Tous ces fichiers seront déposés de la même manière sur le dépôt git.&lt;br /&gt;
&lt;br /&gt;
'''16/02'''&lt;br /&gt;
*Adaptation avec prise en compte des cas du code php d'insertion de produits par requête sur la base de donnée.&lt;br /&gt;
*Ajout du code d'implantation de la base de donnée.&lt;br /&gt;
*Altium: Accéléromètre terminé, mise en place des résistances.&lt;br /&gt;
&lt;br /&gt;
====Semaine 5 (interruption pédagogique)====&lt;br /&gt;
&lt;br /&gt;
'''22/02 (3 heures)'''&lt;br /&gt;
*Installation de l'OS de la raspberry.&lt;br /&gt;
*Installation d'Openssh-server, apache2, php5, iptables, mysql-server, php5-mysql.&lt;br /&gt;
*Redirection des ports du routeur vers la raspberry.&lt;br /&gt;
*Configuration de iptables de la raspberry.&lt;br /&gt;
&lt;br /&gt;
'''23/02 (2 heures)'''&lt;br /&gt;
*Implantation de la base de donnée sur la raspberry pi.&lt;br /&gt;
&lt;br /&gt;
====Semaine 6====&lt;br /&gt;
'''27/02'''&lt;br /&gt;
*Vérification de la syntaxe de l'insertion de valeurs dans la base de donnée.&lt;br /&gt;
*Création des premières requêtes sur la base de donnée.&lt;br /&gt;
*Finalisation du PCB de l'Optali Board.&lt;br /&gt;
&lt;br /&gt;
'''01/03'''&lt;br /&gt;
*Étude et ajout de la librairie volley pour communiquer avec le serveur.&lt;br /&gt;
*Implantation de la fonction d'envoi de données jusqu'au serveur.&lt;br /&gt;
*Après avoir vu avec un professeur, nous avons remarqué que le routage n'était pas adéquat et la disposition des composants n'était pas optimal. Du travail reste donc encore à effectuer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Semaine 7====&lt;br /&gt;
'''06/03'''&lt;br /&gt;
*Correction du fichier post.php&lt;br /&gt;
*Finition du protocole d'ajout d'aliment sur la base de donnée. (Code php et page ajout terminée).&lt;br /&gt;
*PCB terminé.&lt;br /&gt;
*Installation d'arduino IDE, doc arduino collecté.&lt;br /&gt;
&lt;br /&gt;
'''08/03'''&lt;br /&gt;
*Implémentation de la page ListeIngredient.xml et de l'activité listActivity.java.&lt;br /&gt;
*Documentation sur la procédure de communication bluetooth entre la Rfduino et l'application mobile.&lt;br /&gt;
*Obtention de librairie en lien avec cela.&lt;br /&gt;
*Prise en main de programmation rfduino.&lt;br /&gt;
&lt;br /&gt;
'''09/03'''&lt;br /&gt;
*Nous nous sommes rendus compte qu'il était nécessaire de rajouter un bouton poussoir sur notre montage afin de permettre la réinitialisation de notre RFDuino si nécessaire. Nous devons également faire en sorte de pouvoir poser notre carte PCB directement sur notre RFDuino en utilisant des broches. Nous devons donc rajouter ces éléments-ci.&lt;br /&gt;
*Ecriture de la page get.php&lt;br /&gt;
*Premiers tests sur la ListView de l'activité ListActivity.&lt;br /&gt;
&lt;br /&gt;
===Premières idées===&lt;br /&gt;
&lt;br /&gt;
Voici les premières idées de l'application mobile et du composant fixé sur le frigo.&lt;br /&gt;
[[Fichier:Optali_v1.jpg|400px|thumb|left|Optali version 1]]&lt;br /&gt;
[[Fichier:OptaliBox_v1.jpg|400px|thumb|center|OptaliBox version 1]]&lt;br /&gt;
[[Fichier:P46_schema.jpg|400px|thumb|center|Schéma électrique version 1]]&lt;br /&gt;
&lt;br /&gt;
En s'intéressant aux différentes datasheets ou données constructeur des composants que nous voulons utiliser, nous trouvons indispensable d'utiliser des résistances de 330 Ohms pour l'utilisation des LEDs, pour éviter de les griller.&lt;br /&gt;
&lt;br /&gt;
Edit : Retrait de la résistance R2.&lt;br /&gt;
&lt;br /&gt;
Concernant l'accéléromètre, nous avons choisi un modèle qui nous permet de brancher directement ce module sur une broche du RFDuino. On branchera directement les GPIOs de la RFduino sur les ports SDA et SCL de l'accéléromètre qui correspondent à l'interface I2C pour pouvoir communiquer. On utilisera aussi la broche INT1 pour pouvoir générer des interruptions directement depuis l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
On connectera le buzzer directement à une broche de la RFduino aussi. Concernant celui-ci il reste une incertitude puisqu'on ne trouve aucune information sur le courant à fournir pour l'alimentation de ce composant sur sa datasheet. Après différentes recherches sur Internet, il pourrait être nécessaire d'utiliser un montage amplificateur à transistor comme un émetteur commun pour booster le courant en sortie d'une broche GPIO. Quelques buzzers trouvés avec des données constructeur montrent que ce type de composant nécessite généralement un courant d'environ 30 mA. Nous verrons dans la pratique si cela sera vraiment nécessaire. Par sécurité, on ajoutera un transistor bipolaire dans la liste de matériel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:screen_LED.png|400px|thumb|left|Données constructeur pour LEDs]]&lt;br /&gt;
[[Fichier:screen_accel.png|400px|thumb|center|Datasheet de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
===Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
====Configuration école====&lt;br /&gt;
&lt;br /&gt;
*Pour configurer notre Raspberry Pi, nous utilisons son port série et &amp;quot;minicom&amp;quot;. Pour pouvoir télécharger des paquets, il fallait la connecter au réseau. Nous lui avons donc affecté une adresse IP fixe avec le fichier /etc/network/interfaces. Voici les modifications qui ont été apportées : &lt;br /&gt;
&lt;br /&gt;
   auto eth0&lt;br /&gt;
   iface eth0 inet static&lt;br /&gt;
   address 172.26.78.15&lt;br /&gt;
   netmask 255.255.240.0&lt;br /&gt;
   gateway 172.26.79.254&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il a également fallu ajouter la commande &amp;quot;export http_proxy=http://proxy.polytech-lille.fr:3128&amp;quot; (il faudra effectuer cette commande à chaque démarrage de la Pi) pour pouvoir utiliser le proxy de l'école. &lt;br /&gt;
Nous avons de plus modifier le fichier /etc/resolv.conf avec la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
   nameserver 193.48.57.34&lt;br /&gt;
&lt;br /&gt;
Malgré cela, nous avions des soucis pour nous connecter au réseau. Il y avait en fait un processus dhcp en tâche de fond qui nous empêchait de garder le contenu de resolv.conf. Il a donc fallu trouver ce processus pour le &amp;quot;kill&amp;quot; et pouvoir accéder correctement au réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons du coup pu installer postgresql pour pouvoir configurer une base de données sur notre Pi.&lt;br /&gt;
&lt;br /&gt;
====Configuration à domicile====&lt;br /&gt;
&lt;br /&gt;
Pour nous mettre dans une situation plus fidèle à notre projet, nous avons configuré la raspberry à domicile.&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abords installé Raspbian, puis installé les paquets nécessaire au fonctionnement du serveur.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Openssh-server''': permettre d'accès à distance à la raspberry pour pouvoir y accéder depuis l'école.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Iptables''': pour sécuriser les ports non utilisé et libérer l'accès aux ports qui nous intéressent (ssh 22,http 80,https 443).&amp;lt;br&amp;gt;&lt;br /&gt;
- '''apache2, php5, mysql-server''' : pour mettre en place notre service web.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons rediriger les ports 80 et 22 du routeur pour pouvoir accéder à la raspberry de l'extérieur.&lt;br /&gt;
&lt;br /&gt;
Pour finir, nous avons créer un fichier de config iptables permettant de sécuriser un minimum la base de donnée et de permettre d'autoriser la communication des ports 22, 80 et 443 correspondants aux ports ssh, http et https. le fichier de configuration a été déposé dans le dépôt git. Il nous a fallut le rendre exécutable via un chmod. Puis pour l'exécuter à chaque démarrage du system, dans le fichier /etc/init.d/ taper : &lt;br /&gt;
&lt;br /&gt;
    sudo update-rc.d firewall defaults (si notrefichier s'appelle firewall et s'il est dans init.d)&lt;br /&gt;
&lt;br /&gt;
===Base de donnée===&lt;br /&gt;
&lt;br /&gt;
Nos données alimentaires disponibles par toute la famille doivent être stocké sur un serveur de base de donnée externe (tel une Raspberry pi). Nous nous proposons de créer le diagramme UML représentant cette future base de donnée.&lt;br /&gt;
[[Fichier:Optali_UML.jpg|700px|thumb|center|Diagramme UML base de donnée]]&lt;br /&gt;
&lt;br /&gt;
On créera donc 3 entités. Date, Product et Recipe. &lt;br /&gt;
&lt;br /&gt;
- Product rassemble les aliments qui sont ou ont été dans la réserve alimentaire. NbProdIn permet de connaître le nombre de produits identiques (possibilité de date différentes mais pas de doublons et on garde l'information de quantité. NbProdBought donne une information sur le nombre de produits identique ayant été acheté depuis la mise en service de la base de donnée. Ainsi nous pourrons par la suite proposer une liste de course à l'utilisateur en fonction de la fréquence d'achat des produits.&lt;br /&gt;
&lt;br /&gt;
- Recipe contient les recettes que pourra rentrer l'utilisateur sur l'application. L'utilisateur pourra ainsi se voir proposer des recettes en fonction de ce qu'il a dans son frigo et de ses recettes personnelles.&lt;br /&gt;
&lt;br /&gt;
'''''Edit : On ajoutera une valeur entière dans les tables Date et Unity pour gérer le cas où il existe plusieurs produits (différents ou identiques) avec une date de péremption équivalente. On les appellera NbDate la valeur dans la table Date et NbUnity dans la table Unity. On leur ajoutera de même une clef primaire IdUnity et IdListProduct'''''&lt;br /&gt;
&lt;br /&gt;
On utilisera MySql pour la gestion de nos bases de données. &lt;br /&gt;
La syntaxe pour l'implanter dans la base de donnée à été jointe au dépôt git.&lt;br /&gt;
&lt;br /&gt;
Pour lancer my SQL, on tapera:&lt;br /&gt;
&lt;br /&gt;
   mysql -h localhost -u root -p&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Web service===&lt;br /&gt;
&lt;br /&gt;
====Page post.php====&lt;br /&gt;
&lt;br /&gt;
Page qui permet l'insertion d'un produit et d'une date via l'application mobile. Elle prend donc ces deux arguments et les insère dans les tables Unity, Product et Date.&lt;br /&gt;
&lt;br /&gt;
===Application Mobile===&lt;br /&gt;
&lt;br /&gt;
====Home page====&lt;br /&gt;
&lt;br /&gt;
Page d'accueil permettant d'accéder aux pages d'ajout et de liste des produits disponibles. &amp;lt;br&amp;gt;&lt;br /&gt;
La page permet aussi d'effectuer la connexion entre la rfduino et l'application mobile. Elle montre les alertes (signaux) à l'utilisateur &lt;br /&gt;
et écrit leur signification.&lt;br /&gt;
&lt;br /&gt;
====Page d'ajout====&lt;br /&gt;
&lt;br /&gt;
Pour ajouter un produit et lire une date on utilisera un champ editText pour permettre à l'utilisateur d'écrire &amp;quot;Manuellement&amp;quot; dedans grâce au clavier du smartphone.&amp;lt;br&amp;gt;&lt;br /&gt;
De plus on utilise un bouton qui appellera la caméra pour détecter les caractères d'un produit ou d'une date. Au début nous voulions utiliser un détecteur de code barre, nous l'avons implémenté mais nous avons remarqué que la mise au point sur une surface non plane prend du temps d'autant plus qu'il faut questionner une base de donnée contenant tous les numéro de codes barres utilisés. Nous avons donc prit la décision d'utiliser uniquement la lecture de caractère et nous créerons une liste déroulante sous l'editText pour faciliter l'insertion d'un produit qui a déjà été ajouté.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'envoi, nous utilisons la librairie Volley développé par google.&lt;br /&gt;
&lt;br /&gt;
====Page Liste====&lt;br /&gt;
&lt;br /&gt;
Permet de lister les produits dans la base de donnée. Une série de boutons radio permettent de trier les produits par ordre alphabétique, par date de péremption, par nombre d’occurrence dans la réserve alimentaire, par nombre d'achat depuis la mise en place du système.&amp;lt;br&amp;gt;&lt;br /&gt;
Une colonne permet de sélectionner les aliments désirés (par checkBox) pour ensuite les supprimer via un button &amp;quot;suppr&amp;quot; ou les choisir pour trouver des recettes qui les utilisent.&amp;lt;br&amp;gt;&lt;br /&gt;
Un EditText permet d'effectuer une recherche sur la base de donnée.&lt;br /&gt;
&lt;br /&gt;
===Altium Designer===&lt;br /&gt;
&lt;br /&gt;
Pour permettre au RFDuino de communiquer avec les différents composants, nous aurons besoin de quelques composants électroniques. Afin que cela soit plus esthétique pour la modélisation finale, nous allons créer une carte PCB pour rassembler tous ces composants dessus. On utilisera le logiciel Altium Designer pour cela.&lt;br /&gt;
&lt;br /&gt;
Avant de représenter notre circuit général, nous allons commencer par créer une librairie rassemblant tous les composants que nous utiliserons par la suite, en particulier nos composants CMS (accéléromètre et résistances). Pour ce qui est des LEDs et du buzzer, qui sont traversants, nous pourrons utiliser des headers classiques.&lt;br /&gt;
&lt;br /&gt;
Il a donc fallu créer le schematic ainsi que l'empreinte de nos composants CMS. Voici un exemple avec notre accéléromètre :&lt;br /&gt;
[[Fichier:Accelerosch.PNG|500px|thumb|left|Schematic de l'accéléromètre]]&lt;br /&gt;
[[Fichier:Acceleropcb.PNG|500px|thumb|center|Empreinte PCB de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les fichiers Altium sont disponibles sur notre dépôt GIT. Après cela, nous pouvons maintenant construire notre schematic du montage entier et ensuite le fichier PCB afin de pouvoir graver notre circuit.&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_IMA4_SC_%26_SA_2016/2017&amp;diff=40090</id>
		<title>Projets IMA4 SC &amp; SA 2016/2017</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_IMA4_SC_%26_SA_2016/2017&amp;diff=40090"/>
				<updated>2017-03-09T07:30:32Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : /* Matériel à acquérir */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Merci de référencer vos pages de projets ici. Merci aussi d'uniformiser vos formats que ce soit en regardant la présentation des projets déjà créés ou en demandant une modification du format des précédents si votre façon de faire vous semble la meilleure. Dans tous les cas un minimum de communication entre les binômes est conseillée.&lt;br /&gt;
&lt;br /&gt;
Toutes les sources doivent être déposées sur notre archive GIT. Le service est disponible à l'URL [https://archives.plil.fr archives.plil.fr]. Connectez-vous avec vos identifiants Polytech'Lille. Sauf indication contraire de vos encadrants, rendez le projet public et mettez le lien sur votre Wiki. Vous pouvez trouver de la documentation sur ce système d'archives sur ce [https://git-scm.com/book/fr/v1 site].&lt;br /&gt;
&lt;br /&gt;
== Répartition des binômes ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Projet !! Encadrants école !! Elèves&lt;br /&gt;
|-&lt;br /&gt;
| P1 [[IMA4 2016/2017 P1|Climatisation du pauvre]]&lt;br /&gt;
| Xavier Redon&lt;br /&gt;
| Haroun Abdelali&lt;br /&gt;
|-&lt;br /&gt;
| P2 [[IMA4 2016/2017 P2|Réseau de capteurs sur smartphone]]&lt;br /&gt;
| Alexandre Boé / Xavier Redon / Thomas Vantroys&lt;br /&gt;
| Wenyu sun / Xinyue xu&lt;br /&gt;
|-&lt;br /&gt;
| P10 [[IMA4 2016/2017 P10|Application de suivi de prise de médicaments]]&lt;br /&gt;
| Fanny Moreau / Alexandre Boé / Xavier Redon / Thomas Vantroys&lt;br /&gt;
| Martin Rohmer / Kévin Godesence&lt;br /&gt;
|-&lt;br /&gt;
| P11 [[IMA4 2016/2017 P11|Amélioration de l'accueil d'enfants hospitalisés]]&lt;br /&gt;
| Marion Binninger / Alexandre Boé / Xavier Redon / Thomas Vantroys&lt;br /&gt;
| Robin Cavalieri / Edmur Lopes&lt;br /&gt;
|-&lt;br /&gt;
| P14 [[IMA4 2016/2017 P14|Sex toy connecté]]&lt;br /&gt;
| Alexandre Boé / Xavier Redon&lt;br /&gt;
| Cedric Roussel / Thomas Stievenard&lt;br /&gt;
|-&lt;br /&gt;
| P18 [[IMA4 2016/2017 P18|Education de la position de tête]]&lt;br /&gt;
| Rodolphe Astori / Alexandre Boé / Xavier Redon / Thomas Vantroys&lt;br /&gt;
| Mame Arame Diop / Amina Fahem&lt;br /&gt;
|-&lt;br /&gt;
| P19 [[IMA4 2016/2017 P19|Orchestre électronique]]&lt;br /&gt;
| Lucas Prieux / Hidéo Vinot / Xavier Redon / Thomas Vantroys&lt;br /&gt;
| Antoine Arnaudet / Vivian Senaffe&lt;br /&gt;
|-&lt;br /&gt;
| P20 [[IMA4 2016/2017 P20|Création d’un environnement virtuel de test]]&lt;br /&gt;
| Rochdi Merzouki / Vincent Coelen / Valentin Vergez&lt;br /&gt;
| Butaye Marianne / François Duport&lt;br /&gt;
|-&lt;br /&gt;
| P21 [[IMA4 2016/2017 P21|Conception d’une MPS Polyvalente]]&lt;br /&gt;
| Rochdi Merzouki / Thomas Danel / Valentin Vergez&lt;br /&gt;
| Samy Belhouachi / François Xavier Cockenpot&lt;br /&gt;
|-&lt;br /&gt;
| P25 [[IMA4 2016/2017 P25|Robot mobile Polytech'Lille]]&lt;br /&gt;
| Xavier Redon / Alexandre Boé&lt;br /&gt;
| Cheikh Said Ahmed / Khadija El Messnaoui&lt;br /&gt;
|-&lt;br /&gt;
| P26 [[IMA4 2016/2017 P26|Train de véhicules]]&lt;br /&gt;
| Xavier Redon / Alexandre Boé&lt;br /&gt;
| Manlu Luo / Xinyi Wang&lt;br /&gt;
|-&lt;br /&gt;
| P27 [[IMA4 2016/2017 P27|Sonde atmosphérique]]&lt;br /&gt;
| Xavier Redon / Thomas Vantroys / Alexandre Boé&lt;br /&gt;
| Olivier Mahieux / Grillère Baptiste&lt;br /&gt;
|-&lt;br /&gt;
| P28 [[IMA4 2016/2017 P28|Adaptation d'un émulateur de calculatrices TI]]&lt;br /&gt;
| Xavier Redon / Gilles Dhaussy&lt;br /&gt;
| Rodolphe Toin&lt;br /&gt;
|-&lt;br /&gt;
| P29 [[IMA4 2016/2017 P29|Conteneurs pour site Web]]&lt;br /&gt;
| Xavier Redon / Thomas Vantroys&lt;br /&gt;
| Jade Dupont (valentin)&lt;br /&gt;
|-&lt;br /&gt;
| P30 [[IMA4 2016/2017 P30|Voiture radiocommandée controlée par gant]]&lt;br /&gt;
| Alexandre Boé / Xavier Redon / Thomas Vantroys&lt;br /&gt;
| Thomas Gosse / Bacem Hagui&lt;br /&gt;
|-&lt;br /&gt;
| P31 [[IMA4 2016/2017 P31|Accueil personnalisé par drone]]&lt;br /&gt;
| Alexandre Boé / Xavier Redon / Thomas Vantroys&lt;br /&gt;
| Tristan Hart / Etienne Profit&lt;br /&gt;
|-&lt;br /&gt;
| P32 [[IMA4 2016/2017 P32|Sécurité: brouilleur d'ondes]]&lt;br /&gt;
| Thomas Vantroys / Alexandre Boé / Xavier Redon&lt;br /&gt;
| Nicky Ung / Alexis Macherez&lt;br /&gt;
|-&lt;br /&gt;
| P33 [[IMA4 2016/2017 P33|Sécurité: ingénierie inverse de protocole réseau]]&lt;br /&gt;
| Thomas Vantroys / Alexandre Boé / Xavier Redon&lt;br /&gt;
| Oumaima Naanaa&lt;br /&gt;
|-&lt;br /&gt;
| P34 [[IMA4 2016/2017 P34|Interface Haptique, simulateur de formes et de textures]]&lt;br /&gt;
| Betty Semail / Laurent Grisoni / Frédéric Giraud&lt;br /&gt;
| Alice Coffin / Diana Marrucho&lt;br /&gt;
|-&lt;br /&gt;
| P37 [[IMA4 2016/2017 P37|Gamelle connectée]]&lt;br /&gt;
| Alexandre Boé / Thomas Vantroys / Xavier Redon&lt;br /&gt;
| Lutecia Damiens / Alexis Dorian&lt;br /&gt;
|-&lt;br /&gt;
| P38 [[IMA4 2016/2017 P38|Veilleuse enfant connectée]]&lt;br /&gt;
| Thomas Vantroys / Alexandre Boé&lt;br /&gt;
| Hugo Delatte&lt;br /&gt;
|-&lt;br /&gt;
| P39 [[IMA4 2016/2017 P39|Projecteur laser]]&lt;br /&gt;
| Xavier Redon / Alexandre Boé / Thomas Vantroys&lt;br /&gt;
| Loïc Tombazzi / Marius Trimbur&lt;br /&gt;
|-&lt;br /&gt;
| P44 [[IMA4 2016/2017 P44|3615 Facebook]]&lt;br /&gt;
| Thomas Vantroys&lt;br /&gt;
| Marouan Mcharfi / Tristan Lopez&lt;br /&gt;
|-&lt;br /&gt;
| P46 [[IMA4 2016/2017 P46|Aide anti-gaspillage alimentaire ]]&lt;br /&gt;
| Alexandre Boé / Xavier Redon / Thomas Vantroys&lt;br /&gt;
| Alexandre Huet / François Lefevre&lt;br /&gt;
|-&lt;br /&gt;
| P47 [[IMA4 2016/2017 P47|Modélisation d’un robot mobile]]&lt;br /&gt;
| Midzodzi Pekpe&lt;br /&gt;
| Djamil Mohammed / Hamza Kerroum&lt;br /&gt;
|-&lt;br /&gt;
| P48 [[IMA4 2016/2017 P48|Surveillance d'un robot mobile]]&lt;br /&gt;
| Midzodzi Pekpe&lt;br /&gt;
| Jean-Baptiste Saison&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Matériel à acquérir ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Projet !! Matériel&lt;br /&gt;
|-&lt;br /&gt;
| P1 [[IMA4 2016/2017 P1|Climatisation du pauvre]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Feuille de Plexiglass &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; une plaque de polystérene &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; 3 AOPs (comparateur) &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; 3 Diodes &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt; 2 Ventilateurs 100 m3/h 12V [http://www.sellande.com/sellande-webcom/home/393-ventilateur-12v-100m3-h-3752132012327.html?gclid=CjwKEAiAlZDFBRCKncm67qihiHwSJABtoNIgNjN3dRX7D5BOfBUbN9WdjSVzbfLBF_YsaI59D0MaCxoC_oDw_wcB] &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt; 1 Panneau solaire 10Wc 12V [https://www.apb-bluepower.com/panneau-solaire-photovoltaique-12v-10w-apb-energy,fr,4,QX-P-10.cfm] &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; 2 sondes de températures [http://fr.rs-online.com/web/p/sondes-de-temperature/1241079/] &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt; une Batterie 70Ah 12V [https://www.manomano.fr/batterie-2319?model_id=1988070&amp;amp;referer_id=537135&amp;amp;gclid=CjwKEAiAlZDFBRCKncm67qihiHwSJABtoNIgcniSnImZEGSLytrHpgv4fTHGFuj1r30kH340E0wmPxoC6ovw_wcB] &amp;lt;/span&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| P2 [[IMA4 2016/2017 P2|Réseau de capteurs sur smartphone]]&lt;br /&gt;
|   &lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;6* Capteur de température[http://www.mouser.fr/ProductDetail/Microchip-Technology/TC1047VNBTR/?qs=sGAEpiMZZMucenltShoSnjkfRJmEyKRQimeb4yJa%2fn8%3d]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;1* Smartphone sous Android 6.0+&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;6* ATmega32u4-AU (package TQFP), [http://www.mouser.fr/ProductDetail/Microchip-Technology-Atmel/ATMEGA32U4RC-AU/?qs=sGAEpiMZZMvqv2n3s2xjsWfDNH99npBWOb9m5kVBeoM%3d]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;6* Connecteur USB Zx20-B-5S-UINT(30)[http://www.mouser.fr/ProductDetail/Hirose-Electric/ZX20-B-5S-UNIT30/?qs=%2fha2pyFaduiI1PHIQp025swiTaQgBs3xrF3lm%2fjmZrmtw6zfCgwPXHsVofi5faNN]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;5* quartz 16Mhz [http://fr.farnell.com/multicomp/mcrsd16000f183000rr/quartz-16mhz-18pf-hc49-us-smd/dp/2395958]&amp;lt;/span&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;6* Chip guard[http://eu.mouser.com/ProductDetail/Bourns/CG0603MLC-05E/?qs=%2fha2pyFaduj8GWc5RpRwWsoz%252bsBNDfM0b%2fMwO0m8cAS%252b28tb9AwLWQ%3d%3d]&amp;lt;/span&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;10* Fusibles réarmables[http://eu.mouser.com/ProductDetail/Bourns/MF-MSMF050-2/?qs=%2fha2pyFadujDIyYlSEAmAtmxzhQX2R56dU6AOyKWoF1gS%2fKyt5ZQcQ%3d%3d]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;5* header(36 contacts) [http://fr.farnell.com/3m/929974-01-36/connecteur-rcpt-36pos-1-rangee/dp/2396216?MER=sy-me-pd-mi-alte]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;20* résistances de 22 ohm[http://fr.farnell.com/multicomp/mc0063w0603522r/res-couche-epaisse-22r-5-0-063w/dp/9331891]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;10* résistances de 10k ohm[http://fr.farnell.com/susumu/rr0816p-103-b-t5/res-couche-mince-10k-0-1-0-063w/dp/1653253]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;10* résistances de 1M ohm[http://fr.farnell.com/multicomp/mc0063w060311m/res-couche-epaisse-1m-1-0-063w/dp/9330410?ost=9330410&amp;amp;selectedCategoryId=&amp;amp;categoryNameResp=Toutes%2Bles%2Bcat%25C3%25A9gories&amp;amp;searchView=table&amp;amp;iscrfnonsku=false]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;10* capacités(CMS) de 22 pF[http://fr.farnell.com/multicomp/mc0603n220j500ct/condensateur-mlcc-c0g-np0-22pf/dp/1759057]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;10* capacité(CMS) de 1 uF[http://fr.farnell.com/walsin/0603x105k100ct/condensateur-mlcc-x5r-1uf-10v/dp/2496916]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;10* capacité(CMS) de 100 nF[http://fr.farnell.com/walsin/0603b104k500ct/condensateur-mlcc-x7r-0-1uf-50v/dp/2496834]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;10* diode[http://www.mouser.fr/ProductDetail/Wolfspeed-Cree/C3D16065A/?qs=sGAEpiMZZMtbRapU8LlZD2p%2ftt67Z%252br4005PkgBuAD1SM4AyiGk4XA%3d%3d]&amp;lt;/span&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| P10 [[IMA4 2016/2017 P10|Application de suivi de prise de médicaments]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Smartphone sous Android&amp;lt;/span&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| P11 [[IMA4 2016/2017 P11|Amélioration de l'accueil d'enfants hospitalisés]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Raspberry Pi&amp;lt;/span&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| P14 [[IMA4 2016/2017 P14|Sex toy connecté]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; 2*Adaptateur 5V [http://www.gotronic.fr/art-adaptateur-mv530n-8000.htm]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; 2*Embase adaptateur [http://www.gotronic.fr/art-embase-alim-sa21a-14961.htm]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; 2*Arduino mini [http://fr.rs-online.com/web/p/kits-de-developpement-pour-processeurs-et-microcontroleurs/7617327/]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; 2*Modules bluetooth [http://fr.rs-online.com/web/p/modules-bluetooth/1244407/]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; Capteur de température [http://www.mouser.fr/ProductDetail/Maxim-Integrated/MAX31725MTA+/?qs=sGAEpiMZZMucenltShoSnuJtr4xlG60lboc%252bnebe514%3d]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; 2*Accéléromètre [http://www.mouser.fr/ProductDetail/NXP-Freescale/MMA8652FCR1/?qs=sGAEpiMZZMs0JOhy9PM0USp5vOY2ClxODTM36syD6sQ%3d]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; 4*Vibreurs [http://www.gotronic.fr/art-vibreur-miniature-vm1201-20685.htm]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; 5*Servomoteurs [http://www.gotronic.fr/art-servomoteur-s07nf-25182.htm]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; 5* Capacité 0.1µF (*1 capteur température, *2 accéléromètre, 2* régulateur)[http://fr.farnell.com/walsin/0805b104k500ct/condensateur-mlcc-x7r-0-1uf-50v/dp/2496944]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; 3*Résistance 4.7kohms ( capteur température) [http://fr.farnell.com/vishay/crcw08054k70fkta/res-couche-epaisse-4-7k-1-0-125w/dp/1653013RL]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;2*Capacité 0.33µF (régulateur) [http://www.mouser.fr/ProductDetail/Wurth-Electronics/885012105003/?qs=sGAEpiMZZMvzv9EAOJZmO9b76UYLhwTmM7EN2czdHKU%3d]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; 2*Régulateur 3.3V [http://www.mouser.fr/ProductDetail/Texas-Instruments/UA78M33CDCYR/?qs=sGAEpiMZZMtUqDgmOWBjgHbKmseNGGTSe%2f5roer8H%2fU%3d]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; Silicone alimentaire (internet conseillé par un chercheur de l'inria. Prendre sorta clear 40A) [http://www.creation-silicone.com/31.la-serie-sorta-clear] (la cigale et la fourmi à lille) [http://www.cigaleetfourmi.fr/silicones-alginates-et-latex/1262-silicone-alimentaire-peau-liquide-2-kg.html#more_info_tabs] (Rougier&amp;amp;Plé à lille) [http://www.rougier-ple.fr/silicone-alimentaire-4428-1-kg.r.html]  &amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; ARduino uno pour essais&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Servomoteur pour essais&amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Deux téléphones sur android (dont un LG G4C de l'école)&amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P18 [[IMA4 2016/2017 P18|Education de la position de tête]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Accéléromètre 4 ADXL335[http://www.gotronic.fr/art-module-accelerometre-adxl335-3-axes-ef03049-23504.htm]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Module Adafruit 9-DOF [http://www.gotronic.fr/art-module-9-dof-ada2472-23896.htm]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Smartphone sous Android&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Câble 12 conducteurs  [http://fr.farnell.com/pro-power/pp000342/cable-12-conducteurs-0-5mm2-25m/dp/2440126]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Arduino Mega&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Résistance &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Module WIFI ESP 8266 [http://www.gotronic.fr/art-module-wifi-serie-esp8266-113990084-23666.htm]&amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P19 [[IMA4 2016/2017 P19|Orchestre électronique]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Arduino UNO x5.&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P20 [[IMA4 2016/2017 P20|Création d’un environnement virtuel de test]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P21 [[IMA4 2016/2017 P21|Conception d’une MPS Polyvalente]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P25 [[IMA4 2016/2017 P25|Robot mobile Polytech'Lille]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Atmega 328p [http://fr.farnell.com/atmel/atmega328p-pu/micro-8-bits-avr-32k-flash-28pdip/dp/1715487]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Atmega 328p CMS [http://fr.farnell.com/atmel/atmega328p-au/micro-8-bits-avr-32k-flash-32tqfp/dp/1715486?selectedCategoryId=&amp;amp;exaMfpn=true&amp;amp;categoryId=&amp;amp;searchRef=SearchLookAhead&amp;amp;searchView=table&amp;amp;iscrfnonsku=false]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;FT232R (*2) [http://fr.farnell.com/ftdi/ft232rl-reel/usb-vers-uart-ssop28-232/dp/1146032]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;USB (*2) [http://fr.farnell.com/wurth-elektronik/65100516121/mini-usb-2-0-type-b-receptacle/dp/1642036]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Led (*4)[http://fr.farnell.com/kingbright/kph-1608sgc/led-12mcd-vert-568nm/dp/2426215]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;bouton(*2) [http://www.mouser.fr/ProductDetail/E-Switch/LL3301NF065QG/?qs=sGAEpiMZZMvxtGF7dlGNpqqmTFthXBmf0KM%252bqj1KR%252bA%3d]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Diode(*2)[http://eu.mouser.com/ProductDetail/Microsemi/1N4148UR-1/?qs=sGAEpiMZZMtoHjESLttvkmKnFwXErGnblScnaPsZQPwnq%2fwjQSnhEg%3d%3d]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;LM1117(*2) [http://www.mouser.fr/new/Texas-Instruments/nationalLM1117/]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;TB6612FNG (*2) [http://www.gotronic.fr/art-commande-de-2-moteurs-tb6612fng-2x1a-21716.htm]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Quartz 16 MHz (*2)[http://fr.farnell.com/raltron/as-16-000-18/quartz-16mhz-18pf-hc-49s/dp/1611761?MER=bn_para_1TP_LastViewed_3]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;RJ11(*6) [http://fr.farnell.com/molex/95522-2667/fiche-rj11-cat3-6-6/dp/2060715]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Resistor 1k &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Resistor 470 &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Resistor 100 &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Resistor 1M &amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Capacité 10 nF &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Capacité 10uF &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Capacité 22pF &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;'''MATERIELS CAPTEUR DE LIGNE'''[http://projets-imasc.plil.net/mediawiki/index.php?title=Finalisation_de_cartes_de_contr%C3%B4le_de_robot#Carte_capteur_de_ligne]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;'''MATERIELS CAPTEUR ULTRASON'''[http://projets-imasc.plil.net/mediawiki/index.php?title=Finalisation_de_cartes_de_contr%C3%B4le_de_robot#Carte_capteur_ultrason_.28en_cours.29]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;'''MATERIELS CODEUR INCREMENTAL'''[http://projets-imasc.plil.net/mediawiki/index.php?title=Finalisation_de_cartes_de_contr%C3%B4le_de_robot#Carte_Odom.C3.A8tre_.28en_cours.29]&amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P26 [[IMA4 2016/2017 P26|Train de véhicules]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;LEDs IR (x20), RS [http://fr.rs-online.com/web/p/led-ir/6548334/]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Phototransistors IR (x20), RS [http://fr.rs-online.com/web/p/phototransistors/6548047/]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Drivers moteur Pololu (x1), GoTronic [http://www.gotronic.fr/art-commande-de-2-moteurs-tb6612fng-2x1a-21716.htm]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Drivers moteur TB6612FNG (x3), Mouser [http://www.mouser.fr/Search/ProductDetail.aspx?qs=rsevcuukUAy2UalRuv4E%2fQ%3d%3d] &amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Borniers à vis (x20), Farnell [http://fr.farnell.com/camdenboss/ctb0502-2/bornier-carte-a-fil-2-voies-12awg/dp/2493622?MER=en-me-sr-b-all]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Résistances 220 Ohms CMS (x20), Mouser [http://www.mouser.fr/ProductDetail/Vishay-Dale/CRCW0603220RFKEA/?qs=sGAEpiMZZMtlubZbdhIBIKySljYCMs0HAiopx1mcVY0%3d] &amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Résistances 470 kOhms CMS (x30), Mouser [http://www.mouser.fr/ProductDetail/Panasonic/ERJ-3GEYJ474V/?qs=sGAEpiMZZMtlubZbdhIBIDkNbKahCB4%252bXwMzav7V8qQ%3d]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;LEDs couleur (x10), RS [http://fr.rs-online.com/web/p/led/8134845/]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Fils m-m (x1 lot de 65), Farnell [http://fr.farnell.com/multicomp/mcbbj65/assortiment-de-jumper-fil-65pcs/dp/2396146]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Capas 10uF CMS (x20) Mouser [http://www.mouser.fr/ProductDetail/Murata-Electronics/ZRB18AR61C106ME01L/?qs=sGAEpiMZZMs0AnBnWHyRQPHsfd5klL7FP%2fi0oh%252bVTwkomqr6NYKsqQ%3d%3d]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Capas 0.1uF CMS (x20) Mouser [http://www.mouser.fr/ProductDetail/Kemet/C0603C104K4RACTU/?qs=sGAEpiMZZMs0AnBnWHyRQFqPnX0OlvcoGdtRY%252bgH1%2fs%3d]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Embases CI 40 contacts 1 rangée (x6) RS [http://fr.rs-online.com/web/p/embases-de-circuit-imprime/4232841/]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Connecteur HE14 MH100 (x10) [http://www.gotronic.fr/art-connecteur-he14-mh100-4457.htm]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Connecteur HE14 MH190 (x10) [http://www.gotronic.fr/art-connecteur-he14-mh190-4458.htm]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Capteurs Ultrasons SR04 (x3)&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Piles ou accumulateurs (x16 à 1.5V)&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Odomètres codeurs (x4) &amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Boutons poussoirs (x4) [http://www.gotronic.fr/art-bp-miniature-krs1273-16976.htm] &amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Interrupteurs (x4) &amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Colliers de serrage &amp;lt;/span&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| P27 [[IMA4 2016/2017 P27|Sonde atmosphérique]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Capteur de température DS75LV [http://www.mouser.fr/ProductDetail/Maxim-Integrated/DS75LVU+/?qs=sGAEpiMZZMucenltShoSnqz2Nq7rAtSUouPEUh693aE%3d]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Capteur de pression [http://www.mouser.fr/ProductDetail/Measurement-Specialties/5525DSO-SB005GS/?qs=sGAEpiMZZMvhQj7WZhFIAJ6e00q4%2fiLk8vQEbfsXmbvuJAmWYTr67w%3d%3d]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Module LoRa [http://www.mouser.fr/ProductDetail/Adafruit/3179/?qs=sGAEpiMZZMuC4zZxLL0ZTXmUcMwoRc9uEac7jsWPYbgAg4D4CJduaQ==]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Module GPS [http://www.mouser.fr/ProductDetail/Adafruit/3179/?qs=sGAEpiMZZMuC4zZxLL0ZTXmUcMwoRc9uEac7jsWPYbgAg4D4CJduaQ==]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;1 RaspberryPi&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Batterie 5000 mAh [http://fr.rs-online.com/web/p/batteries-externes/7757508/]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;1 carte microSD pour Raspberry 8GB.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P28 [[IMA4 2016/2017 P28|Adaptation d'un émulateur de calculatrices TI]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P29 [[IMA4 2016/2017 P29|Conteneurs pour site Web]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P30 [[IMA4 2016/2017 P30|Voiture radiocommandée controlée par gant]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Accéléromètre ADXL335 &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Arduino Nano &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; 2x Module XBee + 1x Shield &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Arduino UNO &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Xbee Adapter Board&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; Raspberry Pi&amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P31 [[IMA4 2016/2017 P31|Accueil personnalisé par drone]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Carte RaspberryPi (Au minimum modèle 2)&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Alimentation MicroUSB pour RaspberryPi&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Carte MicroSD 16Gb&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Dongle Bluetooth BLED112-V1[http://fr.rs-online.com/web/p/adaptateurs-bluetooth/8077742/]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Capteur de mesure Sharp GP2Y0A02YK x3 [http://www.gotronic.fr/art-capteur-de-mesure-sharp-gp2y0a02yk-11536.htm]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Appareil mobile sous OS Android (portable ou tablette )&amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P32 [[IMA4 2016/2017 P32|Sécurité: brouilleur d'ondes]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Récepteur LoRa 433/868Mhz&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Logiciel Code compiler équipé d'un GCC pour MSP430&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Carte cc430f5137 868MHz&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;1 antenne 868MHz[http://www.mouser.fr/ProductDetail/Linx-Technologies/ANT-868-CW-HWR-RPS/?qs=sGAEpiMZZMuBTKBKvsBmlOBg0H7cD5uyLmjn8%2f6ScJQ%3d]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Breadboard&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Quelques LEDs&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;pour 433MHz&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;(carte arduino + cc1101)&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Quartz 26MHz [http://fr.farnell.com/txc/7a-26-000maaj-t/crystal-26mhz-18pf-5-x-3-2mm/dp/2061710]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;2 antennes 433MHz[http://www.mouser.fr/ProductDetail/LPRS/ANT-SR433/?qs=sGAEpiMZZMuBTKBKvsBmlL2JeKAJ5GlFgePIl66EJDQoPGtUlcrRBQ%3d%3d]&amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P33 [[IMA4 2016/2017 P33|Sécurité: ingénierie inverse de protocole réseau]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; 3 modules LoRa 3179 Adafruit [http://www.mouser.fr/ProductDetail/Adafruit/3179/?qs=sGAEpiMZZMuC4zZxLL0ZTXmUcMwoRc9uEac7jsWPYbgAg4D4CJduaQ==],&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| P34 [[IMA4 2016/2017 P34|Interface Haptique, simulateur de formes et de textures]]&lt;br /&gt;
|&lt;br /&gt;
Aucun matériel nécessaire.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P37 [[IMA4 2016/2017 P37|Gamelle connectée]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Émetteur et récepteur infrarouge/photodiode (seulement 1 de chaque prêtées, il en faut 6 à 7 de chaque)&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Adaptateur PS512S  [http://www.gotronic.fr/art-adaptateur-ps512s-19913.htm] &amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Shield carte SD (carte SD également)&amp;lt;span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Module horloge temps réel (RTC) [http://www.gotronic.fr/art-module-horloge-temps-reel-ada3296-25536.htm]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Capteur de proximité IR [http://www.gotronic.fr/art-capteur-de-proximite-ir-38-khz-2460-21766.htm]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Capteur Ultrason &amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;LEDs &amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Résistances &amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Arduino méga &amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;ESP8266 &amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Servomoteur 360 &amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;Solution de secours : Rapsberry &amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;Solution de secours : Balance &amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P38 [[IMA4 2016/2017 P38|Veilleuse enfant connectée]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Raspberry pi modèle B minimum&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;batterie&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;circuit shut down(une breadboard, une LED, une resistance 220 ohms, 3 fils M/M, 2 fils M/F)&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;un interrupteur on/off Référence : 7547 Selectronic&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;bois de palette&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;dongle wi pi&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Rétroprojecteur&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;timer(circuit de retardement 5 secondes)&amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P39 [[IMA4 2016/2017 P39|Projecteur laser]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Deux lasers de différentes couleurs&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Une paire de galvanomètres à miroir&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Arduino&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Raspberry Pi3&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Câble secteur&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Drivers galvanomètres x2&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Alimentation laser&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Lunette de sécurité x2 [https://www.amazon.fr/Uvex-S1933X-Eyewear-SCTOrange-Anti-Fog/dp/B000USRG90/ref=sr_1_1?ie=UTF8&amp;amp;qid=1485441383&amp;amp;sr=8-1&amp;amp;keywords=uvex+s1933x]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Alimentation 230V/5V 1A [http://www.miniinthebox.com/fr/dual-usb-eu-prise-murale-5v-2a-voyage-adaptateur-chargeur-d-alimentation-pour-iphone7-6-xiaomi-samsung-et-autre-telephone-portable_p5410410.html?currency=EUR&amp;amp;litb_from=paid_adwords_shopping&amp;amp;sku=429_6917%7C752_20648&amp;amp;utm_source=google_shopping&amp;amp;utm_medium=cpc&amp;amp;adword_mt=&amp;amp;adword_ct=138705676724&amp;amp;adword_kw=&amp;amp;adword_pos=1o5&amp;amp;adword_pl=&amp;amp;adword_net=g&amp;amp;adword_tar=&amp;amp;adw_src_id=9653316068_661261352_33588296076_aud-79897721311:pla-256966386459&amp;amp;gclid=Cj0KEQiA_KvEBRCtzNil4-KR-LIBEiQAmgekFxxKjJJWBYCJlDZEa3Ke_2_WR0DzGVbz-jaCZHVIBoMaAvld8P8HAQ]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Boitier ABS [http://fr.farnell.com/multicomp/g3118/boitier-abs-240x120x60mm-ip65/dp/1526656]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;DAC 4 canaux, avec interface I²C [http://www.mouser.fr/ProductDetail/Adafruit/1083/?qs=sGAEpiMZZMsMyYRRhGMFNtB2KhoPg%2fPbP3CExTYfM4M%3d]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Connecteur C14 [http://fr.farnell.com/schurter/3-101-141/fiche-iec-c14-c18-avec-filtre/dp/2671668]&amp;lt;/span&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P44 [[IMA4 2016/2017 P44|3615 Facebook]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Un Minitel 1 Bistandard Alcatel Telic&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; un connecteur DIN 5 broches[http://www.selectronic.fr/din-cordon-male-5-broches-45.html]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; un Arduino Uno [http://www.selectronic.fr/carte-arduino-uno.html]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; un module Ethernet [http://www.selectronic.fr/shield-ethernet-v2.html]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; deux optocoupleurs 4N25&amp;lt;/span&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P46 [[IMA4 2016/2017 P46|Aide anti-gaspillage alimentaire ]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Rfduino DIP board + USB shield, Mouser [http://eu.mouser.com/ProductDetail/RF-Digital-Wireless/RFD90101/?qs=sGAEpiMZZMsrChSOYEGTCSSoddgmKGJ7o1oPrqG%2fa%2fU%3d]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Rfduino Dual AAA shield, Mouser [http://eu.mouser.com/ProductDetail/RF-Digital-Wireless/RFD22126/?qs=sGAEpiMZZMsrChSOYEGTCTCnakKeCOV7XxQSzqVKQX4%3d]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Raspberry Pi&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Clef wifi&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;2 piles de 1,5V AAA &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;1 buzzer, Mouser [http://www.mouser.fr/ProductDetail/TDK/PS1240P02BT/?qs=sGAEpiMZZMtWZVZ%2fjgUYS49cTVUJP3OaWyx1fxdmA7I%3d] &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;1 accéléromètre, mouser [http://www.mouser.fr/ProductDetail/NXP-Freescale/MMA8653FCR1/?qs=sGAEpiMZZMs0JOhy9PM0USp5vOY2ClxOY1G2fK3tzYI%3d] &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;3 LEDs de couleurs différentes, 2 Mouser Rouge[http://www.mouser.fr/ProductDetail/Lumex/SSL-LX5093LBI-SRD/?qs=sGAEpiMZZMvHYEB9WUp7ElLqM0HAvqw07NtkT0umwJ8%3d], Mouser Vert [http://www.mouser.fr/ProductDetail/Dialight/521-9465F/?qs=sGAEpiMZZMvHYEB9WUp7EvzO6BrrarQchHylkK4n3ZA%3d], &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Smartphone sous Android&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Aimants, Farnell [http://fr.farnell.com/duratool/d01767/aimant-12-x-3mm-pqt6/dp/1888096]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;3 Résistances CMS 330 Ohms, Mouser [http://www.mouser.fr/ProductDetail/Vishay/CRCW1206330RFKEA/?qs=sGAEpiMZZMvdGkrng054t%252b8cnVAnHPZkGMXtw0W%2fcW8%3d] &amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;1 Transistor Bipolaire, Mouser [http://www.mouser.fr/ProductDetail/Fairchild-Semiconductor/MMBTH10/?qs=sGAEpiMZZMvDjfggS9kWsbCZIMjqR5oUPy4t%252bWqVHyk%3d] &amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P47 [[IMA4 2016/2017 P47|Modélisation d’un robot mobile]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Logiciel MatLab Simulink&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Logiciel RobotinoView&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Robotino&amp;lt;/span&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P48 [[IMA4 2016/2017 P48|Surveillance d'un robot mobile]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Logiciel MatLab Simulink&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Logiciel RobotinoView&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Robotino&amp;lt;/span&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=39873</id>
		<title>IMA4 2016/2017 P46 : Aide anti-gaspillage alimentaire</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=39873"/>
				<updated>2017-03-01T15:38:43Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : /* Altium Designer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
En France, nous jetons en moyenne 21% des aliments que nous achetons, ce qui représente une perte de 100 à 160 euros par an par habitant. Cela est en partie dû à la date limite de consommation associée à chaque produit. En effet, à partir du moment où cette date sera dépassée le consommateur jettera les produits concernés sans réfléchir, même si ceux-ci peuvent parfois être encore mangeables. Plutôt que d'essayer de les convaincre du contraire, il serait judicieux de proposer aux adeptes du gaspillage une aide permettant de gérer tous les aliments dont ils disposent chez eux afin d'éviter la surprise de tomber sur plusieurs produits périmés lorsqu'ils ouvrent la porte de leur frigo. &lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Ce projet permet d'aider les utilisateurs d'une part à mémoriser les denrées périssables qu'ils disposent dans leur réserve alimentaire et d'autre part d'avertir l'utilisateur qu'un événement important a lieu. Ceci peut être une notification qu'un aliment va bientôt dépasser sa date de péremption, que la porte du frigidaire est restée ouverte ou encore que le nombre d'aliments dans la réserve devient critique et qu'il faudra de nouveau l'alimenter. Enfin, le système aidera l'utilisateur à trouver des idées de repas pouvant permettre de consommer les aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Notre prototype permettra d'éviter le gaspillage alimentaire ainsi que d'aider l'utilisateur dans sa gestion du stockage d'aliments.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
&lt;br /&gt;
Notre système sera composé de 3 éléments. &lt;br /&gt;
&lt;br /&gt;
Premièrement, un ou des smartphones appartenant aux utilisateurs. Ces derniers permettront de scanner grâce à son appareil photo, le code barre du produit ainsi que sa date de péremption. Il servira aussi d'interface utilisateur pour notre système. En effet, c'est par cet outil que l'utilisateur pourra lister tous les aliments que l'utilisateur a dans sa base et tout ça en les triant par date de péremption, ou encore voir les recettes possibles pour consommer des aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Deuxièmement, un serveur, de type Raspberry, qui permettra de stocker la base de donnée contenant les aliments de la réserve. Ce serveur sera connecté par wifi.&lt;br /&gt;
 &lt;br /&gt;
Troisièmement, un contrôleur (Rfduino) qui comportera une LED pour indiquer la mise sous tension du contrôleur, une LED pour prévenir l'utilisateur qu'un aliment va bientôt passer sa date de péremption et une dernière LED pour prévenir l'utilisateur que son niveau de réserve est critique ainsi qu'un buzzer et un accéléromètre pour buzzer quand la porte du frigo est restée trop longtemps ouverte. Ce dernier sera fixé au frigo par l'intermédiaire d'un dispositif adapté qui sera un système aimanté qui se pose sur le frigo.&lt;br /&gt;
&lt;br /&gt;
Nous implémenterons donc une application mobile Android qui fera le lien entre les 2 autres systèmes.&lt;br /&gt;
&lt;br /&gt;
Pour la partie électronique que nous aurons à réaliser, nous utiliserons une Breadboard pour faire des premiers tests puis nous créerons une carte PCB pour notre montage final.&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
On utilisera une Raspberry Pi en guise de serveur pour pouvoir s'occuper du stockage de toutes les données dans notre projet puisque notre contrôleur sera incapable de les contenir, ce n'est d'ailleurs pas son but ici.&lt;br /&gt;
&lt;br /&gt;
Notre smartphone fera donc le lien entre notre base de données et notre système embarqué par l'intermédiaire de l'application mobile.&lt;br /&gt;
&lt;br /&gt;
Nous prendrons ici un RFduino puisque celui-ci nous permet d'ajouter des modules comme bon nous semble afin d'adapter le système aux besoins de notre application. Il est également parfaitement compatible avec les applications Android. De plus, nous avons un Bluetooth directement intégré au RFduino pour s'assurer que les liaisons RFduino-application mobile se fassent correctement. &lt;br /&gt;
On notera également que ce contrôleur consomme peu de courant et ne demande qu'une faible tension d'alimentation, critères importants pour ce genre de projet. C'est la raison principale de son utilisation pour être utilisé comme interface physique sur le frigo, en ajoutant également sa taille réduite comparée à la Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
&lt;br /&gt;
Nous avons donc besoin du matériel suivant :&lt;br /&gt;
&lt;br /&gt;
*Raspberry Pi.&lt;br /&gt;
*Clef wifi&lt;br /&gt;
*RFduino (RFD22102 DIP Board, RFD22121 USB Shield, RFD22126 Dual AAA battery shield).&lt;br /&gt;
*2 piles AAA.&lt;br /&gt;
*3 leds tranversantes.&lt;br /&gt;
*3 Résistances 330 Ohm.&lt;br /&gt;
*1 Résistance 10 kOhm.&lt;br /&gt;
*Un buzzer.&lt;br /&gt;
*Accéléromètre.&lt;br /&gt;
*Aimants&lt;br /&gt;
*Un boîtier permettant d'intégrer la RFduino + fixation sur le frigo (modélisation à voir).&lt;br /&gt;
&lt;br /&gt;
Pour le buzzer, l'accéléromètre et les résistances, nous choisirons des composants CMS pour nous permettre d'avoir une carte plus petite.&lt;br /&gt;
&lt;br /&gt;
===Calendrier prévisionnel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Liste des tâches à effectuer====&lt;br /&gt;
&lt;br /&gt;
* Configurer la Raspberry :&lt;br /&gt;
** Installer et configurer le serveur.&lt;br /&gt;
** Créer le diagramme UML de notre future base de données.&lt;br /&gt;
** Créer la base sur le serveur.&lt;br /&gt;
** Configurer la connexion WiFi.&lt;br /&gt;
&lt;br /&gt;
* Monter et programmer la RFduino :&lt;br /&gt;
** Connecter les différents modules au RFduino (accéléromètre, LEDs, buzzer, Batterie, module Bluetooth).&lt;br /&gt;
** Récupérer les consignes du smartphone grâce au Bluetooth.&lt;br /&gt;
** Programmer le comportement du RFduino en fonction des consignes.&lt;br /&gt;
** Construire le boitier final.&lt;br /&gt;
&lt;br /&gt;
* Implémenter l'application mobile Android :&lt;br /&gt;
** Une première activité permettant de se connecter au RFduino et à la Raspberry.&lt;br /&gt;
** Scanner une date et un code barre.&lt;br /&gt;
** Ajout/suppression d'un aliment dans la base de donnée.&lt;br /&gt;
** Envoi d'une consigne au RFduino.&lt;br /&gt;
** Rendre l'interface utilisateur ergonomique (lister aliments, envoyer vers page de recettes avec l'utilisation des aliments bientôt périmés...).&lt;br /&gt;
&lt;br /&gt;
====Calendrier====&lt;br /&gt;
&lt;br /&gt;
Répartition du temps consacré au projet (120h *2) :&lt;br /&gt;
&lt;br /&gt;
*Partie Raspberry : 60h&lt;br /&gt;
*Partie RFduino : 60h&lt;br /&gt;
*Partie développement mobile : 120h&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
&lt;br /&gt;
===Résumé===&lt;br /&gt;
&lt;br /&gt;
====Semaine 1====&lt;br /&gt;
&lt;br /&gt;
'''23/01''' :  &lt;br /&gt;
* Installation du logiciel Android Studio pour être prêt à commencer l'application mobile.&lt;br /&gt;
* Création du Repository Git sur GitHub : https://github.com/FrancoisLefevre12/Optali.git&lt;br /&gt;
* Réalisation de différents schémas fonctionnels pour se donner une idée du travail à effectuer, aussi bien du software que du hardware.&lt;br /&gt;
* Quelques précisions supplémentaires apportées sur le cahier des charges.&lt;br /&gt;
* Ajout de liens de référence pour la liste de matériel à acheter.&lt;br /&gt;
&lt;br /&gt;
'''25/01''' :  &lt;br /&gt;
* Précision des composants requis (accéléromètre, buzzer, LEDs, résistances).&lt;br /&gt;
* Écriture du montage à la main.&lt;br /&gt;
* Étude du fonctionnement de l'accéléromètre, du buzzer.&lt;br /&gt;
* Écriture de la structure de l'application à la main.&lt;br /&gt;
&lt;br /&gt;
'''26/01''' :&lt;br /&gt;
*Réalisation graphique de la première page de l'application.&lt;br /&gt;
*Conception du schéma électrique pour tous les composants connectés au RFduino.&lt;br /&gt;
&lt;br /&gt;
====Semaine 2====&lt;br /&gt;
&lt;br /&gt;
'''30/01''' :&lt;br /&gt;
*Réalisation du diagramme UML de la base de données qui sera stockée sur la Raspberry Pi&lt;br /&gt;
*Installation de l'outil de développement mobile sur le second PC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''01/02''' :&lt;br /&gt;
*Nous nous sommes d'abord rendus compte que la résistance entre un des GPIO et l'accéléromètre était inutile, nos premiers calculs étaient erronés. Nous ne la garderons donc pas sur notre schéma électrique final.&lt;br /&gt;
*Avancement sur la partie application mobile : réalisation de la page &amp;quot;Ajout&amp;quot; sur laquelle nous tomberons après avoir cliquer sur &amp;quot;ajout&amp;quot; sur la page principale de l'application. Nous avons étendu l'activité principale jusqu'à cette nouvelle activité &amp;quot;Ajout&amp;quot;.&lt;br /&gt;
*Nous avons récupéré notre Raspberry Pi pour commencer à installer notre base de données dessus. Nous avons actuellement quelques problèmes pour nous connecter sur la Raspberry. Nous travaillons sur ce point.&lt;br /&gt;
&lt;br /&gt;
'''02/02''' :&lt;br /&gt;
* Application mobile : Mise en place des LEDs sur la home page et de la zone de notification avec les messages associés.&lt;br /&gt;
&lt;br /&gt;
====Semaine 3====&lt;br /&gt;
&lt;br /&gt;
'''06/02''' :&lt;br /&gt;
*Nous arrivons à accéder à la Raspberry via le port série de celle-ci. Nous avons également configuré sa connexion Ethernet afin de pouvoir télécharger des paquets dessus et installer notre base de données. &lt;br /&gt;
*Nous rencontrions des problèmes sur le second PC de travail pour récupérer le projet Optali sur Android Studio via notre dépôt GIT. Nous avons pu rectifier ce souci.&lt;br /&gt;
&lt;br /&gt;
'''08/02''' :&lt;br /&gt;
*Tentative d'établissement d'un point d'accès WiFi sur notre Raspberry. Nous n'avons pas réussi pour le moment.&lt;br /&gt;
*Restructuration du Repository git.&lt;br /&gt;
*Essai d'importation de la librairie Zxing qui permettra de décoder les code-barres.&lt;br /&gt;
&lt;br /&gt;
====Semaine 4====&lt;br /&gt;
&lt;br /&gt;
'''13/02'''&lt;br /&gt;
*Configuration du wifi de la Raspberry. &lt;br /&gt;
*Étude d'une mise en place d'un service web via php.&lt;br /&gt;
&lt;br /&gt;
'''15/02'''&lt;br /&gt;
*Mise en place d'un lecteur de caractère sur l'application. On utilisera tesseract.&lt;br /&gt;
*Début de la création du PCB via Altium designer. Création d'une librairie pour l'accéléromètre qui est un composant CMS assez spécial. On pourra cependant utiliser des headers classiques pour le buzzer et les LEDs puisque ce sont des composants traversants.&lt;br /&gt;
*Création des premiers fichiers php de connection à la base de donnée et d'insertion d'aliments. Tous ces fichiers seront déposés de la même manière sur le dépôt git.&lt;br /&gt;
&lt;br /&gt;
'''16/02'''&lt;br /&gt;
*Adaptation avec prise en compte des cas du code php d'insertion de produits par requête sur la base de donnée.&lt;br /&gt;
*Ajout du code d'implantation de la base de donnée.&lt;br /&gt;
*Altium: Accéléromètre terminé, mise en place des résistances.&lt;br /&gt;
&lt;br /&gt;
====Semaine 5 (interruption pédagogique)====&lt;br /&gt;
&lt;br /&gt;
'''22/02 (3 heures)'''&lt;br /&gt;
*Installation de l'OS de la raspberry.&lt;br /&gt;
*Installation d'Openssh-server, apache2, php5, iptables, mysql-server.&lt;br /&gt;
*Redirection des ports du routeur vers la raspberry.&lt;br /&gt;
*Configuration de iptables de la raspberry.&lt;br /&gt;
&lt;br /&gt;
'''23/02 (2 heures)'''&lt;br /&gt;
*Implantation de la base de donnée sur la raspberry pi.&lt;br /&gt;
&lt;br /&gt;
====Semaine 6====&lt;br /&gt;
'''27/02'''&lt;br /&gt;
*Vérification de la syntaxe de l'insertion de valeurs dans la base de donnée.&lt;br /&gt;
*Création des premières requêtes sur la base de donnée.&lt;br /&gt;
*Finalisation du PCB de l'Optali Board.&lt;br /&gt;
&lt;br /&gt;
===Premières idées===&lt;br /&gt;
&lt;br /&gt;
Voici les premières idées de l'application mobile et du composant fixé sur le frigo.&lt;br /&gt;
[[Fichier:Optali_v1.jpg|400px|thumb|left|Optali version 1]]&lt;br /&gt;
[[Fichier:OptaliBox_v1.jpg|400px|thumb|center|OptaliBox version 1]]&lt;br /&gt;
[[Fichier:P46_schema.jpg|400px|thumb|center|Schéma électrique version 1]]&lt;br /&gt;
&lt;br /&gt;
En s'intéressant aux différentes datasheets ou données constructeur des composants que nous voulons utiliser, nous trouvons indispensable d'utiliser des résistances de 330 Ohms pour l'utilisation des LEDs, pour éviter de les griller.&lt;br /&gt;
&lt;br /&gt;
Edit : Retrait de la résistance R2.&lt;br /&gt;
&lt;br /&gt;
Concernant l'accéléromètre, nous avons choisi un modèle qui nous permet de brancher directement ce module sur une broche du RFDuino. On branchera directement les GPIOs de la RFduino sur les ports SDA et SCL de l'accéléromètre qui correspondent à l'interface I2C pour pouvoir communiquer. On utilisera aussi la broche INT1 pour pouvoir générer des interruptions directement depuis l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
On connectera le buzzer directement à une broche de la RFduino aussi. Concernant celui-ci il reste une incertitude puisqu'on ne trouve aucune information sur le courant à fournir pour l'alimentation de ce composant sur sa datasheet. Après différentes recherches sur Internet, il pourrait être nécessaire d'utiliser un montage amplificateur à transistor comme un émetteur commun pour booster le courant en sortie d'une broche GPIO. Quelques buzzers trouvés avec des données constructeur montrent que ce type de composant nécessite généralement un courant d'environ 30 mA. Nous verrons dans la pratique si cela sera vraiment nécessaire. Par sécurité, on ajoutera un transistor bipolaire dans la liste de matériel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:screen_LED.png|400px|thumb|left|Données constructeur pour LEDs]]&lt;br /&gt;
[[Fichier:screen_accel.png|400px|thumb|center|Datasheet de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
===Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
====Configuration école====&lt;br /&gt;
&lt;br /&gt;
*Pour configurer notre Raspberry Pi, nous utilisons son port série et &amp;quot;minicom&amp;quot;. Pour pouvoir télécharger des paquets, il fallait la connecter au réseau. Nous lui avons donc affecté une adresse IP fixe avec le fichier /etc/network/interfaces. Voici les modifications qui ont été apportées : &lt;br /&gt;
&lt;br /&gt;
   auto eth0&lt;br /&gt;
   iface eth0 inet static&lt;br /&gt;
   address 172.26.78.15&lt;br /&gt;
   netmask 255.255.240.0&lt;br /&gt;
   gateway 172.26.79.254&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il a également fallu ajouter la commande &amp;quot;export http_proxy=http://proxy.polytech-lille.fr:3128&amp;quot; (il faudra effectuer cette commande à chaque démarrage de la Pi) pour pouvoir utiliser le proxy de l'école. &lt;br /&gt;
Nous avons de plus modifier le fichier /etc/resolv.conf avec la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
   nameserver 193.48.57.34&lt;br /&gt;
&lt;br /&gt;
Malgré cela, nous avions des soucis pour nous connecter au réseau. Il y avait en fait un processus dhcp en tâche de fond qui nous empêchait de garder le contenu de resolv.conf. Il a donc fallu trouver ce processus pour le &amp;quot;kill&amp;quot; et pouvoir accéder correctement au réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons du coup pu installer postgresql pour pouvoir configurer une base de données sur notre Pi.&lt;br /&gt;
&lt;br /&gt;
====Configuration à domicile====&lt;br /&gt;
&lt;br /&gt;
Pour nous mettre dans une situation plus fidèle à notre projet, nous avons configuré la raspberry à domicile.&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abords installé Raspbian, puis installé les paquets nécessaire au fonctionnement du serveur.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Openssh-server''': permettre d'accès à distance à la raspberry pour pouvoir y accéder depuis l'école.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Iptables''': pour sécuriser les ports non utilisé et libérer l'accès aux ports qui nous intéressent (ssh 22,http 80,https 443).&amp;lt;br&amp;gt;&lt;br /&gt;
- '''apache2, php5, mysql-server''' : pour mettre en place notre service web.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons rediriger les ports 80 et 22 du routeur pour pouvoir accéder à la raspberry de l'extérieur.&lt;br /&gt;
&lt;br /&gt;
Pour finir, nous avons créer un fichier de config iptables permettant de sécuriser un minimum la base de donnée et de permettre d'autoriser la communication des ports 22, 80 et 443 correspondants aux ports ssh, http et https. le fichier de configuration a été déposé dans le dépôt git. Il nous a fallut le rendre exécutable via un chmod. Puis pour l'exécuter à chaque démarrage du system, dans le fichier /etc/init.d/ taper : &lt;br /&gt;
&lt;br /&gt;
    sudo update-rc.d firewall defaults (si notrefichier s'appelle firewall et s'il est dans init.d)&lt;br /&gt;
&lt;br /&gt;
===Base de donnée===&lt;br /&gt;
&lt;br /&gt;
Nos données alimentaires disponibles par toute la famille doivent être stocké sur un serveur de base de donnée externe (tel une Raspberry pi). Nous nous proposons de créer le diagramme UML représentant cette future base de donnée.&lt;br /&gt;
[[Fichier:Optali_UML.jpg|700px|thumb|center|Diagramme UML base de donnée]]&lt;br /&gt;
&lt;br /&gt;
On créera donc 3 entités. Date, Product et Recipe. &lt;br /&gt;
&lt;br /&gt;
- Product rassemble les aliments qui sont ou ont été dans la réserve alimentaire. NbProdIn permet de connaître le nombre de produits identiques (possibilité de date différentes mais pas de doublons et on garde l'information de quantité. NbProdBought donne une information sur le nombre de produits identique ayant été acheté depuis la mise en service de la base de donnée. Ainsi nous pourrons par la suite proposer une liste de course à l'utilisateur en fonction de la fréquence d'achat des produits.&lt;br /&gt;
&lt;br /&gt;
- Recipe contient les recettes que pourra rentrer l'utilisateur sur l'application. L'utilisateur pourra ainsi se voir proposer des recettes en fonction de ce qu'il a dans son frigo et de ses recettes personnelles.&lt;br /&gt;
&lt;br /&gt;
'''''Edit : On ajoutera une valeur entière dans les tables Date et Unity pour gérer le cas où il existe plusieurs produits (différents ou identiques) avec une date de péremption équivalente. On les appellera NbDate la valeur dans la table Date et NbUnity dans la table Unity. On leur ajoutera de même une clef primaire IdUnity et IdListProduct'''''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====MySql====&lt;br /&gt;
&lt;br /&gt;
On utilisera MySql pour la gestion de nos bases de données. &lt;br /&gt;
La syntaxe pour l'implanter dans la base de donnée à été jointe au dépôt git.&lt;br /&gt;
&lt;br /&gt;
Pour lancer my SQL, on tapera:&lt;br /&gt;
&lt;br /&gt;
   mysql -h localhost -u root -p&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Altium Designer===&lt;br /&gt;
&lt;br /&gt;
Pour permettre au RFDuino de communiquer avec les différents composants, nous aurons besoin de quelques composants électroniques. Afin que cela soit plus esthétique pour la modélisation finale, nous allons créer une carte PCB pour rassembler tous ces composants dessus. On utilisera le logiciel Altium Designer pour cela.&lt;br /&gt;
&lt;br /&gt;
Avant de représenter notre circuit général, nous allons commencer par créer une librairie rassemblant tous les composants que nous utiliserons par la suite, en particulier nos composants CMS (accéléromètre et résistances). Pour ce qui est des LEDs et du buzzer, qui sont traversants, nous pourrons utiliser des headers classiques.&lt;br /&gt;
&lt;br /&gt;
Il a donc fallu créer le schematic ainsi que l'empreinte de nos composants CMS. Voici un exemple avec notre accéléromètre :&lt;br /&gt;
[[Fichier:Accelerosch.PNG|500px|thumb|left|Schematic de l'accéléromètre]]&lt;br /&gt;
[[Fichier:Acceleropcb.PNG|500px|thumb|center|Empreinte PCB de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les fichiers Altium sont disponibles sur notre dépôt GIT. Après cela, nous pouvons maintenant construire notre schematic du montage entier et ensuite le fichier PCB afin de pouvoir graver notre circuit.&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=39866</id>
		<title>IMA4 2016/2017 P46 : Aide anti-gaspillage alimentaire</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2016/2017_P46_:_Aide_anti-gaspillage_alimentaire&amp;diff=39866"/>
				<updated>2017-03-01T15:35:04Z</updated>
		
		<summary type="html">&lt;p&gt;Flefevre : /* Premières idées */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
En France, nous jetons en moyenne 21% des aliments que nous achetons, ce qui représente une perte de 100 à 160 euros par an par habitant. Cela est en partie dû à la date limite de consommation associée à chaque produit. En effet, à partir du moment où cette date sera dépassée le consommateur jettera les produits concernés sans réfléchir, même si ceux-ci peuvent parfois être encore mangeables. Plutôt que d'essayer de les convaincre du contraire, il serait judicieux de proposer aux adeptes du gaspillage une aide permettant de gérer tous les aliments dont ils disposent chez eux afin d'éviter la surprise de tomber sur plusieurs produits périmés lorsqu'ils ouvrent la porte de leur frigo. &lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Ce projet permet d'aider les utilisateurs d'une part à mémoriser les denrées périssables qu'ils disposent dans leur réserve alimentaire et d'autre part d'avertir l'utilisateur qu'un événement important a lieu. Ceci peut être une notification qu'un aliment va bientôt dépasser sa date de péremption, que la porte du frigidaire est restée ouverte ou encore que le nombre d'aliments dans la réserve devient critique et qu'il faudra de nouveau l'alimenter. Enfin, le système aidera l'utilisateur à trouver des idées de repas pouvant permettre de consommer les aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Notre prototype permettra d'éviter le gaspillage alimentaire ainsi que d'aider l'utilisateur dans sa gestion du stockage d'aliments.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
&lt;br /&gt;
Notre système sera composé de 3 éléments. &lt;br /&gt;
&lt;br /&gt;
Premièrement, un ou des smartphones appartenant aux utilisateurs. Ces derniers permettront de scanner grâce à son appareil photo, le code barre du produit ainsi que sa date de péremption. Il servira aussi d'interface utilisateur pour notre système. En effet, c'est par cet outil que l'utilisateur pourra lister tous les aliments que l'utilisateur a dans sa base et tout ça en les triant par date de péremption, ou encore voir les recettes possibles pour consommer des aliments en fin de vie.&lt;br /&gt;
&lt;br /&gt;
Deuxièmement, un serveur, de type Raspberry, qui permettra de stocker la base de donnée contenant les aliments de la réserve. Ce serveur sera connecté par wifi.&lt;br /&gt;
 &lt;br /&gt;
Troisièmement, un contrôleur (Rfduino) qui comportera une LED pour indiquer la mise sous tension du contrôleur, une LED pour prévenir l'utilisateur qu'un aliment va bientôt passer sa date de péremption et une dernière LED pour prévenir l'utilisateur que son niveau de réserve est critique ainsi qu'un buzzer et un accéléromètre pour buzzer quand la porte du frigo est restée trop longtemps ouverte. Ce dernier sera fixé au frigo par l'intermédiaire d'un dispositif adapté qui sera un système aimanté qui se pose sur le frigo.&lt;br /&gt;
&lt;br /&gt;
Nous implémenterons donc une application mobile Android qui fera le lien entre les 2 autres systèmes.&lt;br /&gt;
&lt;br /&gt;
Pour la partie électronique que nous aurons à réaliser, nous utiliserons une Breadboard pour faire des premiers tests puis nous créerons une carte PCB pour notre montage final.&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
On utilisera une Raspberry Pi en guise de serveur pour pouvoir s'occuper du stockage de toutes les données dans notre projet puisque notre contrôleur sera incapable de les contenir, ce n'est d'ailleurs pas son but ici.&lt;br /&gt;
&lt;br /&gt;
Notre smartphone fera donc le lien entre notre base de données et notre système embarqué par l'intermédiaire de l'application mobile.&lt;br /&gt;
&lt;br /&gt;
Nous prendrons ici un RFduino puisque celui-ci nous permet d'ajouter des modules comme bon nous semble afin d'adapter le système aux besoins de notre application. Il est également parfaitement compatible avec les applications Android. De plus, nous avons un Bluetooth directement intégré au RFduino pour s'assurer que les liaisons RFduino-application mobile se fassent correctement. &lt;br /&gt;
On notera également que ce contrôleur consomme peu de courant et ne demande qu'une faible tension d'alimentation, critères importants pour ce genre de projet. C'est la raison principale de son utilisation pour être utilisé comme interface physique sur le frigo, en ajoutant également sa taille réduite comparée à la Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
&lt;br /&gt;
Nous avons donc besoin du matériel suivant :&lt;br /&gt;
&lt;br /&gt;
*Raspberry Pi.&lt;br /&gt;
*Clef wifi&lt;br /&gt;
*RFduino (RFD22102 DIP Board, RFD22121 USB Shield, RFD22126 Dual AAA battery shield).&lt;br /&gt;
*2 piles AAA.&lt;br /&gt;
*3 leds tranversantes.&lt;br /&gt;
*3 Résistances 330 Ohm.&lt;br /&gt;
*1 Résistance 10 kOhm.&lt;br /&gt;
*Un buzzer.&lt;br /&gt;
*Accéléromètre.&lt;br /&gt;
*Aimants&lt;br /&gt;
*Un boîtier permettant d'intégrer la RFduino + fixation sur le frigo (modélisation à voir).&lt;br /&gt;
&lt;br /&gt;
Pour le buzzer, l'accéléromètre et les résistances, nous choisirons des composants CMS pour nous permettre d'avoir une carte plus petite.&lt;br /&gt;
&lt;br /&gt;
===Calendrier prévisionnel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Liste des tâches à effectuer====&lt;br /&gt;
&lt;br /&gt;
* Configurer la Raspberry :&lt;br /&gt;
** Installer et configurer le serveur.&lt;br /&gt;
** Créer le diagramme UML de notre future base de données.&lt;br /&gt;
** Créer la base sur le serveur.&lt;br /&gt;
** Configurer la connexion WiFi.&lt;br /&gt;
&lt;br /&gt;
* Monter et programmer la RFduino :&lt;br /&gt;
** Connecter les différents modules au RFduino (accéléromètre, LEDs, buzzer, Batterie, module Bluetooth).&lt;br /&gt;
** Récupérer les consignes du smartphone grâce au Bluetooth.&lt;br /&gt;
** Programmer le comportement du RFduino en fonction des consignes.&lt;br /&gt;
** Construire le boitier final.&lt;br /&gt;
&lt;br /&gt;
* Implémenter l'application mobile Android :&lt;br /&gt;
** Une première activité permettant de se connecter au RFduino et à la Raspberry.&lt;br /&gt;
** Scanner une date et un code barre.&lt;br /&gt;
** Ajout/suppression d'un aliment dans la base de donnée.&lt;br /&gt;
** Envoi d'une consigne au RFduino.&lt;br /&gt;
** Rendre l'interface utilisateur ergonomique (lister aliments, envoyer vers page de recettes avec l'utilisation des aliments bientôt périmés...).&lt;br /&gt;
&lt;br /&gt;
====Calendrier====&lt;br /&gt;
&lt;br /&gt;
Répartition du temps consacré au projet (120h *2) :&lt;br /&gt;
&lt;br /&gt;
*Partie Raspberry : 60h&lt;br /&gt;
*Partie RFduino : 60h&lt;br /&gt;
*Partie développement mobile : 120h&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
&lt;br /&gt;
===Résumé===&lt;br /&gt;
&lt;br /&gt;
====Semaine 1====&lt;br /&gt;
&lt;br /&gt;
'''23/01''' :  &lt;br /&gt;
* Installation du logiciel Android Studio pour être prêt à commencer l'application mobile.&lt;br /&gt;
* Création du Repository Git sur GitHub : https://github.com/FrancoisLefevre12/Optali.git&lt;br /&gt;
* Réalisation de différents schémas fonctionnels pour se donner une idée du travail à effectuer, aussi bien du software que du hardware.&lt;br /&gt;
* Quelques précisions supplémentaires apportées sur le cahier des charges.&lt;br /&gt;
* Ajout de liens de référence pour la liste de matériel à acheter.&lt;br /&gt;
&lt;br /&gt;
'''25/01''' :  &lt;br /&gt;
* Précision des composants requis (accéléromètre, buzzer, LEDs, résistances).&lt;br /&gt;
* Écriture du montage à la main.&lt;br /&gt;
* Étude du fonctionnement de l'accéléromètre, du buzzer.&lt;br /&gt;
* Écriture de la structure de l'application à la main.&lt;br /&gt;
&lt;br /&gt;
'''26/01''' :&lt;br /&gt;
*Réalisation graphique de la première page de l'application.&lt;br /&gt;
*Conception du schéma électrique pour tous les composants connectés au RFduino.&lt;br /&gt;
&lt;br /&gt;
====Semaine 2====&lt;br /&gt;
&lt;br /&gt;
'''30/01''' :&lt;br /&gt;
*Réalisation du diagramme UML de la base de données qui sera stockée sur la Raspberry Pi&lt;br /&gt;
*Installation de l'outil de développement mobile sur le second PC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''01/02''' :&lt;br /&gt;
*Nous nous sommes d'abord rendus compte que la résistance entre un des GPIO et l'accéléromètre était inutile, nos premiers calculs étaient erronés. Nous ne la garderons donc pas sur notre schéma électrique final.&lt;br /&gt;
*Avancement sur la partie application mobile : réalisation de la page &amp;quot;Ajout&amp;quot; sur laquelle nous tomberons après avoir cliquer sur &amp;quot;ajout&amp;quot; sur la page principale de l'application. Nous avons étendu l'activité principale jusqu'à cette nouvelle activité &amp;quot;Ajout&amp;quot;.&lt;br /&gt;
*Nous avons récupéré notre Raspberry Pi pour commencer à installer notre base de données dessus. Nous avons actuellement quelques problèmes pour nous connecter sur la Raspberry. Nous travaillons sur ce point.&lt;br /&gt;
&lt;br /&gt;
'''02/02''' :&lt;br /&gt;
* Application mobile : Mise en place des LEDs sur la home page et de la zone de notification avec les messages associés.&lt;br /&gt;
&lt;br /&gt;
====Semaine 3====&lt;br /&gt;
&lt;br /&gt;
'''06/02''' :&lt;br /&gt;
*Nous arrivons à accéder à la Raspberry via le port série de celle-ci. Nous avons également configuré sa connexion Ethernet afin de pouvoir télécharger des paquets dessus et installer notre base de données. &lt;br /&gt;
*Nous rencontrions des problèmes sur le second PC de travail pour récupérer le projet Optali sur Android Studio via notre dépôt GIT. Nous avons pu rectifier ce souci.&lt;br /&gt;
&lt;br /&gt;
'''08/02''' :&lt;br /&gt;
*Tentative d'établissement d'un point d'accès WiFi sur notre Raspberry. Nous n'avons pas réussi pour le moment.&lt;br /&gt;
*Restructuration du Repository git.&lt;br /&gt;
*Essai d'importation de la librairie Zxing qui permettra de décoder les code-barres.&lt;br /&gt;
&lt;br /&gt;
====Semaine 4====&lt;br /&gt;
&lt;br /&gt;
'''13/02'''&lt;br /&gt;
*Configuration du wifi de la Raspberry. &lt;br /&gt;
*Étude d'une mise en place d'un service web via php.&lt;br /&gt;
&lt;br /&gt;
'''15/02'''&lt;br /&gt;
*Mise en place d'un lecteur de caractère sur l'application. On utilisera tesseract.&lt;br /&gt;
*Début de la création du PCB via Altium designer. Création d'une librairie pour l'accéléromètre qui est un composant CMS assez spécial. On pourra cependant utiliser des headers classiques pour le buzzer et les LEDs puisque ce sont des composants traversants.&lt;br /&gt;
*Création des premiers fichiers php de connection à la base de donnée et d'insertion d'aliments. Tous ces fichiers seront déposés de la même manière sur le dépôt git.&lt;br /&gt;
&lt;br /&gt;
'''16/02'''&lt;br /&gt;
*Adaptation avec prise en compte des cas du code php d'insertion de produits par requête sur la base de donnée.&lt;br /&gt;
*Ajout du code d'implantation de la base de donnée.&lt;br /&gt;
*Altium: Accéléromètre terminé, mise en place des résistances.&lt;br /&gt;
&lt;br /&gt;
====Semaine 5 (interruption pédagogique)====&lt;br /&gt;
&lt;br /&gt;
'''22/02 (3 heures)'''&lt;br /&gt;
*Installation de l'OS de la raspberry.&lt;br /&gt;
*Installation d'Openssh-server, apache2, php5, iptables, mysql-server.&lt;br /&gt;
*Redirection des ports du routeur vers la raspberry.&lt;br /&gt;
*Configuration de iptables de la raspberry.&lt;br /&gt;
&lt;br /&gt;
'''23/02 (2 heures)'''&lt;br /&gt;
*Implantation de la base de donnée sur la raspberry pi.&lt;br /&gt;
&lt;br /&gt;
====Semaine 6====&lt;br /&gt;
'''27/02'''&lt;br /&gt;
*Vérification de la syntaxe de l'insertion de valeurs dans la base de donnée.&lt;br /&gt;
*Création des premières requêtes sur la base de donnée.&lt;br /&gt;
*Finalisation du PCB de l'Optali Board.&lt;br /&gt;
&lt;br /&gt;
===Premières idées===&lt;br /&gt;
&lt;br /&gt;
Voici les premières idées de l'application mobile et du composant fixé sur le frigo.&lt;br /&gt;
[[Fichier:Optali_v1.jpg|400px|thumb|left|Optali version 1]]&lt;br /&gt;
[[Fichier:OptaliBox_v1.jpg|400px|thumb|center|OptaliBox version 1]]&lt;br /&gt;
[[Fichier:P46_schema.jpg|400px|thumb|center|Schéma électrique version 1]]&lt;br /&gt;
&lt;br /&gt;
En s'intéressant aux différentes datasheets ou données constructeur des composants que nous voulons utiliser, nous trouvons indispensable d'utiliser des résistances de 330 Ohms pour l'utilisation des LEDs, pour éviter de les griller.&lt;br /&gt;
&lt;br /&gt;
Edit : Retrait de la résistance R2.&lt;br /&gt;
&lt;br /&gt;
Concernant l'accéléromètre, nous avons choisi un modèle qui nous permet de brancher directement ce module sur une broche du RFDuino. On branchera directement les GPIOs de la RFduino sur les ports SDA et SCL de l'accéléromètre qui correspondent à l'interface I2C pour pouvoir communiquer. On utilisera aussi la broche INT1 pour pouvoir générer des interruptions directement depuis l'accéléromètre.&lt;br /&gt;
&lt;br /&gt;
On connectera le buzzer directement à une broche de la RFduino aussi. Concernant celui-ci il reste une incertitude puisqu'on ne trouve aucune information sur le courant à fournir pour l'alimentation de ce composant sur sa datasheet. Après différentes recherches sur Internet, il pourrait être nécessaire d'utiliser un montage amplificateur à transistor comme un émetteur commun pour booster le courant en sortie d'une broche GPIO. Quelques buzzers trouvés avec des données constructeur montrent que ce type de composant nécessite généralement un courant d'environ 30 mA. Nous verrons dans la pratique si cela sera vraiment nécessaire. Par sécurité, on ajoutera un transistor bipolaire dans la liste de matériel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:screen_LED.png|400px|thumb|left|Données constructeur pour LEDs]]&lt;br /&gt;
[[Fichier:screen_accel.png|400px|thumb|center|Datasheet de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
===Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
====Configuration école====&lt;br /&gt;
&lt;br /&gt;
*Pour configurer notre Raspberry Pi, nous utilisons son port série et &amp;quot;minicom&amp;quot;. Pour pouvoir télécharger des paquets, il fallait la connecter au réseau. Nous lui avons donc affecté une adresse IP fixe avec le fichier /etc/network/interfaces. Voici les modifications qui ont été apportées : &lt;br /&gt;
&lt;br /&gt;
   auto eth0&lt;br /&gt;
   iface eth0 inet static&lt;br /&gt;
   address 172.26.78.15&lt;br /&gt;
   netmask 255.255.240.0&lt;br /&gt;
   gateway 172.26.79.254&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il a également fallu ajouter la commande &amp;quot;export http_proxy=http://proxy.polytech-lille.fr:3128&amp;quot; (il faudra effectuer cette commande à chaque démarrage de la Pi) pour pouvoir utiliser le proxy de l'école. &lt;br /&gt;
Nous avons de plus modifier le fichier /etc/resolv.conf avec la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
   nameserver 193.48.57.34&lt;br /&gt;
&lt;br /&gt;
Malgré cela, nous avions des soucis pour nous connecter au réseau. Il y avait en fait un processus dhcp en tâche de fond qui nous empêchait de garder le contenu de resolv.conf. Il a donc fallu trouver ce processus pour le &amp;quot;kill&amp;quot; et pouvoir accéder correctement au réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons du coup pu installer postgresql pour pouvoir configurer une base de données sur notre Pi.&lt;br /&gt;
&lt;br /&gt;
====Configuration à domicile====&lt;br /&gt;
&lt;br /&gt;
Pour nous mettre dans une situation plus fidèle à notre projet, nous avons configuré la raspberry à domicile.&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abords installé Raspbian, puis installé les paquets nécessaire au fonctionnement du serveur.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Openssh-server''': permettre d'accès à distance à la raspberry pour pouvoir y accéder depuis l'école.&amp;lt;br&amp;gt;&lt;br /&gt;
- '''Iptables''': pour sécuriser les ports non utilisé et libérer l'accès aux ports qui nous intéressent (ssh 22,http 80,https 443).&amp;lt;br&amp;gt;&lt;br /&gt;
- '''apache2, php5, mysql-server''' : pour mettre en place notre service web.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons rediriger les ports 80 et 22 du routeur pour pouvoir accéder à la raspberry de l'extérieur.&lt;br /&gt;
&lt;br /&gt;
Pour finir, nous avons créer un fichier de config iptables permettant de sécuriser un minimum la base de donnée et de permettre d'autoriser la communication des ports 22, 80 et 443 correspondants aux ports ssh, http et https. le fichier de configuration a été déposé dans le dépôt git. Il nous a fallut le rendre exécutable via un chmod. Puis pour l'exécuter à chaque démarrage du system, dans le fichier /etc/init.d/ taper : &lt;br /&gt;
&lt;br /&gt;
    sudo update-rc.d firewall defaults (si notrefichier s'appelle firewall et s'il est dans init.d)&lt;br /&gt;
&lt;br /&gt;
===Base de donnée===&lt;br /&gt;
&lt;br /&gt;
Nos données alimentaires disponibles par toute la famille doivent être stocké sur un serveur de base de donnée externe (tel une Raspberry pi). Nous nous proposons de créer le diagramme UML représentant cette future base de donnée.&lt;br /&gt;
[[Fichier:Optali_UML.jpg|700px|thumb|center|Diagramme UML base de donnée]]&lt;br /&gt;
&lt;br /&gt;
On créera donc 3 entités. Date, Product et Recipe. &lt;br /&gt;
&lt;br /&gt;
- Product rassemble les aliments qui sont ou ont été dans la réserve alimentaire. NbProdIn permet de connaître le nombre de produits identiques (possibilité de date différentes mais pas de doublons et on garde l'information de quantité. NbProdBought donne une information sur le nombre de produits identique ayant été acheté depuis la mise en service de la base de donnée. Ainsi nous pourrons par la suite proposer une liste de course à l'utilisateur en fonction de la fréquence d'achat des produits.&lt;br /&gt;
&lt;br /&gt;
- Recipe contient les recettes que pourra rentrer l'utilisateur sur l'application. L'utilisateur pourra ainsi se voir proposer des recettes en fonction de ce qu'il a dans son frigo et de ses recettes personnelles.&lt;br /&gt;
&lt;br /&gt;
'''''Edit : On ajoutera une valeur entière dans les tables Date et Unity pour gérer le cas où il existe plusieurs produits (différents ou identiques) avec une date de péremption équivalente. On les appellera NbDate la valeur dans la table Date et NbUnity dans la table Unity. On leur ajoutera de même une clef primaire IdUnity et IdListProduct'''''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====MySql====&lt;br /&gt;
&lt;br /&gt;
On utilisera MySql pour la gestion de nos bases de données. &lt;br /&gt;
La syntaxe pour l'implanter dans la base de donnée à été jointe au dépôt git.&lt;br /&gt;
&lt;br /&gt;
Pour lancer my SQL, on tapera:&lt;br /&gt;
&lt;br /&gt;
   mysql -h localhost -u root -p&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Altium Designer===&lt;br /&gt;
&lt;br /&gt;
Pour permettre au RFDuino de communiquer avec les différents composants, nous aurons besoin de quelques composants électroniques. Afin que cela soit plus esthétique pour la modélisation finale, nous allons créer une carte PCB pour rassembler tous ces composants dessus. On utilisera le logiciel Altium Designer pour cela.&lt;br /&gt;
&lt;br /&gt;
Avant de représenter notre circuit général, nous allons commencer par créer une librairie rassemblant tous les composants que nous utiliserons par la suite, en particulier nos composants CMS (accéléromètre et résistances). Pour ce qui est des LEDs et du buzzer, qui sont traversants, nous pourrons utiliser des headers classiques.&lt;br /&gt;
&lt;br /&gt;
Il a donc fallu créer le schematic ainsi que l'empreinte de nos composants CMS. Voici un exemple avec notre accéléromètre :&lt;br /&gt;
[[Fichier:Accelerosch.PNG|500px|thumb|left|Schematic de l'accéléromètre]]&lt;br /&gt;
[[Fichier:Acceleropcb.PNG|500px|thumb|center|Empreinte PCB de l'accéléromètre]]&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Flefevre</name></author>	</entry>

	</feed>