This is my make-through for the week's assignment.
Grab a cup of coffee! Buckle up your seat belt! Enjoy the upcoming greatness!
For this week Grouchy and I worked on very interesting stuff that wasn't that hard but took a bit of time. This stuff will lay the foundation for the rest of the diploma.
First, We used GitLab & Agile to breakdown and organize our tasks for Hydrate-Me (your hydration coach in form of a smart bottle).
The last time I used GitLab and Agile together was in 2018 when I used to work as a software engineer. It wasn’t hard to recall the commands and set up git to version control projects or use the website directly.
I preferred to work on my individual final product for two reasons:
I already developed the idea and have a clear vision that is built on market research and my technical knowledge so far.
It will be easier to make changes and reflect what we learn along the way directly to the project while it's organized on GitLab.
This way I identified the strengths that won't consume time and give this project an edge, and weaknesses that need a bit of work and time.
Second, The product teardown for Moon smart lamp. I didn't do a teardown for a product before so it was fun and informative. The steps we followed to know as much as possible about this product is very helpful and opened a new way of thinking to me also the documentation I worked on made me understand stuff I didn't fully capture in the EOW session.
So enough briefing and let's dive into this week's wok.
Grouchy Smurf
Step 1: I was trying to push some files through command lines but there was an error that blocked the push process.
Step 2: I went over to Stack overflow & GitLab docs to explore what was that error and found it was a permission issue.
Step 3: Thanks to Ahmed Ibrahim, he checked the group settings and gave me the permissions.
Step 4: After that everything worked fine.
Too many tabs to figure out this error
Problem: Error while trying to Push files to the Repo on Gitlab.
Potential Solution: Update the users permissions from the group settings.
Step 1: I created a project and pushed an empty file to it using the command line.
As you can see in the red highlighted part there is 4 commits, that is when I thought there were a problem with the commit process not the push.
Step 2: Created an issue and assigned it to Ahmed Ibrahim.
Project with the file uploaded
Create an issue and assign it
Step 1: Created a document file to throw the ideas, functions, design, electronics, coding and everything I know about the project there.
Step 2: Started with drafting the product description with the features that help consumers to understand it.
Step 3: Breaking and applying Agile aspects like product backlog, labels, sprints, ... to Hydrate-Me so I can add and organize the features to the sprints on Gitlab clearly.
The old notes where I write product updates
Step 1: I break the project down to the way that fits Agile and I can make sense of it. The project combines many branches like fabrication, materials, design, hardware components, coding.
Step 2: I used these branches as the basic labeling system and I can sub-label them. For example, we have coding as a major label then Hardware-coding and UI-coding, design as a major label then CAD-design, PCB-design and so on...
Step 3: List all the possible features in the product backlog and start picking what is achievable in the first MVP.
Step 4: Distribute the selected features to sprints. The sprints start with the heavily weighted tasks that have a low level of certainty (don't have much experience with) and end with lightly weighted tasks that have a high level of certainty (I kinda know how to develop).
That doesn't mean the early sprints are packed with hard tasks only no it just has more of the heavily weighted tasks than the lightly weighted ones.
Docs where I prepared Hydrate-Me for Agile
Before the EOWeek session, I had zero knowledge about teardown process except, for breaking my toys when I was a kid to see what is inside hahaha.
Step 1: Create a new project named Hydrate-Me and add a README.md to add the description and features that help consumers to understand it.
Step 2: Moving to the labels which are controlling the project and making it very accessible and understandable.
Step 3: Add boards so I have all the project features listed under Product backlog, Sprints backlogs, …
Step 4: Create Sprints(Milestones) Sprint #1, Sprint #2, …, add a clear description and set the needed duration to complete this sprint.
Step 5: Start creating features, add a description and break the big ones into detailed lists.
Step 6: Assign these features to me and add labels to distribute them depending on the branch (coding, design, …) and weight to the sprints ( sprint #1, Sprint #2, …).
Hydrate-Me on GitLab
It's not an Unsuccessful thing, it's more of a trial and error thing.
Every time I create a new issue I add a new thing like a more precious description or assign it to a certain Sprint and then move it to another.
Same thing for labels and milestones.
Now I have almost everything ready I just need to create the Hydrate-Me project and organize it to suit the Agile aspects.
Step 1: We powered up the lamp first and tried all of it's functions.
Step 2: Started to see our way to split it open without breaking it, there wasn't that much of tools we needed almost any but to open up the main body(moon) around the LEDs, we needed a rotary tool.
Step 3: We got the PCB and IR sensor out of their case was easy.
Step 4: I used the rotary tool to make a hole in the bottom of the moon so we can get the LEDs out. Here it became interesting the body was plastic and glued so it made a lot of dust, smell and after I finished I looked like a snow man hehehe.
Step 5: We gathered all the components to make the exploded view.
Now we have everything alone we took a dive deep to create our BOM. We started to inspect the PCB first which I have very little knowledge about it btw but I did understand it and the components as well.
Step 1: We started to list the components we could see and using it's part number we looked online for their datasheets online.
Step 2: It was easy it recognize 3 mosfets, smd zend diode, smd resistor, DC power socket and EPPROM.
Step 3: There was an IC that's must be the MCU but it didn't have a part number so we skipped it.
After that we jumped to the Functional model diagram.
Step 1: I already use a website to do mind mapping and some other diagrams so I used it to do the functional model.
Step 2: I tried couple of ways before reaching the final diagram.
The moon part which was the main shape for the lamp was glued from the bottom around the LEDs. We had to make a cut at the bottom using the rotary tool. It was a challenge to assemble it again but unfortunately the moon dropped off and broken into pieces hehehe, so we couldn't assemble it back.
What I learned this week is...
It was a light week with interesting subjects
GitLab as a project management tool.
Agile scrum methodology.
Teardown process.
PCB inspection.