Conception d'un prototype de robot guide : Différence entre versions
De Wiki de Projets IMA
(→Réalisations concrètes) |
(→Réalisations concrètes) |
||
(30 révisions intermédiaires par le même utilisateur non affichées) | |||
Ligne 20 : | Ligne 20 : | ||
− | == ''' | + | === '''Réalisations concrètes''' === |
+ | * Faire la préparation de projet.(base de données, techniques utilisées) | ||
+ | * Interface de tablette qui peux afficher la location, nom, description de marchandise | ||
− | + | * Les clients peuvent créer un marchandise soit par l'image dans le tablette ou soit par le caméra | |
− | + | * Utiliser un FrameLayout de éparer l'affichage de marchandises et le plan. | |
− | + | * Faire la recherche de adk. | |
− | + | ||
− | + | * Réaliser l'envoi de données par adk. | |
− | + | ||
− | + | * Réaliser la réception de données par adk. | |
− | + | ||
− | + | * Réaliser un renouvellement de interface en temps réel, les données lesquelles venus de adk qu'il va afficher sur l'interface. | |
− | + | ||
− | + | * Réaliser un controleurs sur l'interface de Android | |
− | + | ||
− | Réaliser le synchronisation entre arduino adk mega et arduino UNO par les pattes TX/RX(note:on ne utlise pas câble USB est parce que un connecteur esclave de arduino adk mega est réservé à android, c'est pas possible de faire la communication entre adrduino UNO par 2 connecteurs hôtes) | + | * Réaliser de donner les commandes de contrôleurs vers arduino adk mega |
− | + | ||
− | + | * Réaliser le synchronisation entre arduino adk mega et arduino UNO par les pattes TX/RX(note:on ne utlise pas câble USB est parce que un connecteur esclave de arduino adk mega est réservé à android, c'est pas possible de faire la communication entre adrduino UNO par 2 connecteurs hôtes) | |
+ | |||
+ | * Réaliser la Sync entre les contrôleurs de android et arduino Uno , et arduino adk mega fonctionne comme un intermédiare. | ||
+ | |||
+ | * Réaliser la rotation , avancement de robot | ||
+ | |||
+ | * Faire la recherche sur le reconnaissance vocale | ||
+ | |||
+ | * L’installation de reconnaissance vocale | ||
+ | |||
+ | * Faire la recherche sur le capteur sonar | ||
+ | |||
+ | * Obtenir les valeurs de sonar et synchroniser sur la tablette | ||
+ | |||
+ | * Faire la recherche sur le NFC | ||
+ | |||
+ | * Installer dans l’arduino et synchroniser avec la tablette | ||
+ | |||
+ | * Faire la recherche sur le movement de robot sur un bande noire | ||
+ | |||
+ | * Demander responsable d’acheter les matériaux | ||
+ | |||
+ | ====Le code de arduino de robot est la suivante==== | ||
+ | |||
+ | void loop() // run over and over | ||
+ | { | ||
+ | if(c ++ % 100000 == 0) { // quand c module 100000 égal 0 , on envoie la valeur de sonar une fois | ||
+ | s11.trigger(); | ||
+ | s12.trigger(); | ||
+ | s13.trigger(); | ||
+ | i[0] = s11.getDist(); | ||
+ | i[1] = s12.getDist(); | ||
+ | i[2] = s13.getDist(); | ||
+ | Serial.println(i[0]); | ||
+ | Serial.println(i[1]); | ||
+ | Serial.println(i[2]); | ||
+ | mySerial.write(i, 6); // envoyer les valeurs de sonars | ||
+ | mySerial.flush(); | ||
+ | } | ||
+ | if (mySerial.available()) { | ||
+ | int res = mySerial.read(); | ||
+ | if(res != -1 && res != 0) { | ||
+ | Serial.println(res); | ||
+ | switch(res) { | ||
+ | case 0: | ||
+ | break; | ||
+ | case 1: | ||
+ | avance(); | ||
+ | delay(100); | ||
+ | break; | ||
+ | case 2: | ||
+ | back(); | ||
+ | delay(100); | ||
+ | break; | ||
+ | case 3: | ||
+ | left(); | ||
+ | delay(100); | ||
+ | break; | ||
+ | case 4: | ||
+ | right(); | ||
+ | delay(100); | ||
+ | break; | ||
+ | case 5: | ||
+ | rotatel(); | ||
+ | delay(100); | ||
+ | break; | ||
+ | case 6: | ||
+ | rotater(); | ||
+ | delay(100); | ||
+ | break; | ||
+ | case 7: | ||
+ | setMotorAllStop(); | ||
+ | delay(100); | ||
+ | break; | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | ====Le code au-dessous est pour adk, adk à ce moment là est un intermédiaire entre arduino robot et tablette , donc ce qu’il va faire est seulement recevoir la valeur et émettre tout de suite==== | ||
+ | |||
+ | |||
+ | SoftwareSerial mySerial(10, 2); // RX, TX | ||
+ | void setup() | ||
+ | { | ||
+ | // Open serial communications and wait for port to open: | ||
+ | Serial.begin(115200); | ||
+ | acc.powerOn(); | ||
+ | Serial.println("Goodnight moon!"); | ||
+ | // set the data rate for the SoftwareSerial port | ||
+ | mySerial.begin(4800); | ||
+ | mySerial.println("Hello, world?"); | ||
+ | } | ||
+ | //electech | ||
+ | void loop() // run over and over | ||
+ | { | ||
+ | // Serial.println("cdw"); | ||
+ | byte msg[3]; | ||
+ | if (mySerial.available() > 6) { | ||
+ | byte res = mySerial.read(); | ||
+ | Serial.print("msg0:\n"); | ||
+ | Serial.println(res); | ||
+ | byte res1 = mySerial.read(); | ||
+ | Serial.print("msg1:\n"); | ||
+ | Serial.println(res1); | ||
+ | byte res2 = mySerial.read(); | ||
+ | Serial.print("msg2:\n"); | ||
+ | Serial.println(res2); | ||
+ | byte res3 = mySerial.read(); | ||
+ | Serial.print("msg3:\n"); | ||
+ | Serial.println(res3); | ||
+ | byte res4 = mySerial.read(); | ||
+ | Serial.print("msg4:\n"); | ||
+ | Serial.println(res4); | ||
+ | byte res5 = mySerial.read(); | ||
+ | Serial.print("msg4:\n"); | ||
+ | Serial.println(res5); | ||
+ | msg2[0]=res; | ||
+ | msg2[1]=res1; | ||
+ | msg2[2]=res2; | ||
+ | acc.write(msg2, sizeof(msg2)); | ||
+ | } | ||
+ | if (acc.isConnected()) { | ||
+ | int len = acc.read(msg, sizeof(msg), 1); | ||
+ | Serial.println(msg[0]); | ||
+ | mySerial.write(msg[0]); | ||
+ | delay(50); //le temps on ne doit defini trop petit ou trop grand, sinon il y a probleme de synchronisation | ||
+ | } | ||
+ | } | ||
+ | |||
+ | |||
+ | ====Reconnaissance vocale==== | ||
+ | |||
+ | /** | ||
+ | * Fire an intent to start the speech recognition activity. | ||
+ | */ | ||
+ | private void startVoiceRecognitionActivity() { | ||
+ | Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); | ||
+ | |||
+ | // Spécifier le package appelant pour identifier votre application | ||
+ | intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getClass().getPackage().getName()); | ||
+ | |||
+ | // Affichage d'un indice à l'utilisateur sur ce qu'il doit dire. | ||
+ | intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Speech recognition demo"); | ||
+ | |||
+ | // Étant donné un indice pour le module de reconnaissance de ce que l'utilisateur va dire | ||
+ | intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, | ||
+ | RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); | ||
+ | |||
+ | // Indiquez le nombre de résultats que vous souhaitez recevoir. Les résultats seront triés | ||
+ | // où le premier résultat est le plus élevé avec une confiance. | ||
+ | intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 5); | ||
+ | |||
+ | // Spécifiez la langue de reconnaissance. Ce paramètre doit être spécifié que si l' | ||
+ | // reconnaissance doit se faire dans une langue spécifique et non celui par défaut (c.-à- | ||
+ | // système de localisation). La plupart des applications ne possèdent pas de régler ce paramètre. | ||
+ | |||
+ | if (!mSupportedLanguageView.getSelectedItem().toString().equals("Default")) { | ||
+ | intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, | ||
+ | mSupportedLanguageView.getSelectedItem().toString()); | ||
+ | } | ||
+ | |||
+ | startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE); | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | protected void onActivityResult(int requestCode, int resultCode, Intent data) { | ||
+ | if (requestCode == VOICE_RECOGNITION_REQUEST_CODE && resultCode == RESULT_OK) { | ||
+ | // Remplissez la vue de liste avec les chaînes de la reconnaissance pensé qu'il aurait pu entendre | ||
+ | ArrayList<String> matches = data.getStringArrayListExtra( | ||
+ | RecognizerIntent.EXTRA_RESULTS); | ||
+ | mList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, | ||
+ | matches)); | ||
+ | } | ||
+ | |||
+ | super.onActivityResult(requestCode, resultCode, data); | ||
+ | } |
Version actuelle datée du 26 février 2013 à 15:26
Préparation du projet
Matériel requis
Pour réaliser notre projet, nous avons besoin: -un tablette -un adk arduino -un robot
Matériel à acheter
Aucun matériel à acheter, Polytech'Lille a déjà fourni.
Avancement du projet
Réalisations concrètes
- Faire la préparation de projet.(base de données, techniques utilisées)
- Interface de tablette qui peux afficher la location, nom, description de marchandise
- Les clients peuvent créer un marchandise soit par l'image dans le tablette ou soit par le caméra
- Utiliser un FrameLayout de éparer l'affichage de marchandises et le plan.
- Faire la recherche de adk.
- Réaliser l'envoi de données par adk.
- Réaliser la réception de données par adk.
- Réaliser un renouvellement de interface en temps réel, les données lesquelles venus de adk qu'il va afficher sur l'interface.
- Réaliser un controleurs sur l'interface de Android
- Réaliser de donner les commandes de contrôleurs vers arduino adk mega
- Réaliser le synchronisation entre arduino adk mega et arduino UNO par les pattes TX/RX(note:on ne utlise pas câble USB est parce que un connecteur esclave de arduino adk mega est réservé à android, c'est pas possible de faire la communication entre adrduino UNO par 2 connecteurs hôtes)
- Réaliser la Sync entre les contrôleurs de android et arduino Uno , et arduino adk mega fonctionne comme un intermédiare.
- Réaliser la rotation , avancement de robot
- Faire la recherche sur le reconnaissance vocale
- L’installation de reconnaissance vocale
- Faire la recherche sur le capteur sonar
- Obtenir les valeurs de sonar et synchroniser sur la tablette
- Faire la recherche sur le NFC
- Installer dans l’arduino et synchroniser avec la tablette
- Faire la recherche sur le movement de robot sur un bande noire
- Demander responsable d’acheter les matériaux
Le code de arduino de robot est la suivante
void loop() // run over and over {
if(c ++ % 100000 == 0) { // quand c module 100000 égal 0 , on envoie la valeur de sonar une fois s11.trigger(); s12.trigger(); s13.trigger(); i[0] = s11.getDist(); i[1] = s12.getDist(); i[2] = s13.getDist(); Serial.println(i[0]); Serial.println(i[1]); Serial.println(i[2]); mySerial.write(i, 6); // envoyer les valeurs de sonars mySerial.flush(); } if (mySerial.available()) { int res = mySerial.read(); if(res != -1 && res != 0) { Serial.println(res); switch(res) { case 0: break; case 1: avance(); delay(100); break; case 2: back(); delay(100); break; case 3: left(); delay(100); break; case 4: right(); delay(100); break; case 5: rotatel(); delay(100); break; case 6: rotater(); delay(100); break; case 7: setMotorAllStop(); delay(100); break; } } }
Le code au-dessous est pour adk, adk à ce moment là est un intermédiaire entre arduino robot et tablette , donc ce qu’il va faire est seulement recevoir la valeur et émettre tout de suite
SoftwareSerial mySerial(10, 2); // RX, TX void setup() {
// Open serial communications and wait for port to open: Serial.begin(115200); acc.powerOn(); Serial.println("Goodnight moon!"); // set the data rate for the SoftwareSerial port mySerial.begin(4800); mySerial.println("Hello, world?");
} //electech void loop() // run over and over {
// Serial.println("cdw"); byte msg[3]; if (mySerial.available() > 6) { byte res = mySerial.read(); Serial.print("msg0:\n"); Serial.println(res); byte res1 = mySerial.read(); Serial.print("msg1:\n"); Serial.println(res1); byte res2 = mySerial.read(); Serial.print("msg2:\n"); Serial.println(res2); byte res3 = mySerial.read(); Serial.print("msg3:\n"); Serial.println(res3); byte res4 = mySerial.read(); Serial.print("msg4:\n"); Serial.println(res4); byte res5 = mySerial.read(); Serial.print("msg4:\n"); Serial.println(res5); msg2[0]=res; msg2[1]=res1; msg2[2]=res2; acc.write(msg2, sizeof(msg2)); } if (acc.isConnected()) { int len = acc.read(msg, sizeof(msg), 1); Serial.println(msg[0]); mySerial.write(msg[0]); delay(50); //le temps on ne doit defini trop petit ou trop grand, sinon il y a probleme de synchronisation }
}
Reconnaissance vocale
/** * Fire an intent to start the speech recognition activity. */ private void startVoiceRecognitionActivity() { Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
// Spécifier le package appelant pour identifier votre application intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getClass().getPackage().getName());
// Affichage d'un indice à l'utilisateur sur ce qu'il doit dire. intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Speech recognition demo");
// Étant donné un indice pour le module de reconnaissance de ce que l'utilisateur va dire intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
// Indiquez le nombre de résultats que vous souhaitez recevoir. Les résultats seront triés // où le premier résultat est le plus élevé avec une confiance. intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 5);
// Spécifiez la langue de reconnaissance. Ce paramètre doit être spécifié que si l' // reconnaissance doit se faire dans une langue spécifique et non celui par défaut (c.-à- // système de localisation). La plupart des applications ne possèdent pas de régler ce paramètre. if (!mSupportedLanguageView.getSelectedItem().toString().equals("Default")) { intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, mSupportedLanguageView.getSelectedItem().toString()); }
startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE); }
protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == VOICE_RECOGNITION_REQUEST_CODE && resultCode == RESULT_OK) { // Remplissez la vue de liste avec les chaînes de la reconnaissance pensé qu'il aurait pu entendre ArrayList<String> matches = data.getStringArrayListExtra( RecognizerIntent.EXTRA_RESULTS); mList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, matches)); }
super.onActivityResult(requestCode, resultCode, data); }