How to design for the Internet of Things
creativebloq.com
creativebloq.com
- Always provide a way to auto update and fallback if failed.
- never implement a buzzer or beeper.
- stay away from blue status leds. people really dislike them, especially in the bedroom.
- always design with sleep/low power mode functionality. If it's embedded uC: 1 watt is more than enough, even with RF. Pick bistable relays. If it's a Linux SoC aim for less than 3W. If there's wifi keep it under 21 dBm. Pick sps modules like 78SRxx from murata instead of linear 78xx.
- if it's a thing you plug in the wall socket make sure it doesn't obstruct other sockets.
- expect people to unplug it every moment every day.
- don't force people to provide an email to activate some functionality or feature.
- use open source standards for communication protocols and put yours in a public datasheet with detailed info on how to parse & process.
This, a thousand times this. Because I don't want to have problems if/when your company goes under in a couple of years.
Company A sells door/window contact stuff. Company B sells indoor presence detectors. Company C sells plugs to dim/switch/measure appliances.
If they make their communication stack transparent anyone can jump in and combine these products to improve comfort (e.g. appropriately dimmed lights as you walk through the house), reduce the energy bill ("you're running the airco with the window open" or kill lights in unoccupied rooms) or add a level of security ("no presence inside, no appliances on but the window just opened...").
Without it you're limited to the island solutions provided by the service.
The LED comment is interesting. I've been on several HW development projects with LEDs as the main UI and early on I decided I wouldn't participate in UI discussions on general principle because it got so contentious. We actually have detailed corporate standards on what to do with LEDs but I've also heard some interesting decrees like "User shall never see a red LED because it looks like the product is broken."
Blue leds are mainly used for novelty value, it was the most difficult color to create in leds and now that we have them ... Some info here:
http://www.youtube.com/watch?v=yusrrOPM43o
A considerable part of the population experiences eyestrain from blue leds. They can induce headaches and when used in the bedroom you risk disturbed sleep cycles or difficulty falling asleep.
Wifi embeddable modules aren't cheap, non-wifi RF are available for peanuts (RFM, Nordic, ...). But you kinda have to reinvent the wheel: the content of the packets is normally limited to 32 bytes and you have to pick/design your meshing network approach. They come in all kinds of bandwidths (normally up to order 2Mbps) and for different unlicensed frequencies which you pick depending on scenario (indoor/outdoor), range and power availability (listening 24/7 won't work on batteries).
But most IoT devices with these modules will keep their protocol closed.
If you need internet connectivity you normally pick cheap RF modules for the web of thing modules and a central module with wifi/Ethernet to talk to the servers.
Bluetooth... I hate that stuff. Zigbee ... I dislike it because most vendors sell it in a UART/RSxxx interface mode (I prefer SPI).
Non-wifi RF: incredible variety of products. Wifi: just a few.
Lastly: Power. Non-wifi RF can run on a small solar cell connected to a uC with 2kb code and 128 byte RAM. Wifi will need a mid-spec uC with a few dozen kb of code to run a minimal uIP stack. Won't run on a small solar cell or battery (e.g. your phone) for long.
I though Nest using wifi or 4G to talk to the smart phone, is that true? We definitely want to have it cheap enough. Printers are still expensive enough to bear with the wifi cost. The rest of the devices, such as coffee machine, clock, windows, etc. everything in home and office needs certain kind of wireless enabled sensor/receiver kind of attachment, cheap but connecting to the controller (either pc or smart phone or remote control) via internet. Pure RF connection cannot be called IoT, right? And it's not flexible, intelligent enough to be recognized from device to device.
You solar powered energy is also a good point.
Pure RF connection cannot be called IoT, right?
You're correct. You always need a bridge to fill the gap between RF modules and the net. Such a device often adds functionality like buffering, keep logs, manage updates and provide a local webserver.Which is kind of a shame. The internet got part of its breakthrough because it became tech agnostic on the low layers. Token ring? Optical? Cable? twisted pair? no worries, you can hook it up.
SDR could provide a solution in that field. But there's a good chance that patents/licences will be cumbersome, just like the current situation with wifi.
BTW, if you're looking for a good wifi embeddable module: Carambola 2 by 8devices is a solid product. I recently built a WEP-wardriver with one and it took just an evening of scripting and soldering.
1. Bridge between the RF module and the internet If all the processing is done on the host pc side, leave the device only having the sensor to detect the state and being driven by the host pc, then it will be a lot easier to build the device itself, don't need that much functionalities. This should be the direction.
2. Transmission mechanism should not be a problem except the worrying about the wifi cost since it has all the necessary functionality built in with encode/decode, security and compression/decompression which becomes a heavy burden on the device side. But it should be easy to resolve by embedding a Linux kernel with the wifi stack.
3. SDR might be a solution to deal with various RF protocols, but do you think the performance will be compromised than using the hardware components?
So all of the available or to be defined protocols and mechanisms can be tested out if the platform supports simple/thin devices. Your proposed embedding wifi module is a very good solution to meet this requirement. Do these products have FPGA or SoC with UART or SPI interface?
If you are interested in further discussion, maybe we can take it offline. Shoot me an email at danmark.clara _at_ yahoo dot com.
(I would say it is a little unfortunate that so many devices end up with 'power cable correctly attached' lights. Cable modems also have an abundance of lights that are approximately only useful for making diagnostic procedures.)
You should also attend the SF Hardware Startup meetup, run by my friend Nick Pinkston (great guy): http://www.meetup.com/HardwareStartupSF/
You should also come and join us at the Hackendo::Integrate conference in April: http://hackendo.techendo.co/
Rule of Least Surprise: In interface design, always do
the least surprising thing.
Rule of Silence: When a program has nothing surprising to
say, it should say nothing.
Rule of Repair: When you must fail, fail noisily and as
soon as possible.This is the problem of Nest which has the architecture of producing one thing after another controlled by smart phones. This architecture does not scale.
Other than that, if we build each smart device like Nest's, the cost is not acceptable when we are going to have 100 at home, all of which cost > $100 and have so many different apps to control each of them.
The current trend in the public is: making each device HTTP-enabled so that they can talk directly to the web server in the cloud, which in turn to talk to the mobile devices or controller, and vise versa. I see a pretty good implementation here: http://ronguest.com/blog/2013/10/how-to-run-temboo-from-open...
This is a solution that minimize the cost for realizing the IoT available so far. But it still does not scale. The design requires to upload a Python SDK to the memory of the second chip and requires SSL for security. SSL is slow in terms of the performance of a device response. It's redundant. Wi-Fi itself is very secure if the message can be transported on a lower level.
Alternative solutions could be: unify all the smart devices at home using home computer as a central control which will send messages back and forth to the smart phone or remote control. Between the central controlling program and the devices, some type of communication either on the HTTP level or lower level will help. It's not necessary to bring everything onto the Internet, only the web server on the home computer is exposed, which is a lot more secure. This way, your smart phone only need to have one app to control all the smart devices at home.
More aggressive solution is to control the smart devices on a lower level than HTTP from the cloud, so that the cost of building the smart devices can be reduced significantly, keeping the device price minimum change from the traditional devices. That's in the future.