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
carDrivers/car.hpp@0:97d3a2b0ff58, 2013-03-12 (annotated)
- Committer:
- mariob
- Date:
- Tue Mar 12 07:35:28 2013 +0000
- Revision:
- 0:97d3a2b0ff58
rover project - car side; MB
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mariob | 0:97d3a2b0ff58 | 1 | #ifndef __CAR_HPP__ |
mariob | 0:97d3a2b0ff58 | 2 | #define __CAR_HPP__ |
mariob | 0:97d3a2b0ff58 | 3 | |
mariob | 0:97d3a2b0ff58 | 4 | |
mariob | 0:97d3a2b0ff58 | 5 | #include "servo.hpp" |
mariob | 0:97d3a2b0ff58 | 6 | |
mariob | 0:97d3a2b0ff58 | 7 | |
mariob | 0:97d3a2b0ff58 | 8 | #define CAMERA_ANGLE_STEP 0.1 |
mariob | 0:97d3a2b0ff58 | 9 | |
mariob | 0:97d3a2b0ff58 | 10 | |
mariob | 0:97d3a2b0ff58 | 11 | class Car |
mariob | 0:97d3a2b0ff58 | 12 | { |
mariob | 0:97d3a2b0ff58 | 13 | //camera |
mariob | 0:97d3a2b0ff58 | 14 | int angleX; |
mariob | 0:97d3a2b0ff58 | 15 | int angleY; |
mariob | 0:97d3a2b0ff58 | 16 | Servo cameraX; |
mariob | 0:97d3a2b0ff58 | 17 | Servo cameraY; |
mariob | 0:97d3a2b0ff58 | 18 | |
mariob | 0:97d3a2b0ff58 | 19 | //motor |
mariob | 0:97d3a2b0ff58 | 20 | Servo steering; |
mariob | 0:97d3a2b0ff58 | 21 | Servo motor; |
mariob | 0:97d3a2b0ff58 | 22 | |
mariob | 0:97d3a2b0ff58 | 23 | public: |
mariob | 0:97d3a2b0ff58 | 24 | |
mariob | 0:97d3a2b0ff58 | 25 | Car (PinName pinCamX, PinName pinCamY, PinName pinSteering, PinName pinMotor); |
mariob | 0:97d3a2b0ff58 | 26 | |
mariob | 0:97d3a2b0ff58 | 27 | void setSpeed (float s); |
mariob | 0:97d3a2b0ff58 | 28 | void setSteering (float angle); |
mariob | 0:97d3a2b0ff58 | 29 | void setCamera (float x, float y); |
mariob | 0:97d3a2b0ff58 | 30 | |
mariob | 0:97d3a2b0ff58 | 31 | }; |
mariob | 0:97d3a2b0ff58 | 32 | |
mariob | 0:97d3a2b0ff58 | 33 | |
mariob | 0:97d3a2b0ff58 | 34 | #endif //__CAR_HPP__ |