Close

Physical Connections and Updates

A project log for PiCarts: GPIO ROM Carts

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

dustinDustin 04/11/2022 at 16:020 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 apart if the system was mishandled. I am always cautious with strong magnets, as they can interfere with electronics that may be used with the system, such as magnetic compasses. I suspect this would not be a major issue in the vast majority of cases. Engineering and manufacturing latches would likely be expensive, and/or require tedious hand assembly. I am designing this system to be mass produced at a reasonable price, even if I ever only use it for myself. It's a learning experience. Another advantage of using magnets in both the base and cart is that they can be set up to only allow the cart to be connected in one orientation. Opposing magnets would repel the cart if inserted upside down, stopping all but the most determined from connecting it the wrong way.

Removing the magnetic adapter from the Pi might also be tricky as well. I need an adapter that is as small as possible to keep the cart from jutting way out from the Pi and putting extra strain on things. It might come down to using a screwdriver or other tool to gently pry the adapter off the Pi. This would be nice for institutional use as it would be difficult to remove and steal. An extra thick PCB for the adapter, with the edges left blank for prying the adapter from the back of the Pi. Something like a guitar pick or credit card could be used to pry it off with any luck. Otherwise, it would have to be a tool. I could integrate some sort of pull cord as well, but that would put all of the force on a few very small parts and likely break something or stress the board too much. Maybe I could even make a custom tool to pull it off and just include one with each adapter, or as an extra. PCB should be strong enough for a little pry bar

Software Safety Systems

Software is where I struggle the most, as I am a novice programmer. I have to consider the fact that these carts will be removed at the worst of times, and what effects it will have on cart software and user data, the host OS, and the hardware. This will likely be the hardest part of the project for me to tackle, but will force me to learn many new skills. The end goal is to be able to unplug the cart at any point and plug in a new one without having to reboot the system, or lose data. This may not be possible, depending on the Pi firmware and OS, but a decent experience should be possible. A read only file system on the cart's storage should help significantly, and auto-saving and backup of user data can mitigate much of the data loss. There is always a chance that the system could lose power during a write operation, or that the cart could be removed during a write operation. I will look up some industry standard ways of dealing with this in the industrial field. I have some proper industrial PLC systems at work to play with, so I may be able to find out how they handle such failures and implement similar methods. Data loss for a tech savvy adult is frustrating when a backup restore is needed, but can be completely discouraging to a kid when all their game saves and project files disappear.

Discussions