Borne Oenologique : Différence entre versions

De Wiki de Projets IMA
(Semaine 15)
(Semaine 16)
Ligne 276 : Ligne 276 :
 
== Semaine 16 ==
 
== Semaine 16 ==
  
 +
Changement du protocole de communication Borne<=>Smartphone.
 +
 +
Le protocole Wifi P2P n'étant pas suffisemment stable pour notre utilisation, nous avons décider de nous retourner sur un appairage Bluetooth. Celui-ci est en cours de réalisation.
  
 
== Semaine 17 ==
 
== Semaine 17 ==

Version du 18 janvier 2014 à 17:19

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 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.

GANTT du Projet


Semaine 9

La partie électronique du montage est maintenant abouti. L'application dialogue correctement avec l'Arduino et celui-ci renvoie les informations correctement dans leur intégralité.

Voici le plan du montage de la partie électronique:

Plan de montage de la partie électrique


L'intégration des différentes parties de l'application Android à nécessité quelques amélioration du code source de l'application de la borne:

- Modification de la gestion de détection des différents éléments situé sur les détecteurs

- Modification des éléments permettant le passage d'information entre les "Activity" (Sur Android chaques pages d'une application est nommée Activity)


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 :

Représentation de la BDD


Semaine 11

Durant cette semaine, nous avons reçu un tablette Android. Nous allons pouvoir adapter le design de l'application Borne en fonction de la taille de l'écran. De plus nous avons commencé à penser à la technique utilisé pour faire communiquer la tablette et le téléphone du client.


Schema du process de communication Borne - Application


2 méthodes sont à l'étude:

- Liaison Bluetooth

- Liaison Wifi P2P

Les 2 méthodes ont leurs avantages et leurs inconvénients. La première est conçu pour les liaison directes, mais les débits sont faibles. La seconde possède des débits bien plus rapide et une porté supérieur. La liaison Bluetooth, possède un désavantage, pour le moment ne ne voyons pas de connexion sans une UNIQUE autorisation de l'utilisateur. Ce qui réduit la simplicité d'utilisation.

 Connextion par WIFI: http://developer.android.com/guide/topics/connectivity/wifip2p.html
 Connection par Bluetooth : http://developer.android.com/guide/topics/connectivity/bluetooth.html

Semaine 12

Lors de cette semaine, nous avons pensé à l'intégration de diode blanche au niveau de la borne pour donner un rendu meilleur à la bouteille, ainsi que pour révélé la robe du vin. Pour cela, nous nous sommes orienté vers des diodes ULTRA BRIGHT CMS. Les caractéristiques des diodes sont les suivantes :

Puissance: 2-Watt
Longueur d'ondes: 280-780 nm
Couleur: 6000~7000K
Angle d'éclairage: 140°
Courant: 700-750 mA
Tension d'alimentation: 5V

Ces diodes sont utilisé dans l'automobile pour certain phare à LED, ainsi que certains type d'éclairage à diode, ou même les flash de téléphone portable.

module diode utilisé


L'alimentation de l'Arduino n'étant à forciori insuffisente, nous devrons surement prévoir une dérivation de l'alimentation 5V pour leurs usage. Le module LED s'activant par le biais d'une entrée digitale.

Nous avons également finis l'implémentation de la nouvelle base de données. Avec notamment la création d'une classe DAO pour chaque table, chacune de ses classes contiennent l'ensemble des méthodes nécessaire à la gestion de la table, comme l'accès aux données.

A cette échéance nous avons listé une parti des éléments à intégrer à l'application:

-Finir d’implémenter BDD

-Système de favori sur le smartphone du client

-Partage Facebook

-Remplir la BDD avec des données

-Finir l’implémentation de la filtration des vins en fonction des plats


(A partir de Janvier)

-Gestion connexion avec le smartphone du client (NFC, bluetooh, wifi ?)

-Mettre en place les LED dasn la borne

-Lecture correcte des tags RFID des bouteilles via rotation de la bouteille

-Système de mise à jour de la BDD simplifié

Semaine 13

Création de la carte de contrôle des LED et des moteurs car maximum du courant fournit par l'Arduino = 500mA sur sorti 5V (750mA max sur Arduino ADK)


Ajout à la BDD:

-Appelation

-Cépage (Chardonay, Saumur, etc ...)

-Température de service (10c etc...)

-Garde ( 2 ans etc ...)

Semaine 14

La semaine à été réservé à la réalisation du rapport de mi-projet, ainsi qu'a la préparation de la présentation.

Semaine 15

Réception des moteurs Pas-à-Pas, intégration du code de contrôle de ceux-ci dans l'Arduino.

La solution des moteurs Pas-à-Pas est lié au fait que ceux-ci sont réversible, et permettent de contrôler le sens de rotation. Nous avons dû intégrer les fonctions de contrôle des moteurs via une interruption RTI (Real Time Interrupt) car les moteur Pas-à-Pas doivent être contrôler avec précision, ceux-ci sans interruption ne fonctionnait pas.

Les caractéristiques moteurs sont:

- 7 Phases

- Alimentation 5-12v

Semaine 16

Changement du protocole de communication Borne<=>Smartphone.

Le protocole Wifi P2P n'étant pas suffisemment stable pour notre utilisation, nous avons décider de nous retourner sur un appairage Bluetooth. Celui-ci est en cours de réalisation.

Semaine 17

Semaine 18

Semaine 19

Semaine 20

Semaine 21

Semaine 22