Developing Medical Devices using Windows 10 IoT Core
Developing Medical Devices using Windows 10 IoT Core
So you want Internet connectivity for your medical device?
Years ago, medical devices and instruments were solitary things. They were self-contained and did their job. Maybe they displayed some real-time data or results to the user, and then were powered down. But over time, various levels of connectivity were introduced and eventually became a required feature for medical systems.
I’ve been developing software for medical devices for well over 25 years, and over that time, I’ve noticed three parallel trends related to connectivity and integration:
- How instruments are connected has evolved from hard-wired RS232 or Ethernet cables, to Wi-Fi, to Bluetooth and BLE;
- What instruments are connecting to has evolved from a front-end PC to a local server to Internet-based web servers and the Cloud, either directly or through a mobile device;
- Instruments and systems are getting smaller, faster, less expensive, easier to use, and more highly integrated.
So when a technology comes along that pulls all three of those together, it gets my attention. The Internet of Things (IoT) is one such technology. It has begun to enter the medical arena in earnest as IoT-MD (Internet of Things for Medical Devices), and has also taken on a new form with Microsoft’s most recent contribution to the IoT development space — Windows 10 IoT Core.
To be clear, every IOT-MD project does not need an operating system. Many small boards exist that are fine at single threaded tasking. For example, the ESP8266 that is currently taking IoT by storm has a 32-bit RISC processor, WiFi, and a full TCP/IP stack for about $5. But for more complex operations, especially where a user interface is involved, more is needed.
A number of small, single-board computers are available that support Windows 10 IoT Core. Many flavors of these boards (such as the Qualcomm Dragonboard, Raspberry Pi, and MinnowBoard Max) are relatively inexpensive (~$100). They can be used with other operating systems such as Ubuntu Linux, but we have found some particular advantages when running IoT Core.
For a recent development project for one of our clients, IoT Core was selected as the operating system for their small, desktop-based assay system. IoT Core was chosen for a few key reasons: 1) it leverages our knowledge and experience with Windows application development, 2) it’s free to use, and 3) it provides the functionality and support needed from an operating system.
Using this project as an example, I have some initial observations about Windows 10 IoT.
More, Faster, Cheaper
Windows IoT Core is the latest incarnation of a long series of embedded Windows versions. It meets the need for rapid development by using known software development tools, since you can develop using C# and Visual Studio. It integrates easily with a number of small, low-cost platforms that combine small form factors with less demanding power requirements. These platforms also readily support the range of connectivity options required by today’s medical systems. The result is faster development at lower cost, running on lower cost hardware.
Based on my experience using IoTCore, here are some key thoughts to keep in mind as you consider using it for your IoT-MD project:
- IoT Core only runs UWP (Universal Windows Platform) applications, which are not “desktop” apps. UWP apps are scalable, the kind that can run on Windows smartphones and other “embedded” Windows devices (tablets, phablets, etc.) regardless of the hardware platform. So, this type of development requires even more careful consideration and planning since there’s no option to simply port an existing Windows 10 (desktop) application to run under Windows 10 IoT Core.
- IoT Core comes prepackaged with quite a few out-of-the-box assemblies ready to be used to access the most common functionality (USB drivers, network interfaces, etc.). But custom or commercial hardware drivers and libraries that you have been using for your .NET application may not be usable by IoT Core, and you may have to write your own.
- Plan for some rapid technical prototyping. That will help you ensure that you can interface with all of the external hardware required for your project, and also give you an idea of how much additional development may be required.
What You Get (and What You Don’t Get)
As with any new tool or development environment, Window 10 IoT Core has its plusses and minuses. In my view, the plusses outweigh the minuses for certain types of applications.
- For UI development, it’s a relatively easy transition from Windows 10 to Windows 10 IoT core. The latter fully implements XAML, and your ability to create a rich UI is quite similar in both cases.
- As a major design consideration, it’s important to note that Windows 10 IoT Core is also not a “real-time” embedded system. Just like standard Windows 10, you still won’t have the ability to deterministically react to external events the way you would using a full-fledged, I/O-driven, “hard-real time” operating system. For those type of operations, you’ll likely want to interface with external hardware that can perform your control needs which you can manage over the various communication pathways provided by Windows 10 IoT Core and your SBC hardware.
- External interfaces, such as USB-based serial communication, Wi-Fi, and Bluetooth are readily available. But, as mentioned above, you may need to write your own drivers to communicate with certain external devices.
- Finally, one of the biggest advantages of using IoT Core is its ability to support connectivity to the Internet, and specifically to whatever Cloud-based services you may need. Patient data, assay results, diagnostic information – all can easily be shared to your web-based repository once your device is connected to the Internet via Wi-Fi. IoT Core handles the connectivity with ease, and your product software can be configured to upload/download whatever data it needs. Best of all, no cables are required.
Is Windows 10 IoT Core for me?
The evolving capability and power of development and target environments has made embedded engineering easier and more efficient over time. However, embedded software engineering still requires a special set of skills and experience. Windows 10 IoT Core opens up the possibility of effective embedded development to experienced Windows engineers. The cost of entry is lower (SBCs today are relatively inexpensive to obtain, setup, and test drive), and the learning curve is shorter because the IoT Core environment is familiar to experienced Windows developers. Especially for newer requirements such as wireless connectivity, IoT Core offers a highly capable set of features and development tools that can accelerate your medical device development.