IoT 101: Developer Introduction
This blog introduces you to the basics of IoT and helps you understand the minimum systems and applications needed to get started. At this point, there are possibly hundreds of ways you can begin a simple IoT project; so this blog will focus on the environment I have built so far, allowing me to quickly create IoT applications on various platforms and boards.
To get started, you will need a development workstation and a device. The development workstation can be anything that runs a Linux or Windows operating system (depending on your favorite platform). A device can be anything from a small computer (such as a Raspberry Pi) or a microcontroller (such as an Arduino, MXChip, or even the Matrix Creator development board for example). The development language you choose depends somewhat on the operating system of the development workstation and the IoT device itself.
Raspberry Pi
If you use a Raspberry Pi, you may not need a separate development workstation. The basic image of operating system that comes with the Raspberry Pi (Raspbian) comes with pre-installed development tools; so all you would need is an external monitor and a mouse/keyboard to get started. However the Raspberry Pi does not come with sensors out of the box; you will need to add sensors yourself using the GPIO provided on the device; or you can use Matrix Creator (see further down).
If, like me, you like to develop on a separate machine, you may want to use SSH to deploy code remotely (I use PuTTY from my Windows machine – check out the Pi documentation: https://www.raspberrypi.org/documentation/remote-access/ssh/windows.md), or if you use Windows and you would like complete remote control using Remote Desktop (RDP), the VNC service is your friend; check out this helpful blog post: http://www.circuitbasics.com/access-raspberry-pi-desktop-remote-connection/.
You can also install Windows 10 IoT Core on a Raspberry Pi; however you will need a few extra things to get it working. The basic Windows 10 IoT Core operating system is free, but requires updates from time to time; the Pro edition allows pushing updates to a later date, but that O/S edition is not free. I found an undocumented way to disable upgrades so I could use my Windows 10 IoT Core uninterrupted; a quick Google search should give you the solution to this problem. The development platform for Windows 10 IoT core should be a Windows 10 workstation, using Visual Studio (or VS Code).
Finally you will also need the Windows IoT Dashboard (https://developer.microsoft.com/en-us/windows/iot/downloads) so you can manage your Raspberry Pis, such as pushing apps, restarting the device and so forth. Last important bit: the Windows 10 IoT Core is a simpler operating system; do not expect a full blown Windows; you get a shell. That’s it. However, simplicity can be good; Windows 10 IoT allows you to treat the Raspberry Pi as a simple IoT device.
MXChip
The MXChip is a board developed by Microsoft in partnership with Arduino; it is designed to integrate easily with many of the Microsoft Azure services. The MXChip comes equipped with many sensors to get you started with cool IoT projects right out of the box. The MXChip does not run a full operating system; you simply push compiled C++ code. The natural development environment for the MXChip is Visual Studio Code. See one of my previous blogs on this board for additional information: https://www.herveroggero.com/single-post/2017/10/16/MXChip-and-Azure-SQL.
While I do not cover Arduino boards specifically in this blog, you should note that the concept is similar. Arduino boards are microcontrollers that do not run an operating system. You build code on a developer workstation, and push the code on the board using vendor-provided development tools.
Matrix Creator
The Matrix Creator is an interesting development board; it is similar conceptually to the MXChip: you push compiled code to the device, and the device comes loaded with many sensors out of the box. However, it runs on top of a Raspberry Pi, and the development tools are different than for the MXChip. In other words, you will need both the Pi and Matrix Creator to get going. While this is a bit more expensive, the possibilities of the Matrix Creator are remarkable.
While Matrix Core supports different levels of programming, I use Node JS to program the board; I downloaded Node JS on my Windows workstation and was able to quickly push code to the Matrix Creator board following the simple instructions provided on the Matrix website (https://creator.matrix.one/). Developing against Matrix Creator requires you to open up a developer account with the company that builds the board.
Here is my overall development configuration: a laptop (development workstation) running Windows 10, 2 MXChip devices, 3 Raspberry Pis, and a Matrix Creator board.
In summary, getting your development environment ready to start building IoT projects is not too difficult; you will need to arm yourself with a little bit of patience to learn the various development tools required depending on your device choices, but overall the experience is rewarding. With the above development configuration I am able to build an IoT solution on any of the boards described in this blog from the same development machine. May the fun continue!