How to build a Raspberry Pi powered teleprompter
There are plenty of options for content creators when it comes to teleprompers, but the more affordable involve an app on your phone that can be clunky, or extra hardware that may not work well with your camera setup. However, you can make your own Raspberry Pi powered teleprompter, using Python code, basic electronics, and 3D printed parts.
What You’ll Need: Raspberry Pi Teleprompter
Raspberry Pi teleprompter software configuration: install dependencies and scripts
Python code requires some dependencies. You will need to install two libraries: Tkinter and pynput, as well as Adafruit’s Blinka layer.
1. Install Tkinter using the apt-get command in the terminal. Tkinter is a Python library for building basic graphical user interfaces and is used here to create the teleprompter application part of the project.
sudo apt-get install python-tk
2. Install Pynput using pip3. Pynput is a keyboard and mouse simulator Python library. For this project, it is used to simulate mouse scrolling for the text box created with Tkinter.
pip3 install pynput
3. Install Blinka,, an Adafruit CircuitPython compatibility layer for single board computers running Linux. Blinka also allows you to run CircuitPython libraries alongside Python libraries. The basic setup is to simply enter these three commands:
sudo pip3 install --upgrade adafruit-python-shell wget https://raw.githubusercontent.com/adafruit/Raspberry-Pi-Installer-Scripts/master/raspi-blinka.py sudo python3 raspi-blinka.py
If you have any issues, check out Adafruit’s Blinka Installation Guide.
4. Download the three .py files Devil github page and place them in your / home / pi directory.
Python scripts for the Raspberry Pi teleprompter
The teleprompter software involves two Python scripts (which you downloaded above) and a Bash script. The first Python is the real teleprompter app written with Tkinter. The code creates a drop-down text box where you can view your scripts. There is also a button on the side of the app. When clicked, you can open text files to load into the text box. If you need to make changes to your script while it is open in the application, you can type it directly into the text box.
The second Python script is used to control the teleprompter application with external digital inputs. In this program, we use the pynput and Blinka library, to simulate mouse scroll inputs and buttons. It can be thought of as the control interface of the Tkinter script.
When the switch is engaged, pynput will start scrolling allowing your teleprompter to work. Two buttons are also available to increase or decrease the scrolling speed. Finally, an additional button is available to toggle between having the teleprompter app full screen or windowed on the Pi.
We can use a bash script to run both Python scripts simultaneously. The Bash script is started from the terminal using “sudo ./tele.sh”.
Wiring the Raspberry Pi teleprompter
To interface with the buttons to control the teleprompter on the Raspberry Pi, we use an Adafruit Perma-Proto HAT. This is a blank mockup type board that allows you to easily solder circuits for use with the Pi. It has power, ground, and GPIO pins that are exploded and labeled.
The Fritzing circuit diagram will show you how to wire the three buttons and the slide switch. The two buttons on the top left of the Perma-Proto HAT control the speed of the teleprompter and the button on the right toggles between full screen and windowed mode.
The switch controls whether the teleprompter is working or not. In addition, the HDMI decoder board can receive a ground and 5V power supply from the Perma-Proto HAT. Otherwise, it must be powered via USB.
Raspberry Pi teleprompter 3D printing
There are three 3D printed parts you need to create the teleprompter body. .STL files can be downloaded from my GitHub page. The two largest parts fit together to form the main part of the teleprompter. One side has a tripod mount and a cutout for a DSLR lens. The other side has mounts and cutouts for the reflective acrylic, screen, and Raspberry Pi.
It is important to print the part, or paint it after, in black. It should be dark so that you can see the screen reflection in the acrylic.
The third 3D printed part is a PCB holder for the HDMI decoder board which is used with the 5 inch HDMI monitor which carries the video signal from the Raspberry Pi.
Raspberry Pi teleprompter assembly
After you’ve 3D printed your parts, it’s time to put them together.
1. Attach two M2.5 spacers with two M2.5 nuts in the front mounting holes of the 3D printed front part for the Raspberry Pi.
2. Attach the PCB bracket for the HDMI decoder PCB with four M3 nuts and screws at the bottom of the 3D printed part.
3. Wee two M2.5 spacers to attach the Raspberry Pi with M2.5 spacers mounted. The Pi will be mounted on the front of the teleprompter for easy access.
4. Place the Perma-Proto HAT on the GPIO header of the Raspberry Pi and attach it to the M2.5 spacers with two M2.5 screws.
5. Insert the 5 “screen into the 3D printed part and carefully pass its flexible connector from below of the case. Be careful because the connector can easily be damaged. Then insert the connector into the slot on the HDMI decoder card.
6. Mount the HDMI decoder card with 4 M3 screws on the 3D printed PCB support.
7. Run an HDMI cable between the Raspberry Pi and the HDMI decoder board. You can use any cable, but modular ribbon cable can keep the build compact. However, just like the display connector, they can be fragile, so handle them with care.
And that concludes the assembly of the material for the teleprompter!
8. Cut a piece of acrylic approximately 109 mm by 127 mm. To do this, use a safety knife or other cutting tool recommended for acrylic. Then slide the acrylic into the slots in the 3D printed part.
Raspberry Pi teleprompter display configuration
The last step is to invert the Raspberry Pi’s display so that it reflects on the screen and reflects correctly in the acrylic. To do this, you will edit the /boot/config.txt file a bit. We will list the changes below, but you can also see them in my example config.txt file.
1. Open /boot/config.txt to edit it.
sudo nano /boot/config.txt
2. Disable the FKMS graphics driver by putting a # sign (to comment) in front of any line containing dtoverlay = vc4-kms-v3d. Normally this is not recommended, but legacy graphics give you more control over flipping and inverting the display.
3. Force a resolution of 800 x 480 making sure that the “force a specific HDMI mode” section looks like what you see below. The screen resolution is also forced to 800×480, because since the HDMI decoder has no scaling.
# uncomment to force a specific HDMI mode (this will force VGA) hdmi_group=2 hdmi_mode=1 hdmi_mode=87 hdmi_cvt 800 480 60 6 0 0 0
4. Add the line display_rotate = 0x20000 at the bottom of config.txt to invert the display.
5. Save and restart your Pi.
After restarting, your Pi’s display will be mirrored but will appear correctly in acrylic, making it ready to be a teleprompter.
Using the Raspberry Pi teleprompter
There are a few different workflows that you can use with your Raspberry Pi teleprompter. You can use VNC or SSH to remotely access the Pi to load your video scripts and run your code or you can always use a wireless keyboard and mouse. to use the teleprompter display as a monitor for the Pi.
To go further, you can choose to run the bash script on each startup (see how to run a script when starting Raspberry Pi). However you choose to use it, you will have a compact and open source teleprompter option to use during your videos or presentations.