Skip to content

Using the PIC16F87XA microcontroller, this embedded application controls an iRobot Roomba to find 'victims' within a maze.

License

Notifications You must be signed in to change notification settings

arosspope/maze-runner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Maze Runner

maze-runner

Click on the image for a video demonstration of the robot traversing the maze

This project uses a PIC-16F877A micro-controller and Xilinx XC9572XL CPLD to navigate an 'iRobot Create' through a maze, finding 'victims' and alerting the operator. The main requirements of the project were as follows:

  • Operate autonomously during the mission. There should be no user intervention or control other than pressing the start button.
  • Search for and locate ‘victims’ within the maze. The victims will be marked with the home-base beacons, but their location is otherwise unknown.
  • After locating a victim, play a song to indicate that the victim has been found. The robot should resume exploring the maze to find the second victim.
  • After finding the second victim, the robot should return to its starting location by taking the shortest path back.
  • Avoid walls and respond appropriately to virtual walls while carrying out the tasks required for each mission.

A top down representation of the maze space can be viewed here.

Hardware

Using the integrated PIC-16F877A and XC9572XL CPLD chip on the D5 Series DSX Kit, a variety of peripheral devices were connected through the PORTs located on the board. These include...

  • Infrared sensor: For measuring distance between robot and wall.
  • Stepper Motor: For controlling the direction of the infrared sensor (360 degree field of view).
  • Tactile push buttons: For operator interaction with the robot.
  • LCD Display: To alert the operator and display debug output.

Software

The software architecture of the project was designed with modularity in mind. Key functionality includes...

  • BNT: Concerned with controlling buttons within the system (this includes debouncing).
  • LED: Controls Light Emitting Diodes.
  • SPI: Defines an interface to the SPI available on the PIC.
  • ADC: Defines an interface to the Analog to Digital Converter on the PIC.
  • USART: Defines an interface for serial communication (key method of communication between the iRobot and the PIC).
  • SM: Interface for Stepper Motor movement.
  • IR: Interface for obtaining distance measurements from the IR sensor.
  • PATH: Module dedicated to calculating paths between waypoints in the maze, and tracking the robot's movement.
  • MOVE: Interface for robot movement (driving, rotating, checking sensors).
  • IROBOT: Module dedicated for maze exploration and navigation.

Building the project

This project is best compiled using:

Contributors

About

Using the PIC16F87XA microcontroller, this embedded application controls an iRobot Roomba to find 'victims' within a maze.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published