Designing a Ext. Prototyping Breakout (With Raspberry Pi Hat Compatibility)

I’d be interested in buying something that would provide a standard Pi 40pin connector on the back of the Devterm. Ideally it could swap whatever pins necessary in the cable that attached it (internally) so there’d be no need to even adjust any code that used it.

As you already mentioned, it would be like a portable pi400. Nice.

I don’t think it would be possible avoiding code changes. All the code written for Raspberry Pi hats assumes the hats are connected to GPIO 0 → 26 (the standard 40-pin layout). However, GPIO 0 → 26 on the Dev Term are being used on the mainboard for wifi, bluetooth, power management, display control, and sound.

The pins we get access to through the EXT connector are GPIO 28 → 45. So to get existing pi hardware working on the Dev Term, changes to existing code will need to be made to remap pins.

The pinout I’ve settled on here for the Breakout board might be the best bet at this. I’ve made an effort to map pin functions in the same place as the standard 40 pin connector like power, ground, I2C, I2S, SPI, Serial, etc… I was able to do this because as it turns out, the compute module provides secondary I2C, I2S, SPI, Serial pins in the range of GPIO 28 → 45. Yay!

EDIT: I just added a table in the top post: It’s a guide for mapping pins in software.

2 Likes

Thanks for the explanation! I hadn’t dug into the details and had wrongly assumed it was just some swapped pins. I look forward to what you and others provide. Seems like there will be some exciting possibilities.

Update on this project for anyone following: I ordered the A04. so it will be a while before I have it in hand and can test the proto/breakout boards. (I think the A04 is the last wave of shipments)

1 Like

Yeah, though I would expect you to get it way before the end of the year. Should not be too long :slight_smile:

2 Likes

Following this now more than ever, I had the misfortune of ordering a SmartBoy when it came out, and the main board fits right in the ext slot.

Here we go! I got my prototyping board about 3 months ago from @DustinWoods (thanks mate!!) and only just got my Devterm 3 days ago; and built it last night.
The day the two meet has finally arrived!

This is showing the relative size of the stock expansion module vs the custom proto board. The main thing I would be missing, and want to add to a future revision is a fan.

This is a closer look at the protoboard. Notice the ribbon cable folded PERFECTLY - yup that was @DustinWoods ’s handy work. Nice!

Having not seen a unit on hand, I’m sure @DustinWoods was making some educated guesses re fit. All of the stand-off pegs fit perfect! However the pogo pins of the audio module are off just by a fraction! It’s also only the right speaker, so a future module containing both left and right would be great! For now I’ll either a) live with mono or b) find the pins that correlate to the left channel.

Next module, the hole is slightly too wide, having the bracing peg fall right through. Not really a problem in my opinion, since it doesn’t need to be pinned down; just aligned to prevent rattling. It will however mean the bracing post will be down 1-2mm more than it should, possibly affecting the chassis structural integrity. Nothing you can’t fix with a small 3mm ID washer.

Here it is installed. The posts line up perfectly! There are additional posts that are + shaped. Perhaps having the PCB matching the shape would be good for stability. The printer module does this, and isn’t pinned down. Currently it’s an open circle. But as above, it doesn’t really matter.

Ribbon cable installed! There’s some small clearance problems with the right speaker, but only just. It can snuggle wiggle it’s way in. But it wouldn’t hurt to move it up a couple of millimetres.

Let’s see it all together. Just look at that perfectly placed ribbon cable. Divine!

We will have a slight void on the right edge of the devterm, since we aren’t provided with any backing plates. Not a problem tbh. Just get some pla plate, an ice cream container, or heck; electrical tape, and cover it up if it’s a problem. Oh and there are no fitting issues. I just didn’t fix it down, since I don’t like putting undue stress on things unless I really need to; especially plastic!


(Whoops, I put the wrong plate on. Eh, you get what I mean. :))

The main thing I would like to see in a revision would be:

  1. An integrated fan, similar to the stock board. An even bigger one could even be possible, since a lot of the printer circuit wouldn’t be needed.

  2. A second pogo pad for the left speaker. Even just a small 10mm x 12mm board to go over the offset peg with a jumper lead leading to the breakout board would be fine.

  3. UART pass through for any debug/diagnostics, especially if you’re prototyping.

  4. Moving the left speaker pads 1-2 mm to the left to align better.

  5. Move the ribbon connector up 1-2mm to give more clearance to the right speaker. (Or dremel the headed down)

  6. Decrease the diameter of the second board’s mounting holes to match the post, and not the plug. (A rough Vermeer caliper measurement is just shy of 5mm for the post)

  7. Change the second row of mounting holes to + shaped slots, to reduce play and increase stability.

Hopefully this gives you all some insight about the potential that the expansion slot has. If anyone else has one, post up pics and any insight! I’d love to see @DustinWoods do a revised version!

Edit: Whoops! Reverse every mention of left/right speakers - I forgot I was working on this upside down!
Also oops a lot of the things I suggested have already been mentioned as a revision! I didn’t read all the posts first!

5 Likes

This is excellent!

I’m hoping we can design these additional features to be optional with things like break-away tabs and solder jumpers, etc. The fan, for example, uses an additional GPIO.
You’re thinking what I’m thinking!

I am really surprised how close the speaker pins lined up!

Thank you for the thoughtful rundown, all the great feedback, and the photos! I wish I could give your post 100x more likes. :100: :pray: :heart:

2 Likes

We all give to the community to make it grow! And you’ve given so much with this! Reporting back is the very least I could do! I’ll be sure to report even more once I whack some other bits and bobs onto.
Now go read up all the docs before I plug in a hat and fry it! Here comes the fun stuff! >:)

2 Likes

Ah yes, hack at your own risk! Until I can bravely test on my own.
If you decide to venture into the unknown, I recommend inspecting the pins from the mainboard all the way to the proto board to make sure there are no shorts, especially with the power pins. Beyond that, just take the same precautions that you normally would when tinkering with a raspberry pi.

1 Like

Awesome thread!! @DustinWoods have you considered adding some extra logic to multiplex the pins for full compatibility? Some serial-parallel converters and tri-state buffers would do. Will need some “minor” touches to the linux drivers of course.

Actually, can we replicate the ext. board so that USB/FAN/debug port/printer interface are preserved??

Now that the R01 boards are starting to arrive, there’s a new wave of interest here :slight_smile:

What was the status of these boards / builds? Are any of these available for playing with?

1 Like

The USB is simple, since it does not use gpio anyway. The fan could use a jumper to enable/disable connection to its gpio. Debug port is just a serial->USB on the TX/RX line, so that wouldn’t be a problem. But then there’s the printer interface which connects gpio to a few motor drivers, I think the best design for that is to actually make a separate (small) board with the motor drivers. Not sure about multiplexing the pins! That sounds like a lot of coding and design, but cool!

1 Like

I made a small batch of these and sent freebies out to some folks here, but got diverted to some other projects. The next challenge (for me anyway) is reworking drivers and software to get a pi hat (audio interface) working.

I wouldn’t want to hold up anyone willing to make progress though! I’ll dig up the gerber files for the boards so you or anyone else can order your own boards!

2 Likes

Okay as promised! Here are the gerber files you can use to order the proto board and the ext board. It’s important to use a PCB thickness of 1mm for the ext breakout! This will ensure it fits in the connector.

5 Likes

Not sure about multiplexing the pins! That sounds like a lot of coding and design, but cool!

Hey I just found there are USB-GPIO adapters so we will never have to worry about this again:

So, no need to multiplex anything, just plug this guy to USB and boom, extra GPIO, SPI, I2C!!

Or – is what we need just a bunch more of internal USB connectors? :stuck_out_tongue:

Thanks for the board files! Would you mind also share the sch and brd files? I’m wondering if we can develop a full ext board together.

1 Like

(this thread began with the RPI compatibility conversation, so this may be off topic)

I’m curious about the idea of having an EXT board with a well-defined set of slots or connectors along the top edge, so that “cartridge” style add-ons could be plugged in to the top. Right now, the printer basically gets hard-wired to the top of the EXT board via the ribbon cable, so you have to take the CPi apart to change to another expansion. For the z80 board idea I had, ideally a USB or USB-FTDI would be fine internally, but we could probably think about something multifunctional that would enable different expansions. A bunch of radio hardware can be plugged in over USB as well…

2 Likes

This is really useful thanks!

Somehow the serial port on my ext module is just not working (usb errors, stuff like that). I really need it to work though, because I want to experiment with custom kernels for my R01 board, and a serial port is really useful for that. So I’ll just use this breakout board and connect a serial adapter to the pins directly.

Have you tried using as short of a cable as possible? Some were on this forum is a thread that talks about the problems with the serial port but a short cable was the fix.

Excellent work on this, another vote here for having internal USB ports as an option for letting us install small devices like thumb drives and SDRs internally

2 Likes