I am trying to setup bluetooth with a board that contains Arduino Leonardo chip.
My full setup is:
The main board: https://www.dfrobot.com/product-1148.html
The base shield: https://coolcomponents.co.uk/products/grove-base-shield-for-arduino-v2
The bluetooth module: https://wiki.seeedstudio.com/Grove-Serial_Bluetooth_v3.0/
The bluetooth module is connected to D8 port of the base shield. The reason is "not all pins on the Leonardo and Micro support change interrupts, so only the following can be used for RX: 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI)." as explained here: https://www.arduino.cc/en/Reference/SoftwareSerial
Here is the full code.
#include <SoftwareSerial.h> //Software Serial Port
/*Connect your Bluetooth Module to D8 otherwise it will not work due to Arduino Leonardo */
#define RxD 8
#define TxD 9
SoftwareSerial blue(RxD,TxD);
void setup()
{
Serial.begin(9600);
blue.begin(9600); //anything other than 9600 will not work
// wait for serial port to connect. Needed for native USB
while(!Serial){
;
}
pinMode(RxD, INPUT);
pinMode(TxD, OUTPUT);
Serial.print("Started\n");
setupBlueToothConnection();
}
void loop() {
char recvChar;
while(1)
{
if(blue.available())
{//check if there's any data sent from the remote bluetooth shield
recvChar = blue.read();
Serial.print(recvChar);
}
if(Serial.available())
{//check if there's any data sent from t he local serial terminal, you can add the other applications here
recvChar = Serial.read();
blue.print(recvChar);
delay(400);
}
}
}
void setupBlueToothConnection()
{
//blue.begin(9600);
blue.print("AT");
delay(400);
blue.print("AT+ROLES"); // set the role as slave
delay(400);
blue.print("AT+NAMESlave"); // set the bluetooth name as "Slave" ,the length of bluetooth name must less than 12 characters.
delay(400);
blue.print("AT+AUTH1");
delay(400);
blue.flush();
}
The output from the Serial Monitor (set as BOTH NL & CR, 9600) as follows:
Started
OKOK+Set:SOK+Set:SlaveOK+Set:1
The problem is when I send AT commands from terminal I get nothing in return. However if I send AT command from the IDE, I am getting feedback from the bluetooth.
while(1)
... loop() is already a while(1)Serial.write(recvChar);
. maybe you don't send a line end character to terminate the command