When I first heard of Imp, it was almost too good to be true; MCU module with Wifi in small form factor of SD card, readily available cloud connectivity and easy mean for configuration of wireless interface. Immediately I ordered some samples and here are my first experiences. There are great hookup instructions at Sparkfun pages, thus I don't need to copy that here.
The concept is great especially for products were IoT connectivity is intended as an add-on option. The BOM price of the base product can be kept as low as possible. Only SD-card holder and an identification chip from Atmel is needed, which increases costs by ~1€. The form of SD-card makes it very easy to retrofit the module in to the product, even by the end-user if necessary.
|Imp concept illustration (From ElectricImp web site).|
Imp module communicates via local WiFi and internet infrastructure with Imp cloud. The cloud acts as a proxy in between end device like mobile terminal and the Imp'd product. When developing a product, one must make software to three places: into the Imp module itself, into to the cloud to define what to do with the data, and to the end device to describe how to present the data (HTML page). Even if developer can put some code to the cloud, hosting web pages for end device is not supported, according to my understanding. Thus an external web server is needed, or web page must be stored locally in the end device.
The company has invented a clever way to configure Wifi network with help of mobile phone. With an App available for iOS and Android, user can transmit Wifi network configuration optically to the Imp module. In practice, the App does blink the screen of the mobile phone, which is then recognized by the optical sensor of the Imp module. Sort of modern Morse coding. The mobile phone in the left bottom corner of the picture illustrates that function. It does not mean there is possibility to have direct local connectivity in between the phone and Imp node without cloud.
|Imp module opened, and breakout card holder from Sparkfun.|
Actually, the hardware configuration looks pretty similar to Murata SN8200. I could imagine they are both derived from the same reference design. Imp is available also as a solder down module, which reminds even more Murata's one.
Electrical interface of the SD card provides very limited number of signals. On the other hand one can configure them freely, which makes the module suitable for many purposes. Among the 6 I/O lines available, one can have up to 3x UART, 2x I2C, 2xSPI, 6x ADC, 6x PWM, and of course 6x GPIO. Each pin can source up to 4mA current. For further details, take a look at the Imp pin mux table.
Unlike Murata, the Imp module has closed firmware. Only supported mean of programming is the Imp Cloud IDE, with somewhat unfamiliar scripting language called Squirrel. The open source project defines itself as follows: "Squirrel is a high level imperative, object-oriented programming language, designed to be a light-weight scripting language that fits in the size, memory bandwidth, and real-time requirements of applications like video games." The language itself looks like mixture of C, C++, Javaa, Python, Lua, etc. People familiar with those languages should learn it quickly.
To summarize some features:
+ Easy to set up
+ Cloud connectivity provided
+ Easy programming environment and target deployment
- Only cloud connectivity provided, no support for local connectivity
- Closed firmware, only cloud IDE and Squirrel language supported
- Limited electrical connectivity
- Specific ID chip from Atmel is required
Due to the Cloud-only approach, the module is risky choice for any commercial use. It's hard to rely on third party service on which you have no control over at all. System provided by you is only usable as long as the company stays in business and is willing to provide the cloud proxy free of charge.
I do not quite understand why the company has selected this closed approach. Perhaps they are planning to start charging for connections some day, once the critical mass has been exceeded. There is no technical reason for the choice, as the reference design of the module provides extensive software support, including Wifi drivers, TCP/IP stack, HTTP/DHCP/DNS servers, DHCP client, and more.
I hope the company would open up the firmware to the community, so that people can bring in the features they need for projects or products. I'm confident they would get better acceptance and ecosystem that way, and eventually more sales. Or perhaps perhaps people will manage to create an alternative firmware for the Imp by themselves... It's a fine product, and I don't wish a bad software strategy will destroy it.