I was looking to try out my new Adafruit Feather RP2350 and I remembered I had the Solder Party Keyboard Featherwing.
The Keyboard Featherwing is a handy device: it is about the same size as a BlackBerry phone with the same alphanumeric keyboard and a 2.6" 320x240 color display. Plug in a Feather board as the "brains" and you have a portable system.
Alas, one has to program the Feather, preferably with CircuitPython, to use the keyboard, display, and other features. Solder Party has example code snippets for those features. But what about something more holistic, more like a computer with input and output?
I found two solutions that were perfect: PyDOS and Beryllium OS. Both are built on top of CircuitPython.
PyDOS emulates MS-DOS commands used on PC compatible computers. And Beryllium OS, formerly ljinux, acts as a Linux-like computer. Neither are binary compatible (they cannot run native DOS or Linux binaries) but their commands and interactions emulate those operating systems.
This Playground Note will show you how I built my PyDOS handheld in short order.
There are two videos, one from Adafruit Show and Tell and another for Tom's Hardware The PiCast.
Preparing the Feather
Solder male pin headers onto the Feather RP2350. You could use long pin stacking headers to add a FeatherWing, but that would create quite a stack on the back.
See this guide page for soldering details:
Flash the Latest CircuitPython
I used the very latest version of CircuitPython, at the time this guide was written: 9.2.0-beta.1. The latest version will likely have fixes pertaining to the RP2350, so it's the best choice. Follow the directions in this guide:
PyDOS
PyDOS is a MicroPython/CircuitPython DOS-like shell for microcontroller boards. Current compatible devices are RP2040, RP2350, ESP32, ESP32 PICO-D4, ESP32-S2/S3, nRF52840, SAMD51, stm32L4+, NXM ARM Cortex-M7, Lilygo T-Deck, M5Stack Cardputer, Cheap Yellow Display - esp32-2432s028.
Support for the Keyboard FeatherWing is "baked in".
Download the repo files via Code -> Download Zip in GitHub (here is a direct link). Save the zip file, you'll copy files out of it shortly.
Plug in the Feather to your computer via a known good USB cable (data + power, not one of the short "power only" cables). In File Explorer or Finder (depending on your operating system) you should see a new thumb drive named CIRCUITPY. That is the Feather you'll be copying files to.
Follow the installation instructions under the Installation heading, starting with PyDOS Install (at this point you should already have CircuitPython on the Feather).
Once you have the zip file:
To copy PyDOS to the Microcontroller, simply drag the PyDOS directory structure (after removing the mpython folder if space is a concern) to the root directory of the device that appears on the host computer (usually a thumb drive named CIRCUITPY).
Power cycle the board so the code can modify the file system.
Hard part - you willl need a terminal window. On Windows, use putty or the Serial window in Mu. For Mac or Linux, the author suggests Tio (see the PyDOS instructions).
At the CircuitPython REPL prompt >>>, type "import PyDOS" to start PyDOS. From PyDOS type 'setup' to run the customization script. You will see PyDOS setting things up by copying various files. Once it seems done, power cycle the board again by turning the power switch off then on again (if on the Keyboard FeatherWing) or unplugging all power (USB and battery) to the Feather.
Assembly
Once the installation is complete and the power removed from the Feather, turn the Keyboard FeatherWing over and place the Feather RP2350 on the Feather headers in the upper left of the board (if oriented like above). Be sure each side of the pins are in the socket (there are extra socket pins on each side for customization, that's normal).
Turn the Keyboard FeatherWing switch off.
Feed the battery lead under the Feather and around to the Feather battery JST connector and plug it in (it can only go one way).
Flip over and turn the power switch on.
If the PyDOS installation worked, you should see a tiny purple snake in the upper left of the screen and the PyDOS prompt below that on the screen. Congratulations!
3D Printed Case
I had problems finding a suitable case for the Version 2 Keyboard FeatherWing. I ended up printing the top and middle layer from this design (the bottom layer was for a LoRa radio antenna which I would not use) also located on Printables. We have a Prusa MK4S and I used white Amazon Basics PLA filament, though you can use what you like.
I used a Dremel to enlarge the switch area for the Version 2 FeatherWing and to expose the STEMMA QT port. I used four self-tapping screws to hold the two layers together.
A better solution would be to modify the 3D files - please feel free to do so.
Use
Please refer to the PyDOS GitHub site for all the commands and supplemental programs, to include PyBASIC.
I created an autoexec.bat file like the PyDOS text recommends to ensure the bright NeoPixel RGB LED is turned off and set a prompt more like my DOS machines (see the boot screen above). You can use any text editor or one of the editors on the device.
PROMPT C:$P$G$S RGBSET 0,0,0
(The drive is really not "C:")
Ensure your battery is charged by plugging the RP2350 into a USB port for awhile. A tiny yellow charge LED will be lit if charging.
Now you can carry your portable DOS device anywhere and have what folks only dreamed about back in the 1980s.
If you wish to try a Linux-like experience, instead of PyDOS, try Beryllium OS (also based on CircuitPython).
This page (A PyDOS Handheld) was last updated on October 23, 2024.