Borne NFC : Différence entre versions
Ligne 231 : | Ligne 231 : | ||
quand on exécute ce programme , d'abord le programme va lancer l'app Barcode Scanner , quand on a réussi de scanner , l'app va revenir laquelle qu'on a lancé et afficher le résultat . | quand on exécute ce programme , d'abord le programme va lancer l'app Barcode Scanner , quand on a réussi de scanner , l'app va revenir laquelle qu'on a lancé et afficher le résultat . | ||
+ | |||
+ | ==== Cinquième séance ==== | ||
+ | |||
+ | Pour cette séance , comme il y a déjà 3 semaines je touche pas la partie NFC , je utilise du temps de réviser ce que j'ai fait avant , puis je commençer à programmer le NFC de la part de Arduino . | ||
+ | |||
+ | sur ce site | ||
+ | |||
+ | http://seeedstudio.com/wiki/NFC_Shield | ||
+ | |||
+ | il y a 2 libraries | ||
+ | |||
+ | Arduino 1.0 Lib compatible with MEGA for NFC Shield -- cette bilblothèque ça peux fonctionner , mais il nous fourni seulement des fonctions fondamentales | ||
+ | |||
+ | Arduino Lib for NFC Shield -- cette library nous fourni presque tous les fonctions , mais quand on compile , il y a des erreurs | ||
+ | |||
+ | donc on rajoute des fonction de Arduino Lib for NFC Shield la quelle Arduino 1.0 Lib compatible with MEGA for NFC Shield n'existe pas dans le Arduino 1.0 Lib compatible with MEGA for NFC Shield . | ||
+ | |||
+ | puis on compile , l'erreur a disparu . | ||
=== Résultats === | === Résultats === |
Version du 19 mars 2012 à 16:07
Présentation
Objectif de PROJET
Borne NFC pour le commerce pour le client de localiser les marchandises dans leurs téléphones androids .
Le but de ce projet est de concevoir un dispositif permettant à un client de sélectionner des articles à son domicile sur le site web du vendeur puis de venir les examiner en magasin. Les articles sont enregistrés sur un mobile puis communiqués à une borne sur place via le protocole sans fil NFC.
Préparation du projet
Matériel requis
- Tablet Android
- Shield NFC
- Téléphone NFC (Google Nexus S)
Matériel à acheter
- Platine ADK
- Quincaillerie (Bosch) pour le pied
Connaissances prérequis
Avancement du projet
Réaliser la 1er petite étape qui peux gérer les base de données SQlite pour téléphone
Objectifs suggérés par les encadrants
Réalisations concrètes
Séances
Première séance
Commencer à faire la recherche sur le SQLite , et faire une petite application sur AVD qui peux réaliser la création de base de donnée , modifier , insérer et supprimer .
SQLite est une base données petite et voire mếme qu'on peux le négliger durant la conception de l'application.
On peux essayer chercher les infos de références sur le site connu http://developer.android.com
on peux chercher les 2 classes SQLiteOpenHelper et SQLiteDatabase
SQLiteOpenHelper
Class Overview
[[A helper class to manage database creation and version management.
You create a subclass implementing onCreate(SQLiteDatabase), onUpgrade(SQLiteDatabase, int, int) and optionally onOpen(SQLiteDatabase), and this class takes care of opening the database if it exists, creating it if it does not, and upgrading it as necessary. Transactions are used to make sure the database is always in a sensible state.
This class makes it easy for ContentProvider implementations to defer opening and upgrading the database until first use, to avoid blocking application startup with long-running database upgrades.
For an example, see the NotePadProvider class in the NotePad sample application, in the samples/ directory of the SDK.
pour les fonctions plus détaillées , consulter sur
http://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper.html]]
SQLiteDatabase
Class Overview
Exposes methods to manage a SQLite database.
SQLiteDatabase has methods to create, delete, execute SQL commands, and perform other common database management tasks.
See the Notepad sample application in the SDK for an example of creating and managing a database.
Database names must be unique within an application, not across all applications.
pour les fonctions plus détaillées , consulter sur
http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html
Deuxième séance
Réaliser une petite application laquelle nous permette de gérer les bases de données par SQlite .
Cette petite application qui nous permette de créer , insérer , supprimer , chercher les bases de données ce qu'on veux .
On peux regarder le contenu de base de données par entrer dans le terminal de Windows (Ctrl+R)
Taper la commande adb shield , qui nous permette d'entrer dans le terminal de téléphone ( laquelle est constituée de LINUX).
on va aller dans le chemin ./data/data , ce répertoire est pour stocker les fichiers de Base de Données de chaque app.
On peux choisir notre base de données et entrer par shield -3
puis on peux taper les commandes de SQL pour faire la manipulation ce qu'on veux
comme .schema nous permmette d'afficher la structure de notre base de données
select * from user ; nous permette de regarder les contenues de cette table
puis on commence à installer l'arduino IDE dans l'ordinateur de l'école . Et essayer de chercher les infos de NFC de la part de le Arduino ,
voici est guide de NFC de la part arduino sur site internet http://seeedstudio.com/wiki/NFC_Shield
et on doit aller sur ce site de télécharger la biblothèque pour le NFC IDE , comme on doit utiliser les fonctions spéciaux .
On a essayé d'utiliser les exemplaires fournis par IDE de testé la ID de badge Mifare quand on le rapproche , il va nous afficher les ID de tag .
comme le badge Mifare fonctionne à l'état passive , l'étape suivant est de utiliser notre téléphone laquelle est déjà installé le NFC de le laisser fonctionner à l'état active et donner les données vers Arduino .
Les idées ce qu'on a est de laisser passive de la part de Arduino par la fonction ????
Troisième séance
Le troisième séance qu'on a réussi de réaliser une app qui peux détecter la présence de Mifare carte que le prof fourni , l'app est vraiment façile mais qu'il y a des choses qu'il faut faire attention .
L'étape de réalisation est suivant
1. sous le logiciel eclipse , dans le projet , AndroidManifest.xml , on met un filtre sous l'activity correspondant
<intent-filter> <action android:name="android.nfc.action.TECH_DISCOVERED" /> </intent-filter>
<meta-data android:name="android.nfc.action.TECH_DISCOVERED" android:resource="@xml/nfc_tech_filter" />
içi quand l'action a reçu une action TECH_DISCOVER , il va le comparer si cette action est l'action de démarrage de APP ou pas , si oui , l'app va être démarrer automatiquement .
sous le répertoire rex->xml, on crée un fichier de nfc_tech_filter.xml
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<tech-list><tech>android.nfc.tech.IsoDep</tech></tech-list> <tech-list><tech>android.nfc.tech.NfcA</tech></tech-list> <tech-list><tech>android.nfc.tech.NfcB</tech></tech-list> <tech-list><tech>android.nfc.tech.NfcF</tech></tech-list> <tech-list><tech>android.nfc.tech.NfcV</tech></tech-list> <tech-list><tech>android.nfc.tech.Ndef</tech></tech-list> <tech-list><tech>android.nfc.tech.NdefFormatable</tech></tech-list> <tech-list><tech>android.nfc.tech.MifareClassic</tech></tech-list> <tech-list><tech>android.nfc.tech.MifareUltralight</tech></tech-list>
</resources>
attention , la forme que sdk nous donne est
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<tech-list> <tech>android.nfc.tech.IsoDep</tech> <tech>android.nfc.tech.NfcA</tech> <tech>android.nfc.tech.NfcB</tech> <tech>android.nfc.tech.NfcF</tech> <tech>android.nfc.tech.NfcV</tech> <tech>android.nfc.tech.Ndef</tech> <tech>android.nfc.tech.NdefFormatable</tech> <tech>android.nfc.tech.MifareClassic</tech> <tech>android.nfc.tech.MifareUltralight</tech> </tech-list>
</resources>
dans ce cas , ça ne marche pas , içi ça veux dire que le device içi qu'il doit pouvoir de supporter tous les standard simultanément.
mais le premier cas dit que si il y a un de ces stardards est détecté , il va réveiller app correspondant .
et après cette configuration , ça peux marcher pour le téléphone de détecter le mifare carte et récupérer les infos.
Quatrième séance
On a testé la communication entre le téléphone mobile et l'ordinateur par le socket , mais grâce à la rappel de prof , ce n'est pas la meilleur solution , la meilleur solution est on utilise le QR Barcode de donner les infos vers le téléphone mobible .
Sur la génération de QR Barcode , il est déjà existé sur le site
http://phpqrcode.sourceforge.net/
on va aller sur ce site de télécharger le code qui peux nous laisser d'utiliser PHP de générer le QR Code.
De la part de téléphone mobile , on va aller sur le site çi-dessous de télécharger une application BarcodeScanner qui nous permette de scanner le QRCode de l'écran de l'ordinateur.
http://code.google.com/p/zxing/downloads/detail?name=BarcodeScanner4.0.apk
On a testé , ça marche très bien , l'app va utiliser le caméra , quand on cible le caméra vers QRCode barre , les données(tous forme de texte) va être scanné .
Maintenant ce qu'on va faire est de créer une app qui nous permette de récupérer les données de QRCode , on utilise "intent" de faire la transmission de données .
D'abord il nous faut aller sur ce site de télécharger les 4 fichiers(les fonctions sont bien défini dedans ) et les mettre dans la source de code sur éclipse
on va trouver
import android.support.v4.app.Fragment;
il y a erreur .
c'est parce qu'on a pas importé dans notre projet
on cherche android-support-v4.jar sous le répertoire SDK
puis taper alt+Enter ->java Build Path->Add External JARS on peux insérer ce jar dans eclipse , l'erreur va disparaître .
on peux commencer d'écrire notre programme.
le programme n'est pas difficile
on intancie
IntentIntegrator integrator = null;
integrator = new IntentIntegrator(CodeBarreActivity.this);
integrator.initiateScan();
on créé une fonction
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent); if (scanResult != null) { Log.i("info", scanResult.getContents()); // handle scan result } // else continue with any other code you need in the method }
on peux obtenir le résultat par scanResult.getContents().
quand on exécute ce programme , d'abord le programme va lancer l'app Barcode Scanner , quand on a réussi de scanner , l'app va revenir laquelle qu'on a lancé et afficher le résultat .
Cinquième séance
Pour cette séance , comme il y a déjà 3 semaines je touche pas la partie NFC , je utilise du temps de réviser ce que j'ai fait avant , puis je commençer à programmer le NFC de la part de Arduino .
sur ce site
http://seeedstudio.com/wiki/NFC_Shield
il y a 2 libraries
Arduino 1.0 Lib compatible with MEGA for NFC Shield -- cette bilblothèque ça peux fonctionner , mais il nous fourni seulement des fonctions fondamentales
Arduino Lib for NFC Shield -- cette library nous fourni presque tous les fonctions , mais quand on compile , il y a des erreurs
donc on rajoute des fonction de Arduino Lib for NFC Shield la quelle Arduino 1.0 Lib compatible with MEGA for NFC Shield n'existe pas dans le Arduino 1.0 Lib compatible with MEGA for NFC Shield .
puis on compile , l'erreur a disparu .