Weekly Updates

Week 0: 2/14 - 2/20

This week was mainly spent finishing lab 5 and finalizing logistics for the project

  • Changed the heating element to be an old electric kettle for a couple reasons (the parts page has been updated)

    • It heats up water faster than the heating element I was planning on getting

    • Less construction, I can just modify the kettle instead of building a steaming chamber

    • I can plug the kettle into a wall socket and control it with a relay board

  • Ordered parts I didn't already have (LED matrix displays and relay board)

  • Removed the kettle's handle and auto-shutoff mechanism

The kettle I will be using

My board with all the tested peripherals connected

Week 1: 2/21 - 2/27

This week I figured out which pins I need for all the peripherals and tested all but the LED matrix display boards on the STM32 board

  • I connected all the following peripherals at once in the following pins:

  • PB6 and PB7 (I2C) for the temp sensor, which was displayed on the LCD to verify

  • PA0 (center button) using an interrupt to toggle the PA2 pin connected to the relay board in output mode

    • I think I will just use the center button instead of an external button unless the board gets too crowded

  • PA1 using an ADC to convert the voltage across the potentiometer to digital

  • PE11 using PWM to control the servo motor based on the voltage across the potentiometer

    • I changed from a stepper motor to a servo motor because it is easier to control the servo (3 wires) and I don't need precise positioning for the motor

  • I also set up SysTick to be used for when I count down the remaining steaming time

  • I also ordered some more male-female and female-female wires since I ran out

Week 2: 2/28 - 3/6

This week I got the LED matrix display boards connected and began figuring out the logistics for building the steaming chamber

  • Set up SPI communication for the display boards

  • Wrote a function that displays input numbers and a colon, a function that displays "HEAT", and a function that displays "DONE" on the display boards

  • Cut the kettle in half

    • I plan to attach the temperature sensor to the rod along the side, since that touches the water

    • I also plan to create a "steaming basket" that will rotate the egg above the steaming area and back out once it is finished. This will replace the door system, since it is easier to build a box on top of the kettle than to try to cut metal that fits along the curves of the kettle

  • Removed the indicator LED from the project description, since I don't think it is very necessary

The display boards and a sketch of the basket mechanism

The kettle in half

The steaming basket and relay systems

Week 3: 3/7 - 3/13

This week I assembled the steaming basket mechanism and tested it with the motor. I used sheet metal for much of the construction, held together with heat-resistant epoxy.

  • Built a box with chicken wire on one side and one side open (where the egg will go)

  • Built a platform to cover the remaining half of the kettle with a hole cut out for steaming and a wall to cover the open side of the steaming basket

  • Attached a rod to the basket and the motor to be able to rotate it

  • Attached the basket + rod to the platform

  • Tested the motor with a weight inside the basket to simulate an egg

  • Wired the relay board to one plug on a power outlet (the other will power the STM32)

I also found that using the temperature sensor and the display boards on the same 5V line made the temperature sensor fluctuate widely, so I moved the temperature sensor to the 3V pin instead

Week 4: 3/14 - 3/20

This week I put everything together and tested the project

  • Cut a small hole in the side of the kettle to put the temp sensor in the path of the steam

    • Initially I put the sensor on the pipe that sticks up out of the water, but found that it not a good representation of the water's actual temperature. Since I was basically checking for when steam started coming up, putting the sensor above the hole where the egg would steam was a much better spot.

  • Wrote code to perform the steaming process

    • 3 states - Idle, Heat, and Cook

    • Button sets a flag to transition to the Heat state from Idle (start), or Idle from Heat/Cook (cancel)

    • Idle state opens the basket and reads the potentiometer to update time on displays

    • Heat state reads temp and keeps relay on as long as the temp is below 100°C

    • Cook state closes the basket, reads temp and toggles relay to maintain 97-100°C, and decreases time each second

      • I had to write some code to close the basket slowly since the egg broke while the basket closed in one of the tests

  • Updated the overview, block diagram, and parts sections to better reflect the functionality of the project

The egg steamer in all its glory