Rules Of The Maze (Robot Avoidance Rules and Strategy)- Part 2

Written by Nornubari Kanabolo MST DM

Special Case 2.3(T-intersection) continued

As Matt explained in the previous post, for 2 robots at a T-intersection:

“In this case the robot that is within the intersection (in the middle of the T – intersection) has the lowest priority and must move out of the way of the other robots (if the other robots are in the path of the low priority robot). The lowest priority robot will step down the hallway that is not blocked and then wait for the other robot to pass.”

As for the case with 3 robots at the intersection, the following method could be used:

Say R2 steps into the intersection and R1 needs to go where R2 is and R2 needs to go where R3 is. One thing that could happen is R3 goes back to the last intersection to wait and R2 waits 5 seconds to move one square to the right.

At this point, 2 possible cases could happen. Case 1 as follows:

R1 waits 5 seconds and sees that there is no one in the intersection now then moves into the intersection, so that it can go to the hallway where R2 was. R2 waits another 7 seconds and goes down to where R1 was. R3 waits 3 seconds and returns back to where it originally was.

Or if R2 needs to go where R3 is then Case 2 is enacted as follows:

Since there are no longer 3 robots at the intersection and it is now just 2 at an intersection, the rules for encounters 2.3 as stated by Matt are used.

IR shield Fabrication and Test

IR shield Fabrication and Test

Written by Charles Banuelos(Division Manager Design and Manufacturing) & Muhannad Al Mohamed(Division Manager E&C)

Approved by  Charles Banuelos(Division Manager Design and Manufacturing), Muhannad Al Mohamed(Division Manager E&C), Mark Huffman(Project Manager Goliath), Zach Oyog (E&C Sojourner)


Fabrication of the 3DoT IR shield occurred on 12/5/2017 due to the fact that Color Sensor Shield fabrication was not able to be completed. There was no stencil available to use to solder the IR shield; therefore, hand soldering is needed. The IR sensors themselves where placed flushed to the board to ensure that the IR sensors do not come contact the ground during the mission.

The fabrication process did have some setbacks while soldering parts. The first major set back was placing the surface mount parts on top of the IR shield without using the pick and place machine. The lack of the pick and place machine caused many dead joints at surface mount parts due to improper placement. The other setback was the actual look of the solder themselves and many needed to be redone due to none uniformity.


Testing the IR shield was done by applying an Arduino code to it. Since the IR shield uses the six pins of the front header of the 3DoT board (A2,A3,SDA,SCL,3.3V VCC,GND), the code optimizes direct reading from the pins using Arduino’s built in read function. The used code was applied to a 3Dot board to ensure a proper running of the sensors. The test revealed that we were successful on fabricating four shields out of five. The fifth IR shield will be taken back to fab to ensure that all are working.


Placing components during Fabrication of the IR sensor shield

Update 12/7/2017

The following code is used to test the distance measurement for each IR ICon the 3DoT IR shield.

Code :

//  Name     : 400D IR Shield Testing Code                    //
//  Author   : Muhannad Al Mohamed                            //
//  Date     : 5 December, 2017                               //
 //defining variables to save measurements
 int farRight_IR;
 int innerRight_IR;
 int innerLeft_IR;
 int farLeft_IR;
 void setup()
   pinMode(A3,INPUT);      //Top view, pins up, far right IR sensor
   pinMode(SDA,INPUT);     //Top view, pins up, second right IR sensor
   pinMode(SCL,INPUT);     //Top view, pins up, second left IR sensor
   pinMode(A2,INPUT);      //Top view, pins up, far left IR sensor
 void loop()
  //reading values of IR sensing into variables
  farRight_IR = analogRead(A3);
  innerRight_IR = analogRead(SDA);
  innerLeft_IR = analogRead(SCL);
  farLeft_IR = analogRead(A2);
  //printing measurments in searial monitor
  Serial.print("farRight_IR =  ");
  Serial.print("  ");
  Serial.print("innerRight_IR = ");
  Serial.print("  ");
  Serial.print("innerLeft_IR = ");
  Serial.print("  ");
  Serial.print("farLeft_IR = ");

Read more

Color Sensor Shield: Fabrication, Integration, and Test

Approved By: Muhannad Al Mohamed, Charles Banuelos, Melwin Pakpahan

Written By: Muhannad Al Mohamed

Color Sensor Shield Parts and Design

The parts used in the fabrication of each color sensor shields are the printed circuit board, electronic parts(two color sensors (BH1745NUC-E2), two LEDs (0603 package), two 150 Ohms resistors (0603 package), one 10k resistor (0603 package), one 47k resistor (0603 package), two 0.1 uF capacitors (0603 package), one MOSFET, one pin header), and Color Sensor Shield’s stencils along with solder.

Update: 12/6/2017

The design of the Color Sensor Shield is done using the free EagleCAD software. The schematics file of the circuit is attached to this link. The Printed Circuit Board layout is attached to this link. To open files the EagleCAD software needs to be installed.

Fabrication Place and Equipment

The fabrication of the CSS (Color Sensor Shield) is currently taking place in ET-111 room. The room is equipped with a microscope that can help in placing the parts on the shield. It also has an oven that can be used to melt the solder on the shield to hold the solder in place. Other useful amenities are available in the room such as a fridge to keep the solder cooled and ready to be used, and scissors and tape that can be used to hold the shield in one spot to place parts.

Fabrication and Integration Process

The fabrication process starts with holding the shield in one place and apply solder to it. Some unused PCBs are used to hold the shield in the center with duck tape applied to it.

Placing CSS in the centre of other PCBs to hold it

Solder is then placed on the board with a stencil on top of it using a card to evenly spread the solder. The microscope is then used to check if enough solder is applied to the PCB’s pads. Parts are then placed on the shield using tweezers to carefully put each part on the exact corresponding place.

Placing parts using tweezers

Checking if parts placed correctly

After making sure that the parts are placed on the correct place by looking at the shield through the microscope, the shield is then placed in the oven to let the solder flow and melt to make the connection to the parts.

Cooking the CSS in the oven

Since the CSS has parts placed on the top and bottom of it, only one side, of the shield, parts will be placed on put in the oven. The other parts on the other side will be placed and soldered by hand.

Final Product

Update: 12/6/2017

We were able to fabricate four shields with the parts provided.

Color Sensor Shield Top View

Color Sensor Shield Bottom View

Testing Process

The CSS will be tested once a fabrication of on shield is done. The shield will be connected to a 3DoT board and the I2C addresses would be checked. Codes of reading values within the registers in the Color Sensor IC should be applied to CSS through programming the 3DoT board.

Update: 12/6/2017

The first test on the shields was an inspection to locate any bridges present on the surface mount pads or dislocation of parts. If any bridges or dislocation are present, the shields would be fixed by desoldering the parts with a heat gun and soldering them again in place. By visual testing, we found that two shields had their LEDs light on and the other two were not functioning. Therefore, pin testing was done to check if the LEDs and the Color Sensor ICs had power in them. Surprisingly all the pins had power in them, therefore, any misfunctions could not be seen visually.

After checking that all parts are in place, the address checking code is applied to the Color Sensor Shield to make sure that the two sensors have the addresses of (0x38) and (0x39).

Another testing method to see if the Color Sensor Shields are actually working is by applying an Arduino code that uses the I2C library to read data from a register within the Color Sensor IC. The code attached reads data from the register that holds the value of the Red color.

Reading data from a register on the Color Sensor

This code was unable to read data from the Color Sensor Shield so another code is used. This code is optimized to measure colors from the color sensor shield.


The measurements taken was applied by using a green surface with different locations.

Taking measurements of the color sensor shield

Perpendicular alignment of the measured surface to the color sensor shield

  • No change in green 115 at 13.5cm
  • at 9.5 cm, still 115
  • at 5.5cm, still 115
  • at 3.5cm, changed to 138
  • at 4.5cm, changed to 120
  • at 5cm, changed to 122
  • at 2 cm, changed to 192
  • at 1.5cm, changed to 259

Horizontal alignment of the measured surface to the color sensor shield

  • at 10cm, no detection
  • at 6cm, no detection
  • at 4cm, no detection
  • at 2cm, no detection
  • at 0.5, detection of 122

After taking measurements, we have concluded that the furthest distance for the color sensor to sense colors are 2cm perpendicularly and 0.5cm horizontally.