Skip to main content

Getting Started With The impC001

Instructions For Activating Your Cellular Development Hardware

This guide is intended to help you get an impC001 Breakout Board online.

Note This guide only applies to development devices. Commercial imp-enabled products have their own configuration apps, and you should follow the product manufacturer’s own guidelines.

The impC001 Breakout Board ships with a mini USB cable, an AC adapter to power the board, and a patch antenna for the cellular connection. You will need a mobile phone or tablet running iOS or Android. This is used to activate the impC001 Breakout Board.

Choose Your impCloud

You can buy an impC001 Breakout Board which is intended to connect to the Electric Imp impCloud™ hosted on Amazon Web Services (AWS), or the impCloud hosted on Microsoft Azure, but not both. If you already have an Electric Imp account, it will be tied to a specific impCloud, so make sure you choose the impC001 Breakout Board bound to the same impCloud. If you do not already have an Electric Imp account, you can choose an impC001 Breakout Board certified for whichever impCloud you prefer, but you will need to make sure you create an account on same impCloud. We will help you do this, below.

Important An impC001 Breakout Board certified for the AWS impCloud cannot be added to accounts hosted in the Azure impCloud, and vice versa.

The following instructions assume you have made your impCloud selection, and have obtained an impC001 Breakout Board certified for your chosen impCloud.

1. Fit The impC001 To The Breakout Board

First remove the retainer screw from the Breakout Board and put it to one side. Now fit the impC001 into the connector, It will only fit one way round, with the Electric Imp label face up. Make sure the connection is tight and, while holding down the impC001, re-fit the retaining screw to hold the card securely in place. When you’re done, it will look like this:

Here the connector slot is on the left, and the retainer screw on the right.

2. Connect The Cellular Antenna

Carefully connect the coax cable from the patch antenna to one of the u.FL connectors on the impC001 module. There are two u.FL connectors — use the one marked J1.

Be sure the connector is fully seated. It will click into place, and the cable will be parallel with the board when the connector is correctly seated.

3. Create Your Free Electric Imp Account

If you already have an Electric Imp account, you can skip to Step 4.

Creating an Electric Imp account gives you access to Electric Imp’s online code development and product management application, impCentral™, which you will use to program and monitor your impC001 Breakout Board and any other imp-enabled development hardware you use. New and updated application code is deployed from impCentral to imps via the Internet.

Electric Imp provides two impClouds: one hosted on Amazon Web Services (AWS) and one hosted on Microsoft Azure. You can create an account on either impCloud, but development devices are bound to specific impClouds, so you must ensure you either create an account on the impCloud your device is tied to, or choose a device that’s tied to the impCloud hosting your account.

Create your account now:

Enter your email address in the Sign Up section:

You’ll now receive a message asking you to verify the email address you supplied. When you’ve done so, by clicking the Confirm button in the email, you’ll be automatically returned to the impCentral login page and asked to choose an account username and password, and provide some basic information about yourself. Your password must contain between eight and 20 characters. Your username must also contain 8-20 characters, and must not be your email address. Click Set to apply your choices:


The account completion screen

Note By creating an account, you agree to Electric Imp’s Terms of Service, which you can read here. Please also take a moment to view our Privacy Policy.

4. Activate Your impC001 Breakout Board

In order to program your impC001 Breakout Board, you need to add it to your account. This process is called activation and is accomplished using Electric Imp’s BlinkUp™ technology.

BlinkUp uses a mobile device’s display to transmit activation data to the impC001 Breakout Board. You use the Electric Imp app to activate development devices. BlinkUp is also used to activate commercial devices based on the Electric Imp platform, but using their own mobile apps. By default, commercial products can’t be used for development.

Download the Electric Imp app from either the iTunes App Store or Google Play according to what make of mobile device you use. When the app has downloaded, launch it and sign in using the account username and password you set up in Step 1:

Select Your impCloud

Make sure the correct impCloud, AWS or Azure, according to the choice you made earlier:

Enter Your Verification Key (Optional)

If you do not have Multi-Factor Authentication (MFA) set up for your account, you can skip to ‘Select Your Network Mode’, below. If you do have MFA set up, the app will now ask you to enter a one-time verification code. MFA is not enabled by default on new accounts.

Select Your Network Mode

The Electric Imp app will walk you through the process of activating your impC001 Breakout Board, but it can also be used with development hardware based on any of the various imp types. After signing in, tap Configure a Device and then select your network type. For the impC001 Breakout Board, choose Cellular:

Note If you have an older version of the app, it may not show a Cellular option — in this case, please select Ethernet.

Power Up The impC001 Breakout Board

When you see the screen headed POWER UP, connect your impC001 Breakout Board to power.

The Breakout Board supports multiple power sources. Included in the kit is a USB power supply rated at over 2.1A for US modules, or 2.4A for AUS and EU regions. Connect the mini USB cable to the Breakout Board and plug the USB power supply into a convenient power socket.

BlinkUp

Tap Next in the app, and keep doing so until you see the screen headed BLINKUP. It has a START BLINKUP button at the bottom of the screen:

The impC001 Breakout Board’s BlinkUp status LED should be flashing orange if this is the first time the imp kit has been used. If it is not flashing, reconnect the power supply. Now tap the app’s START BLINKUP button. Quickly lay the mobile device’s screen face down over the status LED. After a three-second countdown, BlinkUp commences; when BlinkUp is complete, the mobile device will signal this with a beep and a buzz.

Always run a BlinkUp with the screen facing away from you and towards the device being configured, especially if you suffer from a medical condition that makes you susceptible to strobing light. In the iOS app there are audio prompts both at the start and end, so you can close your eyes during the process. The Android app vibrates the handset after BlinkUp is done.

The impC001 Breakout Board signals a successful BlinkUp by keeping the status LED lit green for three seconds. After that, various color combinations may be seen as the impC001 connects to the cellular network and activates, culminating in a steady green blinking. The initial connection to the cellular network may take up to 60 seconds. If the LED doesn’t eventually blink green, the device has not been able to connect, and you should check out the ‘Troubleshooting’ section, below.

Connected or not, after a short time the impC001 Breakout Board’s LED will turn off to save power. This is normal, and the device is still running. But if you need to configure your impC001 Breakout Board again, you’ll need to power-cycle it: an active LED tells you that your impC001 Breakout Board is ready for BlinkUp.

Getting BlinkUp Right First Time

If the impC001 Breakout Board still shows a slow flashing orange LED after BlinkUp, it wasn’t able to read the BlinkUp transmission — perhaps you held it too far from the phone’s screen. BlinkUp can also be adversely affected by unusual lighting conditions, especially very bright lighting such as direct sunlight. For best results, we recommend that you:

  • Try to block out any direct bright lights, or perform a BlinkUp in the shade.
  • Hold the device still during the process.

Troubleshooting

If your impC001 Breakout Board doesn’t connect, try BlinkUp again. Keep an eye on the LED after BlinkUp: the pattern of colors and flashes will tell you where any problem is occurring. Our troubleshooting guide can help you further.

5. Programming Your impC001 Breakout Board

At this point, your impC001 Breakout Board should be online and activated. It will be now listed in impCentral: log in to impCentral on your computer if you are not logged in already (for AWS or Azure) on your computer, click on the impCentral Devices Menu Icon at the top and select My Development Devices. Your impC001 Breakout Board is currently ‘unassigned’, which simply means that it is not yet associated with any impCentral Device Group.

impCentral organizes devices and code as follows:

  • Product This is the top-level project container. It’s typically named for the product you’re creating.
    • Device Group These group devices according to the code they run. All devices that are assigned to a given Device Group run the same code, which can be viewed and modified in the impCentral code editor. There are four types of Device Group:
      • Development Where you develop and test application code.
      • Test Factory Where you develop and test factory code, if your account has permission to do so.
      • Test Production Where you test the Connected Factory process for your Product, if your account has permission to do so.
      • Production Where you deploy production application code, if your account has permission to do so.
      • Factory Where deploy production factory code, if your account has permission to do so.

Development devices are assigned to Development Device Groups and, once assigned, will download and run any code deployed to that Device Group. Each Development and Test Factory Device Group has a code editor — changing the code and clicking the editor’s Build and Force Restart button will automatically cause all of the group’s devices to restart and receive the new software.

Your impC001 Breakout Board is represented in impCentral by its unique device ID, but you can give it a more friendly, easy-to-remember name if you wish. Click on Settings under the MANAGE column. A Device Settings panel will pop up — just update the device’s name and click Update button:

Now, Find your account name in the impCentral navigation bar, then click on the Account menu beneath it and select your personal account. This will display the selected account’s Products.

Click Create New Product. The Create Product panel will now appear for you to give your first Product a name and to name its first Development Device Group too. Enter the two names then click Create.

impCentral takes you straight to the code editor, which you’ll use to develop application code. To test that code, you need hardware, such as your impC001 Breakout Board, which needs to be ‘assigned’ to that Device Group for which you’re developing code. Look in the log pane at the bottom of the window and you’ll see an Assign devices button:

Click this and a panel will appear which allows you to select one or more of the development devices linked to your Electric Imp account and assign them to the current Device Group:

Find your impC001 Breakout Board, check the box to the left of its ID and name (if you set one), and click Assign. You have now added your Breakout Board to your new Development Device Group.

Agents And Devices

Electric Imp application firmware comprises two parts. The first, the device code, runs on the imp itself. The second runs within the Electric Imp impCloud and is called the device’s agent. Each device has its own, unique agent, so if you have, say, five impC001s integrated into five refrigerators and all assigned to a single Device Group, there will be five agents running in the cloud, each one an instance of the application’s agent code. Each device has a one-to-one relationship with its agent:

The agent keeps the device safe: all communications between the device and external services are mediated by the device’s agent. To maintain security, there is no direct access to devices. This is the case even when the external service is on the same physical network as the device. The impCloud is built for performance, so any latency this approach introduces is negligible.

You might use an agent to receive commands from a mobile app and relay them to the device. The device might ask the agent to fetch data, such as a weather forecast, from an online service. The agent makes the outgoing request, handles the returned data and sends the relevant part back to the device.

Agents run continually, allowing devices to be accessible even if they are sleeping to conserve power. The agent can check the device’s state and hold any received data until the device is awake again.

First Code

The code editor presents areas for the firmware’s two parts, a list of assigned devices (just your impC001 Breakout Board for now) and a logging area, which is populated when you select a device:

Click on the device code pane and type in the following:

server.log("Hello from your impC001 Breakout Board");

If your impC001 Breakout Board is powered up and connected, select it from list (it will already be selected if it’s the only device in the Group) then click Build and Force Restart (above the agent code pane). The impC001 Breakout Board will now restart, and the code editor log should show:

[Device] Hello from your impC001 Breakout Board

Squirrel

You write your agent and device code in Squirrel, a modern, object-oriented language similar to JavaScript, Swift and C++. Squirrel is not difficult to learn, and we have a full guide to the language here plus a cheat sheet.

The imp API

The imp API provides a series of functions (like server.log(), used above) which can be included in your code to interact with peripherals connected to the imp, either on the impC001 Breakout Board itself or externally; to apply device settings; to control communication between the agent and its device; to control communication between the agent and external Internet resources; and much more besides.

The functions made available by the imp API are listed and documented here.

Electric Imp Libraries

Building on the imp API, your code can include libraries provided by Electric Imp to simplify communication between an agent and popular web services, and between the device’s imp and connected hardware.

You can find a full list of available libraries here.

6. Next Steps

The Electric Imp Dev Center offers sample code to help you learn Squirrel and understand how to write application firmware. This sample code includes the imp API cookbook: a series of recipes for common imp application tasks.

The examples may not all have been written for the impC001 Breakout Board, but imps are software compatible. You may need to make small changes to the code if it makes use of the imp hardware features, but this is straightforward. Use the imp pin mux pages to help you — it lists all of the available GPIO pins and buses available to each type of imp, including the impC001.

You should also take a look at the following pages to help you fully understand the Electric Imp application and platform architecture:

There is a guide specifically for the impC001 Breakout Board:

And, finally, if you need assistance navigating impCentral: