Close
0%
0%

PiCarts: GPIO ROM Carts

Loading from ROM cartridges plugged into the GPIO port. Just like the old days.

Public Chat
Similar projects worth following
A hardware and software system to bring cartridges to the Raspberry Pi 400, similar to the Commodore 64, in that you insert a cart, turn it on, and it just goes. No software to install, no updates to worry about, no distractions. Just games and programs.

The Raspberry Pi 400 captures the spirit of the 8-bit home computer era better than any modern system I've seen so far. The Raspberry Pi 400 should be able to meet the demands of anyone wanting to learn about and use computers. The lack of hardware and software for the Pi 400 limits its usefulness significantly. A cartridge based system could turn it into an open source hardware and software development platform as well as a very unique game console, unlike most of what exists in the modern world.

PiCarts is a system of hardware and software for the Raspberry Pi 400 to encourage use in education and industrial environments. The hope is that the Pi 400 will gain a larger following and be put to good use in places such as schools, libraries, and homes as a child's first computer.

The system will consist of game cartridges containing software and hardware for the Pi 400, and an EEPROM to tell the Pi 400 how to handle the cart. Some may be simple games, others may be hardware interfaces for automation and I/O control, such as motor drivers. At the core, SD mass storage chips will be used to hold large amounts of data, such as videos, game data, user created documents, and game save files.

The GPIO connector on the Pi 400 is not ideal for repetitive insertion and removal, especially at the hands of children and those in public and industrial settings. To mitigate this, as well as reduce cost per cart, each cart will use card edge contacts, with a base station that converts GPIO pins on the Pi 400 to a 40 ping card edge connector. The base station, at it's core will simply pass through all 40 GPIO pins to the card edge connector, as well as providing physical support to the cart for repeated insertion and removal. An LED indicator on the base station will be used to show whether or not a cart can be removed, as well as an "Eject" button to safely remove the cart from the base station. A multi port USB hub could also be built into the base station to allow for easy connection of many USB controllers for multi-player gaming and extra USB accessories. A headphone jack may also be included to allow for audio output, as the Pi 400 does not have a dedicated audio output.

  • 1 × Raspberry Pi 400 The main system being used a game console
  • 1 × 8GB SDIO NAND Flash Chip XTX XTSD08GLGEAG. 8GB mass storage chip, appears as SD card over SDIO or SPI interface

  • Connector Durability and Memory Options

    Dustin07/29/2024 at 13:27 0 comments

    Cartridge Connector Durability

    I've been researching the various details of this project for a few years now. The main sticking point has been the physical interface between the cartridge and the Pi GPIO pins. Plugging and unplugging PiHATs is quite a physically stressful operation, and exposes the GPIO pins to severe and constant stress, which can destroy them over time. Looking into various options, such as Pogo pins and card edge connectors has turned up a few options.

    Looking back in time reveals options that have stood the rest of time, such as the card edge connectors used in computers and video game consoles. Information on the connectors used is difficult to find. Omniball pogo pins would likely be the most durable solution in the long run, but also a very expensive option. I could design a base station that uses a 40 contact omniball connection, but it might not end up being a standard option. Such an interface would be ideal for use in a test station for testing outgoing cartridges, as well as industrial, scientific, and other severe use cases. A quick search turns up a 10 contact single row connector at over $13 USD per piece. 4 would be required to interface all 40 pins of the cartridge. $52 for just the mating pins would be very hard to justify to most people. The connectors also have screw mounts on each end. This would require either modifying the connectors to sit closer together, modifying the cartridge edge connector design, or possibly both. It might be worth designing the edge connection to accept the omniball pogo pins, so long as they could still be used with a standard card edge connector. This depends on the pitch of the pins. It could complicate the design a little bit, but also open up a far more durable, though expensive connection option. There is also the question of holding force with the omniball pogo pins, and the ability to mount them horizontally. They may not be a viable option for many reasons.

    A card edge connector is the current choice. If needed, a durability testing rig can be made to test the failure point of various types of card edge connectors, as real world data is very difficult to find. Some card edge connectors, such as PCIe used for graphics cards, are rated for 20 to maybe 50 mating cycles, yet have been found to survive hundreds of cycles without failure. These reports are anecdotal, and come from various forum posts about test bench PCs. As I already have an automated press machine in the works, it would not be hard to design testing equipment and procedures for determining the approximate lifespan of various card edge connectors. As this system is designed for use mainly with children or industrial users, who are both very hard on equipment, it's vital to find a reliable connection method between cartridge and cartridge slot. The old card edge connectors of the past have proven their worth over decades of use, accumulating thousands of mating cycles. The production methods for the cartridges are well known and easy to replicate, but the card edge connectors are harder to verify. The best option I have found is to check the data sheets for materials used, choose suitable candidates, and test them to failure to determine average lifespan. I could skip this step and choose a card edge connector from a reputable brand and hope for the best, but I'd rather not risk early failure and recalls. The ultimate goal is to provide an excellent experience.

    Once the automated press prototype is completed, I will start designing the hardware and testing procedures for card edge connectors. The process would involve counting the number of cycles the machine has completed, as well as the number of successful connections each pin has made. Any discrepancy would be considered a failure. This is likely going to be a rather complicated testing procedure, requiring custom hardware. I find such testing to be worthwhile. LTT Labs comes to mind here.

    Data Storage Options

    I've looked at many different types...

    Read more »

  • Form Factor and Basic Designs

    Dustin01/16/2023 at 04:27 0 comments

    Today turned out to be a very productive day for the project. I recently decided to make a base station that plugs into the GPIO header.

    It would add an upward facing card edge connector, as well as some additional features. Additional features might include a USB hub for connecting extra controllers and peripherals, possibly a headphone jack to add audio output to the Pi 400, a status light, and "Eject" and "Reset" buttons. The base station would extend out to the right edge of the Pi 400 to allow a place to hold down the base for pulling up on the cartridge for removal. Feet on the bottom would give support to the base for inserting carts to avoid damaging the GPIO header pins.

    I will start testing software with the MMC Pi Hat from PiShop. The final carts will use SD memory chips on a custom board, but the hat will allow me to test out the PiCart management software. This software would run in the background and allow loading of data from the carts and saving data back to them. The goal is to automate the experience as much as possible for end users. Plug in a cart, software opens, enjoy.

    This winter has been rough for me so far, but this project gives me something to look forward, and keep me busy.

    I ended up designing a very basic rendering of the base station an a cart in Inkscape. I've been very frustrated using Inkscape until today, but pushing past some of the initial learning curve has given me much more confidence in myself and this project.

  • Moved "Details" Section Here

    Dustin01/16/2023 at 02:20 0 comments

    Test Software:

    Game: Duke Nukem 3D(Native Pi Version)

    Word Processor Cart: WordGrinder

    Boot Without Cart Inserted: Thonny

    Current Options Under Consideration:

    I have a few ideas on how I might get the Pi to boot into an OS stored on a ROM chip connected to GPIO. I know the ideal solution is a bit of a stretch, but I feel it's well worth investigating. 

    1) Boot from Flash Memory Over GPIO Pins (Ideal Solution)

    OS and program code are stored on SD NAND chips, connected to the SDIO GPIO port. GPIO Boot Mode would tell the Pi to boot from SDIO, which would load the minimal OS and program code.

    GPIO Boot Mode holds some clues, and then there's this GitHub link, referring to booting from EEPROM over SPI on the GPIO ports. It is possible, but not implemented, because the developers don't have a compelling reason to implement it. I have yet to find a way to actually implement this and will start elsewhere first.

    2) Install a Program to Load and Manage PiCart Hardware

    A special program is made to load the carts that could run on boot, and is installed into the main OS. That would be less reliable, as there are so many OS varieties that people could be running, and you'd have to install something. I often run into problems with software I installed, so this is far from ideal, but would likely be the easiest to implement, and therefor, the most likely to get done. Starting here. 

    3) Boot from a Custom OS to Load and Manage PiCart Hardware

    Use a special SD card that just loads a minimal OS that looks for the cartridges to boot. This would require swapping SD cards, which is a hassle and would risk wearing out the SD car slot prematurely. This is my least favorite option, but one I will explore. This would be ideal for children and education use as there would be no software to install. Once a minimal OS is chosen, a custom image will be made for use with these carts.

    4) Bootable USB Drive

    Have a tiny USB flash drive that boots the cart load OS, and just leave it plugged into one of the USB ports at all times. USB ports are more robust, so I wouldn't feel as bad about plugging and unplugging it regularly. You could program the flash drive with a standardized cart boot OS, then use the GPIO Boot Mode to tell the Pi to boot from USB if I PiCart is detected. Otherwise, the system would boot from the usual boot device. If the developer of the cart needed to add code to the Cart Load OS, the OS could check for a certain code in the cart ROM and install it to the OS flash drive, updating the OS via cart. This would allow developers to add whatever features they want, and wouldn't be nearly as limited by the OS. The problem with that is that there would be a chance of bugs developing in the OS. It might actually be best to just write protect the USB drive and force developers to load everything they need into RAM. 

    This system is essentially two parts right now: ROM cart and boot drive. The hardware should be simple enough, but the software to getting working in the ideal manner is a bit beyond me at the moment. I plan to keep it all open source, of course, and just want to see it happen.

  • Critical Decisions Made

    Dustin06/08/2022 at 22:43 0 comments

    I've had to put this project on the back burner, and out of mind, so many times that it's absurd. It makes me rather angry. I've been thinking more on this recently, though, as I settle into my new home and job.

    Some of the biggest hurdles have been a few crucial decisions in tools and methods. I've found time to finally research and decide on a few tools.

    PCB Design software: KiCAD

    PCB manufacturing: Camptech, Canada

    Game engine: Godot

    Pixel art editor: Pixelorama

    Cartridge case material: PCB

     First game: Bird Battle(name subject to change)

    Development system: Atari VCS

    Development OS: Pop!_OS

    Connector type: card edge, pin header, magnetic pogo pins

    The above represent most of the tough decisions I had to make. I'll elaborate further on those in a future update. Time is limited as I settle into my new home and job. New camera gear is on the way, so video logs are likely in the future.

    I have the Atari VCS and it's 1TB SSD waiting for this project. I'll get it ready this weekend and start working on the game design and PCB designs. I need to learn the entire process of game development and PCB development for this project. I have a SoundStripe account for audio assets, and will purchase some game asset packs to help speed up development. I have very little time, so I won't be doing things the hard way any longer. Game engines and premade assets will get the first prototype working, and I can fill in the skill gaps later.

  • Card Edge Connectors

    Dustin05/07/2022 at 01:21 0 comments

    After thinking about pogo pins a little longer, I decided that a card Edge Connectors option should be delevoped as well. They're durable, cheap, and easy to implement. The removal and insertion force for a card Edge Connectors, even with 40 pins, should be lower and less damage prone than with a 40 pin header connected directly to the Pi GPIO pins. Offering a card Edge adapter, as well as simple pin header connection on the carts would allow kids to handle the carts with less risk of damage to the GPIO pins(when using a card Edge connector), while allowing others to use the simpler and cheaper pin header. I dislike connecting anything to the GPIO header as the force required to insert and remove is fairly high and could cause damage to the system.

    The simplest card Edge connector setup would be to just have the carts lay flat and plug the edge directly into the GPIO pins on the Pi 400. This would leave the cart sticking out of the back, and difficult to see when insterted. I'd prefer it to stand up right, so I could design a right angle edge connector adapter that would let the carts plug in vertically. There are benefits to both, and I will develop both and test. Vertical carts have the benefit of being visible at all times, which is handy for displays, speakers, and various switches. Horizontal carts have the advantage of not blocking the view of a display sitting on the same surface as the Pi 400, as well as being able to support things on top of them. Like coffee mugs and other hazards to electronics. A postal scale cart comes to mind here.

    There are endless possibilities with this project and feature creep has to be managed to ever make any progress on it. I'll be buying some hardware and setting aside time to work on this soon. I have other large projects planned, but this one may end up being the most satisfying in the end.

  • Breakthrough: eMMC HAT

    Dustin05/07/2022 at 01:04 0 comments

    This project has been stalled out for quite a while due to my lack of knowledge, funds, and working hardware. I recently found the 8086 makes an eMMC HAT that works with the Pi 4 that only requires a quick edit to the config.txt file. I failed to get the SD flash chips to work previously and gave up for a while. I just found this HAT and decided to start looking into this again. While not exactly what I'm looking for, it is close enough to allow me to actually get this working and start developing software for the system. The SD flash chips act just like an SD card, but in a smaller and cheaper form factor. I plan to order a few of these HATs quite soon and will start testing when they arrive. I still dream of making my own custom cartridges for the Pi 400, including boxes with proper box art, instruction manuals, and all sorts of fun features. I start learning KiCAD soon and will get some rest PCBs ordered.

    Update: Found a link to said device.

    eMMC HAT for Raspberry Pi

  • Pogo Pin Pricing

    Dustin04/27/2022 at 04:08 0 comments

    A quick search of Digikey brings up the cheapest pogo pins at $0.59 each. At this price, it would cost $23.60 per board to break out all 40 GPIO pins using pogo pins. It's unlikely that anything other than the initial prototyping boards, or a dedicated development board would need all 40 GPIO. A typical PiCart board may need 10 pins, costing $5.90 per board in pogo pins. There may be cheaper off brand pins available, but I refuse to sacrifice quality on such a vital component. A bad electrical connection caused by a faulty pogo Pin would likely render the entire board useless and impossible to troubleshoot for the intended users. If my initial testing goes well, I may place a very large order to get a bulk discount on the pins. I may also be able to get them through the PCB fab house directly at a better price, with assembly.

    Though the price of these pins is off putting, I still plan to use them unless I can find a better solution. Edge connectors do come to mind though.

  • Pogo Pin Prototype: Initial Research

    Dustin04/27/2022 at 03:16 0 comments

    Initial Research suggests that using pogo pins, mated to gold plated pads should provide a good electrical connection between cartridge and GPIO pins. Pogo pins are far more expensive than typical header pins, but eliminating the wear and tear on the Pi GPIO pins is the primary concern. I'd planned on waiting until I had a working board design, then adding pogo pins, but I have less time to work on this porject and work out PCB bugs, so I'll likely design a simple prototyping board that simply breaks out all GPIO pins to traces, connected to pogo pins. Essentially a PiHAT breadboard with pogo pins instead of pin headers. The adapter that connects to the Pi should be fairly simple as well, and at least allow me to start testing the hardware concepts immediately. Strong magnets in both the board and adapter would hold the two together, with the pogo pins providing electrical connection. Once I get some experience with KiCAD, I'll design both boards and get some prototypes made for testing. After finalizing the physical connection between boards, I can start on the case, which will also be PCB. The cases will need to be hand assembled, which will add to the cost of production. The extra cost is acceptable as these boards are meant to be used in educational environments, by children. I work with children and know how destructive they can be. I also work in industrial food production, so I know the value of quality, durability, and good design of equipment.

    This is still a top priority project for me, and the most exciting one o have going on. I hope to have the prototype boards ordered in the next month or so. Funding is no longer an issue, but time and energy are severely limited. I may pay someone to design the prototype board for me just to get it done even faster. I'd normally never consider such a thing, but I will break my DIY rules for things that I already have a good understanding of. I will not outsource essential code design until I'm a good enough programmer to disect and check other coder's work. This is still a learning project for me, but it has stalled due to lack of time and skills.

  • Physical Connections and Updates

    Dustin04/11/2022 at 16:02 0 comments

    Random Updates

    With the new job consuming 60 hours a week, plus commute time and extra sleep, I have had very little time to dedicate to any of my projects. This project comes to mind at times, and I wish I had the skill to just sit down and knock it out quickly. I am still learning all the needed skills, so progress is painfully slow. On a brighter note, funding for the project will be readily available in the next few weeks to months, and I could just order everything I need all at once and get started. I plan to order a few more Pi 400 kits. I have my main one, which I still use as my daily driver laptop and Jellyfin server. I am typing on it now. I'd rather not use it for testing. I plan to buy a Pi 400 as a dedicated Jellyfin server, another as a test platform for this project, and maybe even another as a backup, or for a secondary development platform so I can work on 2 projects at the same time. I'll be ordering some bulk SD cards, and setting up a formatting station for managing and backing them up. I currently don't have enough space for so many Pis, as I'm renting from a friend, but I should be setting up a workshop here soon and will have ample room.

    OS Support

    I know that it makes the most sense to support the official Raspberry Pi OS, and that's where I'll likely start, but I also want full support for Pop!_OS by System76 as I've found it to be the best daily driver OS on the Pi to date. They're a small, friendly company who I suspect would really enjoy this project, and I might be able to get some official support, even if it's just some advice over email. I use Pop OS on my Pi 400, only switching it out for Raspberry Pi OS to run my Jellyfin server. Once Jellyfin has offical support for Ubuntu 21.10, I'll switch over to Pop OS entirely. I feel that it would make a friendlier experience for kids as well, since the entire OS is geared towards the scientific, engineering, and educational fields. Ideally, the system could be ported to any Linux OS, but that isn't always feasible. I'm sure Windows 11 will continue to mature on the Pi, and I may end up supporting it at some point, but not right away. I can't stand Windows, and will avoid it as long as I can.

    Physical Cartridge Connection

    This is a very important aspect of the project to me. I've been thinking about wear and tear for years, but have started thinking more deeply about it as a new maintenance engineer. I watch these industrial machines wear themselves out and fall apart in a matter of hours to days, where most consumer equipment would last years. It's quite the eye opener. With the PiCarts, I want to build to an industrial standard, as I know these systems may end up in the hands or children, with their sticky, maximum-effort hands, and complete disregard for strain relief and longevity. I don't blame them, I just understand them. The biggest failure point I have identified so far is the GPIO pins on the Pi 400. Though recessed, they remain exposed and vulnerable. Plugging and unplugging things to and from the GPIO port also requires a significant amount of force, especially if not done straight on.

    I have been really enjoying the magnetic connectors I have on my phone charging cable, as well as the magnetic phone stand I built. I'd like to be able to integrate such a feature into the PiCarts, if feasible, for use with educational systems. The typical hacker will do fine with the regular pins. The matter of being able to short pins still needs addressed. I have been considering pogo pins on the carts, and an adapter that plugs into the GPIO port. I could possibly have the contacts on the Pi side adapter recessed into a PCB, with longer pogo pins on the cart that would fit down into those recesses, and connect when they are safe from the poking and prodding of various objects. This would protect the power pins on the Pi from being shorted. Rare earth magnets in the cart and the adapter could be used to hold the cart to the system, while allowing them to come...

    Read more »

  • Cart Idea: Video Carts

    Dustin11/21/2021 at 20:53 0 comments

    As a kid, I annoyed my parents to no end making them rewind the same few VHS tapes for me several times a day so I could rewatch things over and over again. It also annoyed me to no end when my favorite tapes wore out and died. Sad times to be a kid. These days, we have far better technology. I was listening to a song by Omnia called "The Well" and really enjoyed the story it tells, though simple. It reminded me of the animated tale of The Deathly Hollows from the Harry Potter movie. It got me thinking about how to get more story time into the world. Then I remembered my project here. I imagined having a cartridge that you could just plug in and it would play videos. You could put anything you want on them of course, but something useful and educational would be best. Unless you're like me and like to binge watch Futurama or Spongebob on shuffle. There would be obvious licensing conflicts with selling copyrighted media, so a blank cart with an SD slot or built in flash memory and the video player software could just be sold.

    The hardware would be simple enough and could be a generic design that could be used for media playback of any kind. Headphone jack, media control buttons, perhaps volume control, a "shuffle" button, maybe even a small screen for controlling the software. Another option could be to add a small screen to the GPIO port such as a Pimoroni Hyperpixel 4" display. Being able to watch TV on a tiny display attached to the keyboard and work on a larger HDMI monitor would be quite nice. Also being able to leave the main monitor off, or take the Pi 400 on the road and play media with a tiny display would be great. Such a cart would end up being more expensive than most other carts, as the display itself is rather expensive. Would be well worth it for what I do. I have a Vilros Pidock 400 that turns the Pi 400 into a laptop, but the display uses a fair bit of power and has no brightness control at all, which bothers me at night. Sometimes I wish I could just hit a single button and have something start playing, like a random TV show or movie. Another thought occurred to me: the Pi 400 doesn't have much processing power, and playing media on it will slow it down and may make it less pleasant to use. This could be solved by adding something like a Raspberry Pi Zero 2 W to the cart to handle the actual playback. That would add options to have it stream things from other sources as well.

    Possible hardware:

    The two pieces of hardware above would be enough to get me started, with only buttons needed. A custom board with buttons and audio output would make up the finished item.

    Software wise, I'd either use VLC Media Player for playback, or maybe write a custom program using ffmpeg as the backend. It would be easy to let feature creep take over on this and never get it done. Sticking to the core functions would leave it with play, pause, stop, rewind, fast forward, next, back, and volume controls.

    This particular cart will have to wait until I get a few other pieces of the puzzle put together, but it would be something that I would use regularly as I work.The thought occurred to make a version or some sort of cable that would let it connect to a Pi 400 in the Pidock 400 and mount to the main screen to act as a secondary display as well.

View all 53 project logs

Enjoy this project?

Share

Discussions

Mike Szczys wrote 05/24/2021 at 16:15 point

I love the idea of booting up cartridges. If you do go with the "most likely" scenario you outlined of running from USB, you might enjoy this one from @Tom Nardi that designs cases for the USB devices that make them look like cartidges: https://hackaday.io/project/177861-retrocart-usb-cartridge-system

  Are you sure? yes | no

Dustin wrote 05/26/2021 at 22:23 point

I saw that article! It helped me out on this project, actually. Thanks for the tip. I've actually not found a way to get USB through GPIO, but I can use SDIO over GPIO, which is almost as good. Can't seem to boot from SDIO, but that's ok for now. Developing the hardware now, will sort that out soon. I'm willing to be someone out there can find a way to get the Pi 4 to boot from SDIO... My latest logs have more detail on my latest thoughts. 

  Are you sure? yes | no

ee334 wrote 12/01/2020 at 17:25 point

  Are you sure? yes | no

Dustin wrote 12/01/2020 at 20:27 point

Wait, why? What would I use these for? 

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates