|
| 1 | +--- |
| 2 | +layout: post |
| 3 | +title: Designing a CM5 Carrier Board - A Practical Guide for Makers and Engineers |
| 4 | +date: 2025-04-06 18:51 |
| 5 | +category: Compute Module 5 |
| 6 | +tags: [raspberry_pi, cm5, carrier_board, guides] |
| 7 | +image: /assets/img/posts/2025-04-06-cm5-carrier-basics/thumb.png |
| 8 | + |
| 9 | +--- |
| 10 | + |
| 11 | +Creating a custom carrier board for the Raspberry Pi Compute Module 5 (CM5) can seem daunting—but with the right tools and best practices, it becomes a highly rewarding venture. Whether you're building a robot, a smart display, or an embedded controller, a well-designed carrier board ensures stability, reliability, and full access to CM5's features. |
| 12 | + |
| 13 | +In this post, we’ll walk through both high-level considerations and practical tips for building your own CM5 carrier board—based on real-world experience and community knowledge. |
| 14 | + |
| 15 | +--- |
| 16 | + |
| 17 | +## 🔧 Essential Resources to Get Started |
| 18 | + |
| 19 | +Before diving into schematics or layouts, gather these helpful files and templates: |
| 20 | + |
| 21 | +### ✅ Reference Files |
| 22 | +- **Raspberry Pi Official CM5 IO Board KiCad Files** |
| 23 | + [Download from Raspberry Pi](https://pip.raspberrypi.com/categories/1098-design-files) |
| 24 | + This gives you a solid reference for pinouts, layout, and component usage. |
| 25 | + |
| 26 | +- **Shawn Hymel’s CM4/CM5 Carrier Board Template** |
| 27 | + [GitHub Repo](https://github.com/ShawnHymel/rpi-cm4-carrier-template) |
| 28 | + Move the `hardware` folder into your KiCad base folder (usually in your Documents) for easy access. |
| 29 | + |
| 30 | +--- |
| 31 | + |
| 32 | +## 🧠 Schematic Tips & Best Practices |
| 33 | + |
| 34 | +- **Use Hierarchical Sheets** |
| 35 | + KiCad lets you split designs into multiple sub-sheets for clarity and modularity. Use **labels** (especially global labels) to connect signals between sheets reliably. |
| 36 | + |
| 37 | +- **Library Management** |
| 38 | + - When adding custom components (e.g., regulators, connectors), download both the symbol (`.lib`) and footprint (`.pretty`) from the manufacturer or Digi-Key. |
| 39 | + - Add these libraries via **Project > Manage Symbol Libraries** in KiCad. |
| 40 | + - Maintain naming consistency for smooth integration. |
| 41 | + |
| 42 | +- **Component Properties Matter** |
| 43 | + Update each part’s metadata (Manufacturer, MPN, Digi-Key/Mouser Part Number). These fields will be used when generating the Bill of Materials (BOM). |
| 44 | + _Tip: "Cut tape" is great for sourcing single units._ |
| 45 | + |
| 46 | +--- |
| 47 | + |
| 48 | +## ⚡ Electrical & Mechanical Design Considerations |
| 49 | + |
| 50 | +### 🪛 General Hardware |
| 51 | +- **Power Supply**: Provide 5.1V @ 5A via a VIN pin. |
| 52 | +- **Add a Power LED**: Simple, but valuable for diagnostics. |
| 53 | +- **Screw Mounts**: Include at least four mounting holes for mechanical stability. |
| 54 | + |
| 55 | +### 🔄 eMMC Boot Management |
| 56 | +To flash the CM5 when using onboard eMMC: |
| 57 | +- Add a **solder jumper between the `nBOOT` pin and GND** to disable eMMC boot. |
| 58 | +- This enables USB booting via the USB-C port—essential for headless devices. |
| 59 | + |
| 60 | +--- |
| 61 | + |
| 62 | +## 🧩 Interfaces to Expose |
| 63 | + |
| 64 | +| Interface | Pins | Notes | |
| 65 | +|----------|------|-------| |
| 66 | +| **I2C** | GPIO 2 (SDA), GPIO 3 (SCL) | Use pull-ups if needed | |
| 67 | +| **I2S** | GPIO 18, 19, 20, 21 | Audio in/out support | |
| 68 | +| **SPI** | GPIO 8, 10, 11, 25, 27 | Displays, sensors, Neopixels | |
| 69 | +| **UART** | GPIO 14 (TX), GPIO 15 (RX) | Connect GND to complete circuit | |
| 70 | +| **USB** | USB-C (programming), USB-A (peripherals) | One USB-A port is usually enough | |
| 71 | +| **Camera/Display** | CSI, DSI ports | Make both accessible | |
| 72 | +| **GPIO** | 40-pin header | For compatibility with Pi HATs | |
| 73 | + |
| 74 | +--- |
| 75 | + |
| 76 | +## 📏 Layout & Signal Integrity |
| 77 | + |
| 78 | +### 🧮 Net Class & Impedance |
| 79 | + |
| 80 | +- **Update Design Rules**: Set default track width and clearance to **0.2mm** to match the fine-pitch CM5 connector. |
| 81 | +- **USB Data Lines**: These require differential impedance. |
| 82 | + - Follow a **coupled microstrip line** design. |
| 83 | + - Use tools or calculators (like Saturn PCB) to determine trace width/gap. |
| 84 | + - Create a dedicated **Net Class** in KiCad for USB differential pairs (D+ and D−). |
| 85 | + |
| 86 | +👉 For more detail, check: |
| 87 | +[Octavo Systems USB Design Tutorial](https://octavosystems.com/app_notes/osd335x-design-tutorial/osd335x-lesson-2-minimal-linux-boot/osd335x-lesson-2-usb-circuitry/) |
| 88 | +[Shawn Hymel’s CM4 Design Video Series](https://www.youtube.com/c/ShawnHymel) |
| 89 | + |
| 90 | +### 📌 Additional Layout Tips |
| 91 | +- **Fiducials**: Place two 1mm fiducials in opposite corners to help pick-and-place machines align the board. |
| 92 | +- **Connector**: Use a Hirose connector (the same one used in the CM5 IO board) for CM5 compatibility. |
| 93 | + |
| 94 | +--- |
| 95 | + |
| 96 | +## 👉 Follow the Discussion |
| 97 | + |
| 98 | +Take a look at [this post](https://github.com/makerforgetech/modular-biped/discussions/118) on the MakerForge GitHub for a community-driven discussion on CM5 carrier board design. It’s a great place to ask questions, share your designs, and learn from others. |
| 99 | + |
| 100 | +## 🧪 Final Thoughts |
| 101 | + |
| 102 | +Designing a CM5 carrier board is a blend of electrical engineering, mechanical design, and a bit of artistic layout finesse. By using community resources, following standard practices, and taking time to carefully manage signal integrity and component sourcing, you can create a robust platform tailored to your application. |
| 103 | + |
| 104 | +Whether you're building a robotic platform like the Modular Biped or a custom embedded system, this guide should help you make smart, future-proof design choices. |
| 105 | + |
| 106 | +Happy prototyping! |
0 commit comments