Build a Pi Zero W pocket projector! // Project
Ever wanted a really small and cheap projector that can fit in your pocket? Here’s a quick project to make a Raspberry Pi Zero W based pocket projector.
DMD technology
If you saw one of my previous mailbag videos, you would have seen me un-box a DLP2000 evaluation module from Texas Instruments.
The DMD will continuously alternate a red, green and blue colour filter in front of the light source and the mirrors will be moved to adjust the intensity of each colour. Either on, off or somewhere in-between using PWM.
One of the pros is that it’s a relatively cheap way of making a projector. Cheaper than traditional LCD methods.
EDIT: The following bit is actually incorrect!
The downside is that the resolution isn’t scalable.
That is: the higher the resolution, the faster the colour filters have to change to be able to maintain an adequate video refresh rate. The faster the colour filters change, the less time that is available for each mirror to adjust brightness levels, therefore reducing colour depth.
For another explanation of how DMDs work, then check out the excellent video from Applied Science.
Wiring up a Pi
The evaluation board will set you back US$99, but unfortunately is only designed for the BeagleBone. You can use other SBCs, such as a Raspberry Pi, but you’ll have to resort to a big ol' mess of wires.
Wiring it all up is straightforward… Ahem…
Once booted, login to your Pi and you’ll need to edit two files.
The first is the /boot/config.txt file. Add the following to the end.
# Added to support DLP2000
dtoverlay=i2c-gpio,i2c_gpio_sda=23,i2c_gpio_scl=24,i2c_gpio_delay_us=2
dtoverlay=dpi18
overscan_left=0
overscan_right=0
overscan_top=0
overscan_bottom=0
framebuffer_width=854
framebuffer_height=480
enable_dpi_lcd=1
display_default_lcd=1
dpi_group=2
dpi_mode=87
dpi_output_format=458773
hdmi_timings=854 0 14 4 12 480 0 2 3 9 0 0 0 60 0 32000000 3
What this does, is to change the I2C interface to other pins so that they don’t clash with the LCD GPIOs, which are configured using the DPI18 Device Tree overlay. The rest of the lines are options specific to this particular display.
Next you need to edit /etc/rc.local and add these lines.
i2cset -y 3 0x1b 0x0c 0x00 0x00 0x00 0x13 i
i2cset -y 3 0x1b 0x0b 0x00 0x00 0x00 0x00 i
This will configure the DLP2000 to use the Raspberry Pi GPIO lines for the display instead of the default splash screen.
If you haven’t already enabled I2C on your Pi, you can run raspi-config to do this.
Except for the big ol' mess of wires…
The PiProjector
Fortunately, JLCPCB Man came to the rescue and you can completely ditch this rats nest of wires by picking up a Raspberry Pi Zero W adapter board on Tindie.
Revision 1 of the PiProjector is a plain header to header adaptor, so nothing fancy at this stage. In a later revision, I’ll be adding LiPo battery support and other features, depending on demand. The Pi Zero W is mounted onto the PCB by directly soldering or by header.
and the PCB can be mounted either on top of the projector,
Soldering up
When mounting it this way, you’ll need two 2x23 female headers and one 2x20 male header. Solder these up to the PiProjector board.
Then solder this up. To keep the board flat, you can solder one pin while holding the Pi and then let it cool down. Then solder up the rest.
Then add the DLP2000.
Unfortunately, the TI guys didn’t bother to connect up the 5v power lines on their board and left it empty. So, I provided this connection on my PCB so that a simple jumper will do the job. If you don’t like the jumper, you could always solder this up on the DLP2000 PCB.
If you want to play a video, then you can use the Pi’s optimized video player for this and for sound you can use a Bluetooth receiver. In a later revision of my PCB I’ll also add in a simple audio amplifier to power some small speakers.
Alternative mounting
If you really do want to mount the PCB on top of the projector with the Pi Zero W underneath the PCB, make sure to get extra long male header pins. The ones I had on hand were just a little short for this unfortunately.
First, add some insulation tape to the bottom of the PCB. It’s not really required, but more of a “just in case”.
Then go along and solder the rest of the vias. Turn it over and solder on the other side to make sure there’s a solid solder joint.
Power requirements
OK. So what sort of power pack should you use to power this thing?
When booting up and sitting idle it drew a max of 673mA with an average of 373mA. Pretty decent, considering the specs both TI and Raspberry Pi suggest for their power packs.
So, that’s about it. Don’t forget you can pick up this adaptor board from Tindie.