Skip to content

Latest commit

 

History

History
197 lines (131 loc) · 18.3 KB

concepts-iot-device-selection.md

File metadata and controls

197 lines (131 loc) · 18.3 KB
titledescriptionauthorms.authorms.servicems.topicms.date
Azure IOT prototyping device selection list
This document provides guidance on choosing a hardware device for prototyping IoT Azure solutions.
dominicbetts
dobett
azure-iot
conceptual
1/10/2025

IoT device selection list

This IoT device selection list aims to give partners a starting point with IoT hardware to build prototypes and proof-of-concepts quickly and easily.1

All boards listed support users of all experience levels.

Note

This table is not intended to be an exhaustive list or for bringing solutions to production. 23

Security advisory: Except for the Azure Sphere, it's recommended to keep these devices behind a router and/or firewall.

Contents

SectionDescription
Start hereA guide to using this selection list. Includes suggested selection criteria.
Selection diagramA visual that summarizes common selection criteria with possible hardware choices.
Terminology and ML requirementsTerminology and acronym definitions and device requirements for edge machine learning (ML).
MCU device listA list of recommended MCUs, for example, ESP32, with tech specs and alternatives.
SBC device listA list of recommended SBCs, for example, Raspberry Pi, with tech specs and alternatives.

Start here

How to use this document

Use this document to better understand IoT terminology, device selection considerations, and to choose an IoT device for prototyping or building a proof-of-concept. We recommend the following procedure:

  1. Read through the 'what to consider when choosing a board' section to identify needs and constraints.

  2. Use the Application Selection Visual to identify possible options for your IoT scenario.

  3. Using the MCU or SBC Device Lists, check device specifications and compare against your needs/constraints.

What to consider when choosing a board

To choose a device for your IoT prototype, see the following criteria:

  • Microcontroller unit (MCU) or single board computer (SBC)

    • An MCU is preferred for single tasks, like gathering and uploading sensor data or machine learning at the edge. MCUs also tend to be lower cost.
    • An SBC is preferred when you need multiple different tasks, like gathering sensor data and controlling another device. It may also be preferred in the early stages when there are many options for possible solutions - an SBC enables you to try lots of different approaches.
  • Processing power

    • Memory: Consider how much memory storage (in bytes), file storage, and memory to run programs your project needs.

    • Clock speed: Consider how quickly your programs need to run or how quickly you need the device to communicate with the IoT server.

    • End-of-life: Consider if you need a device with the most up-to-date features and documentation or if you can use a discontinued device as a prototype.

  • Power consumption

    • Power: Consider how much voltage and current the board consumes. Determine if wall power is readily available or if you need a battery for your application.

    • Connection: Consider the physical connection to the power source. If you need battery power, check if there's a battery connection port available on the board. If there's no battery connector, seek another comparable board, or consider other ways to add battery power to your device.

  • Inputs and outputs

    • Ports and pins: Consider how many and of what types of ports and I/O pins your project may require. * Other considerations include if your device will be communicating with other sensors or devices. If so, identify how many ports those signals require.

    • Protocols: If you're working with other sensors or devices, consider what hardware communication protocols are required. * For example, you may need CAN, UART, SPI, I2C, or other communication protocols.

    • Power: Consider if your device will be powering other components like sensors. If your device is powering other components, identify the voltage, and current output of the device's available power pins and determine what voltage/current your other components need.

    • Types: Determine if you need to communicate with analog components. If you are in need of analog components, identify how many analog I/O pins your project needs.

    • Peripherals: Consider if you prefer a device with onboard sensors or other features like a screen, microphone, etc.

  • Development

    • Programming language: Consider if your project requires higher-level languages beyond C/C++. If so, identify the common programming languages for the application you need (for example, Machine Learning is often done in Python). Think about what SDKs, APIs, and/or libraries are helpful or necessary for your project. Identify what programming language(s) these are supported in.

    • IDE: Consider the development environments that the device supports and if this meets the needs, skill set, and/or preferences of your developers.

    • Community: Consider how much assistance you want/need in building a solution. For example, consider if you prefer to start with sample code, if you want troubleshooting advice or assistance, or if you would benefit from an active community that generates new samples and updates documentation.

    • Documentation: Take a look at the device documentation. Identify if it's complete and easy to follow. Consider if you need schematics, samples, datasheets, or other types of documentation. If so, do some searching to see if those items are available for your project. Consider the software SDKs/APIs/libraries that are written for the board and if these items would make your prototyping process easier. Identify if this documentation is maintained and who the maintainers are.

  • Security

    • Networking: Consider if your device is connected to an external network or if it can be kept behind a router and/or firewall. If your prototype needs to be connected to an externally facing network, we recommend using the Azure Sphere as it is the only reliably secure device.

    • Peripherals: Consider if any of the peripherals your device connects to have wireless protocols (for example, WiFi, BLE).

    • Physical location: Consider if your device or any of the peripherals it's connected to will be accessible to the public. If so, we recommend making the device physically inaccessible. For example, in a closed, locked box.

Application selection visual

Note

This list is for educational purposes only, it is not intended to endorse any products.

:::image type="content" source="media/concepts-iot-device-selection/iot-device-selection-visual.png" alt-text="Table that shows common selection criteria with possible hardware choices.":::

Terminology and ML requirements

This section provides definitions for embedded terminology and acronyms and hardware specifications for visual, auditory, and sensor machine learning applications.

Terminology

Terminology and acronyms are listed in alphabetical order.

TermDefinition
ADCAnalog to digital converter; converts analog signals from connected components like sensors to digital signals that are readable by the device
Analog pinsUsed for connecting analog components that have continuous signals like photoresistors (light sensors) and microphones
Clock speedHow quickly the CPU can retrieve and interpret instructions
Digital pinsUsed for connecting digital components that have binary signals like LEDs and switches
Flash (or ROM)Memory available for storing programs
IDEIntegrated development environment; a program for writing software code
IMUInertial measurement unit
IO (or I/O) pinsInput/Output pins used for communicating with other devices like sensors and other controllers
MCUMicrocontroller Unit; a small computer on a single chip that includes a CPU, RAM, and IO
MPUMicroprocessor unit; a computer processor that incorporates the functions of a computer's central processing unit (CPU) on a single integrated circuit (IC), or at most a few integrated circuits.
MLMachine learning; special computer programs that do complex pattern recognition
PWMPulse width modulation; a way to modify digital signals to achieve analog-like effects like changing brightness, volume, and speed
RAMRandom access memory; how much memory is available to run programs
SBCSingle board computer
TFTensorFlow; a machine learning software package designed for edge devices
TF LiteTensorFlow Lite; a smaller version of TF for small edge devices

Machine learning hardware requirements

Vision ML

  • Speed: 200 MHz
  • Flash: 300 kB
  • RAM: 100 kB

Speech ML

  • Speed: 60 MHz 4
  • Flash: 50 kB
  • RAM: 8 kB

Sensor ML (for example, motion, distance)

  • Speed: 20 MHz
  • Flash: 20 kB
  • RAM: 2 kB

MCU device list

Following is a comparison table of MCUs in alphabetical order. The list isn't not intended to be exhaustive.

Note

This list is for educational purposes only, it is not intended to endorse any products. Prices shown represent the average across multiple distributors and are for illustrative purposes only.

Board NamePrice Range (USD)What is it used for?SoftwareSpeedProcessorMemoryOnboard Sensors and Other FeaturesIO PinsVideoRadioBattery Connector?Operating VoltageGetting Stated GuidesAlternatives
Azure Sphere MT3620 Dev Kit~$40 - $100Highly secure applicationsC/C++, VS Code, VS500 MHz & 200 MHzMT3620 (tri-core--1 x Cortex A7, 2 x Cortex M4)4-MB RAM + 2 x 64-KB RAMCertifications: CE/FCC/MIC/RoHS4 x Digital IO, 1 x I2S, 4 x ADC, 1 x RTC-Dual-band 802.11 b/g/n with antenna diversity-5 V1. Azure Sphere Samples Gallery, 2. Azure Sphere Weather StationN/A
Adafruit HUZZAH32 – ESP32 Feather Board~$20 - $25Monitoring; Beginner IoT; Home automationArduino IDE, VS Code240 MHz32-Bit ESP32 (dual-core Tensilica LX6)4 MB SPI Flash, 520 KB SRAMHall sensor, 10x capacitive touch IO pins, 50+ add-on boards3 x UARTs, 3 x SPI, 2 x I2C, 12 x ADC inputs, 2 x I2S Audio, 2 x DAC-802.11b/g/n HT40 Wi-Fi transceiver, baseband, stack and LWIP, Bluetooth and BLE3.3 V1. Scientific freezer monitor, 2. Azure IoT SDK Arduino samplesArduino Uno WiFi Rev 2 (~$50 - $60)
Arduino Nano RP2040 Connect~$20 - $25Remote control; MonitoringArduino IDE, VS Code, C/C++, MicroPython133 MHz32-bit RP2040 (dual-core Cortex M0+)16 MB Flash, 264-kB RAMMicrophone, Six-axis IMU with AI capabilities22 x Digital IO, 20 x PWM, 8 x ADC-WiFi, Bluetooth-3.3 V-Adafruit Feather RP2040 (NOTE: also need a FeatherWing for WiFi)
ESP32-S2 Saola-1~$10 - $15Home automation; Beginner IoT; ML; Monitoring; Mesh networkingArduino IDE, Circuit Python, ESP IDF240 MHz32-bit ESP32-S2 (single-core Xtensa LX7)128 kB Flash, 320 kB SRAM, 16 kB SRAM (RTC)14 x capacitive touch IO pins, Temp sensor43 x Digital pins, 8 x PWM, 20 x ADC, 2 x DACSerial LCD, Parallel PCDWi-Fi 802.11 b/g/n (802.11n up to 150 Mbps)-3.3 V1. Secure face detection with Azure ML, 2. Azure Cost MonitorESP32-DevKitC (~$10 - $15)
Wio Terminal (Seeed Studio)~$40 - $50Monitoring; Home Automation; MLArduino IDE, VS Code, MicroPython, ArduPy120 MHz32-bit ATSAMD51 (single-core Cortex-M4F)4 MB SPI Flash, 192-kB RAMOn-board screen, Microphone, IMU, buzzer, microSD slot, light sensor, IR emitter, Raspberry Pi GPIO mount (as child device)26 x Digital Pins, 5 x PWM, 9 x ADC2.4" 320x420 Color LCDdual-band 2.4Ghz/5Ghz (Realtek RTL8720DN)-3.3 VMonitor plants with Azure IoTAdafruit FunHouse (~$30 - $40)

SBC device list

Following is a comparison table of SBCs in alphabetical order. This list isn't intended to be exhaustive.

Note

This list is for educational purposes only, it is not intended to endorse any products. Prices shown represent the average across multiple distributors and are for illustrative purposes only.

Board NamePrice Range (USD)What is it used for?SoftwareSpeedProcessorMemoryOnboard Sensors and Other FeaturesIO PinsVideoRadioBattery Connector?Operating VoltageGetting Started GuidesAlternatives
Raspberry Pi 4, Model B~$30 - $80Home automation; Robotics; Autonomous vehicles; Control systems; Field scienceRaspberry Pi OS, Raspbian, Ubuntu 20.04/21.04, RISC OS, Windows 10 IoT, more1.5 GHz CPU, 500 MHz GPU64-bit Broadcom BCM2711 (quad-core Cortex-A72), VideoCore VI GPU2GB/4GB/8GB LPDDR4 RAM, SD Card (not included)2 x USB 3 ports, 1 x MIPI DSI display port, 1 x MIPI CSI camera port, 4-pole stereo audio and composite video port, Power over Ethernet (requires HAT)26 x Digital, 4 x PWM2 micro-HDMI composite, MPI DSIWiFi, Bluetooth5 V1. Send data to IoT Hub, 2. Monitor plants with Azure IoTBeagleBone Black Wireless (~$50 - $60)
NVIDIA Jetson 2 GB Nano Dev Kit~$50 - $100AI/ML; Autonomous vehiclesUbuntu-based JetPack1.43 GHz CPU, 921 MHz GPU64-bit NVIDIA CPU (quad-core Cortex-A57), 128-CUDA-core Maxwell GPU coprocessor2GB/4GB LPDDR4 RAM472 GFLOPS for AI Perf, 1 x MIPI CSI-2 connector28 x Digital, 2 x PWMHDMI, DP (4 GB only)Gigabit Ethernet, 802.11ac WiFi5 VDeepstream integration with Azure IoT CentralBeagleBone AI (~$110 - $120)
Raspberry Pi Zero W2~$15 - $20Home automation; ML; Vehicle modifications; Field ScienceRaspberry Pi OS, Raspbian, Ubuntu 20.04/21.04, RISC OS, Windows 10 IoT, more1 GHz CPU, 400 MHz GPU64-bit Broadcom BCM2837 (quad-core Cortez-A53), VideoCore IV GPU512 MB LPDDR2 RAM, SD Card (not included)1 x CSI-2 Camera connector26 x Digital, 4 x PWMMini-HDMIWiFi, Bluetooth-5 VSend and visualize data to Azure IoT HubOnion Omega2+ (~$10 - $15)
DFRobot LattePanda~$100 - $160Home automation; Hyperscale cloud connectivity; AI/MLWindows 10, Ubuntu 16.04, openSUSE 151.92 GHz64-bit Intel Z8350 (quad-core x86-64), Atmega32u4 coprocessor2 GB DDR3L RAM, 32 GB eMMC/4GB DDR3L RAM, 64-GB eMMC-6 x Digital (20 x via Atmega32u4), 6 x PWM, 12 x ADCHDMI, MIPI DSIWiFi, Bluetooth5 V1. Getting started with Microsoft Azure, 2. Home Monitoring System with AzureSeeed Odyssey X86J4125800 (~$210 - $230)

Questions? Requests?

Please submit an issue!

See Also

Other helpful resources include:

Footnotes

  1. If you're new to hardware programming, for MCU dev work we recommend using VS Code Arduino Extension or VS Code Platform IO Extension. For SBC dev work, you program the device like you would a laptop, that is, on the device itself. The Raspberry Pi supports VS Code development.

  2. Devices in the availability of support resources, common boards used for prototyping and PoCs, and boards that support beginner-friendly IDEs like Arduino IDE and VS Code extensions; for example, Arduino Extension and Platform IO extension. For simplicity, we aimed to keep the total device list <6. Other teams and individuals may have chosen to feature different boards based on their interpretation of the criteria.

  3. For bringing devices to production, you likely want to test a PoC with a specific chipset, ST's STM32 or Microchip's Pic-IoT breakout board series, design a custom board that can be manufactured for lower cost than the MCUs and SBCs listed here, or even explore FPGA-based dev kits. You may also want to use a development environment for professional electrical engineering like STM32CubeMX or ARM mBed browser-based programmer.

  4. Speed requirement is largely due to the need for processors to be able to sample a minimum of 6 kHz for microphones to be able to process human vocal frequencies.

close