SpyBot: Bluetooth-controlled mBed Robot with Raspberry Pi IP Camera
- Peter John
- Rohit Ganesan
- Jason McNeely
- Lucas Kinser
Description
SpyBot is a bluetooth controlled robot that transmits live streaming video to a web terminal over WiFi. The robot uses an NXP1768 mbed and H-bridge combined with an Adafruit Blufruit Bluetooth module for robot control. in adition to the robot motion controls, camera position is performed using a servo controlled by the mbed board. All functions are performed using a bluetooth remote control installed on a smartphone. Image capture, processing, and streaming is performed with a Raspberry Pi Zero W and Raspberry Pi camera module then streamed live to a web terminal over WiFi.
Components
- NXP LPC 1768 mbed board
- H-bridge motor controller
- Adafruit Blufruit Bluetooth module
- Raspberry Pi Zero W
- Raspberry Pi Camera module version 2
- Hitec Hs 322Hd Servo Motor
- Shadow Robot Kit
Pinouts
H-Bridge
| MBED | H-Bridge | Motor |
|---|---|---|
| P26 | PWMA | |
| P21 | PWMB | |
| P17 | AIN1 | |
| P18 | AIN2 | |
| P19 | BIN1 | |
| P20 | BIN2 | |
| Vcc | Vcc | |
| Vout | VMOT | |
| Vcc | STBY | |
| Gnd | Gnd | |
| AO1 | Right Motor - | |
| AO2 | Right Motor + | |
| BO1 | Left Motor + | |
| BO2 | Left Motor - |
BluFruit
| MBED | BluFruit |
|---|---|
| Gnd | CTS |
| Gnd | Gnd |
| Vcc | Vin |
| P27 | TXO |
| P28 | RXI |
Servo
| MBED | Servo |
|---|---|
| P22 | Signal/Yellow |
| Vcc | Power/Red |
| Gnd | Gnd/Black |
Paspberry Pi Zero W
Self contained with only power needing to be wired.
Mbed Robot Control Code
#include "mbed.h"
#include "motordriver.h"
#include "rtos.h"
#include "Servo.h"
RawSerial blue(p28,p27);//bluetooth chip
BusOut myled(LED1,LED2,LED3,LED4);
Motor A(p26, p18, p17, 1); // LEFT pwm, fwd, rev, can brake
Motor B(p21, p19, p20, 1); // RIGHT
Servo myservo(p22);
float p=0.5;
int main(){
char bnum=0;
char bhit=0;
while(1){
if (blue.getc()=='!'){
if (blue.getc()=='B'){ //button data packet
bnum = blue.getc(); //button number
bhit = blue.getc(); //1=hit, 0=release
{
myled = bnum - '0'; //current button number will appear on LEDs
switch (bnum){
case '6': //number button 6
if (bhit=='1'){
A.speed(1);
B.speed(1);
}
else{
A.speed(0);
B.speed(0);
}
break;
case '1': //number button 1
if (bhit=='1') {
p += 0.1;
myservo = p;
wait(0.1);
}
break;
case '2': //number button 2
if (bhit=='1'){
p -= 0.1;
myservo = p;
wait(0.1);
}
break;
case '5': //number button 5
if (bhit=='1') {
A.speed(-1);
B.speed(-1);
} else {
A.speed(0);
B.speed(0);
}
break;
case '7': //button 7 left arrow
if (bhit=='1') {
A.speed(-0.75);
B.speed(0.75);
} else {
A.speed(0);
B.speed(0);
}
break;
case '8': //button 8 right arrow
if (bhit=='1') {
A.speed(0.75);
B.speed(-0.75);
} else {
A.speed(0);
B.speed(0);
}
break;
default:
break;
}
}
}
}
}//end of while(1)
}//end of main
Raspberry Pi Software Setup
The basic Spy Bot camera set up and installation can be performed if the following tutorial is followed.
http://www.toptechboy.com/tutorial/low-cost-raspberry-pi-ip-camera/
Video Demonstration
Notes
Please log in to post comments.
