The idea of the project is taken from Simon-says game but in a different mode. The game is divided into two parts.
The first part is that it is an educational game for kids to learn them the color and how to pronounciate it.
The second part is like Simon says but its reciprocal. The kid should play a sequence of game then the controller should play the same sequence.
This idea is from my imagination. As when I was kid I wanted to learn the colors easily.
Fusion 360 logo
First I designed the box of the game that the components will be put in it. I used fusion 360 to draw the parts.
1) I created the first component and named it back component.
2) I select new sketch to start drawing. I draw the sketch with its dimensions.
3) I extruded the part with 3 mm length as the thickness of the real wood sheet.
Creating the back component.
Sketch for back component
The extrusion of back component.
4) I copied the first component sketch as it was the same dimensions of the back components.
5) I pasted the sketch in the front component.
6) I extruded the part with 3 mm length as the thickness of the real wood sheet.
The front component.
The pasted sketch of the front component.
Extrusion of the front components.
7) I created the third component and named it side1 component.
8) I select new sketch to start drawing. I draw the sketch with its dimensions.
9) I extruded the part with 3 mm length as the thickness of the real wood sheet.
Side component.
Sketch of side component.
Side1 extrusion.
10) I created some joints between the 3 parts to see if there any error in the dimensions.
11) I copied the sketch of side1 to make the sketch of side2 component.
12) I extruded the part with 3 mm length as the thickness of the real wood sheet.
Joint between back and side1 components.
Joint between side1 and front components
The side 2 component.
Sketch of side2 component.
Extrusion of side2.
The joint between side2 and front components.
The 4 sides joints with each other.
13) I created the bottom components. By projection on the bottom of the four sides.
14) The bottom and the front components are jointed together.
15) As the bottom component, I made the top component like the bottom component.
Bottom component
Bottom component sketch.
Extrusion of bottom component.
Joint between front and bottom.
Fillets at the corners
Top component.
The projection of top component.
Extrusion of top component.
The joint between top and back components.
16) On the top component, I created a sketch to make the holes for screws and the buttons.
17) Then I make a text extrusion.
18) I implemented the arduino and the brackets.
19) Then I extruded the holes at the sides to mount the bracket.
20) I jointed the brackets at the sides of the box.
21) I jointed the arduino to know Where to drill the holes for mounting the arduino.
The new sketch.
The extrusion of the holes.
The text sketch.
The extruded text.
The arduino and the brackets.
The bracket holes.
The bracket holes.
Mounting the Bracket at the back component.
Mounting the Bracket at the back component.
Mounting arduino at the bottom component.
The projection of the holes on the bottom.
Sketch for the power holes.
The extrusion of the power holes.
Holes for sound.
Holes for sound
Holes for sound.
Holes for sound.
The process of designing the bracket was taking from the videos of maker diploma.
22) First I draw a L shape with specific dimensions.
23) Then extruded it by 10 mm.
24) On the outer two sides of the bracket, I draw two circles with 100mm diameter.
25) I cut the two circles with 10 mm depth.
26) At the outer sides, I draw two midplanes to draw two houses for the captive nuts.
27) The houses of the captive nuts are then cut with symmetric features by 1.5mm each side.
Finally the captive nut is ready to be used.
Sketch of the bracket.
Extrusion of the captive nut.
10mm circle on the side of the captive nut.
10mm circle on the other side of the captive nut.
Extrusion of the circles with 10mm.
Extrusion of the circles with 10mm.
Formation of the midplane on the two sides.
The formation of the house of the captive nut on the two sides.
The extrusion of the house of the captive nut.
The machines used for the fabrication were prusa mk3 for 3D printing and El Malky machine for laser cutting.
For 3D printing
Software: Ultimaker Cura
Machine: Prusa i3 mk2 3D printer
Material: PLA
Cura software for 3D printing
Prusa i3 mk2
PLA material for 3D printing
For laser cutting
Software: LaserWork
Machine: Morn MT3050D Laser Cutter
Material: Wood
LaserWork software for lasercutting
El-Malky machine for laser cutting
3mm Wood used in Lasercutting
The design needed 2 printed brackets so I put the 2 brackets at the same bed to be printed in the time.
The design is printed with 10% infill, no supports, with brim and resolution 0.2mm.
It took 17 minutes and 2g.
I exported the gcode and saved it on the printer's card.
Then on the machine I chose 'choose from SD card'.
I selected the file to begin the printing operation.
Brackets on Ultimaker Cura
I decided to make the design half printed half cut. So the top and the bottom sides are designed to be 3D printed.
The design is printed with 10% infill, no supports, no adhesion and 0.2 mm layer height (resolution).
It took 7 hours and 5 mins. It was 72 g. (The design was printed overnight).
I exported the gcode and saved it on the printer's card.
Then on the machine I chose 'choose from SD card'.
I selected the file to begin the printing operation.
The top and bottom parts on the bed.
The brackets on the bed.
Photo for the two printed parts.
The printed brackets.
The design was supposed to be cut so the lines are black and the speed 40 and power 55.
I saved the files as DXF files and in the computer in the lab, I put the components on the laserwork program to be cut.
The design on LaserWork.
The four sides after lasercutting.
The video for the lasercutting process.
Connecting the parts together.
There are 4 main inputs:
4 push buttons with different colors.
There are many outputs for the circuit:
1) Buzzer sound
2) The LEDs
3) The color name displayed on the Oled screen.
The components are integrated together by using arduino uno to control the input with the output.
I used tinkercad to simulate the components:
4 push buttons
4 lighting LEDs
Buzzer
OLED screen
Note: I used Pixlr online editor to add the OLED screen.
Each component has a function. The function of push buttons is that the kid presses it to show the color on the screen. The function of the LEDs is to add enthusiasm for the game and to make the appearance of the game user friendly. The function of the OLED is to display the color on the screen. The last thing is the buzzer and it is used as the sound of the button as it is primary and primitive feature.
The circuit has many connections. The connections of the buttons, LEDs, buzzer and OLED led.
The buttons are connected as the circuit diagram shows: blue button on pin A5, yellow button on pin A4, white button on pin 7 and red button on pin A3.
The LEDS are connected as the circuit diagram shows: blue LED on pin 2, yellow LED on pin 4, white LED on pin 6 and red LED on pin 5.
The buzzer is on pin 3. All these components have grounds and all the grounds are collected on a common ground on the breadboard and connected to the ground pin on arduino.
The Oled display is connected to the arduino with several connections. The ground is connected to the common ground on the breadboard, VCC pin is connected on 3.3V on the arduino to prevent the Oled from burning, SCL on pin 13, SDA on pin 11, CS on pin 10, RST on pin 9 and DC on pin 8.
Circuit diagram
I used 5 volt adapter since the ardiuno uno powering range is from 5V to 9V. The components also are powered with maximum 5V.
The arduino is connected by the 5V adapter. I connected the adapter through the power hole of the arduino.
But for the OLED display I used the 3.3V pin in the arduino to power it. As the OLED may burn if a higher voltage is applied to it.
The buttons are connected to the ground on the breadboard and the power is from the pins on the arduino.
The LEDs are connected to the common ground on the breadboard and the power from arduino pins.
Illustrative photo shows the source of power connection.
1) I programed the buttons first to see if they are functioned or not.
2) When the first code for one button run successfully, I added the other 3 buttons
3) After that I started to print on the screen the color of the pressed button.
4) Finally I added the OLED led to display the color on the screen.
The buttons to work need to be programmed. The programming of the buttons is as follows:
In the void setup, I set the buttons as inputs and the LEDs as outputs. In the void loop I set condition if the button is pressed, the LED should light.
In the last part of the code the else condition, I set if the button is released, the LED should shutdown.
The first button test.
All the buttons with the LEDs.
When the first code ran successfully, I applied this code for the rest of the buttons and LEDs.
But I did a small change. I added new variables to ease the coding sequence. These variables are the name of the buttons and LEDs to be used instead of the pin numbers to ease finding errors.
The last step was adding the OLED screen. The coding of the OLED had many try and error.
First I searched about the OLED. After that I used the library of the OLED on arduino to test the OLED with the example of the library.
After checking that the OLED is working, the journey of searching for the functions of OLED started.
I included the libraries that work with the screen. Then I took the definitions of the pins and colors from the example of the library.
I started to edit the code of the buttons with the functions of the OLED. I added 'display.setCursor' function to locate the place where the word will be written on the screen. The 'display.setTextColor' to set the color of the text. The 'display.setTextSize' for sizing the text. The 'display.print' to print the word on the screen. Finally 'display.fillscreen' to clear the OLED.
The code with the OLED.
The code with the OLED.
The code with the OLED.
The code with the OLED.
First I tested the buttons with the codes and they worked together.
After that I tested the OLED and started to control it.
Testing the buttons.
Testing the buttons.
Testing the OLED.
The OLED with its real function.
I mounted the arduino and the breadboard on the bottom side.
Then mounted the buttons and the wires between the top and bottom sides.
Then at the end I gathered them with the remaining 4 sides.
Mounting of buttons and wires.
Mounting arduino and breadboard.
At clearing the OLED my friends Mokhtar and Hend helped me by searching and sending some codes for me to test if it is working or not.
Although my friend Mayar helped me by encouraging me that everything will be okay to reduce my stress about the final.
First challenge was testing the LEDs as the there was some polarities changed. So by the testing it directly, I knew the polarities for each LED.
Testing the LEDs.
Testing the LEDs.
Another challenge was naming the OLED in the code. As display function should be put in a variable to be declared to the arduino. I put the display function without its declaring variable so an error occurred.
The wrong declaration.
The right declaration.
Second challenge was clearing the OLED. The OLED was typing all the colors on each other. So after searching and the help of my instructors Asmaa and Menna, we reached to a solution. The solution was to type 'display.fillScreen(black) after every iteration.
The code without display.fillScreen(BLACK).
The result of this.
The code with display.fillScreen(BLACK).
The result for this code. It works as it should.
After I printed the top and bottom sides, the lasercut parts did not fit in the printed parts. So my friend Mayar told me use the iron file and the cutter to broaden the tabs to make the other parts fit in the printed tabs.
The process to make the tabs wider
1) The bluetooth mode will be functioned with the buttons and LEDs
2) Putting sounds with real voice to pronounce the color names and the how to write it.
3) Playing music as the kid should make a sequence of several clicks and play this music after the kid stop to click the buttons