Rendre un véhicule contrôlé de voix ! (2 / 3 étapes)

Étape 2: Ajouter la commande vocale

J’ai utilisé une planche de reconnaissance vocale DFRobot pour cela. La référence est DFR0177, mais il n’est dès maintenant disponible en Chine !

Malheureusement en essayant d’ajouter des fonctionnalités de contrôle de voix, j’ai rencontré des problèmes. Après avoir obtenu en contact avec un des ingénieurs à DFRobot, ils m’ont dit que le jury de Romeo V2 a été fondé sur une puce ATmega32u4, qui ne supporterait pas mon module de reconnaissance vocale. Cela a causé une irritation, mais je ne laisse pas que m’arrêter. J’ai troqué ma planche Romeo V2 pour un DFRduino UNO R3 et ensuite essayé à nouveau.

Voici un code que j’ai utilisé :

 #include #define SUM 2 //variable no greater than 50 uint8 nAsrStatus=0; char sRecog[SUM][80] = {"turn on lights", "turn off lights"};//variable not greater than 79, user can modify int state=7; //status indicator int led=8; //control digital port void finally (unsigned char n) { switch(n) //array corresponding keyword serial number, such as arrays recognise the first keyword is “turn on lights” and corresponding sequence number is 0; { case 0: Serial.println( "turn on lights"); Serial.println( " "); digitalWrite(led,LOW); break; case 1: Serial.println( "turn off lights"); digitalWrite(led,HIGH); break; default: Serial.println( "error"); Serial.println( " "); break; } } void ExtInt0Handler () { Voice.ProcessInt0(); //send an interrupt signal } void setup() { Serial.begin(9600); Voice.Initialise(MIC,VoiceRecognitionV1);//Initialise mode MIC or MONO,default is MIC //VoiceRecognitionV1 is VoiceRecognitionV1.0 shield //VoiceRecognitionV2 is VoiceRecognitionV2.1 module attachInterrupt(0,ExtInt0Handler,LOW); pinMode(led,OUTPUT); pinMode(state,OUTPUT); digitalWrite(state,HIGH); digitalWrite(led,HIGH); } void loop() { uint8 nAsrRes; nAsrStatus = LD_ASR_NONE; while(1) { switch(nAsrStatus) { case LD_ASR_RUNING: case LD_ASR_ERROR: break; case LD_ASR_NONE: { nAsrStatus=LD_ASR_RUNING; if (Voice.RunASR(SUM,80,sRecog)==0) //incorrect identification { nAsrStatus= LD_ASR_ERROR; Serial.println( "ASR_ERROR"); } digitalWrite(state,LOW); Serial.println( "ASR_RUNING....."); break; } case LD_ASR_FOUNDOK: { digitalWrite(state,HIGH); nAsrRes =Voice. LD_GetResult();//once asr recognition process ends, pick up asr recognition results finally(nAsrRes); nAsrStatus = LD_ASR_NONE; break; } case LD_ASR_FOUNDZERO: default: { nAsrStatus = LD_ASR_NONE; break; } }// switch delay(500); }// while } 

char sRecog [somme] [80] = {"allumer de lumière", "éteindre lumières"} peut être utilisé pour donner au véhicule de fonctions de contrôle de voix. Nous pouvons changer cette section pour ajouter les fonctionnalités que nous voulons, comme « aller de l’avant », "go back", "tourner à gauche", "tourner à droite", "stop", etc.. Nous aurons également besoin de modifier la fonction « Sub finally() ». Dans le cas 0, la première commande est avance, donc nous pouvons sortie « aller de l’avant » de « Serial.println() » et appelle à la fonction « avance » en même temps. Lorsque le module de reconnaissance vocale détecte la fonction « avance », il va afficher aller vers l’avant et le véhicule seront déplace vers l’avant. Il en va de même pour les autres directions.

Une des limites de ce projet est que le module de reconnaissance vocale n’est pas toujours précis, en raison de différents utilisateurs voices, bruit ambiant et d’autres facteurs. Cela sera amélioré dans futurs exemples.

Le code est comme suit :

 #include //#include //ruan chuankou #define SUM 5 //SUM uint8 nAsrStatus=0; //SoftwareSerial mySerial(10, 11); // RX, TX char sRecog[SUM][80] = {"qian jin", "hou tui","zuo zhuan", "you zhuan","ting zhi"};// int E1 = 5; //M1 Speed Control int E2 = 6; //M2 Speed Control int M1 = 4; //M1 Direction Control int M2 = 7; //M1 Direction Control void stop(void) //Stop { digitalWrite(E1,0); digitalWrite(E2,0); } void advance(char a,char b) //Move forward { analogWrite (E1,a); //PWM Speed Control digitalWrite(M1,HIGH); analogWrite (E2,b); digitalWrite(M2,HIGH); } void back_off (char a,char b) //Move backward { analogWrite (E1,a); digitalWrite(M1,LOW); analogWrite (E2,b); digitalWrite(M2,LOW); } void turn_L (char a,char b) //Turn Left { analogWrite (E1,a); digitalWrite(M1,LOW); analogWrite (E2,b); digitalWrite(M2,HIGH); } void turn_R (char a,char b) //Turn Right { analogWrite (E1,a); digitalWrite(M1,HIGH); analogWrite (E2,b); digitalWrite(M2,LOW); } void finally (unsigned char n) { switch(n) // { case 0: Serial.println( "qian jin"); Serial.println( " "); advance (255,255); break; case 1: Serial.println( "hou tui"); back_off (255,255); break; case 2: Serial.println( "zuo zhuan"); turn_L (100,100); break; case 3: Serial.println( "you zhuan"); turn_R (100,100); break; case 4: Serial.println( "ting zhi"); stop(); break; default: Serial.println( "error"); Serial.println( " "); break; } } void ExtInt0Handler () { Voice.ProcessInt0(); // } void setup(void) { int i; for(i=4;i<=7;i++) pinMode(i, OUTPUT); Serial.begin(19200); //Set Baud Rate Voice.Initialise(MIC,VoiceRecognitionV1);//Initialise mode MIC or MONO,default is MIC //VoiceRecognitionV1 is VoiceRecognitionV1.0 shield //VoiceRecognitionV2 is VoiceRecognitionV2.1 module attachInterrupt(0,ExtInt0Handler,LOW); } void loop() { uint8 nAsrRes; nAsrStatus = LD_ASR_NONE; while(1) { switch(nAsrStatus) { case LD_ASR_RUNING: case LD_ASR_ERROR: break; case LD_ASR_NONE: { nAsrStatus=LD_ASR_RUNING; if (Voice.RunASR(SUM,80,sRecog)==0) // { nAsrStatus= LD_ASR_ERROR; Serial.println( "ASR_ERROR"); } Serial.println( "ASR_RUNING....."); break; } case LD_ASR_FOUNDOK: { nAsrRes =Voice. LD_GetResult();// finally(nAsrRes); nAsrStatus = LD_ASR_NONE; break; } case LD_ASR_FOUNDZERO: default: { nAsrStatus = LD_ASR_NONE; break; } }// switch delay(500); }// while } 

Réaliser le functionDownload le programme sur la carte d’effectuer le test. Quand nous disons « advance », le véhicule appellera la fonction () « avance », puis se déplace vers l’avant. C’est la même chose avec d’autres mouvements. Quand cela fonctionne de manière satisfaisante, nous pouvons débrancher le câble USB et installez une pile au lithium pour que le véhicule est plus mobile.

Articles Liés

Champignon contrôlé la voix

Champignon contrôlé la voix

Ce projet est un mélange d'impression 3D et Arduino.J'appelle par la présente, cela l'Andromeda KinokoÉtape 1: ThingiverseCommencez en allant sur thingiverse, voici mon fichier, http://www.thingiverse.com/make:196257Le crédit va à Toshio Fuji pour la
Système domotique est contrôlé par voix (pas cher & facile)

Système domotique est contrôlé par voix (pas cher & facile)

En utilisant un Arduino, un ordinateur portable recyclé et limité de compétences en programmation, vous pourriez être en mesure de créer votre propre système de domotique en suivant les étapes suivantes.Cette instructable montre une méthode bon march
Arduino Robot V2 (rapide) également contrôlée voix

Arduino Robot V2 (rapide) également contrôlée voix

C'est ma deuxième version de mon robot arduino après « Construire votre premier robot ». Mon deuxième version est un peu compliquée par rapport à mon premier seul mais offre de meilleures fonctionnalités. Dans ce instructable je vais vous montrer com
Faire un Robot contrôlé de voix

Faire un Robot contrôlé de voix

(demandé pour le concours, 18 + catégorie d'âge)Ce tutoriel va montrer comment construire un robot simple voix contrôlée qui est assez facile pour les débutants de faire en quelques heures. Je montre comment il peut être fait dans les deux langues, a
Contrôleur de voix (Arduino) - Smartphone Android Smart

Contrôleur de voix (Arduino) - Smartphone Android Smart

Contrôleur Smart de voix est un dispositif qui est extrêmement pratique, intéressant et facile à faire. À travers elle, vous pouvez contrôler jusqu'à 8 appareils dans votre maison, par des commandes vocales sur votre téléphone intelligent. Vous avez
Contrôlée de bricolage Bluetooth téléphone Droid BB-8 avec Arduino UNO

Contrôlée de bricolage Bluetooth téléphone Droid BB-8 avec Arduino UNO

Je suis un grand fan de Star Wars et quand j'ai vu la Star Wars : The Force Awakens j'ai pensé que j'ai besoin d'un droïde de BB-8. C'était génial, comment cette petite sphère s'installe dans le film. Alors j'ai décidé que je vais faire ce droid qui
Première personne WiFi conduite de Roomba et d’autres véhicules RC infrarouges

Première personne WiFi conduite de Roomba et d’autres véhicules RC infrarouges

Coller un smartphone un véhicule contrôlé à distance et l'avoir flux caméra vidéo sur WiFi permet, vous avez beaucoup de plaisir au volant du véhicule avec sa télécommande pendant la visualisation d'images d'elle sur un autre périphérique et à l'aide
Véhicule électrique léger : Un passagers @ 15 mi/h, poids à vide # 210

Véhicule électrique léger : Un passagers @ 15 mi/h, poids à vide # 210

J'ai conçu et construit cet amusant et le véhicule électrique léger avec succès il y a plusieurs années. Je suis en détachement à l'instant sur « Instructables » et ajoute plus d'étapes, détaillant la construction, dans les prochaines semaines.Utilis
Voix de robot : Comment faire parler Circuit

Voix de robot : Comment faire parler Circuit

à l'aide de la dernière synthèse vocale IC, la plupart des circuits peuvent être apportées à la parole de votre choix. Cela peut être pratique pour faire un robot parlant ou autres appareils parlants. Il peut aider dans la programmation d'un microcon
Comment faire une commande vocale, contrôle de la direction, télécommande robot Android et arduino, (3 en un)

Comment faire une commande vocale, contrôle de la direction, télécommande robot Android et arduino, (3 en un)

C'est une version simplifiée de n'importe quel autre robot de contrôle de voix, pas de codage complexe facile à comprendre avec simple algorithme de codage.Le soft est développé de manière à convertir la commande vocale en texte et qu'il transfère le
Tout petit Smartphone contrôlée Arduino réservoir

Tout petit Smartphone contrôlée Arduino réservoir

dans ce Instructable je vais vous montrer comment faire un réservoir d'arduino contrôlée très petit smartphone.J'ai essayé de faire le TinyTank aussi petit que possible, j'ai aussi voulu contrôler avec un smartphone.Au moins, je voulais rendre facile
Téléphone Android contrôlée lampe

Téléphone Android contrôlée lampe

Dans ce Instructable nous allons faire une lampe que nous pouvons contrôler avec un téléphone android. À l'aide d'une application, nous serons en mesure de régler la luminosité de la lampe.Étape 1: Comment ça marche La luminosité de la lampe est régu
Contrôle vocal bricolage maison intelligente

Contrôle vocal bricolage maison intelligente

Si vous n'êtes pas familier avec Amazon écho - c'est un nouvel assistant personnel qui répond à vos commandes vocales et, par conséquent, effectue des tâches simples tâches pour vous. Par exemple, il peut commander vos lumières de smart ou activer et
Motorisée caméra curseur contrôlé par téléphone Android

Motorisée caméra curseur contrôlé par téléphone Android

Cette instructable montre comment faire un curseur caméra motorisée. En fait, nous accordons quelques pièces supplémentaires à un curseur manuel pour le rendre motorisés et contrôlable par un téléphone Android. L'idée derrière les curseurs de la camé