Pi Video Player

An all-in-one video player/controller, suitable for children

Similar projects worth following
My son's 2nd Birthday has been and gone, however I have been looking for a project to make the perfect gift for him.
He absolutely LOVES things like Peppa Pig, Despicable Me (in particular the Minion mini movies), and many, many more.
At home, it's all good- we have everything on DVD or on a USB stick on our TV. Whenever he goes to his grandparent's house, however - they don't have a USB port on their TV nor the extensive DVD collection he has at home or the ability to play from USB Sticks

What I plan to create is a Box that my son can take with him with all his media on, and provide a simple interface for him to choose what he wants to watch.

My initial thoughts to make this are:

Raspberry Pi-based:

I already own a Raspberry Pi so it is the perfect candidate for this project. It is highly configurable and has a HDMI out for easy connection to TVs. I contemplated using the A+ to conserve space but, as the project progresses I have realised there will be room to use a model B.

Python-powered GUI:

Python is a favoured language of mine, and am keen to become more proficient in using it.

The PyMedia library allows for easy video playing capability, and using TKinter/PyGame i aim to create a simple interface for it. I am also looking at PyOMXplayer.

I will run a python script on startup to compile a library of all the media stored on the attached storage, and then will have the Pi load the GUI immediately.

Arcade Buttons:

I will use some big arcade style buttons to allow my son control over what to watch. I aim to have a Python script monitoring buttons. Pressing a button will change the directory that the video player is sourcing it's files from.

this way I can put a picture of a character on/around the button so he can press it to put it on.

forward, back & play/pause will also be available.

I may look to use an Arduino for buttons (and potentially sliders) and pass them to the Pi via serial. While interfacing with the Pi's GPIO headers would be simpler, communication via serial plays more to my strengths, while allowing for analogue controls to be added at a later date (think volume sliders, pots etc)


I aim to make this box portable by adding battery power, so it can be used by my boy in the car on the way to places.

I have a 3.5" Touchscreen to hand, so may look to house that in the middle of the project. While it is a tiny screen size he is fine watching videos on our phone screens.

UPDATE - I have been fortunate enough to have been sent a 7" touch screen by the Future Designs Team (see logs below). I entered an outline of this project on their design challenge and was lucky enough to be one of only 8 people selected to receive one of their ELI70-CR screens to incorporate into my project!


I am going to run 4 x 3.7v 5000mAh Li-Ion batteries in parallel into an Adafruit powerboost 1000C. This will step up my 3.7v to 5v and also handle the recharging of the device via a micro USB port.

  • 1 × Raspberry Pi Model B Will run the Video plying Python script and monitor button presses over USB serial from a Teensy/Arduino
  • 1 × Teensy/Arduino Nano buttons to be connected to it and sent via serial to the Pi
  • 9 × Arcade style buttons 6 for choosing a programme to watch, 3 for play.pause, next & prev video skipping
  • 1 × ELI70-CR 7" Touchscreen with HDMI input for use with Raspberry Pi
  • 1 × Powered USB Hub To provide power to The Pi, screen, Arduino/Teensie & Portable Hard Drive

View all 8 components

  • Version 2: Proposal

    Craig Hissett10/06/2015 at 16:33 4 comments

    This build has been a great experience for me; I have been able to create a product that my son can use, and is a great way for my son to carry his media around for playing via a TV.

    It's main place of residence is in his bedroom, attached to a HDMI projector for displaying that blasted Peppa Pig on his ceiling, ha ha!

    I would like to make some changes to the design, and create a new version of the device to be a permanent fixture in his room, along with the projector. Here's some changes I am planning - please comment if you have any more suggestions!

    Mains Powered

    One of my main issues with Version one had to be portable power; slow to charge, constant powering issues, Pi brownouts, powerboost explosions, you name it ha ha!

    The device will be installed near sockets so either a 12v DC barrel connection would simplify my power needs; all I would need is a step down regulator to 5V.

    Less Arcade Buttons, more Touchy Touchy!

    When i first came up with the plans for this project it centred round a non-touch screen and required the buttons to control and navigate. With my success with the FDI ELI Design Challenge the build now features a 7" Touch Screen, which I would like to make more use of.

    I propose to keep 4 of the 9 arcade buttons in the build, but move them to the top panel either side of the HDMI out. I will use them for changing programs, triggering defaults etc.

    Streamlined Enclosure

    With less buttons in more manageable places and the lack of batteries I would like to see if I can reduce the footprint of the enclosure. This will make the device a bit more discreet if wallmounted/mounted to his drawers.

    GPIO Breakout

    With a permanent fixing in my boy's room I would like to explore a bit of automation; controlling lights, his fishtank (and a potential feeder), and more in the future.

    To do so I would like to incorporate an external connection for some of the GPIO pins (think i2c and suchlike) in order to connect multiple devices to it. This tought needs some work :-)

    Web-Based Software

    My Son is going to be receiving an Android tablet as a Christmas gift and it would be great if this box could provide some entertainment value on the tablet.

    I am looking at the Python Tornado library to act as a Webserver. I would like to serve two pages; a kid's page, with links to all the kiddy content (one page for videos, one for playing with lights, one for triggering patterns for the projector etc) and an Adult's page for setting timers & parameters; shutdown timers at bed time, control for the fish feeder etc.

    The web based feature is something i wanted to use in V1 but I never got around to doing it.

    It would also be great to have a default state with things like the time, the weather, room temps and suchlike on it for when it isn't being used with the projector.

    Split GUI/Video output

    In an ideal world this device would have two Pi's - one for playing the video content and one for powering the onboard touchscreen. That way, when connected to a projector the media could go to the projector but the touchscreen remain displaying the GUI.

    I may actually experiment with adding a Pi A+ into the mix and explore how that could work (the GUI pi would need to pass instructions to the Video Playing Pi when connected to the projector, or be able to play them themselves when not...). Hmmmm - help required with this one!

    I will add more ideas as/when they come to me. In the meantime your input would be greatly appreciated.

    Once this Version has enough momentum I will create it a Project page for it :-)

  • Instructables Featured!

    Craig Hissett10/06/2015 at 15:16 0 comments

    By jingo! :-)

    I have started to piece together an instructable for my project, and published a basic version late last night on the instructables website.

    I have received an email to say that it has been featured, and low and behold - there it is at the top of the list!

    This project has been quite overwhelming for me; the response it has garnered is amazing!

    It's also given me the confidence to finish some old projects that I never got off the ground, and also look for some further competitions to enter to help improve my skills.

  • Winner!!!

    Craig Hissett10/02/2015 at 23:29 2 comments

    FDI have been kind enough to name my project winner of their ELI Design Challenge!!

    After submitting an outline of this project what seems like moons ago I never thought I would be selected to receive one of their 7" touchscreens. I certainly didnt think I would beat the other 7 finalists to walk away with the prize!

    Im so happy they did select me to progress in the competition; without this kick up tje backside my project may never have been completed, like many of my ideas I come up with.

    A big thanks to Alex for his design knowhow with coming up with a case for it; again, without Alex and his expertise I wouldnt have had a product to enter into the design challenge!

    Still some work to be done on the software, as FDI may be making a demo model of their own for trade shows and on the road, so I would love to create a slick GUI to really show off my product.

  • New Wiring 'Diagram'

    Craig Hissett09/16/2015 at 12:33 0 comments

  • Update: new plan of attack

    Craig Hissett09/12/2015 at 23:56 0 comments


    I am still having some teething troubles with my build; suffering from frequent resets (sometimes it gets stuck in a cycle of rebooting until it corrupts the SD card) and also has a very unstable wifi. Time for a rethink.

    I am currently stripping out the powered USB hub and the Model B, and replacing them with a model B+.

    The B+'s better onboard regulator and extra USB ports will allow for me to plug my wifi dongle, a flash drive, the touchscreen and a USB extension to the USB port on the case. This in turn simplifies my powering amd removes the suspect hub from the mix; powerboost straight into the Pi.

    The code over on my github is getting very close too - just needs the syntax tidying up and a few tweaks once I finally get it on the Pi!

  • Python: Help

    Craig Hissett09/02/2015 at 10:19 0 comments

    Just a quick update, as it feels like an eternity since I last wrote on here.

    I now finally have a stable unit; there was a flickering issue that lead to the Powerboost 1000C going up in a puff of smoke... It turned out it was caused by the HDMI panelmount port!

    I have re-jigged my wiring whilst troubleshooting and also introduced a thermal fuse and the 12v converter, so now the powerboost 500C is powering my USB hub, and the 12v step up converter is powering my screen. The 12v converter is taking power directly from the batteries via the 'BAT' out pins on the powerboost. I have ordered another 1000C to put in as charging takes an eternity with the 500c's 500mA charging rate. The 1000C will allow me to charge twice as fast!

    I am now in need of assistance with my python scripting, however...

    Over on my Github ( I have started writing my scripts. Trouble is I can't seem to get how to integrate OMX player into my script and make it work.

    Does anyone have experience with the pyOMXPlayer library or have any alternative ways of playing videos from Python?


  • Qemu, anyone?

    Craig Hissett08/15/2015 at 10:49 0 comments

    Today marks the deadline day for the FDI Design Challenge, in which my proposal for this project made the final 8 and recieved their 7" touchscreen to go into it.

    With the hardware complete and the album of photos documenting the evolution of the project is time to get to serious work on the software.

    Up until now I have been either writing python on my windows netbook and testing snippets on a Pi. Not very productive. I have decided to step it up a notch and have downloaded Qemu; this allows me to emulate my Pi image on my netbook.

    If this works as well as I hope then I should be able to fly through setting up my image ready to whack on an SD card and have the Pi running with it's custom coding in no time; worst case scenario I'll be able to save everything to my github for an easy install on the player if i cant save to the image.

    Does anyone have experience with Qemu? All hints and tips welcome!!

  • Up and Running!!

    Craig Hissett08/10/2015 at 22:19 0 comments

    Sooo - it's working!

    Today i resoldered all the wiring; jst connectors used to make the power system a bit more modular, and also replaced the wiring loom for my buttons/li with a floppy disk ribbon cable from and old PC.

    I am now running a pre-configured image from FDI for the screen - it's cured the flickering, it works 'right out the box' and it is just so bloody quick booting up!!

    Next steps:

    adding HDMI splitter and panel mount

    Exposing Powerboost charging port

    Insulating power, button cables and exposed boats.

  • Coming together nicely...

    Craig Hissett08/06/2015 at 22:10 0 comments

    Just a bit more soldering and a 5v-12v boost requird for the screen, then this mother lover is built! Then I can focus solely on the Python scripts:

  • Filing done!

    Craig Hissett08/06/2015 at 10:48 8 comments

    The dovetails now fit perfectly - Alex has designed a cracking case for me!

    It will be having a trial fit for the internal components, and getting a paint job :-)

View all 25 project logs

View all instructions

Enjoy this project?



Craig Hissett wrote 06/25/2015 at 01:17 point

Soldered up my battery holder and switxh to my powerboost 500c - my USB hub now has power! :-)

  Are you sure? yes | no

Alex Rich wrote 05/14/2015 at 14:35 point

Craig, saw this great article on adafruit covering laser cut enclosure design.  One of the things that jumped out at me is that these things rarely work on first try, it will require some iteration to get it right.  That's the fun of it though.

  Are you sure? yes | no

Craig Hissett wrote 05/14/2015 at 16:44 point

Thanks for the resource Rich - I will give it a read! I am still waiting for my flipping buttons to arrive. Once I have the depth of them I will be able to work out the layout of my internal components and then I will have some dimensions to get cracking with :-)

I have also made an onshape account ready :-)

  Are you sure? yes | no

David Shamblin wrote 05/13/2015 at 18:06 point

This is cool. I recently made a much simpler version of this (in my projects page). I followed because I might need some ideas to improve what I've done. The CAD stuff was what took the longest on mine, because I had little idea of how to use SolidWorks. 

  Are you sure? yes | no

Craig Hissett wrote 05/13/2015 at 19:32 point

Thanks buddy - it'll be a lot better when i get it up and running :-)

Love your build - would love a screen that size to go in it! Only using the 3.5" touh screen due the lack of a bigger, better one at my disposal.

Alex has suggested a great online CAD suite the would be great for sharing - I'd be more than happy to pass the files one once Alex has has been an absolute hero and created a design :-)

  Are you sure? yes | no

Craig Hissett wrote 05/13/2015 at 14:48 point

Thanks Mario - I will give it a good look when I get home from work. If I can pick it up quickly I may well have a go at beating what Alex can come up with :-)

  Are you sure? yes | no

Mario Lukas wrote 05/13/2015 at 15:35 point

I never tried it by myself, but i know the developer and i have seen what is possible. I recommend to read the pdf file (user guide) before starting. 

  Are you sure? yes | no

Alex Rich wrote 05/13/2015 at 16:40 point

I'll look at it as well, looks cool.  

I was originally planning to design it using - a tool I have been looking for an excuse to use.  The great thing about that is it's a full CAD package in the browser and is free for anyone to sign up, easy for collaboration and sharing.  All I would do is come up with the original design and then hand it off to Craig, he would then be able to create new versions, change hole locations, enclosure size, etc.  I like onshape as well because it's more than just a tool for laser cutting, you can model anything in 3d with it.

  Are you sure? yes | no

Craig Hissett wrote 05/13/2015 at 19:33 point

That sounds awesome!

  Are you sure? yes | no

Alex Rich wrote 05/13/2015 at 13:19 point

Sounds simple enough, sketch it out and and I'll take a stab at it.  Do you want to use wood or plastic?  Is this sort of what you were thinking about?

One of the constraints is the corners all have to be more or less sharp.  I did see some cool examples of kerf patterns that allow you to bend corners, that could be cool but might take some iterations to get just right:

  Are you sure? yes | no

Craig Hissett wrote 05/13/2015 at 13:51 point

You've  got it in one buddy - that's the dovetailing I was thinking of!

I'm thinking of using plastic - the 28mm buttons I have ordered are a bright yellow and I was planning on using a similar shaded plastic. He absolutely loves Minions from Despicable Me so it would be perfect for him :-)

I had thought about rounded edges (that rounded case does look amazing) but I like the idea of being able to swap panels easily and quickly. I was going to invest in some rubberized corner covers to prevent it from being used as a weapon :-)

I really appreciate this buddy - I will get my components measured up tomorrow and get them in a shape to measure around and get some useful dimensions to you! The project's image is the rough shape I was thinking of.

Thank you so much!

  Are you sure? yes | no

Craig Hissett wrote 05/13/2015 at 00:38 point

I am looking for help with the CAD work for the case - I have a layout in mind, just need to lay my internal components out to work out overall size.

If anyone is willing to help me I'd love to welcome someone on board to contribute!

  Are you sure? yes | no

Alex Rich wrote 05/13/2015 at 11:57 point

Craig, what's your timeline?  I might be able to help you with a quick box design, I do that sort of thing all the time.  What are your manufacturing capabilities, 3d printer? laser cutter? milling machine?  dremel? (sometimes the easiest way).

  Are you sure? yes | no

Craig Hissett wrote 05/13/2015 at 12:42 point

Thanks for the reply Alex! I am looking to have the case laser cut as I would be able to have it cut at work if I have the files.

I was thinking about a panel based design, using dovetailed edges or something similar to allow easy assembly and make it easy to replace panels as the project develops.

As for the case design itself I am just waiting for the 28mm arcade buttons to arrive - I will then take some photos and measurements of the components and look to make it as compact and kiddy friendly as possibly possible.

As for an actual shape and design I am open to suggestion - I was at one point thinking of using a layout similar to a jumbo gameboy ha ha!

  Are you sure? yes | no

Does this project spark your interest?

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