One of the most important steps in planning out a new project that will use embedded systems is choosing a microcontroller (MCU). In OPS2, we provide you a (small) variety of options to select from; this page is meant to help you compare between them and choose one that works best for you.
Different microcontroller platforms often provide their own integrated development environment (IDE) and software tool chains for compiling and writing firmware to the MCU, as well as for debugging. Most (if not all) of the MCUs listed on this page are compatible with PlatformIO, the IDE we will be using in OPS2.
You are welcome to use the IDE provided by the MCU manufacturer (e.g., STM32CubeIDE for STM32 series chips, Code Composer Studio for MSP430 series chips, etc.), however we will only be using PlatformIO in class; if you use another IDE, debugging software issues will be your responsibility.
Expand each board's category below to view more details about it, find setup instructions, and more. You can compare dev boards using the spreadsheet at the bottom of the page.
STM32 Nucleo L476RG (MCU: STM32L476RG) - $15
This is near the higher-end of the STM32L series of MCUs; it's targeted at ultra-low-power applications while still retaining a respectable amount of processing power.
Board Pinout: https://os.mbed.com/platforms/ST-Nucleo-L476RG/
Board schematic diagram: https://www.st.com/resource/en/schematic_pack/mb1136-default-c04_schematic.pdf
LD3 on = 5V power present (MCU is regulated down to 3.3V)
All logic is 3.3V, MCU pins ARE NOT 5V tolerant
JP5 jumper selects between USB 5V source (U5V side) and external (E5V side) source (6-15V into VIN pin)
USER button is Arduino pin 23 (PC_13 on MCU)
LD2 LED is Arduino pin 13 (PA_5 on MCU)
Adafruit nRF52840 Express Feather - $25
Does not support WiFi; only supports Bluetooth Low Energy
Uses a Raytac nRF52840 module paired with an external SPI Flash chip, and some other onboard goodies (including a 1S LiPo battery connector, with the ability to recharge a connected battery via USB power)
Note: The ESP32 is far less power-efficient than Nordic MCUs or STM32L series chips, however the C5 and C6 are slightly better than typical ESP32 MCUs.
Note: These two options require some additional development toolchain fiddling to get running well due to limitations with PlatformIO. If you're comfortable developing solely in Arduino IDE, or using ESP-IDF, then you won't have any problems. Otherwise, you might want to consider choosing and ESP32-S3 dev board.
You can learn about the features available on this development board from its datasheet here
These boards use a custom PCB developed by the OPS Team which is fitted with an ESP32-C6 (or C5) WROOM module. The board also features a built in 1S LiPo/LiIon battery management circuit (including USB-C charging and battery level check circuit), two user LEDs, and three buttons (one is reset). For these boards, you may choose the WROOM module’s memory configuration and whether to fit a module with an integrated (PCB) antenna, or one with a U.FL connector for use with an external 2.4GHz antenna. Students who chose this option will assemble their dev board during the soldering sessions, in addition to (or in lieu of) the standard soldering kit.
Custom ESP32-C6 Dev Board - $15
Supports 2.4GHz WiFi, Bluetooth 5, and Bluetooth LE
The ESP32-C6-WROOM-1-N8 module will be provided by default if none is specified
ESP32-C6 Support in PlatformIO is unstable right now.
This lack of support isn't something we can change; it's due to a lack of support in PlatformIO for newer ESP32 MCUs, which may or may not be resolved someday in the future. You can read more about the situation between PlatformIO and Espressif (who make the ESP32) here.
For a plug and play option, you can still use the Arduino IDE:
If you haven't already, install the Arduino-ESP32 board support package (install instructions here) for the Arduino IDE.
In a new project go to Tools > board > esp32 and select ESP32C6 Dev Module. These settings (in the Tools menu) should work.
Note: Currently, there is no direct support for our dev board (because it's custom made); but using the generic Dev Module will work for compiling your code, but you won't be able to type pin names like the ones you see on the dev board.
Instead, you will have to declare pins by their GPIO number on the module; to find which pin on your dev board corresponds to which GPIO number, consult the pinout diagram on the ESP32 Dev board datasheet (linked above).
Alternatively, if you want to go down a development toolchain rabbit hole, you can try using this fork of arduinoesp32 for PlatformIO in VSCode instead of using the Arduino IDE (in addition to PlatformIO). If you get it working, speak to Will and you can help us update the instructions here on how to get it working.
CAD Files:
Custom ESP32-C5 Dev Board (WiFi + Bluetooth LE, very new; released 30 Jul 2025) - $20
Unavailable in Fall 2025 due to unreliable sourcing. If you can source your own ESP32-C5-WROOM-1 module (double check with us first before ordering), we will provide you with the dev board and peripheral components at a reduced cost.
This is by far one of our most popular dev board options, centered around the ESP32-S3, a well-rounded MCU with excellent processing power, acceptable low-power options, and quite a few fancy peripherals.
You can learn about the features available on this development board from its datasheet here
These boards use a custom PCB developed by the OPS Team which is fitted with an ESP32-S3 WROOM module. The board also features a built in 1S LiPo/LiIon battery management circuit (including USB-C charging and battery level check circuit), two user LEDs, and three buttons (one is reset). For these boards, you may choose the WROOM module’s memory configuration and whether to fit a module with an integrated (PCB) antenna, or one with a U.FL connector for use with an external 2.4GHz antenna. Students who chose this option will assemble their dev board during the soldering sessions, in addition to (or in lieu of) the standard soldering kit.
Custom ESP32-S3 Dev Board (WiFi + Bluetooth LE) - $15
The ESP32-S3-WROOM-1-N16R2 module will be provided by default if none is specified
ESP32-S3 Board support files for PlatformIO can be found here
To install: First, create a project using any esp32 board with the Arduino framework (this causes PlatformIO to download the initial ESP32 dependencies; you only need to do so once). After you've created that project, you may delete it. Next, copy the board support files into your .platformio directory. Now you should be able to find and select the IEEE OPS2 ESP32 Dev Board when you create new projects.
The demo program that came pre-loaded on your dev board is also included in this download.
KiCAD Project Archive:
Board Version 1.0 (Unarchive zip in KiCAD home to open)
CAD Files:
STM32 Nucleo F446RE (STM32F446RE) - $15
This is near the higher-end of the STM32F series of MCUs; it's targeted at high-performance applications while still balancing reasonable power-usage
Board Pinout: https://os.mbed.com/platforms/ST-Nucleo-F446RE/
Board schematic diagram: https://www.st.com/resource/en/schematic_pack/mb1136-default-c04_schematic.pdf
LD3 on = 5V power present (MCU is regulated down to 3.3V)
All logic is 3.3V, MCU pins ARE NOT 5V tolerant
JP5 jumper selects between USB 5V source (U5V side) and external (E5V side) source (6-15V into VIN pin)
USER button is Arduino pin 23 (PC_13 on MCU)
LD2 LED is Arduino pin 13 (PA_5 on MCU)
Teensy 4.0/4.1 - $25/$30
Teensy 4 uses an obscenely fast Arm Cortex M7 microcontroller running at 600MHz (overclockable up to 900MHz). It is by far the fastest option available for OPS2 in terms of sheer processing speed, at the cost of much higher power consumption (100mA at minimum; not the best for battery-powered projects)
4.0 and 4.1 use a nearly identical MCU, however the 4.0 is on a more compact board with fewer pins and the MCU has less flash memory. The 4.1 has more pins available and an on-board Micro SD slot
Your board choice must approved in advance; if you want to use your own, contact an OPS Lead and let them know what board it is.
No basic Arduinos will be allowed (e.g., Nano / Uno / Mega). Their processors are too limited for our project needs, and we expect you to get out of your comfort zone in OPS 2.
If you have previously completed ECE 306, you may use your MSP430 LaunchPad. You may not use it if you are currently enrolled in 306.
Students using the MSP430 will be expected to resolve any programming or software issues on their own, as the course IDE (PlatformIO) does not fully support the MSP430FR2355