Lab 3
System Integration & Radio Communication
Read the Report


Lab 3


Integrate all components previously worked on in labs 1-2 and milestones 1-2. This consists of creating a robot that:

One group will work on the radio component and the other on integrating the various functionality. At the end of the lab, this work will be unified so that the robot can run through the maze and update the GUI as it explores.

To begin, we split into two groups of two. Each group progressed through the lab individually, as described below.


GOAL: send maze information wirelessly between Arduino’s

Figure 1 - Byte encoding chart


GOAL: Robot-to-GUI integration, full exploration, and update the GUI

  • Our robot
  • All code from past labs
  • IR Decoy
  • 660 Hz tone generator
  • Partner with another team to show robot avoidance
  • Walls to make the maze set up (follow this layout

Maze layout for testing


      // wall detected at intersection
      if ((sensorStatus[0] == 0) && (sensorStatus[1] == 0) && (sensorStatus[2] == 0) && detect_wall_6in(3) ) {
            if (detect_wall_6in(1)){
              turnLeftIntersection(servo_L, servo_R);
              send_advance_intersection(radio, true, false, true);  //NEW LINE
              send_turn_left(radio);                                //NEW LINE
            }
            else{
              turnRightIntersection(servo_L, servo_R);
              send_advance_intersection(radio, true, false, false); //NEW LINE
              send_turn_right(radio);                               //NEW LINE
            }
        }
        // wall detected but not at an intersection
        else if (detect_wall_3in(3)) {
          turnLeft(servo_L, servo_R);
          send_turn_left(radio);                                    //NEW LINE
        }
        // no wall detected --> just track the line
        else if (sensorStatus[0] == 0) //turn Right
          adjustRight(servo_L, servo_R, 85);
        else if (sensorStatus[2] == 0) //turn Left
          adjustLeft(servo_L, servo_R, 85);
        else {
          moveForward(servo_L, servo_R);
        }
      

This video demonstration shows our robot completing all required behaviors: