PROJECT Development

 Project Development Blog Entry

In this page, I will:

  1. Briefly describe my team chemical device

  2. Show how the team planned, allocated the tasks, and executed the project. 

  3. Document the entire design and build process of the chemical device and include videos, pictures, and screen captures of the processes.

  4. Include “Hero shot” of every milestone of the processes, example the part A that was 3D printed, part B that was laser-cut, electronics components moved/worked according to the program. Hero-shot is taken with the person-in-charge holding/working/making the parts.

  5. Include the name of the person who was in-charge of every part of the project. 

  6. Document my individual contribution to this project.

  7. Provide the link to the page of the blog of my teammates. 

  8. Describe problems encountered and how the team solved them.

  9. Include all the project design files as downloadable files. 

  10. Embed the final prototype design file, i.e., the final fusion360 design file showing the entire prototype.

  11. Type my Learning reflection on the overall project development.



  1. Our team Chemical Device

  • In this section, I will briefly describe my team chemical device.

  • What it is. What problems will the chemical device solve? 

  • The hand sketch of the chemical device.


Our Group Chemical device is a half boiled egg maker device. It is suppose to cook a egg till half-boiled and lift the egg up when the duration is up.

The device consist of a wire mesh strainer to place the egg in.
It is also equipped with a temperature sensor to measure the temperature of the water in a container filled with hot water and and a LCD to show when the process is going to start and end. It does have a built in melody to act as a alarm.

Problem that user usually have when cooking half boiled egg is:
  1. Overcooking/Undercooking of eggs
  2. They have to be physically there to monitor the egg cooking to prevent the egg from overcooking or undercooking which is really inconvenient.
  3. Difficult for users to determine the temperature to cook the egg.
Our Device can solve those problem as it have a temperature probe that can measure the the temperature of the water. A motor will lower down the wire mesh strainer with the egg when the temperature probe sense that the water temperature is more than 80 degree celsius. The motor makes this process completely automated, hence solving the issue of users having to be in the kitchen the entire time. They can now do other stuffs while waiting. The LCD will then display the words of "Process Begin" to show the user. This timer will run until a set time is up and the motor will be activated to reel in the strainer. The pre-set time duration ensures that the eggs do not overcook or undercook inside the hot water. Lastly, A melody will sound and act as an alarm to inform user that the half boiled egg is ready to eat.

Here is the handsketch of the device:

Image




  1. Team Planning, allocation, and execution

  • In this section, I will list down my team member's name and their respective roles (CEO, CFO, COO, CSO)

  • I will show the finalized BOM (BILL OF MATERIALS) table. 

  • I will show the finalized Gantt chart (planned and actual) and the tasks allocation for each team member.


These are my team members and their roles:

Format: Name, Acronym (Position) - Short description of their roles
  • Redza, AR (CEO) - Project Leader
  • Gayathri, GP (CFO) - Manages project funds, ensures funding is not exceeded
  • Jia Tong AKA Me, JT (COO) - Oversees the project & ensure everybody is on schedule
  • Enzo, EP (CSO) - Responsible for groups safety
Finalized BOM:

Project Title:

Half Boiled Egg Maker

Team members:

Redza, Gayathri, Jia Tong, Enzo

Created by:

Gayathri

Date created:

21/11/2022

BILL OF MATERIALS (BOM)

No

Description of item

Supplier
(include hyperlink to the item in website of seller)

quantity

quantity unit

unit price

Total Cost 

Available at W319 Lab? (Y/N)

1

Maker UNO Edu Kit ( Arduino Compatible)

 https://sg.cytron.io/p-maker-uno-edu-kit-arduino-compatible


 Set

$19.61 

$19.61 

 N

2

 Temperature Sensor - Waterproof

 https://sg.cytron.io/p-temperature-sensor-waterproof


 1

 Pc

$2.86 

 $2.86

 Y

3

Stainless Steel Mesh Strainer

(Mid)

https://shp.ee/g2e9z8i 

 1

 Pc

$1.34

$ 1.34

 N

4

Fishing String

(Red- 100m, #0.8)


 https://shopee.sg/product/176750510/6375064389?d_id=86070&utm_content=4R1eejAtABM8LgcXeST3PE5se4Du


 1

Pc 


$1.59 

$1.59 

 N

5

Metal container 

(no 5)

https://shopee.sg/BLACK-Stainless-Steel-Bowl-Metal-Nesting-Serving-Bowls-without-Lids-Container-for-Adults-Children-Dinner-Serving-Bowls-i.274609803.20826498963?sp_atk=955ebd4f-9b6f-45b5-a37e-0f36d266b6ec&xptdk=955ebd4f-9b6f-45b5-a37e-0f36d266b6ec


1

Pc

$5.43

$5.43

N

6

 3kg.cm 360 degree Continuous Rotation Motor 

 https://sg.cytron.io/c-motor-and-motor-driver/c-dc-motor/c-servo-motor/p-3kg.cm-360-degree-continuous-rotation-servo


Pc

$10.36 

$10.36 

 Y

7

Acrylic sheet for laser cutting 

( 30cm x 30cm )

https://shopee.sg/product/279887071/3047364295?d_id=86070&utm_content=4R1eejAtAJmTPrp1wAxw3nVVZy8B


1

Pc

$9.18

$9.18

N

8

Female to female jumper wires

https://sg.cytron.io/p-female-to-female-jumper-wire


2

Sets

$0.71

$1.42

N

9

l2C 1602 Serial LCD for Arduino & RPI


https://sg.cytron.io/p-i2c-1602-serial-lcd-for-arduino-and-rpi


1

Pc

$3.93

$3.93

Y

10

3D printing filament

https://s.lazada.sg/s.0COJI   

1

Pc

$29.90

$29.90

Y

11

Wrapping paper 

Buying physically 

1

Pc

$1.30

$1.30

N

Grand Total Cost:

$86.92

 


Finalized Gantt Chart:





  1. Design and Build Process

In this section, I will provide documentation of the design and build process.


Part 1. Design of all fusion 360 files needed for 3D printing and Laser Cutting (done by Me).

Part 2. Build of 3D printing AND Laser cutting parts out (done by Enzo and Redza)

    Link to Enzo Blog: https://enzopehyh.wixsite.com/cp5070-2022-2b01-gro/post/final-project-yay

    Link to Redza Blog: https://aliredza21.blogspot.com/2023/02/project-development-blog-entry.html

    Part 3. Arduino Programming of motor, lcd, Melody and Temperature probe (done by Gayathri and I).

    Link to Gayathri blog: https://gayathri215.wixsite.com/cp5070-2022-2b01-g5/post/project-development-documentation

    Part 4. Integration of all parts and electronics (done by Everyone)



    Part 1. Design of all fusion 360 files needed for 3D printing and Laser Cutting (done by Me).

    Documentation for task 1.


    So we had to 3D print the big rod, the small supports and the bearings with grooves. And we had to laser cut the main rectangles and squares shapes for the main body for the device.

    Now in order to have a file to laser cut and 3D Print, I have to use Fusion 360 to design the file.
    For this blog i wanted to do something different from other blogs where i just simply screenshot the steps. I am going to show videos of how I design everything on Fusion 360 :) .

    For 3D Printing

    Bearings


    Small and supports parts


    Big Rod



    For Laser Cutting


    Hero shot




    Part 3. Arduino Programming of motor, lcd, Melody and Temperature probe (done by Gayathri and I).

    Link to Gayathri blog: https://gayathri215.wixsite.com/cp5070-2022-2b01-g5/post/project-development-documentation


    Documentation for task 3.

    This code is written in Arduino programming language, and it controls the behavior of an Arduino board with a servo motor, a temperature sensor, and an I2C LCD 1602 display. Here's what each section of the code does:


    This section includes four libraries that are necessary for the code to work. The Servo library allows the code to control the servo motor, OneWire and DallasTemperature libraries enable communication with the temperature sensor, and pitches.h is a header file that contains a list of notes with their corresponding frequencies for the tone function that plays a melody.


    This section defines the notes and their durations for the melody to be played later in the code. Each element in the melody array represents a note, and the corresponding element in the noteDurations array indicates the duration of each note. For example, NOTE_C4 represents the frequency of the note C4, and 4 indicates that it is a quarter note.



    This section defines the servo motor, the data wire for the temperature sensor, and the I2C LCD 1602 display. The servo motor is defined as myservo, and the data wire for the temperature sensor is connected to digital pin 2. The OneWire library is used to communicate with the temperature sensor, and the DallasTemperature library is used to convert the sensor readings into temperature values. The I2C LCD 1602 display is defined as lcd, and it is connected to the I2C bus with address 0x27.



    This section defines the setup function, which is called once when the board is powered on or reset. In the setup function, the servo motor is attached to pin 9, the serial communication is initialized with a baud rate of 9600, the temperature sensor is started up, and the I2C LCD 1602 display is initialized.



    This section defines the loop function, which is called repeatedly while the board is powered on. In the loop function, the temperature sensor is requested to take a reading, and the temperature value is stored in the tempC variable. If the temperature is higher than 80 degrees Celsius, the code inside the if block is executed. Otherwise, the code inside the else block is executed.


    Inside the if statement, the code activates the backlight of the I2C LCD display, sets the cursor to the top left corner of the display, and prints "Process Begin" on the first line and "Group 5" on the second line. This is done using the lcd.backlight(), lcd.setCursor(), and lcd.print() functions.


    The code then rotates a servo motor attached to pin 9 of the Arduino to a position of 45 degrees using myservo.write(45);. It keeps the motor in this position for 1.5 seconds using delay(1500);.

    The code then stops the motor by setting its position to 88 degrees using myservo.write(88);. It waits for 7 seconds using delay(7000);.

    The code then retracts the motor to a position of 135 degrees using myservo.write(135);. It keeps the motor in this position for 1.55 second using delay(1550);. Finally, the code stops the motor again using myservo.write(88); and detaches the motor from pin 9 using myservo.detach();.

    After the motor has finished moving, the code prints "Ready to eat :)" on the I2C LCD display using the lcd.print() function.


    The code then plays a short melody using a piezo speaker connected to pin 8 of the Arduino. The notes and durations of the melody are defined in the melody[] and noteDurations[] arrays at the beginning of the code.


    If the temperature value stored in tempC is not greater than 80 degrees Celsius, the code inside the else statement is executed. This code stops the motor using myservo.write(88);, detaches the motor from pin 9 using myservo.detach();, and displays "Temperature not reached" on the first line and "reached" on the second line of the I2C LCD display using the lcd.print() function.

    This is the full code:

    #include <Servo.h>
    #include <OneWire.h>
    #include <DallasTemperature.h>
    #include "pitches.h"

    // notes in the melody:
    int melody[] = {
      NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4
    };

    // note durations: 4 = quarter note, 8 = eighth note, etc.:
    int noteDurations[] = {
      4, 8, 8, 4, 4, 4, 4, 4
    };


    Servo myservo;

    // Data wire is plugged into pin 2 on the Arduino
    #define ONE_WIRE_BUS 2

    // Setup a oneWire instance to communicate with any OneWire devices
    OneWire oneWire(ONE_WIRE_BUS);

    // Pass our oneWire reference to Dallas Temperature.
    DallasTemperature sensors(&oneWire);

    #include <LiquidCrystal_I2C.h>
    LiquidCrystal_I2C lcd(0x27, 20, 4);

    void setup() {
     
      // start the servo library
      myservo.attach(9);

      // start the serial communication
      Serial.begin(9600);

      // Start up the library
      sensors.begin();

      lcd.init(); //display initialization

    }

    void loop() {
       // request a temperature reading
      sensors.requestTemperatures();

      // get the temperature in Celsius
      float tempC = sensors.getTempCByIndex(0);

      if (tempC > 80) {

    lcd.backlight(); // activate the backlight
    lcd.setCursor(0, 0); // stand in the front line
    lcd.print("Process Begin");  // Display the word 'Process begin' on the I2C LCD 1602 display
    lcd.setCursor(0, 1); // stand in the second line
    lcd.print("Group 5");  // Display the word 'Group 5' on the I2C LCD 1602 display


      myservo.write(45); // rotate the motor 45 degree

      delay(1500); // keep rotating for 1.5 seconds

      myservo.write(88); // stop the motor

      delay(7000); // stay stopped

      myservo.write(135); // retract it

      delay(1550); // keep rotating for 1.55 seconds

      myservo.write(88); // stop the motor

      myservo.detach();

    lcd.setCursor(0, 0); // stand in the first line
    lcd.print("Ready to eat :)");  // Display the word 'Ready to eat' on the I2C LCD 1602 display

    // iterate over the notes of the melody:
      for (int thisNote = 0; thisNote < 8; thisNote++) {

        // to calculate the note duration, take one second divided by the note type.
        //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.
        int noteDuration = 1000 / noteDurations[thisNote];
        tone(8, melody[thisNote], noteDuration);

        // to distinguish the notes, set a minimum time between them.
        // the note's duration + 30% seems to work well:
        int pauseBetweenNotes = noteDuration * 1.30;
        delay(pauseBetweenNotes);
        // stop the tone playing:
        noTone(8);}
       
        }else {
    myservo.write(88);
    myservo.detach();

    lcd.backlight(); // activate the backlight
    lcd.setCursor(0, 0); // stand in the front line
    lcd.print("Temperature not");  // Display the word 'Temperature not' on the I2C LCD 1602 display
    lcd.setCursor(0, 1); // stand in the second line
    lcd.print("reached");  // Display the word 'reached' on the I2C LCD 1602 display

    noTone(8);
      }
    }

    This is the pitches.h header file:

    /*****************
       Public Constants
     *****************/

    #define NOTE_B0 31
    #define NOTE_C1 33
    #define NOTE_CS1 35
    #define NOTE_D1 37
    #define NOTE_DS1 39
    #define NOTE_E1 41
    #define NOTE_F1 44
    #define NOTE_FS1 46
    #define NOTE_G1 49
    #define NOTE_GS1 52
    #define NOTE_A1 55
    #define NOTE_AS1 58
    #define NOTE_B1 62
    #define NOTE_C2 65
    #define NOTE_CS2 69
    #define NOTE_D2 73
    #define NOTE_DS2 78
    #define NOTE_E2 82
    #define NOTE_F2 87
    #define NOTE_FS2 93
    #define NOTE_G2 98
    #define NOTE_GS2 104
    #define NOTE_A2 110
    #define NOTE_AS2 117
    #define NOTE_B2 123
    #define NOTE_C3 131
    #define NOTE_CS3 139
    #define NOTE_D3 147
    #define NOTE_DS3 156
    #define NOTE_E3 165
    #define NOTE_F3 175
    #define NOTE_FS3 185
    #define NOTE_G3 196
    #define NOTE_GS3 208
    #define NOTE_A3 220
    #define NOTE_AS3 233
    #define NOTE_B3 247
    #define NOTE_C4 262
    #define NOTE_CS4 277
    #define NOTE_D4 294
    #define NOTE_DS4 311
    #define NOTE_E4 330
    #define NOTE_F4 349
    #define NOTE_FS4 370
    #define NOTE_G4 392
    #define NOTE_GS4 415
    #define NOTE_A4 440
    #define NOTE_AS4 466
    #define NOTE_B4 494
    #define NOTE_C5 523
    #define NOTE_CS5 554
    #define NOTE_D5 587
    #define NOTE_DS5 622
    #define NOTE_E5 659
    #define NOTE_F5 698
    #define NOTE_FS5 740
    #define NOTE_G5 784
    #define NOTE_GS5 831
    #define NOTE_A5 880
    #define NOTE_AS5 932
    #define NOTE_B5 988
    #define NOTE_C6 1047
    #define NOTE_CS6 1109
    #define NOTE_D6 1175
    #define NOTE_DS6 1245
    #define NOTE_E6 1319
    #define NOTE_F6 1397
    #define NOTE_FS6 1480
    #define NOTE_G6 1568
    #define NOTE_GS6 1661
    #define NOTE_A6 1760
    #define NOTE_AS6 1865
    #define NOTE_B6 1976
    #define NOTE_C7 2093
    #define NOTE_CS7 2217
    #define NOTE_D7 2349
    #define NOTE_DS7 2489
    #define NOTE_E7 2637
    #define NOTE_F7 2794
    #define NOTE_FS7 2960
    #define NOTE_G7 3136
    #define NOTE_GS7 3322
    #define NOTE_A7 3520
    #define NOTE_AS7 3729
    #define NOTE_B7 3951
    #define NOTE_C8 4186
    #define NOTE_CS8 4435
    #define NOTE_D8 4699
    #define NOTE_DS8 4978

    Hero shot

    Me :)


    Gayathri




    Part 4. Integration of all parts and electronics (done by Everyone)


    Embed finalized fusion 360 design files.

    Overall:


    Bearing:


    Big Rod:


    Small and supports parts:


    Documentation for integration.

    1. Using acrylic glue, glue all the laser cutted parts together.


    Laser cutted parts:



    Glueing:


    The main body should look something like this after glueing:


    2. From the 3d printed parts, grab a small rod (yellow), a bearing and the 2 bearing holder and assemble them like this:


    3. Stick this asembled component onto the top of the main body using hot glue.

    4. Stick the bottom of the mainbody to a piece of cardboard as a base using hotglue.

    It will become like this:

    5. Hot glue the sides of the hole of the main body. Insert the Big rod (green) into the hole through the main body to stick it together.

    Hot glueing:

    Inserting the big rod:

    6. Grab a small rod (yellow) and a bearing and insert it through the big rods use superglue to glue the 2 ends of the small rod to fix it in place until it look something like this:

    As seen in the picture, then use blu tack place them at the 2 sides of the bearings to so that the bearings wouldn't shift.

    7. Repeat step 6 to the other hole of the big rod (green).

    8. Using Fishing String, tie it to the wire mesh strainer like that:



    9. Then using another longer fishing string connect it to the fishing string on strainer. Taking the other end pass it through the bearings like that:






    10. Stick the servo motor wheel to the 3D printed cylinder using blu tack.



    11. Using super glue paste these 3D printed parts on the cardboard base. Stick the servo motor on top of the rectangular box printed part also.






    12. Roll the Fishing string end onto the big cylinder. Then Secure with blu tack


    13. Attach all the wires for Arduino and the electronic.

    14. Place the arduino and breadboard into a box.

    14.  Using blu tack, attach the LCD to the top of the main body. 


            

    Hero shot for integration.


    *
    PS after taking this, we realised the wire look too messy and so we when back to change it a little bit by putting the arduino and breadboard into a box and decorated the box to make it look nicer

              
               Final device shot 




               Video of device working


    1. Problems and solutions

    In this section I will describe the problems encountered in the design and build process and how the team solved them.

    • Problem 1 and how we solved it

    3d printing

    1. Gaps between layers for the Big Rods 
    During the print for the Big rod the first time, I realized very early on that there was very big gaps in between the layers.  
    Like this: 




    We look around for the source of the problem and saw that the PLA Material holder was slanted. There wasn't anything else that was wrong and so we thought that was the problem.
    And so we started a fresh print. It was going fine until this gap situation happen again. This time though we paid more attention and realized that indeed the gap only started appearing when the PLA material holder was slanted. We can deduce that it was because it was slanted, there wasn't enough PLA supplied to the nozzle and thus not enough material to print that layer.

    To solve it, we simply tie the holder to a stable wire near the printer so that it would not fall and be slanted again. 


    2. Ball bearings.
    We needed something like a ball bearing in our device. However, the type of bearings that was needed had to have a groove. Something like a yoyo. We tried searching online, however it was either too expensive or took a long time to arrive.

    Thus, our solution is to make our own using 3D printing.



    • Problem 2 and how we solved it

    Laser cutting

    1. Nothing in file to import to CorelDRAW

    When we inserted the thumb drive with our file to the computer to use CorelDRAW, we couldn't import the file in no matter how we tried. It kept showing there was nothing in the file. At first we thought it was the format of the file. However, after double checking the format of the file was correct. We were stumped.

    Luckily, the Technical Executive at the FABLAB saw that we were having troubles and came to help us. He didn't look at the body that was extruded in fusion 360 but instead ask about the sketch drawing. That's when i knew what was wrong. When i was doing the file for this, i thought the extruded body was the most important like 3D printing. Because the original file that i was doing in was too messy i actually copy and paste the body into a new fusion 360 file. To do that i had to turn off capture design history, meaning for the new file there wasn't any sketch. This was why there wasn't anything to import to CorelDRAW when we tried.

    Since, i realized that for laser cutting the sketch was more important. It was then quite easy to solve the problem, just import the file that have the sketch instead of the body into CorelDRAW.

    • Problem 3 and how we solved it

    Arduino

    1. Servo Motor couldn't stop

    One of the main problem we faced when programming the motor was getting it to stop. When we looked through our previous practical tasks / pre - experiment tasks on Arduino, we realised that the motor did not stop completely instead it vibrated.
    After researching a while we looked at this video : https://www.youtube.com/watch?v=b_xvu6wWafA and realised that servo.write(90) doesn't work for all the motors.

    Hence, we had to trial and error and see at which number the servo motor stopped. We ended up with servo.write(88).

    We also added the servodetach in the else function as an extra measure to stop the servo motor.

    • Problem 4 and how we solved it

    Aesthetic

    1. The wire looked too messy.

    My team could agree that we had to do something about the wiring as it looks very messy. However, we never really acted upon it as we were focusing on building the parts rather than the aesthetics.


    The wirings were all over the place and it makes the prototype look incomplete. The first idea was to untangle the wires and make them look nicer. However, it did not make much of a difference. 


    In the end, a box was used to keep the wires and arduino board in to make the overall look nicer.


    * PS: As could be seen here, blu tack use to secure the wires was changed to masking tape as it looks more nicer. 😎


    1. Project Design Files as downloadable files

    In this section, I will provide all the design files (Fusion360 files, .dxf files, .stl files, arduino programs files) as downloadable files. 


    Link: https://drive.google.com/drive/folders/1J3Mlz-7_FDKYoSdG0v5WCaa6YfgZ5gAe?usp=sharing


    1. Below is my Learning Reflection on the overall Project Development.


    It definitely wasn't easy doing this project. In fact, i felt that out of all the modules i put the most time and effort into this. The process was really painful sometimes, but looking at the result now and what i have learned through this i would say that it was kinda worth it. 

    I learnt alot of things through this. For example, on how to combine multiple codes and physical wirings together. In the past, I could only do one code with one function at time and even then sometimes i do not really understood it. But throught this long period of time where i am constantly researching on Arduino Programming and learning new codes and what they meant, i think its safe to say that i am now more proeficient with Arduino. The key to it i felt is that you really have to understand what each code meant.

    I also learnt alot about laser cutting. I didn't learnt laser cutting before until this semester and even then it was more of a learning about how to use CorelDRAW and operate the laser cutting machine itself. I supposed it might be because i already learnt how to use fusion 360 in 3D printing before. But i really did not know that the sketches was supposed to be the one that make the software work unlike extruded body for 3D printing. Glad that we booked extra time to laser cut, because we anticipated we will need more time as we were new to it. Also am really happy thar i got to learn new skills.

    All in all, this project was a very tiring and time consuming project. But looking at the results, i would say that i am quite proud of myself for learning so much new things. 🐣🤩😆


    Comments

    Popular posts from this blog

    ARDUINO Programming

    HYPOTHESIS Testing