Close
0%
0%

Kitchen Timer

We're building a Kitchen timer!
The project is heavily inspired by "REST: Kitchen timer" by mkdxdx [Hackaday.io].

Public Chat
Similar projects worth following
The idea is to build a simple digital kitchen timer.
The beauty of this project is that it touches on various disciplines: electronics, programming, PCB design, and mechanics.

What feature will it have?
- It should let you set one or more timers.
- It should be built around an ATmega328p (to practice our skills)
- The display should be a 16x16 dot matrix
- It should run on a rechargeable battery for a relatively long time before recharging.
- It should have a UART interface to the PC for testing.
- It should let you stick it to the refrigerator.
- The mechanical parts should be 3d printable (for the most part)

Introduction:

Our kitchen timer will be an iteration of mkdxdx project "REST: Kitchen timerREST: Kitchen timer". We will keep the "dail" (rotate-to-set) concept and the 16x16 led matrix but we want to do it with an ATmega328p and a custom PCB.

Among other features that we would like to add are:

  • The possibility to set up several timers (in case you need to keep track of more than one pot when cooking dinner)
  • A UART communication port that would allow us to test the device via serial commands.

Motivation:

Both Erasmus Cedernaes and I belong to Stockholm Makerspace. On the same day, we messaged each other a link to mkdxdx project. We were very excited about building something that would be "practical" so we decided to team up and work on this together. Additionally, we share an interest in working with the AVR MCUs and this project seems like a nice blend of different disciplines (programming, electrical, mechanical, 3d printing, and design), without feeling overwhelming.

Objectives:

  • Create something... if it "useful", it is always a plus.
  • Work on a project together
  • Learn new things

Technical Details: [TODO]

  • Before starting the log ( before 2024-06-25)

    Nicolas Perozzia day ago 0 comments

    Since these logs have been started quite a bit after we started working on this project, I will try to summarize the progress that we have made up to now:

    Software:

    The code has been divided into libraries. Some libraries are platform-specific (atmega328 being the platform) and some others are platform-independent.

    Platform-specific Libraries:

    • rotary-encoder Library: This library contains the rotary encoder functionality. Every timer you press or rotate the encoder, an interrupt gets triggered, an event gets queued, and every event is processed in the main loop.
    • rtc Library: This library contains the configuration of the timer interrupt that gets triggered every second.
    • millis Library: This library contains a function that counts milliseconds based on a second timer interrupt. This library is useful for things like "switch debouncing" or identifying double-presses on the switch.
    • toneAC library: This library contains tones when we create melodies for the buzzer.
    • display Library: [TODO]
    • max72xx Library: [TODO]
    • led-counter Library: This library contains some functions that allow us to test functionality with simple LEDs on our breadboards.
    • UART Library: This contains the UART configuration and functions to read and write to and from the serial monitor.

    Platform-independent Libraries:

    • uint8-queue Library: This library contains the functionality to create queues of uint8_t elements. Those elements are added to the queue during the operation of the timer and processed (or dequeued) on the main loop.
    • state-machine Library: This library contains the state machine that defines what happens and when it happens.
    • str-helper Library: This library contains some functions to handle strings and was built to support the  UART library.
    • timer Library: This library contains the timer class and its functions. The idea is that one of these objects will be created every time a new timer is set up.

    Mechanics:

    Our design will be very similar to the reference project. These are some of the differences:

    • To push the button, the user will push the whole device, unlike the reference project where the push button is part of the rotary encoder.
    • The brim will cover the edges of the front panel.

    Electronics:

    We have not started working on a PCB. All the testing is done on breadboards.

  • 2024/06/27

    Nicolas Perozzia day ago 0 comments

    Today, I focused on getting the joint between the ring gear and one of the support planet gears right. The trick was to use Motion Link

    I also spent some time organizing the timeline... hopefully, this will be helpful in the future.

  • 2024/06/26

    Nicolas Perozzi2 days ago 0 comments

    I started the design of the internal gear and the planetary gears.

    Since we have an idea of how big we want the device to be (approximately 90 mm in diameter), I am starting with that constraint. Additionally, the planet gears cannot be too big since we need space for components. I am aiming for a 15-mm diameter for the planet gears.

    Other parameters that I am considering:

    Module = 1

    Preasure angle = 20

    Ring gear number of teeth = 80

    Planet Gears number of teeth = 15

    Backlash = 0.1 (I am adding this because the gears will be 3D printed.)

    Gear thickness: 4 mm (as per the width of the bearing that we ordered).

    Next challenge: define the joints in Fusion 360 assembly so the planet gears and ring gear work without a sun gear or planet gear holder. 

  • 2024-06-25

    Nicolas Perozzi3 days ago 0 comments

    Choosing bearings for the 3d printed gears. 

    The dial will drive the rotary encoder using a "planetary gear" type setup. One of the planet gears will have the encoder as the shaft but the other two gears, which work as support, will rotate freely over bearings. The free-rotating gears will be fixed to the PCB by a M3 screw and separated from it by a washer.

    These are the requirements that I was considering:

    • The outer diameter needs to be small enough so it leaves enough space for the 3d printed gears to be strong enough.
    • The inner diameter needs to be 3mm so it fits an M3 screw.
    • The width needs to be small enough so it leaves space for a washer and a nut in the space between the PCB and the top lid of the device.

    I ended up settling for the following open bearings with OD: 8mm, ID: 3mm, width: 3mm

View all 4 project logs

  • 1
    Concept
  • 2
    Sowftware
  • 3
    Mechanics

View all 4 instructions

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates