An open-source Raspberry Pi Pico stenography keyboard.
I promise I'll write more here soon.
Gerber files can be found here. I have had these files manufactured and the keyboard works fine. I'll add some photos of the keyboard at some stage.
The bill of materials can be found here.
You will need to install CircuitPython to run this code. Follow the instructions here to do this.
To begin, you need to have circup
installed so you can add libraries to your Pico.
Start by installing the dependencies:
sudo apt install -y git python3 python3-pip
And then install circup
:
pip3 install --upgrade pip
pip3 install circup
You can update circup
by running:
pip3 install --upgrade circup
Now, you can simply install the packages by plugging in your Pico which is running CircuitPython and running:
cd src/
circup install -r requirements.txt
When the keyboard is connected over USB, a file explorer will be opened.
Copy the .py
files from (but not including) the src/
directory into the Pico's filesystem.
By modifying the i2c_conf.py
file, you can add functions to the extra keys (X0–X6).
Good question.
- The RPi Pico has enough GPIO pins to dedicate one to each key on a stenography keyboard. Basically, I just though that was neat, so decided to do it that way. I then decided I wanted optional extra keys, so added the IO extender.
- This allows me to implement n-key rollover without needing any diodes; not that they are particularly expensive.
Because I'm not using a keyboard matrix! I had to wire each key directly to a GPIO pin on the Pico. I didn't both trying to optimise the connections to minimise crossovers, so this is what you get. But hey, this is open source; if it annoys you, feel free to fork it!
pip3 install adafruit-board-toolkit
python3 -c "import adafruit_board_toolkit.circuitpython_serial; print(adafruit_board_toolkit.circuitpython_serial.data_comports()[0].device)"
If you get IndexError: tuple index out of range
, then no data port was detected.
Check that you have all the correct drivers installed and that the keyboard is connected properly.