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

Arduino Contest 2017

Participated in the
Arduino Contest 2017

Epilog Challenge 9

Participated in the
Epilog Challenge 9

4 People Made This Project!


  • 1 Hour Challenge

    1 Hour Challenge
  • Frozen Treats Challenge

    Frozen Treats Challenge
  • Colors of the Rainbow Contest

    Colors of the Rainbow Contest

31 Discussions


2 months ago on Introduction

I'm really dissapointed since I've made everything right but I'm having the exact same problem that TueBjørn and AntonL35 had...

Can anyone help please? roaldh, could you please help?


Question 9 months ago

Hi! i Just started make one my self! but i have a problem with the code/wireing. i cand find any problem on the ´wirering, but for some reason when i start the arduino up it start "pressing" the + button and it goes up to 10:00 and stays there. if i hold down the - button it slowly goes down but when i relese it again it ramps up to 10:00 in seconds... any ideas?

I have added a Fan inside, to make it blow a little air like a real oven, therefor i added it in the code. maybe it screws it up? i hope you can help.

int PlusButtonState = LOW; // the current reading from the plus input pin

int lastPlusButtonState = LOW; // the previous reading from the plus input pin

int MinusButtonState = LOW; // the current reading from the minus input pin

int lastMinusButtonState = LOW; // the previous reading from the minus input pin

int StartButtonState = LOW; // the current reading from the start input pin

int lastStartButtonState = LOW; // the previous reading from the start input pin

int StopButtonState = LOW; // the current reading from the stop input pin

int lastStopButtonState = LOW; // the previous reading from the stop input pin

long lastPlusDebounceTime = 0; // the last time the plus output pin was toggled

long lastMinusDebounceTime = 0; // the last time the minus output pin was toggled

long lastStartDebounceTime = 0; // the last time the start output pin was toggled

long lastStopDebounceTime = 0; // the last time the stop output pin was toggled

long debounceDelay = 50; // the debounce time in milliseconds (SOLUTION CHANGED TO 100)

12 answers

Answer 4 months ago

Hi! How did you solve the start up issue? "...when i start the arduino up it start "pressing" the + button and it goes up to 10:00 and stays there"

Im experiencing the exact same problem. Thanks in advance for all help!


Reply 4 months ago

As you Can se at the end of my text i changed the long debounce delay to 100 instead of 50 :-)


Reply 4 months ago

Hi! Thanks for the quick response! That adjustment does unfortunately, not make any difference for me (the clock is still racing to 10:00) :( If you have any other suggestions or have the possibility to send your working sketch, I would be great full. Thanks a lot, once again!


Reply 4 months ago

Maybe try to increase it with 50 ms until it works ;-) 150,200,250...
I will try to find the code I ended up use if and send it to you :-) but let me know first if this works :-)


Reply 3 months ago

Hi! Now I have tested stepping it up with 50ms up until 2000ms without any success. The only thing that does happen is that it takes a little bit longer until the race of time starts. So if you have the time I would really be helped by your code. Thanks!


Reply 3 months ago

I'm having the same problem, did you found a solution?


Reply 3 months ago

I'm sorry that this does not help. i will try to find my old code and send it to you but maybe in the meantime you could test the wiring for any faulty wires or loose connections? if you want you can send me a picture and i can compare it to my wiring scheme. :-)


Reply 3 months ago

Hi guys,
I'm having the exact same problem.
Haven't tried the solution TueBjorn gave, I'll try it tomorrow, but I also would appreciate some help, maybe the old code you talked before



Reply 3 months ago

Hi I hope my solution helps you, but if it doesn’t then maybe AntonL35 have found a solution in the meantime :-)


Reply 3 months ago

Hi already tried several values, from 50 to 250 and no luck....

I'm hoping AntonL35 has the solution and can share it...


Reply 3 months ago

Hi. Im sorry that i haven’t got back to you. I can’t find my old code. Sorry. :-/ I hope you figure it out or someone can help you :-).


Answer 9 months ago

I just found the solution!

I simply changed the debounce delay to 100ms instead of 50 and now the "noice" is filtered away :-)


3 months ago

I bought all the parts and assembled them, but I'm having the following problem:

When I turn the power button ON, the clock starts to count all the way up to 10:00 incrementing the same way as the program, then it stays there.

The Start and Stop buttons seem to work fine, as they turn the LED lights on and off...

I reviewed all the connections with a friend that has more experience in these kind of projects and he tells me it must be some bug in the program...

Can anyone help?

My daughter would really appreciate it!



4 months ago

Hey, I've also created this project. Great instructions, no problems assembling this.

I have one question, is there any way setting the time? The only way to reset it is removing the battery, it jumps back to 0:00


1 reply

Reply 4 months ago

That's a very good question. The current code does not include setting the time. I didn't think it was necessary. I clearly forgot about daylight saving...
I set the time via the Arduino IDE. In the examples of the DS3231 or DS1307 library, there's an example program called SetTime. It'll set the time of the clock chip. After setting the time, simply upload your code again to the Arduino and the correct time will disappear on the display.


Question 1 year ago

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


2 answers

Answer 12 months ago

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,



Reply 10 months ago

Haha I spent the whole evening searching and swearing why it wouldn’t compile. And now I see your answer here :-)

I do have the problem that the LED strip is lighting up a bit faint. Maybe the base resistor isn’t the right value for my LED strip current draw. Also I added a second transistor to power a small fan to mimic the oven sound. Many thanks for the inspiration and explanation.

Now I just have to put it in my daughters kitchen.