DFR Mega 2560 + Mega Senors Sheild v3.4 + Bluetooth Bee connectivity to Android

I recently bought a DFRduino Mega kit for 4 motor robot to interface into a project. Thus far I have gotten the DFRduino Mega 2560 V3.0 and Mega IO Expansion/Mega Sensor Shield V2.3 For Arduino Mega up and controlling my Dagu rover 5 chassis with its Dagu 4ch motor controller.
What I am having issues with is connecting my Seeedunio Bluetooth Bee to the Mega 2560 through the Sensor Shield to control the whole thing via Android device.
I have tried the different COM ports and RXD/TXD points, but I am not getting any connection with the Bluetooth module. It is getting power, but does not go into the mode for connecting.
I have connected this Bluetooth Bee to a Arduino Uno via Seedunino Bees shield before and controlled several digital outputs over Bluetooth via android app without a problem.
Am I missing a patching issue on the board or am I programming wrongly?
I would like to use COM1 as, if I am understanding correctly COM0 is where the USB serial travels through. Am I correct in assuming this?
My Sketch Looks as follows:
#include <SoftwareSerial.h>
#define RxD 19
#define TxD 18
#define DEBUG_ENABLED 1
SoftwareSerial blueToothSerial(RxD,TxD);
char incoming;
int PinPWM_ch1 = 9; //ch1 Power
int PinPWM_ch2 = 8; //ch2
int PinPWM_ch3 = 7; //ch3
int PinPWM_ch4 = 6; //ch4
int PinDIR_ch1 = 14; //ch1 Direction
int PinDIR_ch2 = 15; //ch2
int PinDIR_ch3 = 16; //ch3
int PinDIR_ch4 = 17; //ch4
int Power = 255;
void setup()
{
pinMode(RxD, INPUT);
pinMode(TxD, OUTPUT);
setupBlueToothConnection();
Serial1.begin(9600);
pinMode(PinPWM_ch1,OUTPUT); // left front motor pwm
pinMode(PinPWM_ch2,OUTPUT); // left back motor pwm
pinMode(PinPWM_ch3,OUTPUT); // right front motor pwm
pinMode(PinPWM_ch4,OUTPUT); // right back motor pwm
pinMode(PinDIR_ch1,OUTPUT); // left front motor dir
pinMode(PinDIR_ch2,OUTPUT); // left back motor dir
pinMode(PinDIR_ch3,OUTPUT); // right front motor dir
pinMode(PinDIR_ch4,OUTPUT); // right back motor dir
}
void setupBlueToothConnection()
{
blueToothSerial.begin(38400); //Set BluetoothBee BaudRate to default baud rate 38400
delay(1000);
sendBlueToothCommand("\r\n+STWMOD=0\r\n");
sendBlueToothCommand("\r\n+STNA=SeeeduinoBluetooth\r\n");
sendBlueToothCommand("\r\n+STAUTO=0\r\n");
sendBlueToothCommand("\r\n+STOAUT=1\r\n");
sendBlueToothCommand("\r\n +STPIN=0000\r\n");
delay(2000); // This delay is required.
sendBlueToothCommand("\r\n+INQ=1\r\n");
delay(2000); // This delay is required.
}
void CheckOK()
{
char a,b;
while(1)
{
if(blueToothSerial.available())
{
a = blueToothSerial.read();
if('O' == a)
{
// Wait for next character K. available() is required in some cases, as K is not immediately available.
while(blueToothSerial.available())
{
b = blueToothSerial.read();
break;
}
if('K' == b)
{
break;
}
}
}
}
while( (a = blueToothSerial.read()) != -1)
{
//Wait until all other response chars are received
}
}
void sendBlueToothCommand(char command[])
{
blueToothSerial.print(command);
CheckOK();
}
void loop()
{
// get character sent from Android device
incoming=blueToothSerial.read();
// decide what to do with it
switch (incoming)
{
case 'g':
Forward();
blueToothSerial.println("Forward()");
break;
case 'v':
Backward();
blueToothSerial.println("Backward()");
break;
case 'c':
TurnLeft();
blueToothSerial.println("TurnLeft()");
break;
case 'b':
TurnRight();
blueToothSerial.println("TurnRight()");
break;
default:
Stop();
blueToothSerial.println("Stop()");
break;
}
delay(100);
}
void Backward()
{
digitalWrite(PinDIR_ch1,HIGH); // turn all motors backwards
digitalWrite(PinDIR_ch2,LOW);
digitalWrite(PinDIR_ch3,HIGH);
digitalWrite(PinDIR_ch4,LOW);
analogWrite(PinPWM_ch1,Power); // provide power to all motors
analogWrite(PinPWM_ch2,Power);
analogWrite(PinPWM_ch3,Power);
analogWrite(PinPWM_ch4,Power);
}
void Stop()
{
analogWrite(PinPWM_ch1,LOW); // Stops all motors
analogWrite(PinPWM_ch2,LOW);
analogWrite(PinPWM_ch3,LOW);
analogWrite(PinPWM_ch4,LOW);
}
void Forward()
{
digitalWrite(PinDIR_ch1,LOW); // turn all motors fowards
digitalWrite(PinDIR_ch2,HIGH);
digitalWrite(PinDIR_ch3,LOW);
digitalWrite(PinDIR_ch4,HIGH);
analogWrite(PinPWM_ch1,Power); // provide power to all motors
analogWrite(PinPWM_ch2,Power);
analogWrite(PinPWM_ch3,Power);
analogWrite(PinPWM_ch4,Power);
}
void TurnLeft()
{
digitalWrite(PinDIR_ch1,HIGH); // turns antclockwise
digitalWrite(PinDIR_ch2,LOW);
digitalWrite(PinDIR_ch3,LOW);
digitalWrite(PinDIR_ch4,HIGH);
analogWrite(PinPWM_ch1,Power); // provide power to all motors
analogWrite(PinPWM_ch2,Power);
analogWrite(PinPWM_ch3,Power);
analogWrite(PinPWM_ch4,Power);
}
void TurnRight()
{
digitalWrite(PinDIR_ch1,LOW); // turns antclockwise
digitalWrite(PinDIR_ch2,HIGH);
digitalWrite(PinDIR_ch3,HIGH);
digitalWrite(PinDIR_ch4,LOW);
analogWrite(PinPWM_ch1,Power); // provide power to all motors
analogWrite(PinPWM_ch2,Power);
analogWrite(PinPWM_ch3,Power);
analogWrite(PinPWM_ch4,Power);
}
?Thank You for your help in advance.?
What I am having issues with is connecting my Seeedunio Bluetooth Bee to the Mega 2560 through the Sensor Shield to control the whole thing via Android device.
I have tried the different COM ports and RXD/TXD points, but I am not getting any connection with the Bluetooth module. It is getting power, but does not go into the mode for connecting.
I have connected this Bluetooth Bee to a Arduino Uno via Seedunino Bees shield before and controlled several digital outputs over Bluetooth via android app without a problem.
Am I missing a patching issue on the board or am I programming wrongly?
I would like to use COM1 as, if I am understanding correctly COM0 is where the USB serial travels through. Am I correct in assuming this?
My Sketch Looks as follows:
#include <SoftwareSerial.h>
#define RxD 19
#define TxD 18
#define DEBUG_ENABLED 1
SoftwareSerial blueToothSerial(RxD,TxD);
char incoming;
int PinPWM_ch1 = 9; //ch1 Power
int PinPWM_ch2 = 8; //ch2
int PinPWM_ch3 = 7; //ch3
int PinPWM_ch4 = 6; //ch4
int PinDIR_ch1 = 14; //ch1 Direction
int PinDIR_ch2 = 15; //ch2
int PinDIR_ch3 = 16; //ch3
int PinDIR_ch4 = 17; //ch4
int Power = 255;
void setup()
{
pinMode(RxD, INPUT);
pinMode(TxD, OUTPUT);
setupBlueToothConnection();
Serial1.begin(9600);
pinMode(PinPWM_ch1,OUTPUT); // left front motor pwm
pinMode(PinPWM_ch2,OUTPUT); // left back motor pwm
pinMode(PinPWM_ch3,OUTPUT); // right front motor pwm
pinMode(PinPWM_ch4,OUTPUT); // right back motor pwm
pinMode(PinDIR_ch1,OUTPUT); // left front motor dir
pinMode(PinDIR_ch2,OUTPUT); // left back motor dir
pinMode(PinDIR_ch3,OUTPUT); // right front motor dir
pinMode(PinDIR_ch4,OUTPUT); // right back motor dir
}
void setupBlueToothConnection()
{
blueToothSerial.begin(38400); //Set BluetoothBee BaudRate to default baud rate 38400
delay(1000);
sendBlueToothCommand("\r\n+STWMOD=0\r\n");
sendBlueToothCommand("\r\n+STNA=SeeeduinoBluetooth\r\n");
sendBlueToothCommand("\r\n+STAUTO=0\r\n");
sendBlueToothCommand("\r\n+STOAUT=1\r\n");
sendBlueToothCommand("\r\n +STPIN=0000\r\n");
delay(2000); // This delay is required.
sendBlueToothCommand("\r\n+INQ=1\r\n");
delay(2000); // This delay is required.
}
void CheckOK()
{
char a,b;
while(1)
{
if(blueToothSerial.available())
{
a = blueToothSerial.read();
if('O' == a)
{
// Wait for next character K. available() is required in some cases, as K is not immediately available.
while(blueToothSerial.available())
{
b = blueToothSerial.read();
break;
}
if('K' == b)
{
break;
}
}
}
}
while( (a = blueToothSerial.read()) != -1)
{
//Wait until all other response chars are received
}
}
void sendBlueToothCommand(char command[])
{
blueToothSerial.print(command);
CheckOK();
}
void loop()
{
// get character sent from Android device
incoming=blueToothSerial.read();
// decide what to do with it
switch (incoming)
{
case 'g':
Forward();
blueToothSerial.println("Forward()");
break;
case 'v':
Backward();
blueToothSerial.println("Backward()");
break;
case 'c':
TurnLeft();
blueToothSerial.println("TurnLeft()");
break;
case 'b':
TurnRight();
blueToothSerial.println("TurnRight()");
break;
default:
Stop();
blueToothSerial.println("Stop()");
break;
}
delay(100);
}
void Backward()
{
digitalWrite(PinDIR_ch1,HIGH); // turn all motors backwards
digitalWrite(PinDIR_ch2,LOW);
digitalWrite(PinDIR_ch3,HIGH);
digitalWrite(PinDIR_ch4,LOW);
analogWrite(PinPWM_ch1,Power); // provide power to all motors
analogWrite(PinPWM_ch2,Power);
analogWrite(PinPWM_ch3,Power);
analogWrite(PinPWM_ch4,Power);
}
void Stop()
{
analogWrite(PinPWM_ch1,LOW); // Stops all motors
analogWrite(PinPWM_ch2,LOW);
analogWrite(PinPWM_ch3,LOW);
analogWrite(PinPWM_ch4,LOW);
}
void Forward()
{
digitalWrite(PinDIR_ch1,LOW); // turn all motors fowards
digitalWrite(PinDIR_ch2,HIGH);
digitalWrite(PinDIR_ch3,LOW);
digitalWrite(PinDIR_ch4,HIGH);
analogWrite(PinPWM_ch1,Power); // provide power to all motors
analogWrite(PinPWM_ch2,Power);
analogWrite(PinPWM_ch3,Power);
analogWrite(PinPWM_ch4,Power);
}
void TurnLeft()
{
digitalWrite(PinDIR_ch1,HIGH); // turns antclockwise
digitalWrite(PinDIR_ch2,LOW);
digitalWrite(PinDIR_ch3,LOW);
digitalWrite(PinDIR_ch4,HIGH);
analogWrite(PinPWM_ch1,Power); // provide power to all motors
analogWrite(PinPWM_ch2,Power);
analogWrite(PinPWM_ch3,Power);
analogWrite(PinPWM_ch4,Power);
}
void TurnRight()
{
digitalWrite(PinDIR_ch1,LOW); // turns antclockwise
digitalWrite(PinDIR_ch2,HIGH);
digitalWrite(PinDIR_ch3,HIGH);
digitalWrite(PinDIR_ch4,LOW);
analogWrite(PinPWM_ch1,Power); // provide power to all motors
analogWrite(PinPWM_ch2,Power);
analogWrite(PinPWM_ch3,Power);
analogWrite(PinPWM_ch4,Power);
}
?Thank You for your help in advance.?
2014-03-18 06:14:30 
Found my issue with help from the technical support. Code looks as follows.
Still under development:
char incoming;
int PinPWM_ch1 = 9; // make sure these pin numbers are correct !!! ch1
int PinPWM_ch2 = 8; //ch2
int PinPWM_ch3 = 7; //ch3
int PinPWM_ch4 = 6; //ch4
int PinDIR_ch1 = 14; //ch1
int PinDIR_ch2 = 15; //ch2
int PinDIR_ch3 = 16; //ch3
int PinDIR_ch4 = 17; //ch4
int Power = 255;
// 2 is right motors 1 is left motors
void setup()
{;
setupBlueToothConnection();
Serial.begin(9600);
pinMode(PinPWM_ch1,OUTPUT); // left front motor pwm
pinMode(PinPWM_ch2,OUTPUT); // left back motor pwm
pinMode(PinPWM_ch3,OUTPUT); // right front motor pwm
pinMode(PinPWM_ch4,OUTPUT); // right back motor pwm
pinMode(PinDIR_ch1,OUTPUT); // left front motor dir
pinMode(PinDIR_ch2,OUTPUT); // left back motor dir
pinMode(PinDIR_ch3,OUTPUT); // right front motor dir
pinMode(PinDIR_ch4,OUTPUT); // right back motor dir
}
void setupBlueToothConnection()
{
Serial.print("Setting up Bluetooth link"); //For debugging, Comment this line if not required
Serial1.begin(38400); //Set BluetoothBee BaudRate to default baud rate 38400
delay(1000);
Serial1.print("\r\n+STWMOD=0\r\n");
Serial1.print("\r\n+STNA=modem\r\n");
Serial1.print("\r\n+STAUTO=0\r\n");
Serial1.print("\r\n+STOAUT=1\r\n");
Serial1.print("\r\n+STPIN=0000\r\n");
delay(2000); // This delay is required.
Serial1.print("\r\n+INQ=1\r\n");
delay(2000); // This delay is required.
Serial.print("Setup complete");
}
void CheckOK()
{
char a,b;
while(1)
{
if(Serial1.available())
{
a = Serial1.read();
if('O' == a)
{
// Wait for next character K. available() is required in some cases, as K is not immediately available.
while(Serial1.available())
{
b = Serial1.read();
break;
}
if('K' == b)
{
break;
}
}
}
}
while( (a = Serial1.read()) != -1)
{
//Wait until all other response chars are received
}
}
void sendBlueToothCommand(char command[])
{
Serial1.print(command);
CheckOK();
}
void loop()
{
// get character sent from Android device
incoming=Serial1.read();
// decide what to do with it
switch (incoming)
{
case 'g':
Forward();
Serial1.println("Forward()");
break;
case 'v':
Backward();
Serial1.println("Backward()");
break;
case 'c':
TurnLeft();
Serial1.println("TurnLeft()");
break;
case 'b':
TurnRight();
Serial1.println("TurnRight()");
break;
default:
Stop();
Serial1.println("Stop()");
break;
}
delay(100);
// Forward();
// delay(1000);
// Stop();
// delay(1000);
// TurnRight();
// delay(1000);
// Stop();
// delay(1000);
// Forward();
// delay(1000);
// Stop();
// delay(1000);
// TurnRight();
// delay(1000);
// Stop();
// delay(1000);
}
void Backward()
{
digitalWrite(PinDIR_ch1,HIGH); // turn all motors backwards
digitalWrite(PinDIR_ch2,LOW);
digitalWrite(PinDIR_ch3,HIGH);
digitalWrite(PinDIR_ch4,LOW);
analogWrite(PinPWM_ch1,Power); // provide power to all motors
analogWrite(PinPWM_ch2,Power);
analogWrite(PinPWM_ch3,Power);
analogWrite(PinPWM_ch4,Power);
}
void Stop()
{
analogWrite(PinPWM_ch1,LOW); // Stops all motors
analogWrite(PinPWM_ch2,LOW);
analogWrite(PinPWM_ch3,LOW);
analogWrite(PinPWM_ch4,LOW);
}
void Forward()
{
digitalWrite(PinDIR_ch1,LOW); // turn all motors fowards
digitalWrite(PinDIR_ch2,HIGH);
digitalWrite(PinDIR_ch3,LOW);
digitalWrite(PinDIR_ch4,HIGH);
analogWrite(PinPWM_ch1,Power); // provide power to all motors
analogWrite(PinPWM_ch2,Power);
analogWrite(PinPWM_ch3,Power);
analogWrite(PinPWM_ch4,Power);
}
void TurnLeft()
{
digitalWrite(PinDIR_ch1,HIGH); // turns antclockwise
digitalWrite(PinDIR_ch2,LOW);
digitalWrite(PinDIR_ch3,LOW);
digitalWrite(PinDIR_ch4,HIGH);
analogWrite(PinPWM_ch1,Power); // provide power to all motors
analogWrite(PinPWM_ch2,Power);
analogWrite(PinPWM_ch3,Power);
analogWrite(PinPWM_ch4,Power);
}
void TurnRight()
{
digitalWrite(PinDIR_ch1,LOW); // turns antclockwise
digitalWrite(PinDIR_ch2,HIGH);
digitalWrite(PinDIR_ch3,HIGH);
digitalWrite(PinDIR_ch4,LOW);
analogWrite(PinPWM_ch1,Power); // provide power to all motors
analogWrite(PinPWM_ch2,Power);
analogWrite(PinPWM_ch3,Power);
analogWrite(PinPWM_ch4,Power);
}
VanOosthuysen

Found my issue with help from the technical support. Code looks as follows.
Still under development:
char incoming;
int PinPWM_ch1 = 9; // make sure these pin numbers are correct !!! ch1
int PinPWM_ch2 = 8; //ch2
int PinPWM_ch3 = 7; //ch3
int PinPWM_ch4 = 6; //ch4
int PinDIR_ch1 = 14; //ch1
int PinDIR_ch2 = 15; //ch2
int PinDIR_ch3 = 16; //ch3
int PinDIR_ch4 = 17; //ch4
int Power = 255;
// 2 is right motors 1 is left motors
void setup()
{;
setupBlueToothConnection();
Serial.begin(9600);
pinMode(PinPWM_ch1,OUTPUT); // left front motor pwm
pinMode(PinPWM_ch2,OUTPUT); // left back motor pwm
pinMode(PinPWM_ch3,OUTPUT); // right front motor pwm
pinMode(PinPWM_ch4,OUTPUT); // right back motor pwm
pinMode(PinDIR_ch1,OUTPUT); // left front motor dir
pinMode(PinDIR_ch2,OUTPUT); // left back motor dir
pinMode(PinDIR_ch3,OUTPUT); // right front motor dir
pinMode(PinDIR_ch4,OUTPUT); // right back motor dir
}
void setupBlueToothConnection()
{
Serial.print("Setting up Bluetooth link"); //For debugging, Comment this line if not required
Serial1.begin(38400); //Set BluetoothBee BaudRate to default baud rate 38400
delay(1000);
Serial1.print("\r\n+STWMOD=0\r\n");
Serial1.print("\r\n+STNA=modem\r\n");
Serial1.print("\r\n+STAUTO=0\r\n");
Serial1.print("\r\n+STOAUT=1\r\n");
Serial1.print("\r\n+STPIN=0000\r\n");
delay(2000); // This delay is required.
Serial1.print("\r\n+INQ=1\r\n");
delay(2000); // This delay is required.
Serial.print("Setup complete");
}
void CheckOK()
{
char a,b;
while(1)
{
if(Serial1.available())
{
a = Serial1.read();
if('O' == a)
{
// Wait for next character K. available() is required in some cases, as K is not immediately available.
while(Serial1.available())
{
b = Serial1.read();
break;
}
if('K' == b)
{
break;
}
}
}
}
while( (a = Serial1.read()) != -1)
{
//Wait until all other response chars are received
}
}
void sendBlueToothCommand(char command[])
{
Serial1.print(command);
CheckOK();
}
void loop()
{
// get character sent from Android device
incoming=Serial1.read();
// decide what to do with it
switch (incoming)
{
case 'g':
Forward();
Serial1.println("Forward()");
break;
case 'v':
Backward();
Serial1.println("Backward()");
break;
case 'c':
TurnLeft();
Serial1.println("TurnLeft()");
break;
case 'b':
TurnRight();
Serial1.println("TurnRight()");
break;
default:
Stop();
Serial1.println("Stop()");
break;
}
delay(100);
// Forward();
// delay(1000);
// Stop();
// delay(1000);
// TurnRight();
// delay(1000);
// Stop();
// delay(1000);
// Forward();
// delay(1000);
// Stop();
// delay(1000);
// TurnRight();
// delay(1000);
// Stop();
// delay(1000);
}
void Backward()
{
digitalWrite(PinDIR_ch1,HIGH); // turn all motors backwards
digitalWrite(PinDIR_ch2,LOW);
digitalWrite(PinDIR_ch3,HIGH);
digitalWrite(PinDIR_ch4,LOW);
analogWrite(PinPWM_ch1,Power); // provide power to all motors
analogWrite(PinPWM_ch2,Power);
analogWrite(PinPWM_ch3,Power);
analogWrite(PinPWM_ch4,Power);
}
void Stop()
{
analogWrite(PinPWM_ch1,LOW); // Stops all motors
analogWrite(PinPWM_ch2,LOW);
analogWrite(PinPWM_ch3,LOW);
analogWrite(PinPWM_ch4,LOW);
}
void Forward()
{
digitalWrite(PinDIR_ch1,LOW); // turn all motors fowards
digitalWrite(PinDIR_ch2,HIGH);
digitalWrite(PinDIR_ch3,LOW);
digitalWrite(PinDIR_ch4,HIGH);
analogWrite(PinPWM_ch1,Power); // provide power to all motors
analogWrite(PinPWM_ch2,Power);
analogWrite(PinPWM_ch3,Power);
analogWrite(PinPWM_ch4,Power);
}
void TurnLeft()
{
digitalWrite(PinDIR_ch1,HIGH); // turns antclockwise
digitalWrite(PinDIR_ch2,LOW);
digitalWrite(PinDIR_ch3,LOW);
digitalWrite(PinDIR_ch4,HIGH);
analogWrite(PinPWM_ch1,Power); // provide power to all motors
analogWrite(PinPWM_ch2,Power);
analogWrite(PinPWM_ch3,Power);
analogWrite(PinPWM_ch4,Power);
}
void TurnRight()
{
digitalWrite(PinDIR_ch1,LOW); // turns antclockwise
digitalWrite(PinDIR_ch2,HIGH);
digitalWrite(PinDIR_ch3,HIGH);
digitalWrite(PinDIR_ch4,LOW);
analogWrite(PinPWM_ch1,Power); // provide power to all motors
analogWrite(PinPWM_ch2,Power);
analogWrite(PinPWM_ch3,Power);
analogWrite(PinPWM_ch4,Power);
}
