Upload
ben-johnke
View
1.694
Download
0
Embed Size (px)
DESCRIPTION
Citation preview
1
Android-Controlled RobotBen Johnke
ECE561 Final ProjectDecember 16, 2013
2
Project Overview• What?– Vehicle which can be controlled remotely by an
Android smartphone• How?– Write an Android app which allows the user to
provide throttle and steering inputs– The app sends commands via Bluetooth– Commands received by Bluetooth modem
connected to microcontroller– Microcontroller controls motors
3
System Overview
Motor driver
Power source
Microcontroller
Bluetooth modem
Drivetrain
Android controller application
4
System Overview
Motor driver
Power source
Microcontroller
Bluetooth modem
Drivetrain
Android controller application
5
Drivetrain• Vehicle driven by left and right
DC motors• Motor torque spec based on
estimated vehicle weight, desired acceleration
• Differential steering employed– Turn vehicle by driving motors at
different velocities– Ball casters in front allow pivoting;
no additional wheels needed
6
System Overview
Motor driver
Power source
Microcontroller
Bluetooth modem
Drivetrain
Android controller application
7
Power Source• Few battery technologies can
provide high current• Max. discharge rate specified by
“C”-rating– C = battery capacity in amp hrs.– NiMH: ~1C– LiPo: 10C+
• LiPo selected to meet this application’s high-current needs– 6A stall current per motor– Chosen battery has 4.0Ah
capacity and 25C discharge rating
8
System Overview
Motor driver
Power source
Microcontroller
Android controller application
Bluetooth modem
Drivetrain
9
Motor Driver• Motor control requires full processor attention
– Monitor motor speed– Continuously adjust motor voltage to minimize error between desired and
actual motor speeds– Essentially a digital feedback control system
• Want to avoid this additional hardware and software complexity• Solution: Pololu Dual Motor Driver Shield for Arduino
– Contains 2 STMicroelectronics VNH5019 motor drivers, each rated for 12A– Includes Arduino library allowing motor speeds to be set with simple
function call
10
System Overview
Motor driver
Power source
Microcontroller
Bluetooth modem
Drivetrain
Android controller application
11
Microcontroller• Arduino UNO
– 14 digital I/O pins which can also be used for serial communication
– On-board regulated 5V supply– Works with Pololu Motor Driver Shield
• Implements differential steering algorithm– Outside wheel speed set based on
throttle command alone– Inside wheel speed also set based on
throttle command, but subtracted from according to sharpness of steering angle
– Rate limiter keeps speeds from changing too quickly
12
System Overview
Motor driver
Power source
Microcontroller
Bluetooth modem
Drivetrain
Android controller application
13
Bluetooth Modem• Want Class 1 Bluetooth for long range
(~100m)– Chosen model: BlueSMiRF Gold
• Essentially implements a wireless serial stream– When modem receives a message via
Bluetooth, it sends that message via serial– When modem receives a message via serial,
it sends that message via Bluetooth• Has static network address which Android
controller uses to establish a connection
14
System Overview
Motor driver
Power source
Microcontroller
Bluetooth modem
Drivetrain
Android controller application
15
Android Controller Application• Creates socket for
communicating with Bluetooth modem, using its known address
• Reads throttle and steering slider bar values, transmits periodically on socket’s OutputStream
• Listens on socket’s InputStream for error messages from Arduino
16
Lessons Learned• Skills
– Android app development (Java, XML)– Selecting parts based on datasheets– Practical aspects: sourcing parts, mechanical fabrication– Bringing a design from concept to implementation
• Conclusion– It is feasible to implement Bluetooth communication between
smartphone and microcontroller– This opens door for wide range of possible similar
applications• Remote starter for car• Automation of household tasks
17
Future Extensions• Advanced motion
– i.e. robot arm controlled by servo motor
• Obstacle avoidance– Install proximity sensor; develop
algorithms to steer around / back up when obstacles detected
• Vision– Use camera to transmit frames back
to Android application for display to user
– Bluetooth too low-bandwidth; switch to WiFi
18
Video
• https://www.youtube.com/watch?v=LB0zt2BYd84