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.