Borne Oenologique : Différence entre versions

De Wiki d'activités IMA
(Semaine 9)
(Semaine 8)
Ligne 141 : Ligne 141 :
  
  
== Semaine 8 ==
+
== Semaine 10 ==
  
  

Version du 14 novembre 2013 à 07:27

Le Projet

Tout d'abord le projet de la Borne Oenologique provient du laboratoire Lifl, via Yvan Peter. Ce projet à été proposé par Auchan afin de mieux guider ses clients dans le choix de leur vin.

Ebauche 3D de la future borne

Matériel Requis

-Tablette Android 10 (Compatible OTG et NFC Incorporer)

-Arduino Mega ADK (permettant de communiquer avec la tablette)

-Shield RFID (x2)

-Antenne NFC externe, permettant de déporter le signal NFC émis par la tablette. Du type : NFC Band-Aid de Flomio

-Borne permettant l'intégration des composants (Prévision de conception par le département mécanique)

Fonctionalitées

Liste de Séance

Semaine 1

La première semaine à été consacrée à la rencontre des différents interlocuteurs du projets ainsi qu'a la rédaction du cahier des charges. Celui-ci étant primordial au développement du produit.

Semaine 2

Rédaction du cahier des charges : Fichier:CahierdesCharges.pdf

La deuxième semaine à été consacrée à la rencontre des différents interlocuteurs du projets, ainsi qu'à la prospection de solutions. Après recherches, deux principales solutions s'offrent à nous concernant l'architecture du système : soit articuler le système autour d'une tablette Android, soit l'articuler autour d'un mini PC.

La première solution à l'avantage de bénéficier des atouts des tablettes tactiles actuelles, à savoir : très hautes définition de l'écran, bon comportement tactile, communication Android Beam (via le NFC). Cependant, la liaison avec les capteurs RFID sera plus dur à réaliser. Tandis que la solution à base de mini PC a comme principal atout une gestion du bas niveau plus aisée, notamment concernant la communication avec les modules RFID.

Après réflexion, nous avons choisis la solution à base d'Android, principalement pour bénéficier de la qualité des tablettes actuelles. Cela nous permettra également d'approfondir nos connaissances vis à vis de la programmation Android.

Semaine 3

Réalisation des tests des solutions techniques retenues, à savoir :

  • Test de la platine Arduino + Shield RFID : Test Réussi
  • Test de dialogue Application Android + Arduino : Test Réussi


D'un point de vue applicatif, nous avons commencé à réfléchir au différentes fonctionnalités ainsi qu'à l'ergonomie de certaine vue.

Nous avons notamment réalisé le prototypages de certaines interface, grâce à l'application web fluidui : https://fluidui.com

Voici le prototype de l'interface permettant de comparer 2 vins entre eux :

Prototype de l'interface de comparaison de 2 vins

Semaine 4

L'Arduino est capable de lire une puce RFID via le Shield PN532. La lecture se fait sur le secteur 4. Ainsi un numéro de série est récupéré, comme un code barre. Il est composé de 12 chiffres. Les données stocker sur la carte RFID sont en hexadécimale, du type uint8_t (8bits maximum).

L'Arduino est aussi capable via la librairie "USB Host Shield library Version 2.0" de communiquer la référence (équivalent à un code barre) vers l'appareil Android. Les tests sont effectués avec un Sony Xperia Sola en attendant l'utilisation d'une tablette tactile de type Nexus. La transmission des données entre l'Arduino et Android se fait via un protocole série. La transmission effectué est un tableau de 12 cases mémoires du type uint8-t.

      uint8_t CODE[12];


Concernant l'application Android embarquée sur la tablette de la borne, sont développement a commencée.

Nous avons dans un premier temps débuté par conceptualiser la base de données embarquée dans l'application.

Une fois l'implémentation de la base de données finis, nous avons développé un ensemble de fonctions permettant de gérer et d'accéder à la BDD. Cette BDD permet pour l'instant de caractériser les vins ainsi que les plats recommandés pour certains vins. Voici la représentation UML de la BDD :

Représentation UML de la BDD

A chaque table de la BDD correspond un objet Java, qui est directement instancié après récupération dans la BDD grâce à une fonction que nous avons développé.


Parrallèlement à cela, nous avons établit les grande ligne de l'interface d'accueil, nous permettant également de vérifier le bon fonctionnement de la communication entre la tablette et l'Arduino :

Page d'accueil fonctionnelle de l'application

Semaine 5

Mise en place du second lecteur RFID:

Après réception du deuxième lecteur RFID PN532, nous avons lancé le développement matériel pour la détection de 2 bouteilles. Le choix du BUS I2C n'est pas compatible, en effet le Shield comporte la même adresse que l'autre carte. Nous avons alors essayer de scruter chaque carte, en alimentant une carte sur deux. Cette solution n'étant pas viable à cause d'un problème de puissance de sorti sur les DigitalOupPut de l'Arduino. Un test sur le BUS SPI fût alors tenté, mais aucune librairie n'existe pour ce Shield.

La solution la plus adapté, c'est à dire qui ne nécessite pas d'alimentation extérieur en rajout, est d'utiliser un lecteur RFID MFRC522 d'un autre constructeur spécialement conçu pour le BUS SPI. Ce qui nous permet de contourner les problèmes de compatibilité entre les cartes sur un même BUS.


Reflexion sur l'interface de recherche de vin:

- Creation de la base du layout


Nous pouvons voir dans le schéma ci-dessous, un réseau de Petri montrant l'évolution du système en fonction des différents cas possible. Le réseau de Petri, ne prend, pour le moment, pas en compte le transfert vers le mobile utilisateur.

Réseau de Petri du système, cours IMA4 SA


Parallèlement, l'application Android côté client (installée sur le smartphone du client) a commencé à être développée. Cette application reprendra en grande partie les fonctionnalités développées pour l'application de la borne. Elle permettra ainsi au client d'emmener avec lui certaines possibilités offerte par la borne. Elle permettra également de communiquer grâce à l'Android beam, qui est une communication NFC facilitée entre périphériques Android. L'application contiendra la liste de fonctionnalités suivantes :

  • Possibilité de rechercher un vin selon différents critères (type, prix, etc.)
  • Possibilité d'ajouter des vins à ses favoris
  • Possibilité de scanner un tag RFID d'un vin afin d'obtenir des informations le concernant

Semaine 6

La solution de 2 Shields basé sur des BUS différents ayant été retenu, après réception du Shield RC522 fonctionnant en SPI, nous avons pu commencer l'implémentation du code du deuxième capteur RFID dans le microcontrôleur. Les bytes fournis par l'Arduino à la tablette sont contenu dans un tableau de 24 cases. Les 12 premières cases corresponde au code barre capté par le Shield 1 et les 12 dernières corresponde au Shield 2. Le protocole de transmission est le suivant:

1 Bouteille sur le Shield 1       ===> XXXXXXXXXXXX000000000000
1 Bouteille sur le Shield 2       ===> 000000000000XXXXXXXXXXXX
1 Bouteilles sur les Shield 1 & 2 ===> xxxxxxxxxxxxXXXXXXXXXXXX

L'application Android peux donc générer une page contenant le descriptif d'une bouteille, ou la comparaison des 2 bouteilles.


Nous scrutons en permanence le Shield 2 (RC522), pour déterminer la présence ou non d'une puce RFID. Ce qui nous permet de complèter en temps réel la variable global transmise. Le Shield 1 (PN522), fonctionne autrement, lorsqu'une puce RFID est détecté une interruption IRQ est envoyer sur la broche (n° 2) de l'Arduino. L'interruption se répète à chaque tour de la boucle principale du programme (celui-ci étant synchronisé avec la puce PN522), ce qui nous permet ici aussi de compléter en temps réel la variable global transmise.


L'application client a avancée, l'interface de recherche de vin est terminée. Cette interface permet de filtrer les vins par type, par plage de prix, et enfin par affinité avec certains plats.

Concernant le widget de sélection de la plage de prix, celui ci n'existe pas dans le Android SDK. Il a a par contre été réalisé par un développeur indépendant, le widget peut se trouve ici : https://code.google.com/p/range-seek-bar/

L'interface est visible sur la capture d'écran suivante :

Interface de recherche de vins

Bien que l'interface est crée, elle n'est pas encore fonctionelle, en effet la recherche n'est pas encore finalisée.

L'implémentation de la base de données sur l'application cliente a également été réalisé.

Semaine 7

Durant cette semaine, nous avons pousser le développement matériel de la borne avec les CM5. Nous avons donc pu en tirer différents plans pour une fabrication de la borne. Avant de lancer celle-ci, certains points sont encore à définir, tel le design définitif. La fabrication de la borne n'est prévu que pour Janvier 2014.

Borne3.PNG


Borne.PNG

Concernant le développement des application, peu de nouvelles fonctionnalités ont été implémentées.

Nous avons également commencé à établir un document regroupant et caractérisant les vins que nous allons inclure dans les bases de données des applications.


Semaine 10

Suite à l'avancé du projet et à la caractérisation de certains vins que nous avons ajoutés à la base de données, nous avons remarqué que notre base de données était insuffisant pour caractériser convenablement les vins.

Nous avons donc entrepris une refonte de la base de données, en tenant compte des remarques suivantes :

  • Les avis d'un expert seront visible dans la fiche d'un vin.
  • Les plats conseillés et les avis des expert ne seront pas assignés de façon individuel à un vin, mais pour un type de vins.
  • Etant donné qu'il existe plusieurs plats conseillés pour un même type de vin, nous avons ajouté une table de liaison entre la table "type" et la table "plat".


Voici un schéma UML de notre nouvelle base de données :

GANTT du Projet


GANTT du Projet

Semaine 8

Durant cette semaine, nous avons mis en place un diagramme de Gantt, permettant de gérer notre projet jusqu'aux dernières semaines. Cette semaine à aussi été utiliser afin de commencer le lien entre les 2 parties du developpement de l'application sur la borne.

Semaine 10

Semaine 11

Semaine 12

Semaine 13

Semaine 14

Semaine 15

Semaine 16

Semaine 17

Semaine 18

Semaine 19

Semaine 20

Semaine 21

Semaine 22