As an example, amongst the buttons on our old microwave:
* a picture of a whole chicken
* one ice cube
* two ice cubes
* something that might have been a burger or a slice of bread
* 3 x straight lines
* 3 x wavy lines
Never being sure, I ignored all of those buttons. But even the basic 'set a time, a power and go' method was awful.
* Choose a power. There was no default. You had to do this before you'd set the time, or the time would reset back to 0.
* Turn a wheel which increases the time. The first two minutes increment 1 second. After that they increment in 10 seconds. So to get to 5 minutes, you had to spend ages turning it.
* Press 'Go'.
Next to the 'Go' button there was a 'Cook' button, which reset everything.
There was a defrost mode, which seemed to heat the contents for 2 minutes and 10 seconds (couldn't change the time). The results were identical to just heating it on full power.
As someone with a passion for good UI, this is infuriating. We've had microwaves for 50 years; their UI should be solved by now. After a half-century, we should have a standard set of controls that are simple, intuitive, efficient, and forgiving.
Instead, we all have stories like this about microwaves with dials, modes, stages, levels, pre-programmed jobs, and recipe databases, but that lack a simple way to microwave something for 30 seconds!
I assume this is because every microwave designer wants to invent some new feature they can tout on the box. I have often fantasized about enacting a law that requires designers of new interfaces to be forced to use said interfaces in their personal lives for a month. Hopefully this would promote better design; alternatively, it could be used as a form of penance.
I think that the best microwave UI is just two analog knobs. One for power level (although it would be nice to get rid of this as well, but some packaged foods ask to be cooked at 50% power for part of the time), and one for cooking time which also starts the cooking if the door is closed. Turn the nob to whatever time you want and it starts cooking. If you want to stop cooking before time is up, you can either turn it back to 0 or just open the door.
My parents still use a microwave they bought before I was born (I'm 28), and it does exactly this, except without the power dial. It's one analog dial for time -- turn it to start, turn it back to zero to stop. I miss having it around.
The best microwave UI I've used has several functions above the number pad, all of them completely optional. Typing a time on the number pad and pausing made the microwave start -- to rephrase, if you press 4 5 and didn't press anything for 3 seconds, the microwave would begin and operate for 45 seconds. Pressing 1 3 0 and walking away would run it for 1 minute 30 seconds. When it was done it beeped 3 times, then once every 10 minutes, until you open the door or press a button. At the bottom was a Power button which you could press to change the power level at any time, and a Start / +30 sec button which would add 30 seconds to the amount of time on the timer. And if the clock wasn't set, it would just display 00:00 solidly, not blinking.
Maybe this is a mis-remembered mix of the best UI elements from several microwaves, but to me it's ideal.
My grandparents set their house on fire by microwaving a potato for 50 minutes instead of 5 minutes. It's going to be really hard for any UI to compensate for that kind of disadvantage, where a subtle difference like pressing a digit an extra time can set your house on fire. The +30sec button is a reasonable button-oriented approach, but dials are a lot easier to use.
I'm also not a big fan of your "walk away while the microwave is off and it turns on after three seconds" model.
I would like a microwave that has exactly this kind of two knob UI, but implemented by solid state electronics. Across last five years or so the root cause of almost all broken appliances in my home was some kind of mechanical sequencer that somehow failed and cannot be reasonably fixed and finding it as an spare part somewhere is practically impossible.
With digital you can heat for a specific time and power, so it's replicable. This is great when, say, heating milk for a baby or water for Aeropress. There's a big difference between 30 seconds and 50 seconds at 800W.
As you say, microwaves are sold on the number of features they offer. I guess every 'program' is an extra feature (even though it's just a preset time and power). And if you have enough programs, then nobody will need the manual controls, so they don't need to be easy to use. At least, that's how the mind of microwave designers seems to work.
In reality, most food that you want to microwave has precise instructions on it, so I really only need quick and easy to use manual controls.
Some ideas for my ideal microwave (should any manufacturers be reading):
* Small camera with OCR that can read the instructions and program accordingly
* Thermometer which checks whether the food is ready.
* A way of mixing the food, instead of relying on me to stop it halfway through and do it manually.
* Cover which goes over the food automatically, so I don't realise I forgot only when there's a load of food baked onto the top.
* Something which cooks the food without heating the container to an untouchable heat.
A camera+OCR would be so painfully less reliable than a QR code or even a traditional barcode, either of which could represent a short string that could contain a power level, heating/standing times, and wait characters (like the special pause/wait characters traditionally supported by cell phones). It would take some hefty marketing muscle for a manufacturer to get the ball rolling for including this on food packages, though. Perhaps there's a professional organization within the food/appliances industry that could make this happen.
It would "just" require a manufacturer to offer a sufficiently good partnership to a handful of the largest supermarket chains. The large ones like Walmart, Carrefour, Tesco etc. have more than enough market power to simply tell their suppliers they'll suffer from marketing favouring their competitors if they don't add labelling following a certain standard.
I think microwaves are fine. It's just like any other white goods. From the lower-to-mid ranges they are utilitarian and reliable. Like you say, the customer's mistake was to obtain a high end model, which features these embellishments to merely justify the cost.
We must have had the exact same microwave!
If it was the same however you missed one more thing that I found really annoying. It makes a beep every time you make an action - so the whole time you're choosing the amount of time turning the wheel it will be beeping over and over.
Horrible design. Furthermore when the timer reaches 0 it will do 5 very long beeps to alert you and then keep beeping every minute until you take the item out. If you instead want to just cancel before the timer gets to 0 then you must press cancel twice making more beeps. It was still better so I found myself standing by the microwave so that I could turn it off in time. It made midnight snacks impossible without waking everyone up.
My solution was to open up the microwave and (after shorting the capacitor) I removed the damn beeper. I still have that microwave today and while it's still a terrible user interface it brings me happiness each day when I hear the microwave finish cooking something without beeping.
My washing machine, microwave, oven, toaster and dishwasher all beep.
Sends me crazy.
And they all use the same high pitched, annoying, hard to locate tone.
In Japan the UIs are decent and Microwaves are automatic : you dont have the set the time unless you really want to, they auto-adjust themselves and detect what they are cooking up.
My grandma microwave (that was supposed to be shiny new cool awesome microwave) had no keyboard, all numbers were input with a stupid knob that you would turn forever.
But even worse, it would only work if you input the desired time and power... AND YOU HAD TO PRESS BUTTONS FOR THOSE.
Yes, neither of them were default, you had to seek for a "time" button, press it, then turn the knob, then seek the power button, press it, turn the knob, and if you did it wrong it would get into some weird states of waiting for a certain input that it was not clear what it wanted, and it was not clear how you could cancel it (it does have a cancel button, but it took me a while to realize I had to press it several times in a row to reset the thing so I could try again).
The microwave is so annoying that in the end I gave up and don't used it anymore, I only relied on food that was palatable without heating, or I used the old fashioned fire.
EDIT: I remembered another one: also had no number pad, instead it featured the following buttons (that required some good force to register a press): +5 seconds, +10 seconds, +30 seconds. Wanted to make a lasagna that take 16 minutes? Good luck.
My parents had one that required you to press time, 1, 0, 0, start, to run it for one minute on the default setting. Each button press has an annoying beep. It makes one loud beep after it finishes, and if you don't open the door in 30s it will CONTINUOUSLY make that loud annoying beep until you do.
At my high school, the microvate had the standard 0-9 numberpad and a start button. If you push the one of the lower numbers (I think between 1 and 5), the microwave would start cooking for that number of minutes. The other numbers had different pre-programed actions. One of those actions was (fortuantly) timed cook, which would then let you put the time in normally and press the start button.
Its not as annoying as it sounds. Just decide how long you want to cook for, subtract that number from 5, hit the '5' button, and open the microwave when the countdown clock gets to the number you calculated earlier.
Almost all food that I microwave also needs a power adjustment. So I'd add a Power button and a Time button to your list, and I wouldn't require user do power before time or vice versa; and power would default to 100%. But I love his barcode/database approach even better!
My mothers microwave has a pretty bad UI. You cant just start punching numbers and start - you must first select from a grid of vague looking icons - and then specify the time. I got used to it after a couple visits but I was left scratching my head in the beginning.
Mine has all kinds of buttons that never get used...under the hood. Outside of the door it thankfully has buttons for 1 Minute, Start, and Stop. Very nicely done.
Awesome. I was thinking the other day that an automated kitchen should be entirely possible.
You buy groceries, place them in their designated slots in the fridge. Robot arms know which slots hold each ingredient, and can measure and cut appropriately (using scale, food processor, and maybe some other specialized cutting appliance for trickier items). Stove top is easy to control and pans are all lined up for the robot arms to repeatedly grab. Most recipes could fit within this somewhat limited set of "building blocks" that the kitchen robot could easily perform: measure 8 oz of tomatoe, dice onion, boil pasta, slice chicken breast into strips, pour 2 oz of oil on pan, etc. The hardest part might be washing the dishes.. Heh
>measure 8 oz of tomatoe, dice onion, boil pasta, slice chicken breast into strips, pour 2 oz of oil on pan, etc. //
Surely you have the industrial machines do the pasta sauce in a factory, so no need to measure tomatoes and dice onions. Similarly the chicken breast can be cooked and pre-sliced (or cubed).
The greatest problem I foresee with this is maintaining hygiene. The machine will slop and mess, eg pouring ragu, cooking with oil that splatters. Those surfaces will need cleaning and ingredients that spoil readily (fresh diced chicken) will need disposing of and replenishing regularly. It certainly doesn't seem impossible but each section would need specialised washing equipment it seems, or maybe be entirely submersible and so allow the machine to be flushed from the top and then have a steam wand clean the individual stations.
I see it working for making dishes in an automat (http://en.wikipedia.org/wiki/Automat) but not really being efficient enough for a domestic situation.
Perhaps a digester for the expired foodstuffs and left overs could be built in to generate energy for heating and cooling required in the machine?
Amazing, wish I could do things like this. I bet if this was made by a common microwave manufacturer, it'd be advertised as the microwave of the future and cost $3500!
Before you think about opening up your own microwave, you should know that microwaves contain high voltage capacitors that will seriously shock or kill you even when they are unplugged. I knew a guy who got thrown across the room and was in serious condition for months. He didn't even touch anything, but he was wearing a wedding band and his hand got too close. Microwaves are serious business.
That said, I HATE the UI on my microwave & would love to fix it. Do people really eat that much popcorn that it deserves it's own button??? For me, I want exactly 3 controls: a time wheel, power up/down & a start button. Hit start for a quick minute, twice for 2 minutes, etc.
Yep, I was very careful about the high-voltage capacitor. I made sure to unplug it whenever I removed the microwave case. That's a crazy story about the guy, I hope he's doing better now.
It is also funny that every package for popcorn has instructions that specifically state 'Pop for X minutes. Do not use the popcorn setting on your microwave'.
This is a great idea.
One thing I would like to point out is that microwaves come in different power levels. A large one may be 1200W while a small dorm microwave may be 750W. The cooking instructions in your database will need to account for this.
Looks like this was already thought of "If cooking instructions are posted for a 1000W microwave, you can request the instructions for a 700W microwave, and the cooking times will be automatically adjusted.".
Also, some microwaves are continuous power (magnetron always running) and some cycle on/off instead. Based on my struggle to find a continuous power microwave for a Senior Design Project (disposing of toxic compounds in standard microwave oven, I can't imagine this will effect too many models, but cycle times do differ between microwaves.
The Raspberry Pi microwave is awesome, though I do wonder why the 1 second buttons exist.
If the cooking is under 10 seconds, you might as well start it for 10 seconds and stop it when needed. You won't have time to turn around and forget about it.
If it's over, I doubt a one-second difference will make one (difference).
One thing that it seems to miss (that all microwaves that I know miss) and that would probably be very easy to implement is a mute button for late night snacks.
Along with that a way to shut the door quietly. Maybe newer ones are better but all the microwaves I've used sound like they are being slammed no matter how you shut the door.
One of the problems I have with GE microwaves is that the number pad isn't always for entering time - if you touch "2" in preparation for entering 20 seconds, you get programmed time #2. Unless you hit the "Time" button first... Bad design, General Electric.
I think the GE ovens with the "express cook" feature (e.g. press 1 for 1 minute, 2 for 2 minutes) expressly show that right on the keypad. Or at least they do now.
This was a fantastic article and a wonderfully complete software and hardware task spanning many disciplines. Nathan's done a great job on this. I'd love to hire him.
Circuit design, soldering, graphic design, firmware and even a standalone website.
If you've worked on electronics and software projects like this please give me a call (details at http://gridspy.com) because we need you.
1. Clock is automatically updated from the internet
2. The microwave has a web page so you can control it
from your phone (why not), and set up cooking
instructions for products
3. Tweets after it's finished cooking something
4. Can be controlled with voice commands ∗∗
∗∗ ...not that bad, but subject to pranks and false positive
microwave commands, from people in the same room
This is all REALLY bad from a safety perspective. Exposing household appliances to the wilds of the internet is all kinds of dangerous. You shouldn't advertise that this is a good idea, and leave readers with the assumption that maybe it's password protected or maybe not (it is: http://www.microwavecookingdb.com/products/new?upc=871100027...), or maybe it's wrapped up in TLS/SSL and maybe not (it's not: http://www.microwavecookingdb.com/users/sign_in). Is the internet control framework just security by obscurity, operated by arbitrarily obscure URL parameters? Who knows? Maybe? (here's the code: https://github.com/ndbroadbent/raspberry_picrowave) I mean, yeah it's just a DIY project, but immediately, I see some opportunities to wreak havoc.
First of all, it's not merely polling an internet time server, but that's one port exposed to the internet, that anybody can just start dumping malicious payloads on. Second, and worst, it can be switched on from the internet. Third, it gives feedback that can be accessed by the entire internet, tells the internet what it is, and what it's doing, right now in real time, allowing an attacker to monitor the success of malicious efforts. This way, you'll know as soon as you're able to send a command to power up the microwave for one second, to test and prove the ability to control it.
People will attack these kinds of openings, just for the sheer amusement of running up a total stranger's electric bill, nevermind start a fire. This article seems relatively smart and competent, and so maybe we should ASSUME that proper security exists?
This is the kind of design inspiration that's going to encourage some other engineer (or worse, an MBA in charge of some stupid startup) to go out and expose the electric grid to twitter with some poorly tested SCADA system, and on a dark, stormy night, in the far flung future, I'm going to be eating cold beans from a can, in the dark, because of it.
> This article seems relatively smart and competent, and so maybe we should ASSUME that proper security exists?
Or, maybe the guy just likes playing around with electronics for fun? Perhaps he doesn't really consider this a production ready appliance and just wants to share his hobby with the world.
If everyone adhered to your cautious approach no experimentation would ever take place as all new things carry risks and lessons to be learned. You can't always nail it first time round, you have to make mistakes to make progress. And there is absolutely nothing wrong with sharing your experiments.
> This is the kind of design inspiration that's going to encourage some other engineer...
This makes me think your whole comment is just trolling.
A port is a port is a port. You can send anything you like to that port and it's not like the computer will say "Oop, I have no programs listening on this port, so I'll just execute what you're sending me"
What is the danger in having a port exposed that can receive updates for time? Are there huge vulnerabilities in the ntpd? Seems like a pretty small attack surface to me.
actually... Is that port even open?!
This is polling a time server through NAT right? So the ports get negotiated. We're not listening, were asking. So I guess the danger would be that your time server of choice could be compromised, and then start sending out malicious packets that... confuse ntpd? Seems like were back where we started.
There was some stupid stuff in that article, twitter updates being perhaps the most colossal (and voice control coming in a neat second, web control @ 3). However, once you take flame decals off and remove the card in the spokes, this ceases to be the danger it once was.
ntpd is usually run as a daemon, which is run as root, and if you can overflow a buffer somewhere, given you know the architecture and platform (arm, raspberry pi), and don't have data execution prevention, you can inject assembly instructions and jump a function pointer like any other stack overflow.
Then you have arbitrary code execution as ntpd. Unless you have apparmor, or some other MAC.
ntpd is usually ran as the ntp on debian based systems at least. Most rpi distros are debian based.
Given that the same ntpd code is running on many many internet connected computers around the world, I don't think a microwave is worth a 0day remote root exploit on.
> This is the kind of design inspiration that's going to encourage some other engineer (or worse, an MBA in charge of some stupid startup) to go out and expose the electric grid to twitter with some poorly tested SCADA system, and on a dark, stormy night, in the far flung future, I'm going to be eating cold beans from a can, in the dark, because of it.
Wait... are you saying this as reason why this guy shouldn't be doing what he's doing? Because somebody somewhere who might be in a position of public trust might be incompetent? SCADA security is a big deal, but I think your energy is a bit misplaced here...
Party on, Mr. Broadbent. Keep making that Raspberry Pi make you some Raspberry Pie.
I don't care if Mr. Broadbent does this. And I'll admit, that yeah, this project is way cool!
But if I live in an apartment building, and my belongings can be burned to the ground because the apartment above me decided to put their microwave on the internet, I wouldn't want any of my neighbors doing this. It's not a good idea for everyone, everywhere, all the time.
* EDIT: Just the "internet enabled" parts mostly (unless you're qualified/experienced enough to understand the hazards), not all the other hardware hacks (i would estimate that anybody etching their own circuit boards would have a pretty firm understanding of electrical safety).
Great points! I agree with the concerns, and I don't leave the microwave turned on at the moment.
I agree that the microwave webpage should be password-protected or disabled, because really, it's not the most important feature. If I was living in an apartment with a shared network, everything would be running behind a firewall.
The cooking database website is the only part accessible from the internet, and is running on a separate server. I've added a temporary lock for my products, so no-one can edit or delete them at the moment. In the future I might implement some better ways to prevent abuse. I haven't set up SSL yet, but will do it if the site starts getting some use. I've added the following notice for now:
> This website is not currently secure. If you submit your password on this form, a hacker will be able to read it, especially if you are using an unsecured wifi connection. However, it is safe to sign in with Facebook, Google, or GitHub.
Linux (Raspbian) is in charge of setting the time via NTP, so any vulnerability is not specific to my project. The tweeting is dumb, but just a fun thing to put in a blog post. And voice commands must be prefixed with the 'microwave' keyword, unless the microwave door has been closed less than 10 seconds ago.
Totally cool. I understand that it's a custom prototype/ proof-of-concept project. Network topology is definitely the major factor determining any real security exposure of the appliance on a given network, but it seemed like an undocumented variable that exists outside the scope of this particular project, so I figured it's worth pointing out.
As zanny pointed out (https://news.ycombinator.com/item?id=6030206), since we know the chipset, and can anticipate available features, given that we know the networked device is a Raspberry Pi, and that we have the source code of the project, this provides us with enough information to craft possible payloads to drop onto the system. It's certainly not a huge attack surface, but there might be _just_ enough wiggle room to bust in.
As for the QR Code concept, any chance of some plans for adding a small low-end camera?
Even if the camera is not very good (maybe a $20 USB webcam), and the picture is poor quality (perhaps a ~0.3 megapixel image), as long as the image of the QR Code can be captured, the software that attempts to discover the QR Code and pull the information out of the low-quality image will do the rest. Then, it's just up to the user to print out some QR code stickers. Actually, come to think of it, I bet there are probably some burritos out there with QR codes on the wrappers, pointing to some burrito website, that could be re-purposed to trigger the microwave.
There is a funny scene at the end of Disney's Carousel of Progress ride that shows exactly this -
a "futuristic" family is gathered for the holidays while their voice-activated oven cooks in the background. As they make various unrelated comments that contain words like "up," "heat" etc, the oven responds and continues to increase the temperature on their Christmas turkey (while the family obliviously chatters on) until it is burnt to a crisp.
I think the moment you're thinking of is when the son is playing video games, and mentions his high score. The score was some absurdly high number like 12 million, one of the other family members hears this and repeats it aloud (I believe this family member was previously controlling the microwave); the microwave hears this number and replies "heating to 12 million degrees", burning their Christmas turkey (just like they did every iteration in the ride, even as the technology progresses). I'm not sure why I bothered typing all of that, I haven't been to that ride since I was ~ 12.
Great project! I would have suggested FoodEssential's API for preparation instructions (ran into them at SXSW, seem really cool), but they don't have prep, only ingredients and nutritional data.
http://developer.foodessentials.com/
Hey, I live in St. Louis and won the National Day of Civic Hacking with one of the Food Essentials devs, Henry. Nice guy! They had one of their Solr queries printed and hung on the wall... crazy awesome stuff.
This is fantastic. I love how the Raspberry Pi is getting used in hardware hacking so much. It's ideal for it.
So far my efforts have been limited to hacking electricity and gas meters but this microwave is much more complex. I gave a talk on this last night at the HN London meetup. Slides will be online at http://unop.co.uk/dev/raspberry-pi-electricity-monitor/ soon. The videos will be online soon too I hope.
I'm surprised there's still so much manual entry going on for people with microwaves. I guess my needs are much simpler than for most. 70% of my microwave needs are met by just pressing the "Heat/Start" button and letting the microwave auto-heat to 75 C. 20% are met by just pressing "Defrost" then "Heat/Start". It's quite rare I actually need to set the time manually (it's basically only for popcorn...)
A lot of fun, but one of the primary issues with smart appliances is you end up having to physically interact with them anyway. It's almost more of a hassle to physically load up the microwave, give a voice command and then physically open and remove what you cooked then to just do the whole thing right there.
The Jetsons-eque toaster oven still requires you to put the bread in.
Being able to scan a barcode and know how long food should be cooked for? It just makes sense and I wonder why it hasn't been thought of before. I think this is a genius hack and definitely the scanning of a barcode for cooking times makes sense, this guy should definitely pitch it to the likes of Samsung.
This is an awesome project. But by far this is the most amazing and innovative part of the article:
> If cooking instructions are posted for a 1000W microwave, you can request the instructions for a 700W microwave, and the cooking times will be automatically adjusted
I saw the post that inspired this project on /r/CrazyIdeas too. Very cool to see how you've implemented the idea! If I ever get my hands on a Raspberry Pi, I'm going to have to try this.
The problem with appliance design is that people think they want and need all these features, but they never use them.
Appliance makers sit around all day thinking of new ways to entice people to buy new appliances, but in reality they know that the complexity comes back to bite them eventually and the majority of users just use the microwaves for heating water and making popcorn.
This whole "scan the UPC" thing? Not disruptive. It's been done before:
So the question is, do you really need disruption in this area? Are people really clamoring for an easier way to heat up their Lean Cuisine even though all they really need to do now is push the "4" button?
If you're not planning on marketing this, please share your process. I'd love to give this a try (if I can get my wife's permission... crosses fingers)!
Awesome job! This goes above and beyond for a 'hack'. You should have it upload cooking data to Xively so you can keep track of what you cooked over time.
Another consumer tech suggestion culled from reddit: my TV should have a button on the side which causes the remote to emit some kind of noise so I can find it.
At least a small timing ckt to flash the IR blaster in regular pulses. Your method would be more useful, but it would require adding a speaker to each remote.
Both require radios of some stripe, though. At that point, you might as well get away from the IR transmission method completely.