The main aim of my dive into IoT was to get a remote device talking to Azure. After getting the IoT device connected to WiFi, flashing LEDs, accepting input from a button and capturing temperature data, it was now time to make that dream a reality.
There are different methods of connecting devices to Azure but for my first attempt I decided to use Azure IoT hub. The first step in that process is to login to the Azure portal and create a new IoT hub.
To do this, select the Create menu option in the top left of the Azure IoT hub blade
Once you have selected the Azure subscription and Resource group you’ll need to pick a Name for your Azure IoT hub. This name needs to be unique as a URL will be generated from this. Then select a Region and a Tier. You’ll notice that there is a Free tier, which I have selected for this example (very handy for tests like this).
Next, you can configure your networking. Because my device will just connect to a public Internet connection I selected Public access.
I left the management options as shown above.
The add-ons shown here are not available on the Free tier.
I didn’t need any tags.
I finally get a summary as shown. Note that the cost will be $0 because I am using the Free tier. Select Create to complete the process.
After a few minutes you should be able to see you IoT hub as shown above. Select Devices from the menu on the left.
Now select Add device from the menu on the right as shown above.
Give a the device a Name, and to keep things simple select Symmetric key for the Authentication type as shown. Ensure that the Auto-generate keys is select and that Connect this device to an IoT hub is set to Enable. Select Save to continue.
You should now see the device you just created listed as shown above. Select the name of the device to view it’s properties.
Here you will find the settings for your device. You’ll need to grab at least one Key and the matching Connection string to use when configuring your device.
With all of that information it’s time to head back and set up the device.
I have uploaded the code to get the device connected to Azure IoT hub here:
It is much more extensive that before and I will admit I am not yet 100% sure of what it all does but basically it connects the device to local Wifi then sends telemetry information to Azure IoT hub.
You’ll also need to have the file iot_config.h in the same directory when compiling your code. You can find an example of that here:
that file basically extracts all the unique security information like WiFi password, device keys and IoT Hub URL away from the main code. You’ll need to modify this file to suit your own environment before compiling.
The only other thing you’ll need to do is connect a single LED to pin 5 of the device to act as a diagnostic indicator. It will basically flash when data is sent to Azure IoT hub which gives a nice visual representation of something actually happening on the device.
When you compile the code you’ll also need to ensure all the appropriate libraries are available. Details of each of these is contained in the code.
With the compiled code uploaded to the device you should see the LED light start to flash after a few seconds indicating that data is being sent. If you look at the serial port you should see diagnostic data like so:
If you then look at the Overview page in the Azure IoT Hub you should the diagnostics reporting a number of messages increasing over time like so:
You can also download a tool called the Azure IoT explorer which you will find here:
When you configure this for your IoT hub environment and drill down into the Device then Telemetry, as shown above, should allow to see the actual information being sent.
So there you have it. Once you have set up an Azure IoT hub and added a device to it you can grab the connection details and plug them into the code you use to configure your device. You can also use the Azure IoT Explorer to get more granular details of what your device is doing.
The next challenge is now to get the device working with Azure IoT central.