Pi Compute Module Is Love-child Of Raspberry And Arduino

The Raspberry Pi compute module is a powerful piece of hardware, especially for the price. With it, you get more IO than a normal Pi, plus the ability to design hardware around it that’s specifically tailored to your needs rather than simply to general-purpose consumers. However, this comes at the cost of needing a way to interface with it since the compute module doesn’t have the normal IO pins or ports, but [Timon] has come up with a handy development board for this module called the Piunora which solves a lot of these prototyping issues.

The development board expands the compute module to the familiar Arduino-like form factor, complete with IO headers, USB ports, and HDMI output. It doesn’t stop there, though. It has an M.2 connector, some built-in LEDs, a camera connector, and a few other features. It also opens up some other possibilities that would be difficult or impossible with a standard Pi 4, such as the ability to run the Pi as a USB gadget rather than as a host device which simplifies certain types of development, which is [Timon]’s intended function.

As a development board, this project has a lot of potential for the niche uses of the compute module when compared to the standard Raspberry Pi. For embedded applications it’s much easier to deploy, with the increased development costs as a tradeoff. If you’re still unsure what to do with the compute module 4, we have some reading for you. And Timon’s previous project is a great springboard.

27 thoughts on “Pi Compute Module Is Love-child Of Raspberry And Arduino

  1. One thing that I miss due to the form factor of the i/o pcb is a dedicated Ethernet port although If one of the usb c ports were to support data instead of just power an adapter would be a quick fix.

    1. Try “Arduino in 555 timer form-factor” and you have an article on using DIP-8 AVRs. Piunora opens up both the 3v3 on 0.1″ pitch and USB world of MCUs or a non-CM pi, and PCIe from the compute module, with better power handling, full-size HDMI again, quiic, an ADC… and isn’t terribly constrained by its contortions to nab a few buzzwords. “Arduino” in the headline grabs readers, buyers, and donors.

  2. > It also opens up some other possibilities that would be difficult or impossible with a standard Pi 4, such as the ability to run the Pi as a USB gadget rather than as a host device which simplifies certain types of development

    Plugging a USB-C cable into the Pi 4 USB-C socket is difficult/impossible? Okay…

          1. The Pi Zero and Pi 4B can both be used in USB Gadget mode via either the USB Data port on the Zero, or the USB Type C power port on the Pi 4B. The issue with the 4B is more whether a connected device can deliver enough power. A number of people use Pi 4Bs with iPad Pros over USB Type C in Gadget mode, and Jeff Geerling recently posted about using a Pi Zero or a Pi 4B in USB Gadget mode as a web cam.

          2. I think you misunderstood what “device-only mode” for the OTG hardware is.

            Specifically, that means it can only be used for gadget purposes and not as a host port – the exact opposite of what you assumed it meant.

          3. No. It is a full USB port. The only reason it says “intended to be used in device-only mode” is because it lacks the OTG ID signalling pin so it can’t auto switch between host and device mode. They therefore defaulted it to device mode but you can force it into host mode with a setting in config.txt. As pointed out already device mode IS gadget mode.

        1. On the Pi3 and newer you can also backfeed power into the normal USB ports. This is how I run a Pi3 A+ to on my Prusa Mini Printer with only a single cable going to the PI. The Prusa Mini backfeeds power down the USB cable to power the PI, and the PI sends the data from octoprint to the printer. Nice clean tidy solution.

  3. So does the B-Key M.2 socket support a NVMe PCIe SSD, and can we boot off of it? Is it correct to assume that since the M.2 socket is B-Keyed and not B+M-Keyed we can still plug in a B+M SSD but we will only get PCIeX2, not PCIeX4? I would post this on the Twitter thread but I do use Twitter any more because they no longer support Free Speech.

    1. At the moment the Pi CM4 doesn’t support boot from connected NVMe storage AIUI – only MicroSD, USB and Ethernet (same as the Pi 4B). So you’d still need to boot from another storage device.

  4. I know it’s been done before but I never really thought that re-using the Arduino form factor for a 3.3v device was the greatest of ideas. Unless maybe the goal is to cause the inexperienced to have to buy their toys twice when they let the smoke out.

    I also don’t really get the fascination with RasPi GPIOs. They would be awesome if this was 1995 and the alternative was bit-banging a parallel port on a PC. Given the availability of cheap arduino-compatible devices I’d rather just connect one of those to the Pi. That way the microcontroller can be dedicated to processing it’s IO real-time while the Pi runs a multi-tasking OS.

    I’m thinking the perfect accessory would be an Arduino as a Pi hat. It would have the Atmega microcontroller but instead of the usual serial chip just a level shifter wired to one of the Pi’s UARTs. Traces going to all the UARTs with jumpers to select which one would be a nice touch. I guess one of the PI’s GPIOs would also be used. It would toggle the reset pin of the micro.

    I bet if I Googled it someone already makes this… meh, maybe later.

    1. My fantasy Pi5 would be to have a m.2 (at least 2, preferably 4, lanes) on the underside, one full sized HDMI port and the second HDMI as a header replacing the DSI FPC connector (given that practically all screens for the Pi use HDMI, an internal connector would give opportunities for higher resolution screens without having to have adaptors stuck out the side of the Pi).

Leave a Reply to kc8rwr Cancel reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.