I have been atypically quiet on my website lately. That’s largely due to the fact that running the makerspace is taking up a crazy amount of my time, including all of the time I would have devoted to making things. But this weekend, I’ll have a table at the Rochester Children’s Book Festival, and I felt it was time to pull out some projects for the table.
A few years back, I made The Pi Projector which is a Raspberry Pi connected to a cool projector screen dev board. I was pretty happy to see that it was working really well even after sitting for a couple of years, so I did something stupid.
I updated the software.
Yep, you know all those recommendations that you should always keep your software up to date to avoid security problems? Well, I’m of that camp. However, there’s another camp that says never ever upgrade anything that is important days before it is needed. That latter camp is very smart. Sure enough, immediately after updating, my projector stopped working.
Fortunately, I have this website, which is the only place I stored any type of documentation of the project. I found out how to do the install and where I obtained the original instructions.
Unfortunately, if you go to that website, you’ll see that the domain is for sale and no longer contains useful information. Ugh.
Fortunately, there is this thing called the Wayback machine, which through some complex form of computing trickery, has captured snapshots of over 850 billion web pages over time. Seriously, I don’t know how they do it, but this is amazing.
So I took note of the time stamp on the post where I showed off the projector, and found a snapshot. There, I noticed some code that belongs in a file called
config.txt as well as some that belongs in
rc.local. I’ll put those snippets at the end of this post not because they help the story, but because who knows if I’ll be able to find them again.
Unfortunately, this still didn’t do the trick. For some reason, the splash screen never changed on the projector, and it took a bit of debugging to figure out why (and by debugging, I really mean guesswork).
I found that in the
rc.local command, the value
3 was related to the particular communication channel (called i2c bus) that the projector is using. When I looked at the i2c devices in the /dev directory, I didn’t see any labeled 3, but I did see one labeled 11. After giving that a try, things started working again.
So, what did I learn throughout this whole process?
- Always keep notes of your projects, preferably in a format that is searchable so you can refer back to them years from when they are recorded.
- Know how to search the web, including how to search the web that no longer exists using the Wayback Machine.
- Never, ever, EVER, update your hardware days before you need them for a program. That’s just stupid. (But I’ll probably do it again.)
Add this to config.txt
# Add support for software i2c on gpio pins
# DPI Video Setup
hdmi_timings=854 0 14 4 12 480 0 2 3 9 0 0 0 60 0 32000000 3
Add this to rc.local – make sure you confirm that the right bus is chosen for the value after -y
pi@raspberrypi:~ $ sudo nano /etc/rc.local
sudo i2cset -y 3 0x1b 0x0c 0x00 0x00 0x00 0x13 i
sudo i2cset -y 3 0x1b 0x0b 0x00 0x00 0x00 0x00 i
Lastly, here’s the wiring information.
The wiring is not difficult, but there are quite a lot of connections to make (27 to be exact). It is important to take your time and double check every connection before powering on the Raspberry Pi.
Below, are the pins and their numbering on the EVM (source):
Here’s how they map to the Raspberry Pi’s GPIO:
I’ve added P2_6 (5V) via GPIO pin 2 to power the EVM from the Pi or vice versa. A bridge is then required on the EVM from P2_6 to J3 using the M-F jumper wire. The EVM’s 5V/3A power supply is plenty to power both devices.