Hoe HC-05 werkt

Ik was een project aan het maken van stemgestuurde Arduino en ik ben tegen dit probleem aangelopen.

Wanneer ik de HC-05 met Android verbind en vervolgens iets zeg (ik gebruik de AMR-app), herkent het mijn stem, maar de leds gaan niet aan.

I have connected a HC-05 in this fashion: enter image description here

De code die ik gebruik is:

String voice;
int
led1 = 2, //Connect LED 1 To Pin #2
led2 = 3, //Connect LED 2 To Pin #3
led3 = 4, //Connect LED 3 To Pin #4
led4 = 5, //Connect LED 4 To Pin #5
led5 = 6; //Connect LED 5 To Pin #6
//--------------------------Call A Function-------------------------------// 
void allon(){
     digitalWrite(led1, HIGH);
     digitalWrite(led2, HIGH);
     digitalWrite(led3, HIGH);
     digitalWrite(led4, HIGH);
     digitalWrite(led5, HIGH);
}
void alloff(){
     digitalWrite(led1, LOW);
     digitalWrite(led2, LOW);
     digitalWrite(led3, LOW);
     digitalWrite(led4, LOW);
     digitalWrite(led5, LOW);
}
//-----------------------------------------------------------------------// 
void setup() {
  Serial.begin(9600);
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);
}
//-----------------------------------------------------------------------// 
void loop() {
  while (Serial.available()){  //Check if there is an available byte to read
  delay(10); //Delay added to make thing stable
  char c = Serial.read(); //Conduct a serial read
  if (c == '#') {break;} //Exit the loop when the # is detected after the word
  voice += c; //Shorthand for voice = voice + c
  } 
  if (voice.length() > 0) {
    Serial.println(voice);
//-----------------------------------------------------------------------//   
  //----------Control Multiple Pins/ LEDs----------// 
       if(voice == "*all on") {allon();}  //Turn Off All Pins (Call Function)
  else if(voice == "*all off"){alloff();} //Turn On  All Pins (Call Function)

  //----------Turn On One-By-One----------//
  else if(voice == "*TV on") {digitalWrite(led1, HIGH);}
  else if(voice == "*fan on") {digitalWrite(led2, HIGH);}
  else if(voice == "*computer on") {digitalWrite(led3, HIGH);}
  else if(voice == "*bedroom lights on") {digitalWrite(led4, HIGH);}
  else if(voice == "*bathroom lights on") {digitalWrite(led5, HIGH);}
  //----------Turn Off One-By-One----------//
  else if(voice == "*TV off") {digitalWrite(led1, LOW);}
  else if(voice == "*fan off") {digitalWrite(led2, LOW);}
  else if(voice == "*computer off") {digitalWrite(led3, LOW);}
  else if(voice == "*bedroom lights off") {digitalWrite(led4, LOW);}
  else if(voice == "*bathroom lights off") {digitalWrite(led5, LOW);}
//-----------------------------------------------------------------------// 
voice="";}} //Reset the variable after initiating
0
Toen ik voor het eerst met een HC-06 werkte, gebruikte ik software-serie om de module en mijn computer tegelijkertijd te kunnen aansluiten, zodat ik naar de seriële monitor kon kijken om precies te zien wat er werd verzonden en naar de seriële software. biedt u de mogelijkheid om een ​​andere baudrate te hebben tussen uw seriële monitor en uw Bluetooth-module zonder dat u uw code steeds opnieuw hoeft te uploaden. Ik had een hele tijd de tijd om te denken dat ik de juiste baudrate had, terwijl ik dat eigenlijk niet deed. Ik heb een hulpprogramma geschreven om te helpen bepalen welke baudrate moet worden gebruikt. github.com/ericsgear/ResetBlueToothBaudRate
toegevoegd de auteur Vishvesh, de bron
Toon ons de uitvoer van Serial.println (voice); (Bewerk uw vraag om hem toe te voegen na uw code).
toegevoegd de auteur user31481, de bron
Niet erg duidelijk ... Je gebruikt een app op Android die gegevens (de snaar die je 'stem' noemt) naar de Arduino stuurt met behulp van bluetooth. Dat is wat je wilt doen?
toegevoegd de auteur Peter, de bron
OK, maar WAT stuur je naar de Arduino? AMR-app is een app die geluid leest. Dus stuur je het "geluid" naar de Arduino alsof de Arduino een luidspreker was of stuur je een sms naar de Arduino?
toegevoegd de auteur Peter, de bron
Er is geen uitvoer op de seriële monitor behalve "??"
toegevoegd de auteur GK A, de bron
Ja, de stem is een eenvoudige opdracht zoals "alles aan" of "computer uitschakelen". Maar het enige dat arduino bereikt, is rotzooi. Ik heb ook de baudrate ingesteld en in de code ook die waarde veranderd
toegevoegd de auteur GK A, de bron
AMR herkent mijn stem en converteert naar een string die door arduino wordt ontvangen als eenvoudige verklaring als "inschakelen". Maar het probleem is hier dat de instructie die door arduino wordt ontvangen, garbage is.Ik heb de baud-rates alles gecontroleerd, maar het probleem is niet opgelost. Peter, als je gewoon eens naar de code kijkt, dan zou je me beter kunnen helpen. Een ander ding dat me opviel, is dat wanneer ik software-serie gebruik dan de ontvangen gegevens niet helemaal onzin zijn.
toegevoegd de auteur GK A, de bron
Gebruikte een spanningsdeler op Rx pin (1.1k en 3.3k). Verbonden Vcc met 5V arduino power en het werkte
toegevoegd de auteur GK A, de bron

Geen antwoorden

0