2017-09-29 4 views
1

J'ai un problème sur lequel je travaille depuis un certain temps. J'ai une carte Arduino Uno et un émetteur-récepteur HC-05 Bluetooth avec sorties TTL.Imprime une valeur entière, module Bluetooth Arduino HC-05

Les connexions sont les suivantes:

RX (HC_05) --> TX (Arduino UNO) 

TX (HC_05) --> RX (Arduino UNO) 

GND (HC-05) --> GND (Arduino UNO) 

+5V (HC-05) --> +5V (Arduino UNO) 

Je le code suivant Arduino:

#include <SoftwareSerial.h> 
SoftwareSerial BTSerial(10, 11); // RX | TX 

void setup() 
{ 
    Serial.begin(9600); 
    BTSerial.begin(38400); // HC-05 default speed in AT command more 
    pinMode(9, OUTPUT); // this pin will pull the HC-05 pin 34 (key pin) HIGH to switch module to AT mode 
    pinMode(10, INPUT); 
    pinMode(11, OUTPUT); 

    digitalWrite(9, HIGH); 
    Serial.println("Enter AT commands:"); 
    BTSerial.println("Welcome to ARBA-Beat"); 
} 


void loop() 
{ 

    // Keep reading from HC-05 and send to Arduino Serial Monitor 
    if (BTSerial.available()) { 
    Serial.println(BTSerial.read()); 
    BTSerial.write(BTSerial.read()); 
    BTSerial.flush(); 
    }  
} 

I connecter au module Bluetooth via l'application Terminal Bluetooth applications. Tout fonctionne bien (même les lumières sur le module Bluetooth). Mais quand j'envoie un caractère à partir du téléphone à Arduino, je reçois la sortie suivante:

texte envoyé au module Bluetooth - un

enter image description here

s'il vous plaît aider

merci

+0

Vous appelez 'BTSerial.read () 'deux fois dans différentes fonctions, ce qui peut signifier que deux valeurs sont retirées de la file d'attente. Essayez de le stocker dans une variable avant de faire écho au terminal/de faire quelque chose avec la valeur. –

+0

@MorrisonChang J'ai essayé tout ce que vous avez dit, maintenant je reçois des valeurs en forme de boîte –

+0

Je conseille de prendre la valeur et la transformer en hex/binaire et l'envoyer à n'importe quelle session de débogage/log que vous utilisez pour voir si vous avez vraiment valeur que vous envoyez ou avez quelque chose d'autre qui se passe (caractères supplémentaires/gros problème petit-boutiste/problème crlf). Si vous suivez un tutoriel, vous pouvez créer un lien vers celui-ci et indiquer quelle est l'étape qui échoue. –

Répondre

0

J'ai eu le même problème. Avez-vous essayé d'utiliser le HC-05 à 9600? Essayez le code ci-dessous (avec vos broches). J'ai utilisé le code pour commuter un relais sur la broche 2, mais vous pouvez utiliser une LED si vous le souhaitez. J'ai utilisé la même application Bluetooth et il a bien fonctionné:

#include <SoftwareSerial.h> 
int relay = 2; // Set pin for relay control 

SoftwareSerial bleserial(8,9); 

// setup the relay output and the bluetooth serial, and the serial monitor (if you want to print the outputs) 
void setup() {     
    // set relay pin as output. 
    pinMode(relay, OUTPUT); 
    // start bluetooth and serial monitor 
    bleserial.begin(9600); 
    Serial.begin(9600); 

} 

void loop() { 

    if(bleserial.available()){ 

    char char1 = bleserial.read(); 
    Serial.println(char1); 
    // Set protocol that you want to turn on the light bulb, I chose 1 and 0 as on and off, respectively 

    if(char1=='1'){ 
     Serial.println("ON"); 
     digitalWrite(relay,LOW); 
    } else if (char1=='0'){ 
     digitalWrite(relay,HIGH); 
    } 
    } 

} 

Si vous voulez voir le câblage etc. vérifier l'entrée sur mon blog:

https://engineersportal.com/blog/2017/11/15/bluetooth-home-automation-light-bulb-switch-using-an-hc-05-a-relay-and-arduino