Conception d'un prototype de robot guide : Différence entre versions

De Wiki de Projets IMA
(Utiliser un FrameLayout de éparer l'affichage de marchandises et le plan.)
(Réalisations concrètes)
 
(16 révisions intermédiaires par le même utilisateur non affichées)
Ligne 20 : Ligne 20 :
  
  
== '''Réalisations concrètes''' ==
+
=== '''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
  
== == Faire la préparation de projet.(base de données, techniques utilisées) == ==
+
* Utiliser un FrameLayout de éparer l'affichage de marchandises et le plan.  
  
== '''Réalisations concrètes''' ==
+
* Faire la recherche de adk.
  
 +
* Réaliser l'envoi de données par adk.
  
== Faire la préparation de projet.(base de données, techniques utilisées) ==
+
* 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.
  
== [[Interface de tablette qui peux afficher la location, nom, description de marchandise]] ==
+
* Réaliser un controleurs sur l'interface de Android
  
 +
* Réaliser de donner les commandes de contrôleurs vers arduino adk mega
  
== [[Les clients peuvent créer un marchandise soit par l'image dans le tablette ou soit par le caméra]] ==
+
* 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);
   }