I had lunch with an Intel friend recently and we got to talking about how Intel wants to pursue IOT. It’s frustrated me that Intel doesn’t seem to get it in this space. Note that I no longer work for Intel and even when I did, I had no real insight into the parts of Intel that do Galileo, Edison or any of the IOT stuff. I was a large core CPU guy. So this is only me talking.
I wanted to write down my thoughts on IOT. My main points:
- Intel should make its IOT products the obvious and only first choice for new makers and engineers.
- It should be SO easy to put together a concept that one would be foolish to start with anything else.
- IOT is new and there will be many newcomers. Reach participants while they’re “young”
- IOT devices aren’t desktops and product features should reflect that.
- Stop referring to media centers as IOT
- In current offerings, real world interactivity seems to be an afterthought.
Gain a monopoly on first time hackers
We don’t yet what the possibilities are with IOT. As the world is figuring this out, there will be many newcomers. The maker community is exploding. Students, engineers from outside the embedded world, and tinkerers are interested in trying to connect stuff to the web. Intel needs the be the clear best starting point for them. Some of these people will start companies, many will get jobs in companies that want their devices to be connected. If they have positive initial experiences, they’ll need stronger reasons to switch.
The best comparison I can make is to Arduino. It’s easy to install and get started. I bet Atmel sells a lot of parts as a result of Arduino. The Arduino design is easy to modify, it’s easy to reuse code written for Arduino, and you can take Arduino supporting code libraries with you.
IOT is not desktops
When I look at Galileo/Edison I see repackaged desktops. Some examples
- Analog I/O is tacked on as an afterthought. What is IOT if it’s not interaction with the physical world?
- Digital I/O is limited to a handful of signals.
- PCIe is touted as an important feature. Why? Even in your desktop, when was the last time you plugged in a card?
What I would like to see
I’d like to see Intel employ a handful of people who participate in online maker forums and interact with leaders of the hacker community. Sites that come to mind:
The sole mission of these employees would be to ensure that the online community is well supported. I’m not talking about marketing material, but REAL technical support. This community can be a powerful ally.
Further lower the bar to entry
Arduino is given as an example of easy entry but I don’t think it’s gone far enough. You still need to install stuff on your PC and you still need to write C code.
https://www.particle.io/ has some nice offerings. Blinking a LED 1 is as easy as installing an Android or IOS app 2. You can program their stuff from a web browser.
Why do I have to write C code?
Many IOT devices follow some common patterns:
- Measure something(s). Temperature, pressure, light levels, position
- Report status
- Respond to inputs
- Provide some configurability
I shouldn’t have to use a low level language like C to program this. Just give me a simple state machine editor:
- Register input types via libraries that know how to speak to common sensors
- When this input goes over this threshold go into this other mode/state
- Periodically log the current state
- Provide a simple web interface to display current status and configure parameters.
Think about existing IOT stuff.
- Nest thermostats 3 are just state machines. At this time of day, turn on the furnace when the temp drops below X.
- Sous Vide machines are just PID temperature controllers.
- Lego Mind storms is just state machines. For example see here
- Weather stations record temperature, humidity, wind speed to a log somewhere. Add a fan controller and you have a smart greenhouse.
Change product features
There are some holes in the current products:
- Make it possible to use Intel parts on 2-layer boards. These are easy to tweak and prototype using Eagle/KiCAD and then manufacture using Seeed or OSHPark
- Add analog I/O without extra hardware. Arduino/Atmel provides 10-bit resolutions. 12-bit as provided in Particle stuff is better 4
- It would be nice to directly support resistance measurement.
- Running a real OS 5 has real benefits. Either ensure that RTOS is supported or add a small micro-controller on the part that behaves independent of the main OS’s timing. CPUs already have this for power management and other purposes. Do you want a piece of farm equipment to run you over because the controller hangs while trying to reconnect to WIFI? CNC control is another application that come to mind.
- It would be very handy to include a small FPGA. Altera 6 has ARM processors on its parts. It’s a continuum. Some aspects of an embedded design requires the faster timing that only digital logic/FPGA can provide. 7
- The parts should know how to speak the common digital protocols SPI, I2C and others. A good starting point list can be found here
- More flexible pin assignments. I suspect this is why Galileo is a 4-layer board
“makers” generally don’t do the big sexy designs like google cars but I’d bet that the google car team has some makers on it. Students also don’t do big designs, but they’ll eventually graduate and get jobs. Prototypes start somewhere and designers won’t want to redo everything as the product evolves.
People are sticky. Designs are sticky. x86 has taught us that.
this is the “Hello World” of embedded ↩
yes, you have to install something, but phone apps are way easier that PC or Linux installs ↩
a startup; didn’t come from an entrenched company ↩
Disregard MS Windows please ↩
AKA Intel ↩
remember that IOT is not desktops. ↩