MakerLab
ArduinoArduino Portenta C33

Arduino Portenta C33: Your Gateway to Advanced Embedded Projects

A powerful and versatile microcontroller board designed for IoT and embedded applications, featuring Wi-Fi and Bluetooth connectivity.

Arduino Portenta C33

The Arduino Portenta C33 is a robust and feature-rich development board designed for professional makers, students, and embedded engineers looking to build sophisticated IoT and embedded systems. It bridges the gap between hobbyist-friendly platforms and industrial-grade solutions, offering a compelling blend of performance, connectivity, and ease of use.

At the heart of the Portenta C33 is the NXP i.MX RT1176, a high-performance crossover microcontroller. This SoC combines the real-time capabilities of a microcontroller with the high processing power typically found in application processors. It features a dual-core architecture: a 1GHz Arm Cortex-M7 core for demanding tasks and a 400MHz Arm Cortex-M4 core for real-time control and low-power operations. This dual-core design allows for efficient multitasking and optimized performance for complex applications.

Positioned within the Portenta family, the C33 offers a more accessible entry point compared to its higher-end siblings like the Portenta H7, while still providing significant processing power and integrated wireless connectivity. It's an ideal choice for projects requiring reliable wireless communication, advanced sensor processing, and the ability to run complex algorithms, making it suitable for applications in industrial automation, smart agriculture, robotics, and advanced consumer electronics.

The board's design emphasizes flexibility and industrial robustness, making it suitable for both prototyping and deployment in real-world scenarios. Its integrated Wi-Fi and Bluetooth capabilities simplify the development of connected devices, reducing the need for external modules and streamlining the design process. The Portenta C33 is for makers who need more than a basic microcontroller but don't necessarily require a full-fledged Linux-based single-board computer.

Watch

Related video, embedded from YouTube.

Specifications

Microcontroller / SoCNXP i.MX RT1176
ArchitectureDual-core: 1GHz Arm Cortex-M7 + 400MHz Arm Cortex-M4
Clock speedUp to 1GHz (Cortex-M7), Up to 400MHz (Cortex-M4)
Flash / Storage16MB Quad-SPI Flash
RAM / SRAM8MB SDRAM
Operating voltage3.3V
Digital I/O pins27 (configurable)
Analog / ADCUp to 12 ADC channels (16-bit)
PWMMultiple PWM channels available on various GPIOs
ConnectivityWi-Fi 802.11b/g/n, Bluetooth 5.0
USB1x USB-C (for power and programming), 1x USB Host (Type-A)
Power input5V via USB-C or VIN pin
Dimensions67.6mm x 25mm

Pinout & pin functions

PinFunction
3V3Power output (3.3V)
GNDGround
VINPower input (5V)
RESETSystem reset
BOOTBoot mode selection
D0 / RX1Serial 1 RX
D1 / TX1Serial 1 TX
D2GPIO
D3GPIO
D4GPIO
D5GPIO
D6GPIO
D7GPIO
D8GPIO
D9GPIO
D10 / SS1SPI 1 Slave Select
D11 / MOSI1SPI 1 MOSI
D12 / MISO1SPI 1 MISO
D13 / SCK1SPI 1 SCK
D14 / SDAI2C SDA
D15 / SCLI2C SCL
D16GPIO
D17GPIO
D18 / TX2Serial 2 TX
D19 / RX2Serial 2 RX
A0Analog Input (ADC)
A1Analog Input (ADC)
A2Analog Input (ADC)
A3Analog Input (ADC)
A4Analog Input (ADC)
A5Analog Input (ADC)
USB_DPUSB Data Plus
USB_DMUSB Data Minus

Wiring & circuit basics

The Arduino Portenta C33 operates at a logic level of 3.3V. When connecting external components, it is crucial to ensure compatibility. Connecting 5V devices directly to 3.3V GPIO pins may cause damage. For components requiring 5V logic, a level shifter is recommended. Powering the board can be done via the USB-C port or the VIN pin, which accepts a 5V input. The onboard voltage regulators will step this down to the necessary 3.3V for the microcontroller and peripherals.

When powering the board, ensure your power supply can provide at least 1A, especially if utilizing the Wi-Fi or Bluetooth features, or if connecting power-hungry peripherals. Avoid exceeding the 5V limit on the VIN pin. Always connect ground (GND) pins together between the Portenta C33 and any external modules to establish a common reference voltage.

For a basic LED circuit, connect a digital GPIO pin (e.g., D2) through a current-limiting resistor (typically 220-330 ohms) to an LED's anode, and connect the LED's cathode to a GND pin. For an I2C sensor, connect the sensor's SDA pin to the Portenta's D14 (SDA) pin, the sensor's SCL pin to the Portenta's D15 (SCL) pin, the sensor's VCC to the 3V3 pin, and the sensor's GND to the Portenta's GND pin. Remember to enable the internal pull-up resistors for I2C communication if the sensor does not have them.

Programming & getting started

The Arduino Portenta C33 can be programmed using the Arduino IDE, which offers a familiar environment for many makers. To get started, ensure you have the latest version of the Arduino IDE installed and add the Portenta board support via the Board Manager. You can also leverage more advanced toolchains like PlatformIO, which integrates with various IDEs and offers robust build management and debugging capabilities. For bare-metal development or RTOS integration, the NXP SDK and ESP-IDF can also be utilized.

To upload your first sketch, connect the Portenta C33 to your computer via the USB-C port. Select the 'Arduino Portenta C33' from the Boards menu in the Arduino IDE, choose the correct COM port, and upload your sketch. The board will automatically enter bootloader mode for flashing. For a simple 'Blink' example, you would typically use a digital pin connected to an LED and toggle it within the loop function.

Project ideas

Wi-Fi Connected Environmental MonitorBuild a device that reads temperature, humidity, and air quality sensors and sends the data wirelessly via Wi-Fi to a cloud platform or local server. Uses ADC pins for sensors, digital pins for communication, and the onboard Wi-Fi module.
Bluetooth Low Energy (BLE) Sensor NodeCreate a battery-powered sensor node that transmits environmental data using BLE. Ideal for low-power applications where frequent updates are not required. Utilizes BLE capabilities and ADC pins.
Real-time Motor Control SystemDevelop a system for precise motor control using PWM outputs and encoder feedback. The dual-core processor allows one core to handle high-frequency PWM generation and encoder reading while the other manages higher-level logic.
Local Networked Data LoggerDesign a system to log data from multiple sensors (e.g., I2C, SPI) and store it locally on an SD card (requires an additional module) or send it over Ethernet (requires an adapter). Focuses on robust data acquisition and local storage.
Edge AI Inference for Simple TasksImplement a basic machine learning model for tasks like keyword spotting or simple gesture recognition using the powerful Cortex-M7 core. Requires careful model optimization for the microcontroller environment.
Smart Home Automation HubCreate a central hub that communicates with various smart home devices using Wi-Fi and Bluetooth, acting as a bridge between different protocols or as a local control interface.

Buying tips & gotchas

When purchasing the Arduino Portenta C33, ensure you are buying from an authorized distributor to avoid counterfeit products, which may have unreliable performance or lack proper certification. Be mindful of the 3.3V logic level; always use level shifters when interfacing with 5V components. The board's power consumption can be significant when Wi-Fi is active, so consider power management strategies for battery-powered projects. Accessories like the Portenta C33 expansion shields can add further functionality such as Ethernet, CAN bus, or additional sensor interfaces.