MakerLab
ArduinoArduino Portenta H7

Arduino Portenta H7: Dual-Core Powerhouse for Advanced Embedded Projects

The Arduino Portenta H7 is a high-performance development board featuring a dual-core STM32H747XI microcontroller, designed for demanding industrial and advanced maker applications.

Arduino Portenta H7

The Arduino Portenta H7 is a significant leap forward in the Arduino family, targeting professional developers, advanced makers, and embedded engineers who require substantial processing power and flexibility. Released around 2020, it bridges the gap between hobbyist boards and industrial-grade embedded systems. Its robust design and powerful dual-core processor make it suitable for complex tasks such as real-time control, machine learning at the edge, and advanced sensor fusion.

At the heart of the Portenta H7 is the STMicroelectronics STM32H747XI System-on-Chip (SoC). This powerful microcontroller boasts two ARM Cortex-M7 and Cortex-M4 cores, allowing for parallel processing and dedicated task management. The Cortex-M7 core runs at up to 480 MHz for high-performance computing, while the Cortex-M4 core, running at up to 240 MHz, is ideal for real-time signal processing and sensor management. This dual-core architecture enables sophisticated applications that might otherwise require a more complex embedded Linux system.

The Portenta H7 is positioned as a high-end board within the Arduino ecosystem, offering capabilities far beyond typical Arduino boards. It's designed to run complex software, including real-time operating systems (RTOS) like FreeRTOS, and can even host a Linux environment via an optional carrier board. This makes it an excellent choice for projects requiring low latency, high throughput, and advanced connectivity, such as industrial automation, robotics, advanced IoT devices, and edge AI applications. Its rugged design and wide operating temperature range also make it suitable for harsher environments.

Watch

Related video, embedded from YouTube.

Specifications

Microcontroller / SoCSTMicroelectronics STM32H747XI
ArchitectureDual-core: 1x ARM Cortex-M7 @ 480 MHz, 1x ARM Cortex-M4 @ 240 MHz
Clock speedUp to 480 MHz (M7 core)
Flash / Storage1MB Flash memory
RAM / SRAM320 KB SRAM
Operating voltage3.3V
Digital I/O pins50+ GPIOs available
Analog / ADC16-bit Analog-to-Digital Converters (ADCs)
PWMMultiple hardware PWM channels
ConnectivityWi-Fi 802.11n, Bluetooth 5.0, Ethernet (via expansion), CAN bus, RS485 (via expansion)
USB1x USB-C (for power and programming), 1x USB Host
Power input5V via USB-C, or 7-24V via VIN pin
Dimensions66.0mm x 25.0mm

Pinout & pin functions

PinFunction
3V33.3V power output
GNDGround
VINInput voltage (7-24V)
VBATBattery input (for RTC backup)
NRSTReset pin
BOOT0Boot mode selection
D0 (RX1)UART1 RX
D1 (TX1)UART1 TX
D2GPIO
D3GPIO
D4GPIO
D5GPIO, PWM capable
D6GPIO, PWM capable
D7GPIO
D8GPIO
D9GPIO, PWM capable
D10GPIO, PWM capable
D11GPIO, PWM capable
D12GPIO, PWM capable
D13GPIO, PWM capable
D14 (SCL)I2C1 SCL
D15 (SDA)I2C1 SDA
A0Analog Input, ADC capable
A1Analog Input, ADC capable
A2Analog Input, ADC capable
A3Analog Input, ADC capable
A4Analog Input, ADC capable
A5Analog Input, ADC capable
A6Analog Input, ADC capable
A7Analog Input, ADC capable
SPI1 MOSISPI1 MOSI
SPI1 MISOSPI1 MISO
SPI1 SCKSPI1 SCK
SPI1 CSSPI1 Chip Select
I2C3 SCLI2C3 SCL
I2C3 SDAI2C3 SDA
CAN_HCAN Bus High
CAN_LCAN Bus Low
ETH_TXD0Ethernet TX Data 0
ETH_TXD1Ethernet TX Data 1
ETH_TX_ENEthernet TX Enable
ETH_RXD0Ethernet RX Data 0
ETH_RXD1Ethernet RX Data 1
ETH_RX_DVEthernet RX Data Valid
ETH_CRS_DVEthernet Carrier Sense / Receive Data Valid
ETH_MDIOEthernet MDIO
ETH_MDCEthernet MDC
USB_DMUSB Data Minus
USB_DPUSB Data Plus

Wiring & circuit basics

The Arduino Portenta H7 operates at a logic level of 3.3V. Connecting 5V devices directly to its GPIO pins can cause permanent damage. If you need to interface with 5V logic components, a level shifter is essential. Powering the board can be done via the USB-C port (5V) or through the VIN pin, which accepts a wider range of input voltages (typically 7-24V). The VIN pin is connected to an onboard voltage regulator that steps down the voltage to the required 3.3V for the microcontroller and other components. Ensure your power supply can provide sufficient current, especially if using peripherals that draw significant power.

When connecting external components, always observe the logic level compatibility. For example, to connect an LED, use a current-limiting resistor (typically 220-330 ohms for standard LEDs) in series with the LED and connect it to a 3.3V GPIO pin. The other end of the LED connects to the resistor, and the other end of the resistor connects to GND. If you're connecting an I2C sensor, such as a BME280, you'll typically use the SDA and SCL pins (e.g., D15 and D14). These pins are also connected to pull-up resistors, which are necessary for I2C communication. Ensure the sensor's operating voltage is compatible with 3.3V or use a level shifter if it's a 5V device.

For more complex peripherals like SPI devices, ensure you connect the MOSI, MISO, SCK, and CS pins correctly. The Portenta H7 also features CAN bus and Ethernet interfaces, which require specific wiring and potentially external transceivers or PHYs depending on the application. Always consult the Portenta H7's official documentation and the datasheets of your external components to ensure correct and safe wiring.

Programming & getting started

The Arduino Portenta H7 can be programmed using the Arduino IDE, which supports the board through an additional board manager URL. You'll need to install the Portenta H7 board support package. For more advanced development, PlatformIO, a popular IDE for embedded development, offers excellent support for the STM32 family, including the Portenta H7. MicroPython and CircuitPython are also viable options, offering a Python-based development environment that can be easier for rapid prototyping. To upload your first sketch (e.g., a simple Blink example), connect the Portenta H7 via USB-C to your computer, select the correct board and port in your IDE, and click the upload button. The board typically enters bootloader mode automatically for flashing.

For bare-metal or RTOS-based development, the STM32CubeIDE from STMicroelectronics is a powerful option, providing a full development suite including configuration tools, compilers, and debuggers. The dual-core nature of the STM32H747XI means you can develop applications that leverage both cores independently or cooperatively, often managed by an RTOS. Debugging can be performed using the onboard USB-serial interface or through dedicated SWD/JTAG connectors if available on expansion boards.

Project ideas

Real-time Industrial Control SystemDevelop a system to monitor and control industrial machinery using the Portenta H7's high-speed processing and robust connectivity options like CAN bus. This project teaches real-time operating systems, industrial communication protocols, and sensor integration.
Edge AI for Predictive MaintenanceImplement a machine learning model on the Portenta H7 to analyze sensor data (vibration, temperature) from machinery and predict potential failures. This project leverages the dual cores for data acquisition and ML inference, teaching embedded ML and sensor fusion.
Advanced Robotics PlatformBuild a sophisticated robot using the Portenta H7 as the central controller. Utilize its multiple PWM outputs for motor control, ADC inputs for sensor feedback, and high-speed communication interfaces for navigation and perception modules. This project explores motor control, sensor integration, and complex system architecture.
High-Frequency Data LoggerCreate a high-speed data logger capable of capturing and processing data from multiple sensors simultaneously. The Portenta H7's powerful cores and ample RAM allow for high sampling rates and complex data analysis in real-time, teaching advanced data acquisition techniques.
Secure IoT GatewayDevelop a secure gateway that aggregates data from various IoT devices using different protocols (e.g., I2C, SPI, UART) and securely transmits it to the cloud via Wi-Fi or Ethernet. This project focuses on secure communication, network protocols, and device management.
Audio Processing and AnalysisUtilize the Portenta H7's processing power for real-time audio analysis, such as noise cancellation or voice command recognition. This project requires understanding audio codecs, digital signal processing, and efficient use of the M4 core for signal processing tasks.

Buying tips & gotchas

When purchasing the Arduino Portenta H7, ensure you are buying from reputable vendors to avoid counterfeit or faulty boards. The board is designed for demanding applications, so consider accessories like the Portenta Expansion Shield for easier prototyping and access to more interfaces, or a suitable enclosure for industrial deployment. Be mindful of the 3.3V logic level; using 5V components without proper level shifting is a common mistake that can damage the board. Also, explore the official Arduino documentation and community forums for specific libraries and examples tailored to the Portenta H7's advanced features.