The Leader PIC32 controlled all servos responsible for coal collection, coal dispensing, and indicating which side of the field the robot started on. It communicated with the Follower PIC32 to control the drive motors. Additionally, the Leader PIC32 was configured with wheel encoders for navigation and controlled an LED used to indicate active gameplay.
SW_CapTouch was a capacitive touch switch used to initiate gameplay.
Grab Servo 1 controlled the rack-and-pinion mechanism of the collecting arm, allowing the robot to grasp coal during pickup.
A green LED indicated when gameplay was active and automatically turned off when the 2-minute, 18-second game timer expired.
Bucket Arm Servo controlled the rotation of the bucket arm for the dispensing of coal into the game buckets.
Lower Arm Servo controlled the arm used to pull the game buckets down.
Rotate Servo 2 controlled the bottom floor of the robot's bucket so that one half of the collected balls were dispensed into a game bucket at a time.
The right and left encoders were configured to assist with navigation; however, they were ultimately not used since tape detection provided sufficient navigation accuracy.
MISO, MOSI, SCK, and SS1 were used for SPI communication between the two PIC32 microcontrollers.
The SNAP was used to program the PIC.
The Follower PIC32 controlled the DC drive motors through TLE5206 H-bridge motor drivers and handled most of the robot’s sensing for navigation. It read data from five tape sensors for line following and from two limit switches positioned on opposite corners of the robot. These switches, along with an IR wall sensor, helped the robot determine its orientation if it became stuck in the starting corner by identifying which side of the robot was against a wall. The Follower PIC32 also received the digitized beacon signal from the beacon detection circuit and communicated with the Leader PIC32 to coordinate overall robot behavior.
Tape Sensors 1–5 were used for line-following navigation along the course.
The Right Limit Switch and Left Limit Switch were used to determine which corner of the robot was contacting a wall at the start of the game, allowing the robot to determine the correct direction to rotate out of the corner.
The IR Sensor detected whether the front of the robot was directly against a wall.
The Beacon pin received the digitized output from the beacon signal conditioning circuit, allowing the robot to detect nearby beacons.
The left and right wheel motors were driven through the TLE5206 motor drivers. The PIC32 connected to the IN1 and IN2 inputs of each motor driver and controlled motor speed and direction by applying PWM signals with varying duty cycles to the IN1 pins.
Our beacon-sensing circuit was designed to detect the closest beacon from the robot’s starting position in order to determine which side of the field the robot began on. The circuit used:
a phototransistor connected to an MCP6294 op-amp configured as a transimpedance amplifier to convert the sensor’s current output into a voltage
a second MCP6294 op-amp configured as a band-pass amplifier to filter and amplify the beacon signal
an LM339AN comparator with hysteresis to digitize the signal
a third MCP6294 op-amp configured as a unity-gain buffer to provide a stable 2.5 V reference voltage for the circuit
The power distribution board was assembled to allow two batteries to supply power to all electronics in the system. Two voltage regulators were configured to provide regulated outputs of 5 V and 6 V. The servos were placed on separate power rails to prevent high current draw from interfering with the robot’s sensing circuitry.
All wire connections were soldered and reinforced with hot glue to maintain secure connections during operation. Heat shrink tubing was applied to any exposed wiring to prevent short circuits. Additionally, the board was connected through a fuse to provide overcurrent protection and prevent damage to the electronics.