Aug 18, 2017
Andrew Barbosa
Whew! Another long time since an update on the RC Car project!
There have been some major developments on the project since last time and I’ll go through them here.
After the last update, I did design a PCB to condense the project into a neater form factor, however there were several issues with the design and ultimately the board was nonfunctional. After spending a few days attempting to get the board working correctly I made the decision to put that on hold and get the car working again (it was dissembled for parts). This was supposed to be a simple task considering I had done it once but after several days of work I was left unable to make the radio modules communicate with each other. It was at this point I decided to move the system to a new platform.
You may have seen another project on our website, “The 3D Printed Robotic Hand”. This project used an Xbee module with Arduino to achieve wireless communication. When I worked with the Xbee I had no issues and so it was a simple decision to purchase another set and use it for this project as well. Configuration of the Xbees modules was a breeze. Using an Explorer USB board, all that needed to be done was choose the channel and pan ID, the same for both the transmitter and receiver, and then set the values for DH, DL, and MY which ended up being 0,1,0 and 0,0,1 respectively. With that done the Xbees worked perfectly and I never had any issues with communication afterwards.
RECEIVE_DATA_STRUCTURE rxdata;
void setup() {
Serial.begin(9600);
ETin.begin(details(rxdata), &Serial);
front.attach(3);
rear.attach(5);
rear.write(40);
}
void loop() {
for(int i = 0; i<5; i++){
ETin.receiveData();
SoftwareServo::refresh();
int drive;
int throttleIN = rxdata.throttle;
int steeringIN = rxdata.steering;
int brakeIN = rxdata.brake;
int tilt = map(steeringIN, 250, 730, 180, 0);
if(throttleIN > 100 && brakeIN < 100){
drive = 105;
}
if(throttleIN < 100 && brakeIN > 100){
drive = 80;
}
if(throttleIN > 100 && brakeIN > 100){
drive = 90;
}
if(throttleIN < 100 && brakeIN < 100){
drive = 90;
}
rear.write(drive);
if(tilt <= 70 || tilt >= 110){
front.write(tilt);
}
else{
front.write(90);
}
}
}
With the code written we downsized the RC Car to a 1/16th scale size and hooked it up in the exact same way as before. Another intern, John, designed a nice mount which we 3D printed and attached to the frame of the car giving us our (mostly) finished product you see here.
With the car mostly done, aside from a few cosmetic issues that will be addressed, our attention will now focus on renovating the motorcycle controller. So far, we have detached it from the other motorcycle so it can be used independently and we are working on repainting and repairing the rest. Once all that is over with I may revisit the PCB but that will wait until after the project is ‘done’.