Build a Pi Zero W pocket projector! // Project

Everything myself. I have a pi zero w, I soldered the pins and hooked them up to the DPL2000 projector. I did the headless boot, and I’m able to ssh into the pi.

If I comment out the other lines and just leave ic2-gpio line, then reboot, I’m no longer able to ssh into the pi and nothing changes with the screen. It still shows the default DPL2000 splash screen.

Thank you for taking the time to respond to my post by the way, I’m pretty new to this and I appreciate the help.

Are you able to connect a monitor to your Pi’s HDMI port to see if there’s anything indicating the problem? Just enabling the i2c-gpio dtoverlay shouldn’t prevent it from booting. Make sure you haven’t accidentally copy/pasted weird characters into your config.txt. You may have better luck editing it from your Pi, rather than using another computer with the SD card. To do that, boot your Pi, SSH to it, and run sudo nano /boot/config.txt. Scroll down to the end of the file and add your dtoverlay=i2c-gpio,i2c_gpio_sda=23,i2c_gpio_scl=24,i2c_gpio_delay_us=8 line. You may have better luck typing this, rather than copy/paste in case you have some hidden characters that don’t belong. Press ctrl-x to exit, y to write changes, and enter to write to the same filename. Reboot your Pi and hopefully that will fix the booting issue.

The projector shows its splash screen on power up, so that just confirms you have the power and ground connected. You have to send commands over I2C to get it to change from the splash screen to the DPI input, so that’s why you need to get I2C working before troubleshooting it further.

Hey, sorry for the long delay between replies. I work pretty long hours and fathers day and birthdays and Last of Us 2 all cropped up.

I think I don’t have i2c working… so I tried running the commands to download it, but I can’t get my pi to connect to the internet, so I’m working through that problem lol.

I’ll post back when I’ve either succeeded, or I’ve exhausted those options and I’m back to banging my head :slight_smile:

Thank you for your help so far!

Hi! I was having the same issues as you but I found the problem. It’s a problem with the overlay, you can download the fixed version here:

https://www.raspberrypi.org/forums/viewtopic.php?t=275991

Hi,

I am also having issues with i2c on my raspberry pi zero W.
First i2c-3 wasn’t available “Error: Could not open file /dev/i2c-3' or /dev/i2c/3’: No such file or directory” but I was able to solve this by adding “bus=3” to the i2c line in config.txt.
Before doing this i2c was on i2c-11 (I was able to find this by “ls /dev”). However the DLP2000 stays on the splashscreen all the time, I can’t find what the problem is.
I tried multiple i2cset commands but none worked.

Can anyone help me? I realy want this to work!

PS I am using short jumperwires since there are no boards available anymore on tindie :frowning:

Being stuck on the splash screen most likely means you aren’t sending the commands to change the input.

Does i2cdetect -y 3 show the DLP2000 controller? You should see 1b cell filled in. If that cell shows -- then you don’t have the I2C bus hooked up right.

If you do see the controller, run i2cset -y 3 0x1b 0x0c 0x00 0x00 0x00 0x13 i to set the input resolution to 864x480 (assuming that’s the resolution you set in your config.txt), then i2cset -y 3 0x1b 0x0b 0x00 0x00 0x00 0x00 i to set the input to the parallel bus.

Hi, thanks for the quick response!
This is what I once again did to try to get it working, still it doesn’t work…
image

PS I tested my wiring for continuity to make sure it was all conected properly

Here is my config.txt (the part that is relevant):
#Uncomment some or all of these to enable the optional hardware interfaces
dtparam=i2c_arm=on
#dtparam=i2s=on
#dtparam=spi=on

#Uncomment this to enable infrared communication.
#dtoverlay=gpio-ir,gpio_pin=17
#dtoverlay=gpio-ir-tx,gpio_pin=18

#Additional overlays and parameters are documented /boot/overlays/README

#Enable audio (loads snd_bcm2835)
dtparam=audio=on

[pi4]
#Enable DRM VC4 V3D driver on top of the dispmanx display stack
#dtoverlay=vc4-fkms-v3d
#max_framebuffers=2

[all]
dtoverlay=vc4-fkms-v3d
enable_uart=0

#Add support for software i2c on gpio pins
dtoverlay=i2c-gpio,bus=3,i2c_gpio_sda=23,i2c_gpio_scl=24,i2c_gpio_delay_us=2

#DPI Video Setup
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

Ok, so it looks like your I2C bus is wired correctly, and you’re able to talk to the controller.

Try running i2cset -y 3 0x1b 0x0c 0x00 0x00 0x00 0x1b i to set the resolution to 640x360, and i2cset -y 30x1b 0x0b 0x00 0x00 0x00 0x01 i to set the input to the built-in test patterns. Change the displayed test pattern with i2cset -y 3 0x1b 0x11 0x00 0x00 0x00 $PATTERN i where $PATTERN is one of

  • 0x00 for a fine checkerboard
  • 0x01 for solid black
  • 0x02 for solid white
  • 0x03 for solid green
  • 0x04 for solid blue
  • 0x05 for solid red
  • 0x06 for vertical lines
  • 0x07 for horizontal lines
  • 0x08 for fine vertical lines
  • 0x09 for fine horizontal lines
  • 0x0a for diagonal lines
  • 0x0b for vertical grey gradient
  • 0x0c for horizontal grey gradient
  • 0x0d for a checkerboard

If the test pattern works, then double check your DPI bus wires. After trying the test patterns, you’ll need to re-run the i2cset commands from earlier to change the resolution to 864x480 and use the parallel bus input.

I also see a typo in your config.txt settings. You have a horizontal resolution (width) of 854 but you want 864. You also have the wrong pixel frequency in the hdmi_timings setting. Try using framebuffer_width=864 and hdmi_timings=864 0 14 4 12 480 0 2 3 9 0 0 0 60 1 24883200 3.

See a TI support thread, the programmer’s guide for the DLP controller, and the Raspberry PI DPI documentation.

Hi, thanks for the extensive response!
I was able to set the test paterns and see them being projected. I also changed the config.txt to the parameters you told me were wrong, still I had no luck. I did a re-run to change the parameters back after setting the test patterns. After setting the resolution the last testpatern started flickering, next I ran the command to use the parallel bus but the only thing that happened was the tespatern stopping to flicker, nothing else… Could it be possible that i2c-1 is messing with the parrallel bus (i2c-1 and i2c-3 are visible after running ls /dev)?

Yes, the hardware i2c-1 bus conflicts with V-SYNC and H-SYNC DPI pins so does need to be turned off. That’s why you enabled the i2c gpio driver on pins 23 and 24 (unused in DPI 18-bit mode).

I’m sorry but I am not realy able to find how to disable these, can you guide me where to look. Everything I find is how to disable i2c entirely.

Ok, I found how to disable i2c-1. Still it doesn’t work. I am 100% sure my wiring is correct.

This is what I use on my Pi4

[all]
#dtoverlay=vc4-fkms-v3d

#dtoverlay=i2c-gpio,bus=6,i2c_gpio_sda=23,i2c_gpio_scl=24,i2c_gpio_delay_us=2
dtoverlay=i2c6,pins_22_23

dtoverlay=dpi18
#dtoverlay=dpi24
overscan_left=0
overscan_right=0
overscan_top=0
overscan_bottom=0

## Use a custom DPI mode
dpi_group=2
dpi_mode=87

enable_dpi_lcd=1
display_default_lcd=1

## Should this really be 864x480? Native for the DMD should be 640x360
#framebuffer_width=864
#framebuffer_height=480
framebuffer_width=640
framebuffer_height=360

### https://www.raspberrypi.org/documentation/hardware/raspberrypi/dpi/README.md
## These are for dpi18
dpi_output_format=458773
#dpi_timings=864 0 14 4 12 480 0 2 3 9 0 0 0 60 1 24883200 3
dpi_timings=640 0 14 4 12 360 0 2 3 9 0 0 0 60 1 13824000 3
## These are for dpi24
#dpi_output_format=458775
#dpi_timings=864 0 14 4 12 480 0 2 3 9 0 0 0 60 1 24883200 3

To use it on a Pi0, you would want to comment the dtoverlay=i2c6,pins_22_23 line and uncomment the dtoverlay=i2c-gpio,bus=2,i2c_gpio_sda=23,i2c_gpio_scl=24,i2c_gpio_delay_us=2 line. Note that I’m using I2C bus 6, not 3, because on the Pi4 there’s a hardware I2C bus on those pins. That doesn’t exist on the Pi0 so you have to use the GPIO driver instead. If you want to still use bus 3, change the bus paramter on the i2c-gpio dtoverlay and change the BUS= Environment variable below.

Then create /etc/systemd/system/dlp.service as

[Unit]
Description=DLPDLCR2000EVM setup

[Service]
Type=oneshot
RemainAfterExit=yes
# Which I2C bus to use
Environment="BUS=6"
# Set resolution to 640x360
ExecStartPre=/usr/sbin/i2cset -y $BUS 0x1b 0x0c 0x00 0x00 0x00 27 i
# All LEDs on
ExecStartPre=/usr/sbin/i2cset -y $BUS 0x1b 0x16 0x00 0x00 0x00 0x07 i
# Set input to parallel bus
ExecStart=/usr/sbin/i2cset -y $BUS 0x1b 0x0b 0x00 0x00 0x00 0x00 i

# Set input to test pattern
ExecStop=/usr/sbin/i2cset -y $BUS 0x1b 0x0b 0x00 0x00 0x00 0x01 i
# Set test pattern to black
ExecStopPost=/usr/sbin/i2cset -y $BUS 0x1b 0x11 0x00 0x00 0x00 0x01 i
# All LEDs off
ExecStopPost=/usr/sbin/i2cset -y $BUS 0x1b 0x16 0x00 0x00 0x00 0x00 i
[Install]
WantedBy=multi-user.target

After making those changes, reboot, and run sudo systemctl start dlp to configure the DLP2000. If you want this to happen on boot, run sudo systemctl enable dlp. Run sudo systemctl stop dlp to configure the DLP2000 to a black screen, and turn off the LEDs.

Also note that I’m using 640x360, the native resolution of the DMD in the DLP2000, rather than 864x480. Some software may not like the lower resolution as much, but it means the DLP2000 doesn’t have to rescale the image. It also means less data being sent per frame, so signal integrity is a little better with flying wires.

If I might chime in here I am also using the pi4. Ultimately I coppied text from a working config file from a forum to get my DLP2000 working. I also remember people saying that if your gpio jumper wires are too long it can create issues. Adding more ground jumpers has also been reported to help. Good luck!

I have been trying to figure out what my problem may be, I did this by fidling around with the i2c commands. I tried a raspberry pi 4 without luck, the raspberry pi zero W works ‘mostly’.
I think I figured I am not able to set the input of the DLP projector, I only am able to set it to the test paterns. It seems I am able to change the resolution of the projector. After I change the resolution nothing happens unless I re-run the command to set the input to the test patterns. I figured the test paterns are only for the native resolution (is this correct?). I am getting stuck, the projector doesn’t want to change to the parallel input neighter the splashscreen (wich I’m only able to see at boot).
How can I see if the DLP changed to parallel input mode (for now it stays in the mode it was in before the command)?
Thanks a lot for the help so far!

Yes, the test patterns only work in the native resolution (see page 22 of the programmer’s guide.

I don’t have mine handy to test, but I think you can read back the input source with i2ctransfer -y $BUS w1@0x1b 0x0b r4. This will write one byte (0x0b, the “input source selection” register) to address 0x1b (the DLP controller) and read back 4 bytes.

Hi, I tried to read the “input source register”, but as you can see in the screenshot it doesn’t change. Could my projector possibly be broken? I just got the projector.

image

Should I try this? Or will this reset ‘too much’? I found it on page 47 of the programmers guide.

Mike

It looks like this thread is old.

Do you still make these? Looking for a mini projector with low lumens to produce an image approximately 7’ on a wall and run an application controlled with a blue tooth device. Would be curious to know how much these would cost for prototyping and how much they could get down to in bulk? 1000+

Thank you,

Erik Halterman

2 Likes

Hello Mike!

I know there are probably others in this forum who have asked the same thing I am about to ask like the gentleman above me. I’m hoping to find out whether or not more of these boards are going to be restocked for purchase by chance and if so is there a target date for release by chance? I’m extremely interested in purchasing a couple myself along with whatever else is needed in order to make these little projectors. I currently have 3 Zeros linked to Zero projects (sorry for the pun). I have been running into this issue constantly as of late, where I find these projects while surfing around and when I find the source to purchase from they are sold out and its been a couple years since they first came out and seem to have been out of stock for a while. I’m hoping that this one will be the one that breaks the cycle by having more of these boards come out and soon.

If you could spare the few minutes to respond, I’d be super grateful! Also, if they arent going to be coming back into stock, how much would it take to get you to commision a couple for me (like 2-4) :stuck_out_tongue: .

Thank You,
Astraya