Introduction: Kids Kitchen That Says BEEP
Grand Prize in the
Design For Kids Challenge
This is an entry in the
Epilog Challenge 9
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
- 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)
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:
- DS1307RTC ( in manage libraries in Arduino IDE)
- Time ( https://github.com/PaulStoffregen/Time )
- TM1637Display ( https://github.com/avishorp/TM1637 )
- Wire (builtin)
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
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!
AdamS542 made it!
We have a be nice policy.
Please be positive and constructive.
Hi! It is amazing! I was rebuilt it. One small thing missing for me: The time set-up possibilitiy with the buttons. When I upload the program the time is correct but few years later when the battery will die I can’t set-up the time again without computer. What do you think?
Hi AdamS542, that's a good and fair question! The current program does not have the possibility to set the time. This is not without reason... I was thinking on how to implement this, hold a button for a longer period, or two or three buttons at a time. The thing is, when I saw my kids playing with it, they try everything.
But the backup battery lasts for a couple of years and the DS3231 is quite good actually (be aware of daylight saving, during winter the clock is not correct).
Do note that opening the kitchen is quite simple, using the correct hex key. The countertop comes off and you can connect your computer. Another solution is to add a USB connector on the back of the kitchen.
But you're probably right, a secret button combination (or two buttons during setup for example) would be better.
For this I would add a new state:
#define SetClock 5
And create a new procedure to change the current time.
For example: void ChangeRTC(int intHourChange, intMinuteChange)
(note that these integers can be positive or negative!)
You can get the current time using:
// Get current time
The current hours/minutes:
intHour = RTC_time.Hour + intHourChange;
intMin = RTC_time.Minute + intMinuteChange;
Then set the current time:
// Set seconds to 0, to prevent that the time is changed at 59 sec and within a second the time changes again
RTC_time.Second = 0;
// Write time to DS3231
You'll have to add some if-statements in case the minutes pass 59 (or pass 0 going negative) and the for the hours when passing 23 (or pass 0 going negative).
Now, in the Arduino 'loop', in case the state is SetClock (decide yourself how to enter this state) increase or decrease the current time, by calling the new procedure.
Perhaps a new void ShowTimeOnDisplay(void)
will be a good idea. When editing the hours, only show the hours, when editing the minutes only show the minutes? Or if you really like to program, you could make either the hours or the minutes blink.
Hmm, it might be easier to only change the minutes? As you've noticed with setting the timer, you can simply hold a button. The same can be used for setting the time.