I have been working on attaching a small display to my two robots so that they can report important information while they’re running. Sort of like @cyclicalobsessive’s talking robots where they speak important information - I want mine to display it on an on-board display.
The challenge is:
-
What’s the best O/S to continue my development work on? Buster? Bullseye? Bookworm?
-
What’s the best display to use?
- The Waveshare e-Paper displays have a (relatively) easy interface and consume minimal amounts of power, but they use the SPI buss and I’ve been having conflicts with that causing the robot to go brain-dead. They’re also incredibly slow to update so they’d be useless for dynamically changing data.
- I have two Adafruit displays that use i2c, so there’s no conflict, but they’re active displays so they consume more power and the API is more difficult to use. Because they’'re LED-type displays, updates are blazingly fast, but the power consumption is a factor.
Additionally, there’s the question of what operating system the various libraries support. As I have discovered while trying to install the GoPiGo libraries, things don’t always fit the way you would expect them to fit - especially with bookworm, it being the Windows-11 of Raspberry Pi software as there’s such a large paradigm shift, seemingly breaking everything.
====================
Today I completed the preliminary setup for the display testing.
-
I created a 6 operating system multi-boot environment with a “Project_Files” partition common to all of them mounted on /home/pi/Project_Files, selectable with a 5-position dip-switch
In order they are, (from 0 to 5. “0” is no dip switch selected and 1 - 5 are individually selected dip-switch positions):- Buster downloaded from Raspberry Pi.
- GoPiGo O/S configured for the Waveshare e-Paper display.
- GoPiGo O/S configured for the Adafruit 16x2 LED display with buttons.
- GoPiGo O/S configured for the Adafruit 128x32 OLED display.
- Bullseye 32 bit downloaded from Raspberry Pi.
- Bookworm 64 bit downloaded from Raspberry Pi.
-
Buster, Bullseye, and Bookworm have the GoPiGo libraries installed, including the graphical libraries, (wxPython, which was a pain), and they’re working.
-
All are configured to use the attached Adafruit real-time clock, an attached +5 power boost circuit, and a DC voltmeter that can be switched to monitor either the +12v or +5v rails.
-
All are configured to mount a shared “Project Files” partition for shared/common data.
What with everything going on here, this has been going on for about a month or so, a little bit at a time as I encountered problems, found solutions, and implemented them.
Today it is complete. I FINALLY have all the test environments set so that they’re ready to test.
All I need to do now is figure out a way to backup everything so that I can restore stuff if things go all pear-shaped. I’m thinking of creating a series of 14 compressed rsync images of the 14 partitions on the 500 gig SSD.
-
There are six operating systems.
-
Each operating system has two dedicated partitions, one for the boot partition and the second for it’s companion root partition. Therefore all of the six bootable operating systems occupy 12 partitions.
- Previous multi-boot experiments demonstrated that each operating system had, (and needed), a unique and individual boot partition - they could not share one - so I had to duplicate this in my multi-boot environment. Ergo, the need for twelve partitions.
- Previous multi-boot experiments demonstrated that each operating system had, (and needed), a unique and individual boot partition - they could not share one - so I had to duplicate this in my multi-boot environment. Ergo, the need for twelve partitions.
-
There is a large “Project Files” partition at the very end of the drive. (Partition 13)
-
And finally, as the first partition on the drive, there is a special “OS_BOOT” partition that reads the dip-switch and decides which of the six operating systems to transfer the boot process to. (Partition 14 - actually partition 1, but who’s counting?)
I should be able to create a rsync image of each of the partition’s contents and I will need to include a text file containing a description of the partition structure and metadata.
Next Steps:
-
Back everything up.
- Where? I’ll have to find somewhere to put all this data.
-
Begin testing the various displays and their configurations.
-
Figure out how to gather the data to be displayed, extract what’s important, and format it for the display being used.
Extra Credit:
- Determine if it’s possible to automatically detect the display being used and switch to the correct drivers and modules.