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