This project aims at hacking a remote controlled car by replacing the tx/rx and navigation systems. This project implements the car side.
Dependencies: mbed-rtos mbed ssWi
This project consists of a remote controller which pilots a car holding a video camera onboard. It is divided in two main parts:
- user side: the microcontroller reads the user input from the joystick (four potentiometers), elaborates them and then sends those commands through the wireless connection (using a XBee module);
- car side: the microcontroller receives the sent commands (using a XBee module), elaborates them and adjusts the main engine, the steering servomotor and the two servos which move the X-Y axis of the onboard video camera.
Here are a image of the hardware and a video I recorderd and edited.
Concerning the part related to the user side, the project is the following.
Import programrover_pc
This project aims at hacking a remote controlled car by replacing the tx/rx and navigation systems. This project implements the pc side.
The communication protocol I exploited to make the two parts communicate each other is ssWi.
Import libraryssWi
A simple wireless protocol to let my examples communicate each other. ssWi stands for Shared Slotted Wireless protocol
Diff: carDrivers/Servo/servo.cpp
- Revision:
- 0:97d3a2b0ff58
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/carDrivers/Servo/servo.cpp Tue Mar 12 07:35:28 2013 +0000 @@ -0,0 +1,27 @@ +#include "servo.hpp" + + +Servo::Servo (PinName pwm, float min, float max, float center): _pwm(pwm) +{ + _pwm.period(0.02); + _min = min; + _max = max; + _center = center; + *this = 0.5; +} + +Servo &Servo::operator= (float angle) +{ + if (angle>1.0) + angle = 1.0; + else + if (angle<-1.0) + angle = -1.0; + _pwm.pulsewidth(_center+((_max-_min)*(angle/2.0))); + return *this; +} + +Servo::operator float() +{ + return _pwm.read(); +}