MakerLab
Raspberry PiRaspberry Pi Compute Module 1

Raspberry Pi Compute Module 1: A Deep Dive for Embedded Makers

The original Compute Module, offering a compact and flexible System-on-Module for embedded projects.

Raspberry Pi Compute Module 1

The Raspberry Pi Compute Module 1 (CM1) is a foundational product in the Raspberry Pi Compute Module line, released in 2014. It's designed for industrial applications and embedded systems where a standard Raspberry Pi board's form factor or fixed interfaces are not suitable. Instead of a ready-to-use board with ports, CM1 is a SODIMM-style module containing the core components of a Raspberry Pi: the processor, RAM, and flash storage. This design allows developers to integrate the Raspberry Pi's processing power into custom PCB designs, providing flexibility in hardware layout and peripheral selection.

At the heart of the Compute Module 1 is the Broadcom BCM2835 System-on-Chip (SoC). This is the same capable processor found in early Raspberry Pi models like the original Model B and the Pi A+. The BCM2835 is an ARMv6-based chip, featuring a single-core 32-bit ARM processor clocked at 700MHz. While not as powerful as later Raspberry Pi SoCs, it offers sufficient performance for a wide range of embedded tasks, including sensor data acquisition, control loops, and basic user interface management. The SoC also integrates graphics processing capabilities and essential I/O controllers.

The CM1 is particularly suited for makers and engineers who need to build custom hardware around the Raspberry Pi ecosystem. It's ideal for projects requiring a small footprint, specific I/O configurations, or integration into existing product designs. Unlike the standard Raspberry Pi boards, the CM1 requires a 'carrier board' to provide power, USB ports, HDMI output, and access to its GPIO pins. This separation of the core computing unit from the I/O board makes it a versatile solution for mass production and specialized applications where cost and form factor are critical considerations.

Watch

Related video, embedded from YouTube.

Specifications

Microcontroller / SoCBroadcom BCM2835
Architecture32-bit ARMv6
Clock speed700 MHz
Flash / Storage1GB eMMC (on module)
RAM / SRAM512MB DDR2 RAM
Operating voltage3.3V
Digital I/O pins26 GPIO (exposed via SODIMM connector)
Analog / ADCโ€”
PWMYes (via GPIO)
ConnectivityGigabit Ethernet (via carrier board), Wi-Fi/Bluetooth (via carrier board module)
USBUSB 2.0 (via carrier board)
Power input5V DC (via carrier board)
Dimensions67.6mm x 30mm

Pinout & pin functions

PinFunction
VCC (3.3V)Power output (3.3V)
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 (SPI MOSI)
GPIO11General Purpose Input/Output 11 (SPI SCLK)
GPIO12General Purpose Input/Output 12
GPIO13General Purpose Input/Output 13 (SPI MISO)
GPIO14General Purpose Input/Output 14 (UART TX)
GPIO15General Purpose Input/Output 15 (UART RX)
GPIO16General Purpose Input/Output 16
GPIO17General Purpose Input/Output 17
GPIO18General Purpose Input/Output 18 (PWM)
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
I2C SDAI2C Data (GPIO2)
I2C SCLI2C Clock (GPIO3)
SPI CSSPI Chip Select (GPIO8)
SPI MOSISPI Master Out Slave In (GPIO10)
SPI MISOSPI Master In Slave Out (GPIO13)
SPI SCLKSPI Serial Clock (GPIO11)
UART TXUART Transmit (GPIO14)
UART RXUART Receive (GPIO15)

Wiring & circuit basics

Powering the Compute Module 1 requires a stable 5V DC supply connected to the carrier board. The CM1 module itself operates at 3.3V, and the carrier board typically includes voltage regulators to provide this. Ensure the power supply can provide sufficient current, especially if using peripherals that draw significant power. A typical requirement might be 2A or more for the entire system. Incorrect voltage or insufficient current can lead to instability or damage. Always refer to the carrier board's documentation for specific power requirements.

The logic level for GPIO pins on the Compute Module 1 is 3.3V. This means you should not directly connect 5V signals to any GPIO pin, as this can damage the SoC. If you need to interface with 5V devices, use a logic level shifter or a voltage divider circuit. For example, to connect an LED to a GPIO pin, you would connect the GPIO pin to a current-limiting resistor (e.g., 220-330 ohms) and then to the LED's anode, with the LED's cathode connected to ground. This limits the current flowing through the LED and protects the GPIO pin.

When connecting I2C devices, which operate at 3.3V, you will typically use the dedicated I2C pins (SDA and SCL) or any general-purpose GPIO pins configured as I2C. For instance, to connect an I2C temperature sensor like the BMP180, you would connect its VCC to a 3.3V pin, its GND to a ground pin, its SDA to the CM1's I2C SDA pin (GPIO2), and its SCL to the CM1's I2C SCL pin (GPIO3). Ensure that the sensor's operating voltage is compatible with 3.3V.

Programming & getting started

The Compute Module 1, running Raspberry Pi OS (formerly Raspbian), is primarily programmed using standard Linux development tools and languages. While it doesn't natively support the Arduino IDE in the same way an Arduino board does, you can use PlatformIO within VS Code for a more integrated development experience, or compile C/C++ code directly using GCC. For Python development, you can use standard Python libraries to control GPIO and other peripherals. The initial setup involves flashing Raspberry Pi OS onto the eMMC storage of the CM1 via its carrier board, and then accessing the system via SSH or a connected monitor and keyboard.

To upload your first program, after setting up Raspberry Pi OS on the CM1, you would typically write your code (e.g., a Python script to blink an LED) on a separate computer or directly on the CM1. For Python, you can use libraries like RPi.GPIO or GPIO Zero. The process involves saving the script (e.g., blink.py) and then executing it from the terminal using `python blink.py`. If using PlatformIO, you would build and upload the project from the PlatformIO interface, which handles the compilation and transfer to the CM1.

Project ideas

Custom IoT GatewayBuild a small, embedded gateway that collects data from various sensors via I2C or SPI and forwards it over Ethernet or Wi-Fi. This project leverages the CM1's processing power and flexible I/O for a dedicated network appliance.
Industrial Data LoggerCreate a robust data logging system for harsh environments. The CM1's industrial form factor and eMMC storage are suitable for continuous data recording, with data accessed via a web interface.
Embedded Media PlayerDevelop a compact media player for digital signage or kiosks. The CM1's multimedia capabilities can be utilized to display images or videos, controlled via GPIO or a simple user interface.
Robotics Control ModuleUse the CM1 as the brain for a custom robot. Its GPIO pins can control motors via motor drivers, read encoder feedback, and manage sensor inputs, all while running complex navigation algorithms.
Retro Gaming ConsoleIntegrate the CM1 into a custom arcade cabinet or handheld device to emulate classic video games. This showcases the CM1's ability to run a full Linux OS and handle graphical output.
Smart Home HubDesign a central controller for a smart home system, managing various devices and communication protocols. The CM1's processing power and network connectivity make it ideal for orchestrating multiple smart home components.

Buying tips & gotchas

When purchasing a Raspberry Pi Compute Module 1, be aware that it is an older model and may be harder to find new. Look for reputable suppliers or used markets, but be cautious of counterfeit modules. Ensure you also acquire a compatible carrier board, as the CM1 is unusable without one. The carrier board is crucial for providing power, USB, HDMI, and access to the SODIMM connector. Accessories like Wi-Fi/Bluetooth modules, if not integrated into the carrier board, will also be necessary for wireless connectivity. Due to its age, software support might be limited to older versions of Raspberry Pi OS and related libraries.