Name | NetID | Course |
---|---|---|
Patrick Baer | pbaer2 | ECE 110 |
John Walls | jwwalls2 | ECE 110 |
- Introduction
- Statement of Purpose: The goal of this project is to design and build a machine that can autonomously fully solve a Rubik's Cube, given any random initial state.
- Background Research: We are working on this project because the Rubik's is a well known complicated mind puzzle, and we think it would be interesting and rewarding to build a machine that solves this puzzle on its own. After looking through Google and Youtube at other people who have done this, we have decided to use six fixed stepper motors, one to turn each side of the cube, controlled by one Raspberry Pi. The Raspberry Pi will take images from two cameras as inputs and translate these images into a map of the cube, which will then be used to create a list of moves that will solve the cube. These moves will then be used to move the motors in order to solve the cube. We listed the main two sources that we used at the bottom of our proposal.
- Design Details
- Block Diagram:
- System Overview: Each of the two cameras takes a picture of three faces (inclined views) and sends that image to the Raspberry Pi over a USB connection. We will use a USB camera because a USB connection allows us to connect multiple cameras to the Raspberry Pi. The Raspberry Pi will then use the two images to generate a cube state, which is then fed into a Python dependency that returns a list of moves to solve the cube. The Raspberry Pi will then execute each move in order, sending a signal via GPIO to one of six motor drivers which will in turn turn a motor that rotates one side. After every move has been executed, the cube will be solved.
- Parts:
- Raspberry Pi 3 B+
- ECE Supply Center - 740162520
- $42
- Raspberry Pi Power Supply
- ECE Supply Center - 740162522
- $11
- MicroSD Card
- Six Stepper Motors and Drivers
- Two USB Cameras
- Mechanical Frame
- Rubik's Cube
- Raspberry Pi 3 B+
- Challenges: The first challenge will be correctly converting images to a Rubik's Cube state. The second challenge will be constructing the frame to hold all of the pieces together and remain stable. We will either 3D print the frame or build a simple frame with help from the machine shop.
- References:
- Youtube Rubik's Cube Solver:
- Controlling Stepper Motors with Raspberry Pi: https://medium.com/@Keithweaver_/controlling-stepper-motors-using-python-with-a-raspberry-pi-b3fbd482f886
- Youtube Rubik's Cube Solver:
- Block Diagram:
- Proposal Changes
- Added a bill of materials.
- Specified that the Raspberry Pi is connected to each motor driver via a Four Pin GPIO Connection
- Clarified that a motor driver and stepper motor is connected via five wires per motor
- The algorithm to solve the cube has already been written
- Our team possesses adequate knowledge in terms of Inventor (to design/draft the mechanical frame). However, we fully intend to heed the recommendations of the machine shop, especially when we get to the step of 3D printing
- We are able to connect two cameras to the Raspberry Pi by using two of the four usb ports and two usb cameras.
- Although there is not a library to do the image recognition exactly as we are planning, we have found example code that accomplishes similar tasks.
Attachments:
Screen Shot 2020-02-11 at 6.29.30 PM.png (image/png)
Screen Shot 2020-02-11 at 11.37.55 PM.png (image/png)
Screen Shot 2020-02-11 at 11.37.55 PM.png (image/png)