Build a Pi Zero W pocket projector! // Project


YouTube video: 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.

ERROR:not .src - map[alt: class: control: ctx:0xc006ced860 height: href: id:XFciR-U7yhc inline: size: span: src: style: thumbnail: title: width: xml:]

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.

This uses the DLP2000 Digital Micro-mirror Device, which does pretty much what the acronym says.
Thousands of tiny mirrors are placed on the surface of a silicon wafer and can be adjusted from plus 10 to minus 12 degrees, allowing light to be fully reflected out through the lens or directed into a heat-sink.
Brightness levels are controlled by Pulse Width Modulating the state of the mirror between on and off. These mirrors can be moved extremely fast, which is important because of the way colour is produced.

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.

So, there are, of course, pros and cons with this method.

One of the pros is that it’s a relatively cheap way of making a projector. Cheaper than traditional LCD methods.

And since there’s no light loss due to polarization filters as you find in LCD projectors, you can get away with a much smaller light source.

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.

However, for the price it does a pretty decent job.

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.

First I’ll show you how to connect up a Raspberry Pi to the DLP2000, then I’ll give you a much better option.

Wiring it all up is straightforward… Ahem…

Once you have it in this state apply power to the Pi, which will also power the DLP2000. I’m assuming you have a running Pi already. If you don’t, then check out my Pi setup videos.

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.

Then reboot the Pi and you’re done! Easy!

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.

I’ve added two large ground planes to make the display output rock solid, but also provided a void so that the WiFi signal isn’t attenuated.
The Pi Zero W can be mounted either underneath the PCB, or on top

and the PCB can be mounted either on top of the projector,

or underneath.
Whichever way you mount it, just make sure the micro-USB power connector is lined up with the DC jack on the projector.
The smallest footprint will be this configuration.


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.

Next grab your Pi and place it face down on the PCB. The plastic spacer on the header will provide enough space so the Pi will lie parallel to the PCB.

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.

Then there’s one more thing to do.

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.

Next add power. You can use either the DC jack or microUSB port for this.
And there you have it! A decent little portable display. Visible even under my studio lights, but better in a darkened room.

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.

If you can’t find any, then you could always treat the Raspberry Pi as a module and directly solder. This method requires a bit of skill, but it’s workable.

First, add some insulation tape to the bottom of the PCB. It’s not really required, but more of a “just in case”.

Then line up the pins as best you can. You can use a header temporarily for this. Then solder the first point down.
It’s important to make sure that both PCBs are as close as possible to each other. Any gap and you won’t have a proper solder joint.

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.

It’s not really a recommended way of doing it, but just another option.


Power requirements

OK. So what sort of power pack should you use to power this thing?

I attached it to my desk power supply with an inline power monitor to see what current draw there was.

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.

On the other hand, while playing a video there was a max of 609mA with an average of around 470mA.
So, the next revision I’ll be definitely adding in LiPo power.

So, that’s about it. Don’t forget you can pick up this adaptor board from Tindie.


Related

Mick Hellstrom avatar
About Mick Hellstrom
Hacker. Maker. YouTuber.

MickMake forums