We have decided on using VSCode (PlatformIO) and will be using flood fill algorithm. Circuit boards will be connected to software IDE (PlatformIO) and send data received to the IDE or receive instructions to perform. We have chosen to use a 4-Wheeled single PCB Micromouse. We will integrate software and hardware through uploading our code from vscode and upload the code directly to the Arduino(C++) through a usb-A to A. The Software team will be initially running Java since this is our stronger area and afterwards, we will be converting this code into C++. We will be measuring all of these hardware voltages through Arduino which can be used to set a maximum/minimum voltage output according to the amount of voltages it can take. Based on the inputs from the Proximity Sensor, Ultrasonic Sensor, Gyroscope sensor, Motor, this data will be sent from the Arduino to the main algorithm that will be on C++(Eventually).
List:
- Battery: 3.7 Volts(Prone to change). Will be used to supply power to everything.
- Proximity Sensors: 3.3 Volts or 5 Volts. Will be used to measure how close a micromouse is to a wall.
- Ultrasonic Sensors: 3 or 5 Volts. Similarly to Proximity, also measure how close a micromouse is to a wall.
- Gyroscope: 3 Volts or 5 Volts. Will be used to Help rotate the mouse
- Motor: 3 - 6 VDC. - Will be used to power our wheels. It allows them to rotate.
The Algorithm we will be using(Floodfill): https://medium.com/@minikiraniamayadharmasiri/micromouse-from-scratch-algorithm-maze-traversal-shortest-path-floodfill-741242e8510 Matplotlib++ Heatmap(GUI): https://github.com/alandefreitas/matplotplusplus/blob/master/docs/COMPLETE_GALLERY.md#heatmap_1 Libraries we will be using: iostream, math, arraylists. We're not familiar with C++ libraries Containers: ,/(More to come in the future) Arduino(Platform IO), C++. GUI: Can try Heatmap matplotlib.
- Sensors have multiple inputs to the code such as bool,double,int,str types and what not. Sensors to code:
- Proximity: Double?
- Gyroscope: Double? To determine how much it should rotate by
- Motor: Probably int to limit the speed.
Extended plans: Build a micromouse simulator with only the bare minimum to hold the data and sends out the commands to the robot. (This starts in Java and tehen we will convert this into C++ later on because our skills in Java are just better).
- Arduino Uno
- Wheels: Plan on using 4 - Ordered 2.6" diameter wheels - will experiment with 3d printed wheels
- Batteries: Two lithium ion polymer batteries will be connected in series to power the arduino.
- Sensors:
- Gyroscope - On the top of the micrromouse - Helps detect the angle of rotation
- Proximity Sensor - On the sides of the mouse - Better at detecting close range distances
- Ultrasonic Sensor - On the front of the mouse - Will detect further distances
- Motors - One for each wheel. DC motors. Gear ratio will be changed accordingly for performance.
- Break out board will connect the arduino to the motors.
- Wires will be attached to breadboard for testing but will be soldered for final mouse.
Item Name w/Link | Cost per Unit | # of Units | Total Cost |
---|---|---|---|
ARDUINO UNO R4 MINIMA | $20.00 | 1 | $20.00 |
DC Gearbox Motor - "TT Motor" - 200RPM - 3 to 6VDC | $2.95 | 4 | $11.80 |
Adafruit DRV8833 DC/Stepper Motor Driver Breakout Board | $5.95 | 2 | $11.90 |
Lithium Ion Polymer Battery - 3.7v 1200mAh | $9.95 | 2 | $19.90 |
JST PH 2mm 4-Pin to Male Header Cable - I2C STEMMA Cable - 200mm | $1.50 | 2 | $3.00 |
Adafruit Micro-Lipo Charger for LiPoly Batt with USB Type C Jack | $5.95 | 1 | $5.95 |
Linear Voltage Regulator IC Positive Fixed 1 Output 800mA TO-220 | $0.95 | 2 | $1.90 |
Adafruit VCNL4020 Proximity and Light Sensor - STEMMA QT / Qwiic | $5.95 | 2 | $11.90 |
Adafruit LSM6DSOX 6 DoF Accelerometer and Gyroscope - STEMMA QT / Qwiic | $11.95 | 1 | $11.95 |
STEMMA QT / Qwiic JST SH 4-pin to Premium Male Headers Cable - 150mm Long | $0.95 | 2 | $1.90 |
Ultrasonic Distance Sensor - 3V or 5V - HC-SR04 compatible - RCWL-1601 | $3.95 | 2 | $7.90 |
THIN WHITE WHEEL FOR TT DC GEARB | $1.50 | 4 | $6.00 |
Total | $114.10 |
- Wheels - 3D printed. - 4 Wheels
- Chassis - 3D printed.
- Casing for Arduino and battery - 3D printed.
- Wires
- Breadboard
- Caleb - CAD Modeling + Wiring. He will be in charge of doing the 3D-Modeling for the Arduino, Chasis and Battery. After he is done with this, he will be focusing on the wiring of the breadboard.
- Spencer - Will work with the hardware required as well as how its implemented.
- Ethan - I will be researching what algorithms will be fitting the Micrmouse the best. I will also be trying to process the data from the Arduino to the micromouse.
- Jonathan (Super Not Himothy) - Make sure hardware and software work accordingly with one another. Make sure there's clear communication between hardware and software.
- Devan - Working with Ethan on algorithms fit micromouse. I also have knowledge of Arduino to some extent so I can help with that if needed.
https://ewh.ieee.org/sb/columbus/devry/sacFiles/MicromouseRules.pdf
- Get GPIO output from the microcontroller to light up LEDs on a breadboard.
- Get GPIO input from the microcontroller to read button presses on a breadboard.
- Get GPIO input from the microcontroller to read sensor data from the ultrasonic sensors.
- Initial 3D Model for chassis completed.
- Get the algorithm working in simulation.
- Positioning algorithm can properly visualize mouse in simulation.
- Can make the motors spin from the battery.
- Microcontroller can control the motors.
- Microcontroller can read sensor data and calculate the position of the mouse.
- Microcontroller can run the algorithm.
- TBD: Bussin
- Mouse can move in a straight line a stop when it reaches an obstacle.
- Mouse can turn 90 degrees when told to by the algorithm.
- Mouse can move for 10 minutes straight.
- Mouse can execute different algorithms based on user inputs from physical buttons on the mouse.
- Mouse can move through a maze randomly without hitting walls.
- Mouse can solve the maze.