Last series I watched was stranger things where they used Morse Code sometimes to send messages securely. I was interested in learning it so I started searching for sources to learn it. The most popular source is: morse with google
I decided to make my project about morse code with many functions you'll see later. Stay tuned ;)...
All designs were made using Fusion 360. All parts included were downloaded from grab cad.
sketch side of the part
2. editing the length of the sketch to make it longer to hold all the components
3. extruding the sketch to 97 mm to be wide enough for LCD and its wires
4. with shell tool I made a shell with 2 mm as a thickness of the part
5. I later deleted the faces of this circle that made a cylinder because I didn't need it. I should've drawn the circle after making my shell.
6. using fillet I made a 5mm fillet for each edge to make my part smooth without sharp edges
7. I inserted a 3mm nut from insert --> insert mcmaster-carr component. and placed it on the top edge then projected the inner circle on the back side of the part by clicking on " P " then use project tool. I made a construction line in the middle then mirrored the circle.
8. I extruded cut the circles in this corner and the opposite corner also.
9. I downloaded an ON/OFF switch from grab cad . Using project I projected the face I wanted to cut on the sketch to integrate the switch then extruded cut it.
10. to mount the half breadboard using project I projected the rectangles on the side of it on the inner face of the bottom part then extruded cut them.
I sketched on top plane the top part with same dimensions of the bottom and made the same 5mm fillet.
2. I then extruded it to 2mm.
3. Using the M3 nut I placed it 2mm away from the edges for the thickness of the bottom part then projected it on the top face and made a rectangle wider than it.
4. I extruded the bigger rectangle for 9mm.
5. On the sketch of extrusion I projected the front face of the nut and made an offset of .1mm for each line to make tolerance for the nut to make it through after fabrication.
6. I extruded cut the last sketch on the for corners
7. After adding LCD, Push buttons, Buzzer and measuring the diameter of led holder using caliper, I placed them in the design and added some details.
8. More details for user interface to make the project user friendly.
9. After final touches.
Using caliper to measure the main dimensions of the power bank I hand sketched the dimensions on the drawing.
2. I sketched it on Fusion using construction lines in the middle then different arcs. I added the slider part with tolerance of .1 mm.
3. I extruded the sketch to 4cm.
4. In assembly I made a sliding joint. Check it out:
All fabrication was made using 3D printing machine " Prusa i3 mk3 ".
The preparation for the fabrication was made using Ultimaker Cura 5.0.0 Software.
Layer height: 0.3 mm
Infill: 0%
wall line count: 3
top and bottom layers: 3
supports: everywhere , 10% density
weight: 69 g
estimated time: 4h 9mins
Layer height: 0.3 mm
Infill: 0%
wall line count: 3
top and bottom layers: 3
supports: everywhere and block support
weight: 27 g
estimated time: 1h 57mins
Layer height: 0.3 mm
Infill: 50%
wall line count: 3
top and bottom layers: 3
supports: no supports
weight: 10 g
estimated time: 33mins
I had a problem during fabrication " wrapping " that the part went of bed at some points. I had a discussion with the fab lab specialist Roaa and we finally decided to leave it to finish printing and see. After some layers it started to print well again and the deformation didn't affect the functionality of the part, luckily.
It had a little deformation at the first layer because the air conditioner in the room was too cool and I forgot to higher the temperature of the bed to 70C.
This one turned out very well and with perfect fit <3 ^_^
Arduino Nano (BRAIN ) + USB cable
3 Push buttons
RGB LED
LCD I2C
Male - Male Jumper Wires
Male - Female Jumper Wires
Green LED
LED Holder 3mm
Half Breadboard
ON/OFF Switch
male to terminal wires
Wiring diagram
wiring the power bank with on/off switch to power the components from power bank: red wire + to one leg of on/off switch and the other leg to 5v in arduino, white wire - to GND in arduino
The power source is: Power Bank 5v DC - 1A
because all my components work fine on 5v and it consumes around 35mAh.
Also, I need the device to be portable to learn almost everywhere we could.
It started with code one with the help of my great instructor, Sherif. I couldn't have done it without him.
We started by defining LCD and giving initial values for pins As:
left is left button connected to pin 2
right is right button connected to pin 3
mid is the middle button connected to pin 4
buz is buzzer connected to pin 5
led is the red leg in RGB LED connected to pin 12
ledg is the green leg in RGB LED connected to pin 11
ledb is the red leg in RGB LED connected to pin 10
on is the green LED connected to pin 9
I set menu and screenNo to 1 at first
we made a state set to low at first
and a string input to store our input using buttons in it
bool is to allow us to turn on the led and buzzer for the time needed without needing the if condition
we made a counter for every letter or word set at first to 0
starting LCD with backlight
pinModes are set up
make the green led on when the device is turned on as an indicator that the device is on.
initialize update menu void
using switch case check menu which is initialized to 1 at first
case 1: show ">learn letter " in first column
and " practice letter" in second column
case 2: show " learn letter " in first column
and ">practice letter" in second column
case 3: show ">practice word " in first column
and " write sentence" in second column
case 4: show " practice word " in first column
and ">write sentence" in second column
case 5: stay at case 4
we are at screenNo 1
when we click the left button it adds 1 to menu and execute the update menu in the case of menu and we move down in the list of modes
when we click the right button it minuses 1 from menu and execute the update menu in the case of menu and we move up in the list of modes
when we click the middle button it selects the mode and moves to ecexute action void
check menu
if we are at menu 1 execute action 1 which will be learn letters mode and this will be screenNo 2
if we are at menu 2 execute action 2 which will be practice letters mode and this will be screenNo 3
if we are at menu 3 execute action 3 which will be practice words mode and this will be screenNo 4
if we are at menu 4 execute action 4 which will be write sentence mode and this will be screenNo 5
this will be executed when we are in screenNo 2 or 3 or 4
when we push the left button it will add "." to input and the led and buzzer will be on for 200 milliseconds which will be mentioned later in the actions voids
this will be executed when we are in screenNo 2 or 3 or 4
when we push the left button it will add "-" to input and the led and buzzer will be on for 400 milliseconds which will be mentioned later in the actions voids
void action1 () --> learn letters
void action2 () --> practice letters
void action3 () --> practice words
void action4 () --> write sentences
I integrated On/Off switch
perfect fit for power bank
running the cable of power bank into enclosure
first wiring integration test
using heat shrink to connect and protect exposed wires
connecting resistor to led
putting the power bank holder into the slider
wiring the power bank with on/off switch: red wire + to one leg of on/off switch and the other leg to 5v in arduino, white wire - to GND in arduino
connecting push buttons with terminals
after many heat shrinks I found it better to wrap the wire around the leg then bend the leg on it so it doesn't get loose
trying to seperate wires using tape
final wiring 3000 years later ='D
How we close our enclosure !? put your nut -->
Close the top part, and screw your screw :'D It's that simple ^_^
See this!? integrating it wasn't that simple. Because of the printing problem the slider shrank and couldn't fit the holder =(
but luckily I have best peers and instructors ever, almost every one was helping me to make it wider using file sets, heater gun, and soldering station till it finally fit in. Special thanks to my lovely instructor, Esraa, and my peers, Fikry , Rawan , and Yasen ^_^ couldn't have done it without their support and help <3.
There were a lot of challenges to be mentioned and I can't remember all of them but let's have a quick look:
It started with dealing with arduino nano as at first it didn't upload the code. I turned to google first to seek for more info and tried some solutions but none of them worked. Then I asked in slack if someone could help me and lucky me, Yasen offered his help and sent me a driver to install then try another processor and it worked great, thanks to him.
Next problem was in the design as almost after I finished my design, I started to integrate the components and found out that they wouldn't fit well specially when I add wiring, So I resketched again with length of 15 cm not 13 cm.
combining all codes was a real challenge but I over comed this by dividing my code:
at first I had every mode in a seperate code so I opened a new file and made 3 tabs 1) global, 2) setup, and 3) loop
I copied all the global variables from all codes to the global tab
same with void setup
in void loop I copied the loop of modes selection
then added the loop of learn letters code in void action one and same with other codes
at last I copied all of them in one tab
This moved me to the next problem which was error ( wasn't declared in the scope ) -_- , but HOW COME !! it's supposed to be declared it's here I can see it o-o... Run to google.. it told me that we should declare it before it's called.. OK, makes sense..
cut every part not declared and paste it before it's called. TaDaaa, it works =D
Making one push button do more than one function was a big challenge to me.. it worked just as up and down but didn't enter dot and dash. After a lot of search on google and asking my peers on slack. I was talking to my father who led me to the solution :O
screenNo was the solution : when you are in screenNo 1 only go up and down
and in void dot and dash execute them if you are in screen 2 or 3 or 4
I would complete the write sentence mode
I would add a communication method to send data written by the device
I would make the long press on the middle button returns me back to to the main menu
I would make if the user gets the letter or word wrong for many times in practice modes the LCD shows the code to help him
I would solve the depouncing problem in hardware