Wednesday, December 11, 2013

Weekly Minutes (12-11-2013)

LightSeeker2000

Meeting Minutes
December 12, 2013
 
I.      Call to order

Kenneth Amici called to order the regular meeting of the LightSeeker2000 at 2:00pm on December 11, 2013 at Mechanical Engineering Lab.
II.      Roll call

Andre D’Entremont conducted a roll call. The following persons were present: Nausherwan Kahn, Kenneth Amici, and Andre D’Entremont
III.      Approval of minutes from last meeting

Andre D’Entremont read the minutes from the last meeting. The minutes were approved as read.
IV.      Open issues

a)      Using an H Bridge to turn the motor on and off
V.      New business

a)      Andre D’Entremont took the H Bridge home with him and used his Arduino set to setup the configuration of an H Bridge and a DC Motor. He was not able to get the H Bridge to properly control the DC Motor using the tutorial from http://itp.nyu.edu/physcomp/Labs/DCMotorControl (as recommended by Professor Sullivan).
b)      Some of the wheels have been printed out
c)      The final robot will be finished by the deadline. The code is done but we cannot get the motor to turn on and off without having it directly connected to the breadboard (which cannot be done due to power restrictions). Not all the parts are going to be printed but enough to show the setup that would be used for the complete robot.
VI.      Adjournment

Kenneth Amici adjourned the meeting at 3:00pm.
Minutes submitted by:  Andre D’Entremont
Minutes approved by:  Kenneth Amici

 Photos:


 
The two left wheels are the drive wheels (the wheels that will connect with the DC Motors). The other four are part of the total twelve wheels that connect to the track and are used to give shape and motion to the tank.
 

 
This is the links of the track connected to the wheel. Ultimately there will be seven sets of wheels (fourteen total, twelve support wheels and two drive wheels). This would provide motion to the robot. The code is set to turn the robot by determining which side has more light and rotate in that direction. When the photo sensors are within the threshold set in the code, the robot will continue forward motion. The tracks will be coated with a form of adhesive material and ensure traction over all surfaces.

Friday, December 6, 2013

Weekly Meeting (12-6-2013)


LightSeeker2000

Meeting Minutes

December 6, 2013
I.      Call to order

Ken Amici called to order the regular meeting of the LightSeeker2000 at 12:30pm on December 6, 2013 at M.E. Design Lab.
II.      Roll call

Andre D’Entremont conducted a roll call. The following persons were present: Andre D’Entremont, Kenneth
III.      Approval of minutes from last meeting

Andre D’Entremont read the minutes from the last meeting. The minutes were approved as read.
IV.      Open issues

a)      The different photo sensors are not making too much of a problem when the difference gap was changed in the code.
b)      Still need to solder the connections to the DC motor
c)      When the code was saved, it does not seem to be calibrating anymore and therefore will not be added to the project.
d)     Ken will still be printing the tracks at his house with files he found online.
e)      We will not be using a servo motor hack.
f)       Some materials from last meeting were purchased and will be applied.
V.      New business

a)      Went to talk to Professor Sullivan to get assistance on getting two motors to run on a board. He gave us an H Bridge and pointed us to a website that gives a step by step process of wiring an H Bridge. Still need more experience hooking up the motor, have not had success setting this up.
b)      We will be crimping the photo sensors to lengthening the connections and have them separated outside the body of the robot.
c)      Our pieces have been collected and measurements look good to be put together.
d)    Someone from the group will be taking the motor and H Bridge over the weekend and setting up the exact circuit instructed online. Once the motor proves to work, the code will be looked at and adjusted if necessary.  
VI.      Adjournment

Ken Amici adjourned the meeting at 1:35pm.
Minutes submitted by:  Andre D’Entremont
Minutes approved by:  Kenneth Amici


Photos:


Left: This is one side of the robot. There are two pieces that were made that will be attached to either side of the platform (right). The platform has screw holes measured to match the screw holes of the arduino board.

This was our first attempt of using the H Bridge. We were not successful turning the motor on.

Thursday, November 21, 2013

Light Seeker 2000 Meeting Minutes 11-21


Light Seeker 2000 Meeting Minutes


November 21, 2013
I.      Call to order

Ken Amici called to order the regular meeting of the LightSeeker2000 at 8:30am on November 21, 2013 at Design Lab.
II.      Roll call

Ken Amici conducted a roll call. The following persons were present: Andre D’Entremont, Nash Khan.
III.      Approval of minutes from last meeting

Ken Amici read the minutes from the last meeting. The minutes were approved as read.
IV.      Open issues

a)      Finding a Track

b)      Wanting to add blinkers
V.      New business

a)      Our two photo sensors are not the same therefore the sensitivity is different. Trying to find a similar Photo Sensor

b)      Lost a DC Motor, need to get a second one.

c)      Need to find a way to mount the motor and connect it to one of the axels to turn the track

d)     Adding pictures to show the setup of the arduino board.

e)      Trying to play around with a code to calibrate the photo sensors so they will read the same values when initially exposed to the same light. This means when we first turn on the robot, he will have a calibrate indication light on, and we will put a flash light on each sensor (with the same brightness) and then cover both sensors to which we hope will cause the sensors that are different to then read the same values when exposed to the same light. Initial code is attached after the minutes.

f)       Test the track links to ensure they fit together appropriately and had motion that will allow our tracks to move the robot

g)      Created a SolidWorks representation for the tracks we are going to use

h)      Contemplating using the servo hack we discussed in class instead of a DC Motor due to our limited knowledge of how to setup external power sources and wiring into the arduino board

i)        Discussed materials needed for net group meeting to truly test our system at the current point:

1.      Electrical tape

2.      Servo Motor (2)

3.      More Pins for tracks

4.      More links for tracks

5.      Additional photo sensors

VI.      Adjournment

Ken Amici adjourned the meeting at 10:30am.

Minutes submitted by:  Ken Amici 

Minutes approved by:  Andre D’Entremont
 

Pictures from Today’s Meeting

Just a few links connected



Showing the mobility of the links



Setup to check to see if the calibration code was working properly



One of the first setups ideas to have two photo sensors that would be connected to longer wires and will hang off the side of the robot to allowing light readings from both sides of the robot



New idea of how to connect the Photo Sensors that cut down on the number of wires and wire lengths.

 



 

Current state of where we are on the wiring. Still need to connect the Servo Motors that will spin the track.

Modification to Calibration Code


This is a modified code that I got from online. It was initially set to calibrate just one Photo Sensor and LED, but I changed the code to now calibrate two Photo Sensors and then control two LEDs to ensure that I was able to perform the calibration correctly. Unfortunately, this does not tell me if the readings are the same. I will have to add a print function to read the values on the com port.

// These constants won't change:

const int LeftSensor = A0;   // Left Sensor

const int RightSensor = A1; // Right sensor

const int LeftLED = 9;        // pin that the LED is attached to

const int RightLED = 6;

 

// Left sensor:

int sensorValueLeft = 0;       // the sensor value

int sensorMinLeft = 1023;      // minimum sensor value

int sensorMaxLeft = 0;         // maximum sensor value

 

// Right sensor:

int sensorValueRight = 0;       // the sensor value

int sensorMinRight = 1023;      // minimum sensor value

int sensorMaxRight = 0;         // maximum sensor value

 

void setup() {

// turn on LED to signal the start of the calibration period:

 pinMode(13, OUTPUT);

 digitalWrite(13, HIGH);

 

// calibrate during the first five seconds

 while (millis() < 5000) {

 sensorValueLeft = analogRead(LeftSensor);

 sensorValueRight = analogRead(RightSensor);

 

 // record the maximum sensor value

 if (sensorValueLeft > sensorMaxLeft) {

  sensorMaxLeft = sensorValueLeft;

 }

  if (sensorValueRight > sensorMaxRight) {

  sensorMaxRight = sensorValueRight;

 }

 

// record the minimum sensor value

 if (sensorValueLeft < sensorMinLeft) {

  sensorMinLeft = sensorValueLeft;

 }

  // record the minimum sensor value

 if (sensorValueRight < sensorMinRight) {

  sensorMinRight = sensorValueRight;

 }

 }

 

// signal the end of the calibration period

 digitalWrite(13, LOW);

}

 

void loop(){

// read the sensor:

 sensorValueLeft = analogRead(LeftSensor);

 sensorValueRight = analogRead(RightSensor);

 

// apply the calibration to the sensor reading

 sensorValueLeft = map(sensorValueLeft, sensorMinLeft, sensorMaxLeft, 0, 255);

 sensorValueRight = map(sensorValueRight, sensorMinRight, sensorMaxRight, 0, 255);

 

// in case the sensor value is outside the range seen during calibration

//(Not sure how I feel about this. This portion came from the original code

 sensorValueLeft = constrain(sensorValueLeft, 0, 255);

 sensorValueRight = constrain(sensorValueRight, 0, 255);

 

// fade the LED using the calibrated value:

 analogWrite(LeftLED, sensorValueLeft);

 analogWrite(RightLED, sensorValueRight);

//Read values in COM

}


 

Most Current Light Seeker Code


//LED to indicate power

const int power = 13;

 

//Motors

const int RightMotor = 3;

const int LeftMotor = 5;

 

//Photo Sensors

const int RightSensor = A0;

const int LeftSensor = A1;

 

//Needed for Calibration of Photo Sensors

  // Left sensor:

  int sensorValueLeft = 0;       // the sensor value

  int sensorMinLeft = 1023;      // minimum sensor value

  int sensorMaxLeft = 0;         // maximum sensor value

 

  // Right sensor:

  int sensorValueRight = 0;       // the sensor value

  int sensorMinRight = 1023;      // minimum sensor value

  int sensorMaxRight = 0;         // maximum sensor value

 

 

// Variables for void loop

int SensorLeft;

int SensorRight;

int SensorDifference;

 

void setup()

{

 //Calibration of Photo Sensors

     // turn on LED to signal the start of the calibration period:

     pinMode(9, OUTPUT);

     digitalWrite(9, HIGH);

    

     // calibrate during the first five seconds

     while (millis() < 5000) {

     sensorValueLeft = analogRead(LeftSensor);

     sensorValueRight = analogRead(RightSensor);

   

    

     // record the maximum sensor value

     if (sensorValueLeft > sensorMaxLeft) {

      sensorMaxLeft = sensorValueLeft;

     }

    

      if (sensorValueRight > sensorMaxRight) {

      sensorMaxRight = sensorValueRight;

     }

    

     // record the minimum sensor value

     if (sensorValueLeft < sensorMinLeft) {

      sensorMinLeft = sensorValueLeft;

     }

      // record the minimum sensor value

     if (sensorValueRight < sensorMinRight) {

      sensorMinRight = sensorValueRight;

     }

     }

    

 

  // signal the end of the calibration period

   digitalWrite(9, LOW);

 

  //Set Motors as output

  pinMode(RightMotor,OUTPUT);

  pinMode(LeftMotor,OUTPUT);

 

  //Serial Connection

  Serial.begin(9600);

 

  //First Readings

  Serial.println("\nReading Light Sensors.");

 

  //Power LED

  digitalWrite(power, HIGH);

}

 

void loop()

{

 

// read the sensor:

 sensorValueLeft = analogRead(LeftSensor);

 sensorValueRight = analogRead(RightSensor);

 

//  Difference of Sensors

  SensorDifference = abs(sensorValueLeft-sensorValueRight);

 

  //Sensor Readings for debugging

      //Left Photo Sensor

      Serial.print("Left Sensor = ");   //Title

      Serial.print(sensorValueLeft);    //Value

      Serial.print("\t");               //This is for a tab space

 

      //Right Photo Sensor

      Serial.print("Right Sensor = ");   //Title

      Serial.print(sensorValueRight);    //Value

      Serial.print("\t");                //This is for a tab space

 

      //Difference

     

  //Motion of LightSeeker2000

  if (sensorValueLeft > sensorValueRight && SensorDifference > 120)

  {

    digitalWrite(RightMotor, HIGH);

    digitalWrite(LeftMotor, LOW);

    Serial.println("Left");

  }

  if (sensorValueRight > sensorValueLeft && SensorDifference > 120)

  {

    digitalWrite(RightMotor, LOW);

    digitalWrite(LeftMotor, HIGH);

    Serial.println("Right");

  }

  else if (SensorDifference < 120)

  {

    digitalWrite(RightMotor, HIGH);

    digitalWrite(LeftMotor, HIGH);

    Serial.println("Forward");

  }

  Serial.print("\n");

}

 










Thursday, November 14, 2013

Minutes 11/14/2013

LightSeeker2000

Meeting Minutes

November 14, 2013

I.      Call to order

Kenneth Amici called to order the regular meeting of the LightSeeker2000 at 8:30am on November 14, 2013 at Design Lab.

II.      Roll call

Andre D’Entremont conducted a roll call. The following persons were present: Kenneth Amici, Andre D’Entremont

III.      Approval of minutes from last meeting

Andre D’Entremont read the minutes from the last meeting. The minutes were approved as read.

IV.      Open issues

1)      Finish Code (not able to get motor to spin)

2)      Work on track options

3)      Design of Vehicle

V.      New business

1)      Finished the code with the help of Professor Sullivan

a)      Professor Sullivan pointed out that under void setup; we did not have the motors set as outputs. Once the motors were declared as outputs, the motor spun immediately.

2)      Working on finding a track

3)      Wanted to add blinkers to show the robot turning left and right, but so far not too much success (trying to add library with a blink function so it does not interrupt the current loops).

VI.      Adjournment

Kenneth Amici adjourned the meeting at 10:20am.

Minutes submitted by:  Andre D’Entremont

Minutes approved by:  Kenneth Amici

Project LightSeeker2000

Project LightSeeker2000


We plan to create a Photo Sensitive robot who will be able to detect and drive to light sources. We also intend to give this robot the ability to maneuver through obstacles with tracks and make the tracks large enough to encompass the body and therefore allowing it to be flipped yet still able to move.

This is the idea we're going emulate
 
 
We remembered this car when we were younger and this is what we are going to amp this concept up with tracks instead of wheels.
 
 
Currently, we are having a hard time figuring the code out, but this is what we have so far:

const int power = 13; //LED Indicator to ensure power
const int RightMotor = 3;
const int LeftMotor = 5;
const int RightSensor = A0;
const int LeftSensor = A1;
// Variables for void loop
int SensorLeft;
int SensorRight;
int SensorDifference;
void setup()
{
  //Read values
  pinMode(LeftSensor, INPUT);
  pinMode(RightSensor, INPUT);
 
  //Pull-up Resistors
  digitalWrite(A1, HIGH);
  digitalWrite(A0, HIGH);
 
  //Serial Connection
  Serial.begin(9600);
 
  //First Readings
  Serial.println("\nReading Light Sensors.");
 
  //Power LED
  digitalWrite(power, HIGH);
}
void loop()
{
  //Reads and saves value to interger
  SensorLeft = analogRead(LeftSensor);
  delay(50);
  SensorRight = analogRead(RightSensor);
  delay(50);
 
//  Difference of Sensors
  SensorDifference = abs(SensorLeft-SensorRight);
 
  //Sensor Readings for debugging
      //Left Photo Sensor
  Serial.print("Left Sensor = "); //Title
  Serial.print(SensorLeft);       //Value
  Serial.print("\t");             //This is for a tab space
 
      //Right Photo Sensor
  Serial.print("Right Sensor = "); //Title
  Serial.print(SensorRight);       //Value
  Serial.print("\t");              //This is for a tab space
 
      //Difference
     
  //Motion of LightSeeker2000
  if (SensorLeft > SensorRight && SensorDifference > 75)
  {
    digitalWrite(RightMotor, HIGH);
    digitalWrite(LeftMotor, LOW);
    Serial.println("Left");
  }
  if (SensorRight > SensorLeft && SensorDifference > 75)
  {
    digitalWrite(RightMotor, LOW);
    digitalWrite(LeftMotor, HIGH);
    Serial.println("Right");
  }
  else if (SensorDifference < 75)
  {
    digitalWrite(RightMotor, HIGH);
    digitalWrite(LeftMotor, HIGH);
    Serial.println("Forward");
  }
  Serial.print("\n");
}
 
We tried to set this up with just one photosensor and one DC motor to see if the motor would spin, but this did not work. We looked at the com port and saw the photosensor measurements, and the command should be to turn left (the left motor should be off while the right motor is running) yet the motor would not run. We will continue to troubleshoot.


Thursday, November 7, 2013

First Team Meeting


LightSeerk2000

Meeting Minutes

November 7, 2013
I.      Call to order

Kenneth Amici called to order the regular meeting of the LightSeeker2000 at 9:00am on November 7, 2013 at Perry 321.
II.      Roll call

Andre D’Entremont conducted a roll call. The following persons were present: Kenneth Amici, Andre D’Entremont
III.      Approval of minutes from last meeting

Andre D’Entremont read the minutes from the last meeting. The minutes were approved as read.
IV.      Open issues
V.      New business

a)      Team Name: LightSeeker2000
b)      Blog Created