Borne Oenologique

De Wiki d'activités IMA
Révision datée du 2 novembre 2013 à 18:05 par Qlambert (discussion | contributions) (Semaine 2)

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é à la rencontre des différents interlocuteurs du projets, ainsi qu'à l'établissement du cahier des charges : Fichier:CahierdesCharges.pdf

Semaine 2

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 3

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é sur la tablette de la borne, sont développement à commencé. Une base de données locale a été implémentée, avec 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
Page d'accueil fonctionnelle de l'application

Semaine 4

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é sur le smartphone du client) a commencé à être développée. Elle 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 5

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 n'existe pas dans le Android SDK. Il a en effet é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

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

Semaine 6

Borne3.PNG


Borne.PNG