Not able to set up hc05 as master, it is giving error 0. I have also reset the module, everything is working fine except that.
Even the binding and cmode all are working.
Any suggestion what I can do??
Are you manually holding down the HC-05 button during the right commands?
It's a pain in the neck and rather tricky without detailed instructions - I've had to pair bluetooth modules like this twice before and I know your pain.
Power_Broker:
Are you manually holding down the HC-05 button during the right commands?It's a pain in the neck and rather tricky without detailed instructions - I've had to pair bluetooth modules like this twice before and I know your pain.
Yes I have manually hold it for getting it into commanding mode.
Funny you should reply to the thread when you did - I just finished a rough draft of a sketch that automatically pairs, binds, and links an HC-05 and an HC-06 module. Right now it only works for Arduinos that have several hardware serial ports (I'm running it on a Mega rn).
Check out the code and see if it helps. If you have any questions, let me know.
#define MASTER_PORT Serial1
#define SLAVE_PORT Serial2
String rname = "";
String rnameListStr = "";
String ID = "";
void setup()
{
pinMode(52, OUTPUT);
pinMode(52, LOW);
Serial.begin(115200);
while(!Serial);
MASTER_PORT.begin(38400);
SLAVE_PORT.begin(9600);
MASTER_PORT.setTimeout(100);
SLAVE_PORT.setTimeout(100);
Serial.println("<<<=====================================================================>>>");
Serial.println("Put HC-05 into AT mode and send 'OK' through Serial Monitor");
Serial.println("<<<=====================================================================>>>");
Serial.println();
while(Serial.read() != 'O');
sendAT_master("AT");
sendAT_master("AT+ROLE=0");
sendAT_master("AT+UART=9600,0,0");
sendAT_master("AT+CMODE=0");
sendAT_master("AT+PSWD=1234");
Serial.println();
sendAT_slave("AT");
sendAT_slave("AT+NAMEmyBT");
sendAT_slave("AT+BAUD4");
sendAT_slave("AT+PIN1234");
Serial.println();
sendAT_master("AT+RMAAD");
sendAT_master("AT+ROLE=1");
sendAT_master("AT+RESET");
Serial.println();
Serial.println("<<<=====================================================================>>>");
Serial.println("Put HC-05 back into AT mode and send 'OK' through Serial Monitor");
Serial.println();
Serial.println("Note for after returning HC-05 into AT mode:");
Serial.println("\tMAKE SURE THE HC-05's BUTTON IS PRESSED UNTIL TOLD OTHERWISE!!!");
Serial.println("<<<=====================================================================>>>");
Serial.println();
while(Serial.read() != 'O');
sendAT_master("AT");
sendAT_master("AT+CMODE=0");
sendAT_master("AT+INQM=0,5,9");
sendAT_master("AT+INIT");
sendAT_master("AT+INQ");
Serial.println();
Serial.println("<<<=====================================================================>>>");
Serial.println("HC-05's button no longer needs to be pressed");
Serial.println();
byte endIndex = rnameListStr.indexOf(",1F00,");
byte startIndex = endIndex - 14;
if(rnameListStr.indexOf(",1F00,") != NULL)
{
ID = rnameListStr.substring(startIndex, endIndex);
Serial.println("Address of HC-06: " + ID);
ID.replace(':', ',');
}
else
{
Serial.println("ID not found...");
}
Serial.println();
Serial.println("Put HC-05 back into AT mode and send 'OK' through Serial Monitor");
Serial.println();
Serial.println("Note for after returning HC-05 into AT mode:");
Serial.println("\tMAKE SURE THE HC-05's BUTTON IS PRESSED UNTIL TOLD OTHERWISE!!!");
Serial.println("<<<=====================================================================>>>");
Serial.println();
while(Serial.read() != 'O');
sendAT_master("AT");
sendAT_master("AT+INIT");
sendAT_master("AT+RNAME?" + ID);
sendAT_master("AT+PAIR=" + ID + ",20");
sendAT_master("AT+BIND=" + ID);
sendAT_master("AT+CMODE=1");
sendAT_master("AT+LINK=" + ID);
Serial.println();
Serial.println("<<<=====================================================================>>>");
Serial.println("HC-05's button no longer needs to be pressed");
Serial.println("<<<=====================================================================>>>");
Serial.println();
}
void loop()
{
//do nothing
}
void sendAT_master(String command)
{
String response = "";
unsigned long timeBench;
unsigned long currentTime = timeBench;
unsigned int duration = 5000;
Serial.println(command);
MASTER_PORT.println(command);
while(!MASTER_PORT.available());
if(command.equals("AT+INQ"))
{
timeBench = millis();
currentTime = timeBench;
while((currentTime - timeBench) <= duration)
{
currentTime = millis();
response = response + MASTER_PORT.readString();
}
rnameListStr = response;
}
else
{
response = MASTER_PORT.readString();
}
Serial.print(response);
return;
}
void sendAT_slave(String command)
{
String response = "";
Serial.println(command);
SLAVE_PORT.print(command);
while(!SLAVE_PORT.available());
response = SLAVE_PORT.readString();
Serial.println(response);
return;
}