PlayVideo: adaptive video player

Use a single adaptive switch to play any video in the library

Similar projects worth following
Individuals with physical or intellectual disability often love watching videos, but may not be able to manage computers, iPads or other video players on their own. I developed this jukebox for my son with disabilities and it has been a joy for him for many years.

The jukebox is made from a Raspberry Pi. The videos are stored on one to four flash drives (thumb drives).The user has one switch.Pressing the switch starts the next video in a list. The user keeps pressing the switch until the desired video starts playing.When the end of the list of videos is reached, the list starts over.A second switch can be added to step backwards through the video list.

PlayVideo is both a hardware and a software project. The hardware is a stock Raspberry Pi. I have tested models 3B, 3B+ and 4. In addition, the hardware needs at least one adaptive switch wired to the GPIO connector. The hardware I like to build is a bit more complete. It has a START switch, a STOP switch, sockets for two adaptive switches and a small keyfob receiver for wireless pushbuttons. (UPDATE: now have a printed circuit board to simplify the interface).

The software is a copy of Raspbian that has been configured for turn-key operation. The operating system boots directly into PlayVideo, the jukebox program. To get this version for yourself, you can download the image from GitHub, burn it to a microSD card, then insert the card into your Raspberry Pi. It includes a C++ program that manages the adaptive switch and plays videos. The software looks for a thumb drive named "VIDEOS". It then finds a file called "list.txt". The list file has a list of videos on the thumb drive. They are selected one at a time, in order of the list, each time the adaptive switch is touched. 

There is a lot more detail, but that is the main idea behind the PlayVideo system. See the instructions that cover all the steps to setting up a PlayVideo system. See the links to learn a lot more. The link to GitHub has all the software and some detailed instructions for building your own variation of the PlayVideo system. The link to WordPress has a detailed description of the hardware assembly. A link to Facebook shows an earlier version in operation.  

Side panel.stl

STL file for side panel

Standard Tesselated Geometry - 4.96 kB - 11/01/2020 at 19:47



STL file for lid

Standard Tesselated Geometry - 51.06 kB - 11/01/2020 at 19:47



STL file for case

Standard Tesselated Geometry - 493.44 kB - 11/01/2020 at 19:46


Raspberry Pi 3B holder v37.f3d

Autodesk Fusion 360 export file for case with lid and side panel.

fusion - 1.25 MB - 11/01/2020 at 19:46



Drill template for the interface printed circuit board.

postscript - 1.04 MB - 08/06/2020 at 22:40


  • Wiring between the Raspberry Pi and the front panel PC board

    Andrew Mitz11/14/2020 at 21:18 0 comments

    The writing between the Raspberry Pi and the front panel PC board is slightly different among the Raspberry Pi 3B, Raspberry Pi 3B+ and Raspberry Pi 4. I use a Raspberry Pi 3B+. The 3B and 3B+ run cool, which provides many hours of service. The Pi 4 is much warmer. I would rather not run it without a small fan. Fans tend to fail over time, so the 3B or 3B+ seems like a better choice. I buy the 3B+ because it is a newer design, but the 3B works file.

    To make the wiring differences more clear, I have updated the schematic with notes on each Raspberry Pi. I

    To make a simple harness I like to use a 10-pin female header to plug into the front panel board. I use an 8-pin female header on the GPIO header of the Raspberry Pi.  I solder color-coded ribbon wires between the two using standard color codes. The pin mapping from the front panel board to the GPIO pins are 1:1 for these pin numbers: 2, 3, 5, 6, 7. The last two pins of the 10-pin header connect depending on the specific Raspberry Pi board. 

    For the Pi 3B, simply wire pins 9 and 10 to the two RUN pins. Note, on all the Raspberry Pis, you must install a male header on the RUN pins yourself. I find this a big annoyance.  

    For the Pi 3B+ or the Pi 4, connect pin 9 to the RUN pin. Connect pin 10 to GPIO 39, which is a ground. The RUN header is 2 pin on the Pi 3B+. On the Pi 4, the header has three contacts and is called RUN/GLOBAL_EN. It still has a RUN pin.

     This picture shows the wiring of the cable harness before assembly. The example is a Pi 3B+.

    The next picture shows the harness wiring attached to the front panel PC board.

  • Autodesk and STL files added for 3D print case

    Andrew Mitz11/01/2020 at 20:00 0 comments

    An Autodesk Fusion 360 export file and three STL files have been uploaded. This is a custom case for the PlayVideo. It has a general purpose Raspberry Pi 3B mounting on the bottom and the top section has holes for the PlayVideo printed circuit board. Note, the Autodesk file is suitable for anyone who wants to build a Raspberry Pi project with space above the board for a circuit and connectors. The layout fits the Raspberry Pi 3B and 3B+. 

    Note one side is removeable. When in place, it holds down the circuit board. The top holds the side panel in place. The top is secured with a single #6 screw. 

  • Be careful about mounting the pushbutton switches

    Andrew Mitz10/05/2020 at 21:18 0 comments

    Be careful when assembling the PlayVideo Interface printed circuit board. All parts except the RF board and the 10-pin header mount on the front of the board. The front has most of the part markings. The RF board and header mount from the rear. Perhaps more subtle is the mounting of the two pushbutton switches. The board has the markings: C  NO  NC  for each switch. The switch fits into the board two ways, but only one orientation will put the COMMON on the left and NORMALLY CLOSED on the right. If you get this backwards, the circuit will think the switch it is being pushed continuously. 

  • New case (soon) and issues with RUN pin on Pi 3b+ and 4

    Andrew Mitz10/05/2020 at 21:09 0 comments

    My next step is to create a custom case for the Pi 3b and front panel board. If all goes well, I will have a 3D printed case to hold both (rather than two separate boxes). 

    One issue that has come up switching from the Raspberry Pi 3b to the 3b+ is the "RUN" header. On the Pi 3b, the second pin next to the RUN header is ground. The "Start" pushbutton of my interface uses these two pins.  On the Pi 3b+ the second pin next to the RUN pin IS NOT GROUND. It is the PEN pin and cannot be used with the Start pushbutton. Also, none of the pins on the POE connector have a ground pin. For the Raspberry Pi 3b+, connect the Start pushbutton between the RUN pin and one of the ground pins on the GPIO header. The most convenient pin is probably pin 39. The Raspberry Pi 4 has a slightly different pin configuration, but the instructions are the same. Connect the Start pushbutton between the RUN pin and a GPIO ground pin.

  • Version 1.1 of pc board. Drill template.

    Andrew Mitz08/06/2020 at 22:39 0 comments

    The m-pad-2.1 Eagle library has the 2N7000 TO-95 transistor layout wrong. I had to fix that. One pushbutton switch was inserted backwards. I added silk screen markings to make the orientation clear. I ordered an updated set of PC  boards from OSH Park. Meanwhile, I created a drill template in Adobe Illustrator. Here is a jpg of the file.

    The following drawing shows the hole sizes. Note, this is not to scale.

  • Printed circuit board for the interface

    Andrew Mitz08/05/2020 at 21:17 0 comments

    I decided to design a circuit board for the interface box. Version V1.0 is built, but not tested yet. I expect it to work. V1.1 is already designed. It fixes a few holes and some component spacing. Here are some photos. 

View all 6 project logs

  • 1
    Download custom image of Raspbian

    The entire software project is on GitHub. However, only the image is needed to make PlayVideo work: Bootable PlayVideo image of Raspbian for Raspberry Pi microSD (July 2018). You can find the entire project here: PlayVideo project on GitHub

  • 2
    Burn PlayVideo image file to microSD card

    Download and install Win32 Disk Imager.

    Purchase a 8 GB or 16 GB microSD card. A larger card will not hurt, but it is not necessary. Burn the image onto the micro SD card. Install the micro SD card in the SD card slot of the Raspberry Pi.

  • 3
    Wire a pushbutton switch for testing

    Connect a pushbutton or adaptive switch to pins 3 (GPIO2) and 6 (Ground) of the GPIO header.

View all 12 instructions

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates