Loading...

You have no items in your shopping cart.

 
 
 
×

Registration

Profile Informations

Login Datas

or login

First name is required!
Last name is required!
First name is not valid!
Last name is not valid!
This is not an email address!
Email address is required!
This email is already registered!
Password is required!
Enter a valid password!
Please enter 6 or more characters!
Please enter 16 or less characters!
Passwords are not same!
Terms and Conditions are required!
Email or Password is wrong!
Captcha is required!
Captcha is wrong!

ITEAD Bluetooth Robot Panel

We uploaded a video on how to control a Makeblock car with Android cellphone sometime ago. Now we would like to share a new video with you, which was made in Shenzhen mini maker faire about ITEAD and Makeblock operating 2 cars by cellphones in the middle of the demonstration booth.

Seeing from the feedback, we find that a lot of people are interested in remote-control cars. Mechanical part and motor control are no problems, while cellphone control software is a nightmare to many of the mechanical experts and electronics specialists. Therefore, we’d like to offer you a universal Bluetooth remote-control platform which is able to receive corresponding instruction once Bluetooth is connected and the corresponding button is pressed down. You only need to let your robot perform corresponding operations after receiving the instructions – I believe this is a piece of cake for many guys.

We updated the old version of "Makeblock Bluetooth Controller" software, upgraded it as new "Bluetooth Robot Panel” and released it in google play(Click HERE). In the new version, UI is beautified and a slide switch is added. That is to say, the new software offers eight direction control buttons, four ordinary buttons, a progress bar and a slide switch. In the previous version, when you press the corresponding button or switch, fixed instructions will be sent to the robot which we feel will influence the versatility of this software. Therefore, in the new version, we provide a customization function for each button and switch in the setup menu. You can define the command data sent by cellphones via Bluetooth when the button or switch is triggered- the current version still only supports sending string commands.

We only verify display on cellphones with several resolutions, so it may not be compatible with other phones. If you find such problems, you can provide a report to us and tell us the problems you encountered, we will update promptly to solve the problem.

Here is a simple piece of C program which we use to receive remote control from cellphones and to control movement of Makeblock car, as you can see in the video – what we did is quite simple without considering much about stability and compatibility. If you are interested, you can write a complete code to achieve your function, we provided you with enough control buttons on the control panel.

#define _US 0x5553
#define _DS 0x4453
#define _LS 0x4C53
#define _RS 0x5253
#define _UL 0x554C
#define _DL 0x444C
#define _UR 0x5552
#define _DR 0x4452

#define _SS 0x5353

#define ENA 10
#define ENB 11
#define IN1 7
#define IN2 8
#define IN3 12
#define IN4 13

#define LOWSPEED 100
#define HIGHSPEED 255



uint16_t value;

uint8_t r_buffer[4];

uint8_t number;
uint8_t command;


void setup(){
	pinMode(ENA,OUTPUT);
	pinMode(ENB,OUTPUT);
	pinMode(IN1,OUTPUT);
	pinMode(IN2,OUTPUT);
	pinMode(IN3,OUTPUT);
	pinMode(IN4,OUTPUT);
	//digitalWrite(ENA, HIGH);   
	//digitalWrite(ENB, HIGH); 
       run(0);


Serial1.begin(9600);

}

void loop(){

	if(Serial1.available())
	{
		uint8_t readbuf = Serial1.read();
		r_buffer[number]=readbuf;
		number++;
		
		if(readbuf==0x3B)
		{	
			if(number==3)
			{
				value = (r_buffer[0]<<8) | (r_buffer[1]);
			}
			number=0;
			command=1;

		}
	

	
	}



	if(command)
	{
		command=0;
		switch(value)
		{
  			case _SS:	run(0);break;
			case _US:	run(1);break;
			case _DS:	run(2);break;
			case _LS:	run(3);break;
			case _RS:	run(4);break;
			case _UL:	run(5);break;
			case _UR:	run(6);break;
			case _DL:	run(7);break;
			case _DR:	run(8);break;

		
		}
	
	
	}





}



void forward()
{
	digitalWrite(ENA, HIGH); 
	digitalWrite(ENB, HIGH);
	digitalWrite(IN1, HIGH); 
	digitalWrite(IN2, LOW);
	digitalWrite(IN3, HIGH); 
	digitalWrite(IN4, LOW); 
}

void backward()
{
	digitalWrite(ENA, HIGH); 
	digitalWrite(ENB, HIGH);
	digitalWrite(IN1, LOW); 
	digitalWrite(IN2, HIGH);
	digitalWrite(IN3, LOW); 
	digitalWrite(IN4, HIGH); 
}

void turnleft()
{
	digitalWrite(ENA, HIGH); 
	digitalWrite(ENB, HIGH);
	digitalWrite(IN1, LOW); 
	digitalWrite(IN2, LOW);
	digitalWrite(IN3, HIGH); 
	digitalWrite(IN4, LOW); 
}

void turnright()
{
	digitalWrite(ENA, HIGH); 
	digitalWrite(ENB, HIGH);
	digitalWrite(IN1, HIGH); 
	digitalWrite(IN2, LOW);
	digitalWrite(IN3, LOW); 
	digitalWrite(IN4, LOW); 
}

void stopcar()
{
	digitalWrite(ENA, LOW); 
	digitalWrite(ENB, LOW);
	digitalWrite(IN1, LOW); 
	digitalWrite(IN2, LOW);
	digitalWrite(IN3, LOW); 
	digitalWrite(IN4, LOW); 
}

void run(int direct)
{
	switch(direct)
	{
		case 0: 
				digitalWrite(IN1, LOW); 
				digitalWrite(IN2, LOW);
				digitalWrite(IN3, LOW); 
				digitalWrite(IN4, LOW); 
				analogWrite(ENA,0);
				analogWrite(ENB,0);
				break;
		case 1: 
				digitalWrite(IN1, HIGH); 
				digitalWrite(IN2, LOW);
				digitalWrite(IN3, HIGH); 
				digitalWrite(IN4, LOW); 
				analogWrite(ENA,LOWSPEED);
				analogWrite(ENB,LOWSPEED);
				break;
		case 2:
				digitalWrite(IN1, LOW); 
				digitalWrite(IN2, HIGH);
				digitalWrite(IN3, LOW); 
				digitalWrite(IN4, HIGH); 
				analogWrite(ENA,LOWSPEED);
				analogWrite(ENB,LOWSPEED);
				break;		
		case 3:
				digitalWrite(IN1, LOW); 
				digitalWrite(IN2, LOW);
				digitalWrite(IN3, HIGH); 
				digitalWrite(IN4, LOW); 
				analogWrite(ENA,LOWSPEED);
				analogWrite(ENB,LOWSPEED);
				break;		
		case 4:
				digitalWrite(IN1, HIGH); 
				digitalWrite(IN2, LOW);
				digitalWrite(IN3, LOW); 
				digitalWrite(IN4, LOW); 
				analogWrite(ENA,LOWSPEED);
				analogWrite(ENB,LOWSPEED);
				break;	
		case 5: 
				digitalWrite(IN1, HIGH); 
				digitalWrite(IN2, LOW);
				digitalWrite(IN3, HIGH); 
				digitalWrite(IN4, LOW); 
				analogWrite(ENA,LOWSPEED);
				analogWrite(ENB,HIGHSPEED);
				break;
		case 6:
				digitalWrite(IN1, HIGH); 
				digitalWrite(IN2, LOW);
				digitalWrite(IN3, HIGH); 
				digitalWrite(IN4, LOW); 
				analogWrite(ENA,HIGHSPEED);
				analogWrite(ENB,LOWSPEED);
				break;		
		case 7:
				digitalWrite(IN1, LOW); 
				digitalWrite(IN2, HIGH);
				digitalWrite(IN3, LOW); 
				digitalWrite(IN4, HIGH); 
				analogWrite(ENA,LOWSPEED);
				analogWrite(ENB,HIGHSPEED);
				break;		
		case 8:
				digitalWrite(IN1, LOW); 
				digitalWrite(IN2, HIGH);
				digitalWrite(IN3, LOW); 
				digitalWrite(IN4, HIGH); 
				analogWrite(ENA,HIGHSPEED);
				analogWrite(ENB,LOWSPEED);
				break;		
	
	}

}