Kids Kitchen That Says BEEP

7,693

75

14

Published

Introduction: Kids Kitchen That Says BEEP

My two year old daughter had a 'small' request for her third birthday. She wanted a little kitchen that says Beep. 'You want a what?' was my response. 'A kitchen that says beep, just like mommies kitchen!', she said...

So, that was the inspiration (I mean 'request') that got me started on this project!

Building a small kitchen to play with can be very time consuming as I'm not a experienced woodworker, so I started with a 'ready built' wooden kitchen: the Ikea Duktig. I'm quite confident, that I can't build a better kitchen for that price.

Talking about price, some might wonder what the total price for this project is. Well, an Ikea Duktig kitchen costs around 80 Euros where I live. The other parts will cost roughly 25 to 30 Euros, when you order the components from China.

Step 1: The Short Manual!

The video shows how it all works. When the kitchen is switched on, the current time is shown. Now you can set the timer using the blue button and yellow button. The blue button increases the timer and the yellow button decreases the timer. The increments are the same as the oven of 'mommie', so the buttons will let you switch between 0:05, 0:10, 0:15, 0:20, 0:25, 0:30, 0:40, 0:50, 1:00, 1:15, 1:30, 1:45, 2:00, 2:15, 2:30, 2:45, 3:00, 3:30, 4:00, 4:30, 5:00, 5:30, 6:00, 7:00, 8:00, 9:00 or 10:00 minutes:seconds. If you like even longer (or other) periods, no problem, simply add timer preset times in the code. The reason that I stopped at 10 minutes, is that I didn't want to wake up in the middle of night wondering what just beeped. :-)

Ok, now that the timer is set, a simple push on the green button starts the timer and the red button stops the timer. You can also use the red button to stop setting the timer and make the display show the current time again. During the counting down of the timer, the oven is well lid by a strip of LEDs.

When the timer reaches 0:00 the display shows BEEP (or in Dutch PIEP) and then you can hear 2 short and 1 longer beep. Then, the current time will be shown in the display again.

Step 2: What You'll Need

These were the materials that I used for this project:

  • An IKEA Duktig kitchen
  • An Arduino (I used an Arduino Nano)
  • 12V DC power supply, with DC jack
  • DC/DC buck converter
  • A 12V LED strip
  • Panel mount DC jack
  • A DS3231 clock module
  • 4 buttons (non latching) and, as I love LED's, I chose buttons with an LED in them
  • A (latching) power button, with again an LED in it (that is only lid when the power is on)
  • A TM1637 7 segment display with 4 digits
  • Wire
  • Heat-shrink tubing
  • MDF plate, 5 mm thick, about 35x35cm
  • 1kΩ resistor
  • 2N3904 transistor
  • Small PCB prototyping board

And the most important part: a buzzer (a TMB12A05)!

Tools I used:

  • Router with a small router bit
  • Drill press
  • Knife, file, sandpaper
  • Soldering station
  • Glue gun
  • Small butane torch (for the heat-shrink tubing)
  • Laptop with Arduino IDE

Step 3: Changes to the Kitchen

Some modifications are required to the wooden parts of the kitchen for the added features:

  • Changes to front: holes for 4 LED-buttons and display
  • Changes to left side: hole for power button
  • Changes to bottom plate: hole for DC jack

Changes to front

Please download the PDF-file below (note that you might have different size buttons and/or display, but you can simply create a similar template using a drawing tool). It contains a template that I have used to make the holes in the front. I simply taped the template to the wood and first drilled a small hole in the center of each button.Note that the template has a front and a back version. The arrow always points at the top left corner. After the small drill bit, I switched to a larger drill bit, a 16 mm drill bit to be more precise (as this is the diameter of the LED buttons I've selected for this project).

For the display hole, I first drilled multiple holes in the dark area of the template. The dark area in the template has the exact dimensions of the display itself. To finish the display hole, I used a small rotary tool, a file and a sharp knife. The somewhat lighter area has the rough dimensions of the PCB that is connected to the display. If you would mount the display in this hole, you'll notice that the wood is very thick. When I inserted the display, I didn't like the look of this and used a router to make the wood less thick. You'll have to measure the height of the display yourself, as you might not have the same display.

Changes to the left panel

The power button is located in the wooden panel on the left side of the kitchen. For this, a hole was drilled in the top left corner of the panel. Note that the best location for this button is at the top, as will become obvious when reading the assembling step. Inside the cabinet a new top panel will be added (to glue the LED strip to and to protect the electronics), so it's better to have the button above this panel.

On the inside of the left panel, I used a small router bit to create a slot for the power cable to run through.

Changes to the bottom plate

For the DC jack, I chose the bottom to mount it to. As the bottom panel is quite thick, first drill a hole that is just large enough for the actual connector (the metal part of the connector). Then drill -from the bottom side up- a larger hole (of course not completely through the bottom panel!), as the connector has a plastic casing that will be in the way otherwise. The DC-panel mount can be glued in place.

Step 4: Electronics

The electronics for this project are actually quite simple. The whole project runs on a small 12V power supply. A latching button, let's you switch the power on and off. The Arduino Nano and other parts actually run on 5V, so the voltage is converted using a DC-DC buck converter. Note that the LED-strip I used, requires 12V.

The Arduino Nano is at the middle and is connected to:

  • 5V power from DC-DC buck
  • 4 buttons (Start, Stop, Plus and Minus)
  • DS3231
  • TM1637-display
  • Buzzer
  • LED-strip

The four buttons are simply connected to a digital input and to GND. In the code, the internal pull up is set. The DS3231 is connected via I2C. For an Arduino Nano, SDA is connected to A4 and SCL is connected to A5. The display requires next to 5V and GND, two digital ports.

For the buzzer and LED-strip, I used a small perfboard. Both parts are connected to a digital output of the Arduino. The LED strip is connected via a 1 kOhm resistor and a transistor. For convenience during assembly, I connected the LED-strip with a connector. When I finished all soldering, I wished I used more connectors. With connectors, you can simply try all parts separately and if a part fails for whatever reason, it is easier to replace.

To prevent any short circuits, I extensively used shrink tubes. And before shrinking the tubes, check whether every works! :-)

Step 5: Assembling

Now it's time to assemble the kitchen. First, insert all buttons in the designated holes. As I used LED buttons, each with a different color, I chose the following order (from left to right): blue, yellow, green, and red

The functionality of the buttons will be (same order): increase timer, decrease timer, start oven timer, and stop.

Then, add the power button, DC jack and display. Note that my TM1637 display had a connector on the front. This connector has been removed (desoldering). I inserted the components I mentioned above and then simply followed the Ikea manual and until the counter top is to be mounted on the kitchen. Note that soldering the components when the kitchen is already somewhat built, makes it easier, as you don't have to hold the components.

As this will be a project kids will play with, it is a really good idea to shield off all electronics. It's not to protect the kids, it's to protect the electronics from those little exploring hands... :-) The LED strip can also be simply glued to it as well. A small hole is enough to put the wires through. Simply cut out a rectangular part from 5 mm MDF dimensions x mm. Pieces of scrap wood can be used to hold the plate in place. Don't block any pre-drilled holes in the side panels, as those holes are required for assembling the kitchen.

When the kitchen was finished, I created a nice logo in black vinyl and cut some red transparent plastic (from an old alarm clock) in the correct dimensions for the display.

Step 6: Programming the Arduino

For programming the Arduino, I used the Arduino IDE. The program requires 4 modules to be installed. These are:

The code contains many inline comments for extra clarification, as I don't think the code itself would be self-explaining to everyone (including myself after a couple of months). What the comments do lack is an overview of how it all works. So here I'll provide a quick overview of the program.

After the setup procedure, the program can be one of four states, as the Arduino is either:

  • Showing the time on the display (default state)
  • Setting the timer
  • Showing the timer that counts down to 00:00
  • Beeping

In the standard loop procedure, the following things will happen each loop:

  • Check the buttons whether one has been pressed and act accordingly
    • For example, increase the timer with a step, stop the timer and switch state to show time, etc.
  • Check whether something needs to be done based on the current state
    • For example, decrease the time as a second has passed, or show the new time, since the time has changed

Step 7: Have Fun!!!

Both my daughters like playing with the kitchen. They make all kinds of stuff in it, pancakes, cakes, coffee, hot chocolate, soup, etc.

Normally they're not allowed to push any buttons in our kitchen, but on theirs the can simply hold a button, push a button as hard as they like, hit the button with another object. :-)

Be aware that the buzzer is actually quite loud. Mounting a small piece of tape over it will easily fix that for you!

Design For Kids Challenge

Grand Prize in the
Design For Kids Challenge

3 People Made This Project!

Recommendations

  • Clocks Contest

    Clocks Contest
  • Water Contest

    Water Contest
  • Oil Contest

    Oil Contest

14 Discussions

Good day,

The idea is really great, I'm also building it. Only I put myself somehow very dum with the incorporation of the new libraries. Dadurhc, the code that you pushed does not work anymore. Och hope you can help me further.

Many Thanks

Pascal

3 more answers

Hi Pascal,

I see that you're using the Grove display library. Could you try it with the TM1637 library as mentioned in the instructable above? (go to the link, click on the green download button, save the zip file somewhere and simply add the zip to the Arduino IDE)

Hmm, I have a new laptop, and it doesn't want to compile the Arduino-file either. I already installed the TM1637 library. I got this error: 'tmElements_t' has not been declared

But, the errors you got, those weren't you're mistakes :-)

Ok, now it compiles, I changed Time.h to TimeLib.h...

Programming is trying, swearing, hoping and in the end succeeding!

I hope the other TM1637 library gets you closer to your goal!

Kind regards,

Roald

Hello thank you very much again I have looked again at the libraries. I took the following

Wire - Version: Latest<Wire.h> Time - Version: Latest<Time.h><TimeLib.h>

Grove 4-Digit Display - Version: Latest<TM1637.h>

DS1307RTC - Version: Latest<DS1307RTC.h>

My problem is that when compiling the following error message comes.

error: 'SEG_A' was not declared in this scope

SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F | SEG_G, // B

^error: 'SEG_B' was not declared in this scope

SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F | SEG_G, // B

^error: 'SEG_C' was not declared in this scope

SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F | SEG_G, // B

^error: 'SEG_D' was not declared in this scope

SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F | SEG_G, // B

^error: 'SEG_E' was not declared in this scope

SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F | SEG_G, // B

^error: 'SEG_F' was not declared in this scope

SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F | SEG_G, // B

^error: 'SEG_G' was not declared in this scope

SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F | SEG_G, // B

^error: 'SEG_A' was not declared in this scope

SEG_A | SEG_D | SEG_E | SEG_F | SEG_G, // E

^error: 'SEG_D' was not declared in this scope

SEG_A | SEG_D | SEG_E | SEG_F | SEG_G, // E

^error: 'SEG_E' was not declared in this scope

SEG_A | SEG_D | SEG_E | SEG_F | SEG_G, // E

^error: 'SEG_F' was not declared in this scope

SEG_A | SEG_D | SEG_E | SEG_F | SEG_G, // E

^error: 'SEG_G' was not declared in this scope

SEG_A | SEG_D | SEG_E | SEG_F | SEG_G, // E

^error: 'SEG_A' was not declared in this scope

SEG_A | SEG_D | SEG_E | SEG_F | SEG_G, // E

^error: 'SEG_D' was not declared in this scope

SEG_A | SEG_D | SEG_E | SEG_F | SEG_G, // E

^error: 'SEG_E' was not declared in this scope

SEG_A | SEG_D | SEG_E | SEG_F | SEG_G, // E

^error: 'SEG_F' was not declared in this scope

SEG_A | SEG_D | SEG_E | SEG_F | SEG_G, // E

^error: 'SEG_G' was not declared in this scope

SEG_A | SEG_D | SEG_E | SEG_F | SEG_G, // E

^error: 'SEG_A' was not declared in this scope

SEG_A | SEG_B | SEG_E | SEG_F | SEG_G, // P

^error: 'SEG_B' was not declared in this scope

SEG_A | SEG_B | SEG_E | SEG_F | SEG_G, // P

^error: 'SEG_E' was not declared in this scope

SEG_A | SEG_B | SEG_E | SEG_F | SEG_G, // P

^error: 'SEG_F' was not declared in this scope

SEG_A | SEG_B | SEG_E | SEG_F | SEG_G, // P

^error: 'SEG_G' was not declared in this scope

SEG_A | SEG_B | SEG_E | SEG_F | SEG_G, // P

^error: 'TM1637Display' does not name a type

TM1637Display display(TM1637CLKPin,TM1637DataPin);

^In function 'void setup()':

error: 'display' was not declared in this scope

display.setBrightness(0x0a);

^In function 'void Beep()':

error: 'display' was not declared in this scope

display.setSegments(SEG_BEEP);

^In function 'void ShowTimeOnDisplay()':

error: 'display' was not declared in this scope

display.showNumberDec(intNumber,true);

^In function 'void ShowTimerOnDisplay()':

error: 'display' was not declared in this scope

display.showNumberDec(intNumber,true);

^exit status 1

These are the mistakes I get. Unfortunately, it's been a few years since I last programmed. I think I somehow have a board in front of my head and can not get to the solution. If you could help with it would be great so my two girls for your birthday also get a kitchen can say the beep.

Regards,

Pascal

Hi Pascal,

I see that you're using the Grove display library. Could you try it with the TM1637 library as mentioned in the instructable above? (go to the link, click on the green download button, save the zip file somewhere and simply add the zip to the Arduino IDE)

Hmm, I have a new laptop, and it doesn't want to compile the Arduino-file either. I already installed the TM1637 library. I got this error: 'tmElements_t' has not been declared

But, the errors you got, those weren't you're mistakes :-)

Ok, now it compiles, I changed Time.h to TimeLib.h...

Programming is trying, swearing, hoping and in the end succeeding!

I hope the other TM1637 library gets you closer to your goal!

Kind regards,

Roald

Hi Pascal, don't get me started on libraries. I'm always struggling with finding the correct libraries. What particular library is the main problem, perhaps I can direct you to the version I used? In one one of the other questions/comments, Adam has shared an updated version of the code, perhaps that one works better for you?

(for me, it's not very easy to test code on the actual arduino, as i forgot to make the USB-port of the arduino accesible without me having to disassemble the entire kitchen...)

Regards,

Roald

What a brilliant idea!!!

I am no electrician, so my question may sound stupid.

I live in Lanzarote, Canary Islands where parts like this are very hard to buy. Can I buy the parts off Amazon or equivalent?

Could I also do something similar for the Microwave???

Many thanks,

Kev

1 more answer

I think I bought all parts at aliexpress.com. Regarding the microwave, of course you can also do something similar for the microwave. There's room next to it, you could use that space (you'll loose some storage of course). A real bell sound would be super cool, oh, and a rotating dial or something like that (with a rotary encoder).

A soft buzzing sound, would be also very cool, so you can hear it's operating.

Hi Adam

nice work! Would do the same for my 4yo son. But something goes wrong. The Display never light up :-( If i push the +-Button and the "Start"-Button it beeps after some seconds. But i can't see anything on the Display. If i test the Display with the TM1637Test-Sketch from the library it works as expectet.

Thank you, for your help.

Daniel

1 reply

Upppps, sorry, all stop :-) Have found the error. Wrong Pin for Data!

Thanks for the amazing project.I am also trying to make this same. I bought the LED buttons same as yours but can you guide me as to how to wire them (NO,NC,C,+,-) to the arduino.Your help will be appreciated.
Thanks

"The reason that I stopped at 10 minutes, is that I didn't want to wake up in the middle of night wondering what just beeped. :-)"

ahahahah! yesss. :-D

Nice job, nice idea. Well made.

Really nice job, I like very much the use of LED buttons, each with its own color! Well done!

This is an amazing project and I loved the story on how it came about. I'm totally with you in that it was much easier to adapt a Ikea product instead of building from scratch. That decision makes it very easy for others to build one. Well done!

These kitchens are great, and last. Ours is about 5 years old. Your Instructable is great and if I let my other half see it, I may just have to do it :/