Integrated Circuit design for the IoT

As everybody is trying to figure out what the Internet of Things (IoT) will look like and how connected things will work, I'd like to address a question that many people have: why design your own Integrated Circuit (IC) rather than just use an off-the-shelf processor, write software and be done? In a nutshell, because it gives you the best computational power over power consumption ratio, and the flexibility to favor one or the other, allowing you to create ultra low-power devices.

Low power to the peopl e(c) 2006 valley_free_radio - Flickr

But first, consider this. Software is easier to produce than hardware (for so many reasons, like you don't need an actual factory for instance), look at the number of apps available on smartphones and tablets as opposed to the number of device models as an indication. This is why you should favor software over hardware whenever you don't have specific constraints (incidentally this is what makes the cloud so great, you don't care about the underlying platform, your software just runs there somewhere).

But that's the thing, isn't it? The Internet of Things is made of actual, physical things that are probably not going to be plugged in a wall socket. And while it may be acceptable to charge your phone every day, life will become hell if you have to do this with every object you buy.

Thermometer (c) 2011 pedrik - Flickr

Let me give you an example of such a Thing (as a matter of fact this is the example I told my mother to show her why the IoT will be awesome). Imagine that you have tiny temperature sensors in every room of your apartment/house, maybe coupled with presence sensors, all reporting data back to your central heater. The heater then decides which room to heat for how long, based on past and current data (by the way this could even detect leaks, for example if a window starts to leak air). This way, you never waste energy, and you have an homogeneous temperature everywhere. The system would automatically detect when you go in a room otherwise unoccupied and starts to make it warm and cosy for your guests. Pretty neat, right?

Ideally you'd want such a system to last forever, but for now let's say that ten years will do. Ten years means that an ultra low-power chip including a wireless transmitter is needed. Consider that each Thing uses a CR2032 battery of 230 mAh, and it wakes up for one minute per hour per day for ten years, it will be limited to a current of 157µA during that time = 230 mAh / (10 * 365 * 24 / 60) (this is illustrative, we assume that standby does not consume anything). If you're interested in low-power wireless transmission, take a look at this article. It says that a single Bluetooth Smart packet (with 20 bytes payload) will consume just 49 µA so it fits within our power envelope. EDIT: as leppie commented on Hacker News, you should beware of so-called "typical" power consumption; (a lot) more details in this article.

Small processor next to a battery (c) 2014 IMEC

Designing an ASIC (Application Specific Integrated Circuit) does not necessarily mean that you have to design your own processor. First, you may not need a processor at all (a so-called NoCPU system), like in the temperature sensor I described. Second, if you do need a processor, you can always purchase a license for a microprocessor or microcontroller IP (Intellectual Property) core. Search for "processor IP" to get an idea, or buy this report (unless you have $5K to spare, I recommend the former solution). Or you can design a very simple basic processor if you like, this is your silicon, so you can do whatever you want!

So what's stopping you from starting to learn circuit design/hardware design? Please leave a comment below!