Developing embedded software for the Internet can be a nightmare. Ethernet chips and peripherals are highly complex and require an extraordinary amount of effort and time to configure and set up properly. Driver and example code is usually provided by chip manufacturers, but how secure and trustworthy are their code? Simple customizations to the stack can easily break them, and the use of an external module can simplify matters, but a developer must still become an expert in the module's behavior. One solution for connecting to the Internet that provides nearly a complete black-box solution is the Electric Imp.
The Electric Imp is a platform that allows developers to seamlessly connect their embedded devices to the Internet without becoming an expert in Internet protocols and security. The platform consists of two pieces: The first is a hardware component most commonly referred to as the Imp module, and the second component is the Imp Cloud, which allows application services to be developed and for the behavior of the Imp module to be customized.
The Imp module comes in a variety of flavors. The first, known as imp001, is a development module in the same form factor as a standard SD card. Be warned: The pin-outs are not compatible with a standard SD card reader and could damage the device! A second example, known as imp003, is sold by Murata under the part number LBWA1ZV1CD-716 and sells for $12.82 in volumes of 1,000. The imp003 is a surface mount device designed for production systems. Additional Imp module information can be found here.
The Imp module contains Wi-Fi for connecting to a local hot spot, in addition to providing miscellaneous I/O. The Wi-Fi configuration is set up using a new technology developed specifically for the Imp platform, known as BlinkUp. The imp001, shown in Figure 1, contains a small photodiode that is used to program the module with Wi-Fi network settings. BlinkUp is performed by downloading the Electric Imp application to an Android or iOS device, providing it with the network settings, and then placing the devices screen up against the photodiode. The device screen literally blinks a white screen to transfer the network settings to the module. A developer should not look directly at the display while programming the Imp module due to potential health side effects. If you attempt to program a module, make sure you read the Imp documentation on BlinkUp.
The I/O can be used as simple general purpose, or can be configured for UART, I2C, or SPI communication. The specific pin configuration and behavior of the Imp module is defined by the Imp Cloud, shown in Figure 2. The right hand side of the console is used to define the device behavior, such as configuring the I/O pins, reading and writing data, and pretty much anything a developer would want the Imp module to do. The Imp Cloud uses the Squirrel programming language for the device and the web application programming. The web services are developed on the left hand side of the console, known as agent code. The final portion of the console is made up of a server log that records agent and device behavior.
For a very simple application such as a remote sensor monitor, there might not even be a need for a microcontroller in the system! Digital sensors using I2C or SPI can be connected directly to the Imp module, and device code written in the console can read the sensors and transmit their data back to the agent for processing. A more complicated system might, instead, use a MCU to collect data and then send it to the Imp module over UART. The beauty of this type of system is that the microcontroller doesn't need to be concerned with the Internet or security but only to send formatted data out a UART. Simply trivial!
A developer can get up and running with the Electric Imp platform in a couple of hours with an investment of less than $50. The bare necessities would be to purchase an imp001 module (Digi-Key 1413-1002-ND) and the April break-out board (Digi-Key 1413-1004-ND) for $35 plus shipping. Any development kit lying around could then be interfaced over UART, along with any spare sensors. The developers cloud component is free, and since Squirrel resembles the C programming language, getting a simple IoT device up and running takes less than half a day.
The use of the Electric Imp platform has the potential to drastically simplify the process of connecting an embedded system to the Internet. There are no TCP/IP stacks, low-level drivers, or endless concerns about system security. To learn more about the Electric Imp check out their developer page.
Also consider attending my Design News Continuing Education Center course, sponsored by Digi-Key, "Design Patterns and the Internet," Oct. 19-23, and get a more in-depth, hands-on understanding of the Electric Imp.
Jacob Beningo is a Certified Software Development Professional (CSDP) whose expertise is in embedded software. He works with companies to decrease costs and time to market while maintaining a quality and robust product. Feel free to contact him at [email protected], at his website www.beningo.com, and sign up for his monthly Embedded Bytes Newsletter here.