A Pi-based portable video player, featuring a touch screen, Arcade buttons and a kid friendly, Python-based GUI.
The build consists of:
- Raspberry Pi B+
- ELI70-CR touch screen from FDI
- Adafruit Powerboost 1000C
- 4 x 18650 3.7v 5000mAh Li-ion batteries
- 12v boost converter
- HDMI splitter
- HDMI Panelmount
- USB panelmount
- 1 set of laser cut parts for enclosure (Attached as a .zip file)
Step 1: Enclosure
The enclosure for this player is laser cut from 6mm mdf.
Due to a lack of my own laser cutter I used Ponoko, with amazing results!
If I had my own Laser Cutter I would be able to refine my case design and also create some great enclosures for many of my other projects I have ongoing. I find that a lot of my projects fall at this hurdle, and remain uncompleted due to lack of suitable case.
A Laser Cutter would increase my productivity more than you could ever imagine!
I have attached the files for my enclosure as a .zip attachment for your perusal - I would love to see someone make one of these!
Step 2: Fit Buttons & Screen
Screw the Arcade buttons in place and fit the 7" Touch Screen. This particular screen is the ELI70-CR by FDI - I love it!
In order to reduce stress on the screen's PCB i cut some rubber tubing to fit between the screw hole and the board; this filled the few mm gap and prevented me from over tightening the screws and cracking the board.
The buttons were simply a case of fitting and tightening the plastic collar on them. These particular buttons were extremely cheap; the plan is to replace these buttons as soon as they start becoming faulty with some higher quality ones. I would also aim to get shorter buttons; the length of these ones actually take up a lot of space in the case and make it difficult to fit components.
Step 3: Stuff It!
Fit the components into the lower section of the case:
- The Raspberry Pi
- Wifi dongle
- memory stick
- Panelmount USB port cable
Step 4: Cut Holes for Internal Components
In order to charge the batteries via the powerboost, access the panelmount HDMI & USB ports holes must be cut for access.
These will be added to future versions of the design files so they will be pre-cut, like the switch.
Step 5: Wire It!
The buttons have all the grounds soldered to the ground GPIO pin on the Pi, and then each one is wired to the GPIOs. No need for a resistor on them; the python code used to read them uses the Pi's built in pull up resistors.
Batteries are soldered to the battery inputs of the 1000c, with the USB out powering the Pi.
The 12v boost converter is wired to the raw battery outs on the 1000c, then to the screen.
The power switch is also wired to the powerboost; shorting the Enabled pin to ground switches the circuit off, so the switch is in the 'off' position when on and in the 'on' position when off. If using this Powerboost circuit try and buy a blank switch to avoid confusion :-)
Step 6: Cross Fingers and Switch On!
Hurrah! Fingers crossed the Pi should boot.
For the Pi image I used the supplied Raspbian one from FDI; it is configured for optimum use with their screen.
FDI are brilliant for support, and also provide a config file that can be dropped into any OS, meaning you can switch any of your projects to this screen with minimal fuss!
Step 7: Software: Under Development
Currently I am developing some Python code to generate a kid-friendly interface.
You can track my progress on that over on my Github:
Until I have it up and running the FDI image comes pre-installed with a Python-based GUI for omxplayer; I am currently using this with my player until my interpretation is up and running.
It is called TBO Player, by Github user KenT2; you can download it from here:
Once installed, configure your Pi to run tboplayer.py on startup by editing your /etc/rc.local file and adding the following line at the end:
"sudo python /WhereverYouInstalledTBOPlayer/tboplayer.py"
The software I am working on is very similar, in essence - it is going to be a GUI for omxplayer. Mine will also capture button presses from the arcade buttons and use these commands to change playlists and toggle play/pause and skip videos.
Step 8: Summary
In Summary I am delighted with the end product; the Player resides in my son's room and he uses it to play his favourite videos on the little projector on his ceiling :-)
I will update this instructible as and when progress is made.
Feel free to ask as many questions as possible!