Frankenkar

Group:
Nate Bustamante : Head programmer/Computer engineer
Bobby Wnetrzak: Assistant programmer/Official de-constructor
Dave Bywalec: Head Mechanical Engineer/Assistant to the assistant programmer/Assistant de-constructor

Description:
Our car is programmed to use the Wii-mote, nunchuck to operate. To begin we started with a remote controlled car, the motor was 24 volt, thusly being to large, we had to replace with a smaller motor from a different remote controlled car. We had to engineer the way it would mount, battery mounts and a way to mount the arduino board.


Most of the problems we ran into were construction related. We had to take off the entire back of the car because one of the old wheels was broken. Then we had to figure out a way to attach two batteries and our arduino chip where they wouldn't get in the way. We made battery holders and screwed those into the frame of the car for the batteries. For the arduino chip, we zip tied it to the frame because we didn't want to risk damaging the chip by driving screws into it.

If we had more time and money, I would have liked to make the car remote control via a bluetooth ps3 controller, however, we don't have the necessary equipment to connect the ps3 controller to the arduino like we did for the Wii nunchuck.

Our program works by reading the values of the nunchuck's joystick and setting the position of the servos according to the nunchuck's values. The first servo controls the steering while the other controls the throttle.




We used a Wiichuck library that we downloaded from this site http://todbot.com/blog/2008/02/18/wiichuck-wii-nunchuck-adapter-available/
/*
 * WiiChuckDemo -- 
 *
 * 2008 Tod E. Kurt, http://thingm.com/
 *
 */

#include <Wire.h>
#include "nunchuck_funcs.h" //include these libraries #include <Servo.h>

int loop_cnt=0;
int val = 0; //val is a variable to control the angle of the servo that controls the front wheels for steering int val2 = 0; //val2 is a variable to control the angle of the servo that controls the throttle byte accx,accy,zbut,cbut; //accx and accy are for serial monitor purposes and show the values of the joystick's x and y axis. //                          zbut and cbut are not used however can be seen in the serial monitor. Servo myservo; //this creates a variable for the servo controlling the front wheels Servo throttle; //this creates a variable for the servo controlling the throttle void setup()
{
    Serial.begin(19200);
    nunchuck_setpowerpins();
    nunchuck_init(); // send the initilization handshake          Serial.print("WiiChuckDemo ready\n");
     myservo.attach(14); //attach servo to analog pin 0      throttle.attach(15); //attach servo to analog pin 1 } void loop()
{
  val=nunchuck_joyx();                //set value equal to the joystick's x-axis   if(val<110||val>150) //if value is less than 110 or greater than 150 then   {   val=map(val,70,182,0,180); //set range that is originally 70-182 to 0-180   }   else   {     val=90;                           //if value is in between 110 and 150 then set value equal to 90   }   myservo.write(val); //turn servo to mapped value      val2=nunchuck_joyy();               //set value2 equal to the joystick's y-axis   if(val<110||val>150) //if value2 is less than 110 or greater than 150 then   {   val2=map(val2,65,173,70,105); //set range that was originally 65-173 to 70-105  }  else  {   val2=110;                           //if value2 is between 110 and 150 then set equal to 110  }   throttle.write(val2); //turn servo to mapped value     if( loop_cnt > 100 ) { // every 100 msecs get new data         loop_cnt = 0;         nunchuck_get_data();         accx  = nunchuck_joyx(); // ranges from approx 70 - 182         accy  = nunchuck_joyy(); // ranges from approx 65 - 173         zbut = nunchuck_zbutton();         cbut = nunchuck_cbutton();                       Serial.print("accx: "); Serial.print((byte)accx,DEC);
        Serial.print("\taccy: "); Serial.print((byte)accy,DEC);
        Serial.print("\tzbut: "); Serial.print((byte)zbut,DEC);
        Serial.print("\tcbut: "); Serial.println((byte)cbut,DEC);
    }
    loop_cnt++;
    delay(1);
}


 Top View: note the different rear end. Shocks from old car were used, attatched with eye-bolts to the chassis. Arduino zip tied to top, battery packs attatched on mid right, and front left of car, both created using parts from other cars.
 
 
Top View: again note battery packs, and sandstone resistor mounts.
 
 
Front View: note that servo on left controls the throttle, while the servo on the right controls the frontal, left to right, steering controls.
 

Top front view: note the orange board. This is the mount for the potentiometer that acts as the throttle which is controlled by the servo on the top of the picture.











Comments