MakerLab
Raspberry PiRaspberry Pi Compute Module 3

Raspberry Pi Compute Module 3: Powerful Embedded Computing

A compact, industrial-grade module offering Raspberry Pi 3 performance for custom embedded designs.

Raspberry Pi Compute Module 3

The Raspberry Pi Compute Module 3 (CM3) is a versatile, SODIMM-form-factor system-on-module (SoM) designed for embedding the power of a Raspberry Pi into custom hardware. Unlike the familiar credit-card-sized Raspberry Pi boards, the CM3 is intended to be integrated onto a carrier board, which provides the necessary connectors and peripherals for interaction. This approach allows engineers and makers to design compact, specialized products while leveraging the extensive software ecosystem and processing power of the Raspberry Pi.

At its core, the CM3 utilizes the Broadcom BCM2837 System-on-Chip (SoC), the same powerful processor found in the popular Raspberry Pi 3 Model B. This quad-core 64-bit ARM Cortex-A53 processor, clocked at 1.2GHz, provides ample computational resources for demanding tasks, making the CM3 suitable for applications ranging from industrial control and IoT gateways to advanced robotics and multimedia systems. It represents a significant step up in performance from earlier Compute Modules.

Released in early 2017, the CM3 sits between the original Compute Module and the later Compute Module 4 in Raspberry Pi's product line. It was designed to offer a more powerful and flexible alternative for developers who needed more processing power than the original CM1 but didn't require the extensive I/O of the full Raspberry Pi 3 board. Its SODIMM form factor is reminiscent of laptop RAM modules, facilitating easy integration into custom PCBs. This makes it an excellent choice for projects requiring a robust, embedded Linux environment in a small footprint.

The CM3 is particularly well-suited for makers and embedded engineers looking to create production-ready devices or advanced prototypes where space is constrained and a full Raspberry Pi board is impractical. Its industrial design and reliance on a carrier board make it ideal for long-term deployment in embedded systems. While it requires a bit more effort to set up than a standard Raspberry Pi due to the need for a carrier board, the flexibility and power it offers are invaluable for serious embedded projects.

Watch

Related video, embedded from YouTube.

Specifications

Microcontroller / SoCBroadcom BCM2837
ArchitectureQuad-core 64-bit ARM Cortex-A53
Clock speed1.2GHz
Flash / StorageOn-board eMMC flash memory (available in 8GB and 16GB variants for CM3+, CM3 has no on-board eMMC, relies on SD card via carrier board)
RAM / SRAM1GB LPDDR2 SDRAM
Operating voltage3.3V
Digital I/O pinsUp to 54 GPIO pins (depending on carrier board implementation)
Analog / ADCโ€”
PWMYes (via GPIO)
ConnectivityGigabit Ethernet (via carrier board), Wi-Fi and Bluetooth (via external module on carrier board)
USBUSB 2.0 (via carrier board)
Power inputTypically 5V via carrier board
Dimensions67.6mm x 31.3mm (SODIMM form factor)

Pinout & pin functions

PinFunction
VCC (3.3V)Power supply input
GNDGround
GPIO0General Purpose Input/Output 0
GPIO1General Purpose Input/Output 1
GPIO2General Purpose Input/Output 2
GPIO3General Purpose Input/Output 3
GPIO4General Purpose Input/Output 4
GPIO5General Purpose Input/Output 5
GPIO6General Purpose Input/Output 6
GPIO7General Purpose Input/Output 7
GPIO8General Purpose Input/Output 8
GPIO9General Purpose Input/Output 9
GPIO10General Purpose Input/Output 10
GPIO11General Purpose Input/Output 11
GPIO12General Purpose Input/Output 12
GPIO13General Purpose Input/Output 13
GPIO14General Purpose Input/Output 14 (UART0 TX)
GPIO15General Purpose Input/Output 15 (UART0 RX)
GPIO16General Purpose Input/Output 16
GPIO17General Purpose Input/Output 17
GPIO18General Purpose Input/Output 18 (PWM0)
GPIO19General Purpose Input/Output 19
GPIO20General Purpose Input/Output 20
GPIO21General Purpose Input/Output 21
GPIO22General Purpose Input/Output 22
GPIO23General Purpose Input/Output 23
GPIO24General Purpose Input/Output 24
GPIO25General Purpose Input/Output 25
GPIO26General Purpose Input/Output 26
GPIO27General Purpose Input/Output 27
GPIO28General Purpose Input/Output 28
GPIO29General Purpose Input/Output 29
GPIO30General Purpose Input/Output 30
GPIO31General Purpose Input/Output 31
GPIO32General Purpose Input/Output 32
GPIO33General Purpose Input/Output 33
GPIO34General Purpose Input/Output 34
GPIO35General Purpose Input/Output 35
GPIO36General Purpose Input/Output 36
GPIO37General Purpose Input/Output 37
GPIO38General Purpose Input/Output 38
GPIO39General Purpose Input/Output 39
SPI MOSISPI Master Out Slave In
SPI MISOSPI Master In Slave Out
SPI SCLKSPI Clock
SPI CE0SPI Chip Enable 0
SPI CE1SPI Chip Enable 1
I2C SCLI2C Clock
I2C SDAI2C Data
UART1 TXUART1 Transmit
UART1 RXUART1 Receive
RUNSystem reset pin
SD_CMDSD Card Command
SD_DATA0SD Card Data 0
SD_DATA1SD Card Data 1
SD_DATA2SD Card Data 2
SD_DATA3SD Card Data 3
SD_CLKSD Card Clock

Wiring & circuit basics

Powering the Compute Module 3 requires a stable 5V supply, typically provided by a carrier board. The CM3 itself operates at 3.3V logic levels, so any external components connected to its GPIO pins must also be compatible or use level shifting. It's crucial to ensure the power supply can provide sufficient current for the CM3 and any attached peripherals; a common recommendation is at least 2.5A for the 5V rail to handle peak loads. Incorrect voltage or unstable power can lead to erratic behavior or permanent damage.

The Compute Module 3 exposes a rich set of GPIO pins, alongside dedicated interfaces like I2C, SPI, and UART. For instance, to blink an LED, you would connect an LED (with an appropriate current-limiting resistor, typically 220-330 ohms) between a chosen GPIO pin (e.g., GPIO17) and ground. The GPIO pin would be configured as an output in software, toggled high to turn the LED on and low to turn it off. This simple setup demonstrates the fundamental interaction with digital outputs.

Connecting an I2C sensor, such as a BME280 environmental sensor, involves wiring its SDA pin to the CM3's I2C SDA pin (e.g., GPIO2) and its SCL pin to the CM3's I2C SCL pin (e.g., GPIO3). The sensor also requires VCC (3.3V) and GND connections. The CM3's I2C interface can then be used to communicate with the sensor to read temperature, humidity, and pressure data. Always consult the datasheets for both the CM3's carrier board and the peripheral device for correct pin assignments and voltage requirements.

Programming & getting started

The Raspberry Pi Compute Module 3 primarily runs embedded Linux distributions, most commonly Raspberry Pi OS (formerly Raspbian). This allows for a wide range of programming languages and tools, including Python (with libraries like RPi.GPIO or gpiozero), C/C++ (using the WiringPi library or direct system calls), and Node.js. For flashing the operating system and applications, you typically need a carrier board with an SD card slot or eMMC interface. The initial setup involves preparing an SD card with Raspberry Pi OS using tools like Raspberry Pi Imager, inserting it into the carrier board, and powering on the CM3.

For more bare-metal or real-time applications, developers might consider using frameworks like Zephyr RTOS or even attempting to port MicroPython, although this is significantly more complex than on dedicated microcontroller boards. The standard approach for most makers and embedded engineers is to develop applications on a running Raspberry Pi OS instance on the CM3, leveraging its full Linux capabilities. Remote access via SSH is common for development and deployment.

Project ideas

Industrial IoT GatewayBuild a robust gateway that collects data from various sensors using I2C, SPI, and UART interfaces, processes it locally, and transmits it wirelessly via Wi-Fi or Ethernet. This project leverages the CM3's processing power and Linux environment for data aggregation and network communication.
Custom Robotics ControllerDesign a compact robot brain using the CM3 on a custom carrier board. Utilize GPIOs for motor control (PWM), read encoders via digital inputs, and interface with sensors like cameras or LIDAR via USB or CSI. This project explores real-time control and sensor fusion.
Embedded Media PlayerCreate a dedicated media player for digital signage or kiosks. The CM3's powerful ARM cores can handle video decoding, and its HDMI output (via carrier board) allows for display. Projects can involve custom enclosures and user interfaces controlled via GPIO or touchscreens.
Network Attached Storage (NAS)Develop a small, low-power NAS device by connecting SATA drives via a USB-to-SATA adapter on the carrier board. Raspberry Pi OS provides the file-sharing protocols (Samba, NFS), making the CM3 a capable server for home or small office use.
Smart Home HubIntegrate the CM3 into a custom smart home controller. Use its extensive I/O to communicate with various smart home devices (Zigbee, Z-Wave via USB dongles, Wi-Fi devices) and manage them through a web interface or mobile app.
High-Performance Data LoggerLog data from multiple high-speed sensors, such as accelerometers or audio inputs, at high sample rates. The CM3's processing power and ability to run Linux allow for complex data acquisition, buffering, and analysis.

Buying tips & gotchas

When purchasing the Compute Module 3, ensure you also acquire a suitable carrier board, as the CM3 itself has no standard connectors. The official Compute Module IO Board is a good starting point for development. Be aware of the difference between the CM3 and the later CM3+, which offers on-board eMMC flash storage options, simplifying storage management. Also, watch out for third-party carrier boards; verify their compatibility and feature set. For reliable operation, use a high-quality 5V power supply with adequate current capacity. Remember that the CM3 uses 3.3V logic, so interfacing with 5V components requires level shifters.