Conception d'un prototype de robot guide

De Wiki de Projets IMA

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);
   }