It’s been a while since I’ve updated this. Unfortunately work has taken up most of my time. Boo.
In the time that the project has been idling, the prototype has been sitting on my desk and while it’s been gathering dust, the power supply for the screen decided to pack up.
Lovely bit of quality kit that. So I’m on the hunt for a better power supply. The display requires 12V at 4A. The car should be able to supply that no problem. I’ll have to solve how to do that later.
Meanwhile, it occurred to me that while I can connect the Pi and the Arduino via USB, that leaves me with no way of connecting to the Pi. I could do something with a USB hub, but that’s just more hardware. So instead, I figured that I can use the GPIO block to power the Arduino. This block very nearly has 2x5V and 2×3.3V as well as several grounds that the Arduino can use.
And as a bonus, the Arduino has an additional serial port that I can connect to the GPIO block too. That means that I free up the USB slot on the Pi, so I’ll be able to connect a USB keyboard and code directly on it if needed. A further bonus will be that I could even add another Arduino for more data acquisition.
Now the wires just need to arrive…
Finally, I have the beginnings of some code. It’s a bit infuriating to deal with OpenVG. They do claim it’s basically like OpenGL, except it’s not. Argh!
So far with some GLUT wrappers, I’m getting 20-30fps, which isn’t great. I largely blame this on GLUT, at some point I’ll switch it to use raw OpenGL ES. It’s only my own laziness that keeps it with GLUT. Some of the lack of speed is no doubt because I’m viewing a window, where a full screen jobbie will be quicker.
Started to craft some C++ wrappers for OpenVG to make my life easier as well. After all, there is no problem you cannot solve without adding another layer of abstraction.
The plan is:
– Create something vaguely resembling a instrument cluster with some dummy variable input data on Linux.
– Make it use OpenGL ES instead of lazy GLUT wrappers.
– Use garamal’s rpi-buildboot to port it to the Pi’s ARM.
– Create Arduino interface with dummy variable input data.
– Make the Arduino actually read from some electrical source.
– Create some sort of converter with wires and stuff.
– Somehow make it into a more palatable unit.
What is this post all about, I cannot figure any words out. How will the words to it go, I wish you’d tell me, I don’t know.
So, I’ve been kinda busy with things. I had an idea for another side project of mine, this time in Java. *yuck* On Android at the very least. Here it is: CelicaDB. Just a little reference app containing lots of information on all Celica models and it even has some utilities in it.
Didn’t think there was any harm in trying it out, though it’s making me curious about the NDK. C++ is where it’s at, of course.
About time I started doing some actual programming on this..
After managed to blow the previous HDMI board, I ordered another one from China, this time with matching power supply. So that was the final main electronic bit sorted. I loaded up the SD card with the very useful Marshmellow Entertainment test boot image as a test. It loaded up fine on the Pi and managed to hook up to the TV with HDMI. Would it work with the screen? Would the screen still work? Would the screen be rubbish?
We’ve got the power!
Conclusion: screen works and when seen with the eyes is much better than you might think.
To prototype it into one unit, I ordered some OpenBeam/MakerBeam stuff to hook up the 3 boards and the screen.
There’s a few things not quite right, the main thing being I used a direct male to male HDMI connector that, while holding the Pi and the HDMI together, it rotates the board as well as offsetting them, meaning I can’t fasten both to the beams with the PCB spacers. To fix this, I ordered a 15cm HDMI cable, giving a bit more flexibility in board placement. But at the very least it’s in one whole unit, making it a bit easier to handle.
It helps if you connect the converting bit on your universal 12v connector with the pins in the correct polarity. Otherwise you’ll kill your HDMI to LVDS board.
Take it away, Picard.
The 8.9″ HSD089IFW1. Isn’t she a beauty?
Just about fits in the gap, with some clever fitting it should be perfect. Now to get an adaptor and turn on the Pi for the next step.
Here’s hoping it’s bright enough…
Since the last post I’ve been doing some more browsing at screens. The Chalk Elec 7″ screen isn’t available for a little while, so I’m looking at other options.
A few days ago, I got my spare instrument cluster and I took it apart. It has four contact points and the largest usable rectangle is pretty much 250mmx125mm. This is quite wide screen and I’m not entirely sure whether 7″ will be big enough. The spare Nexus 7 I have pretty much disappears in it. I’ve found that there’s a few 8.9″ screens and they’re 213.36×129.55mm. That’s suspiciously close to what would be more filling to the hole. It’s every so slightly too big but 4.5mm isn’t insurmountable. Is it?
The downside is pretty big. The brightest screen I could find is the HSD089IFW1 at 220cd/m2 and a contract of 500:1. In comparison the (unavailable) 7″ one is 400cd/m2 and 800:1 contract ratio.
To quote Beelzeboss:
Fuck. Fuck! FUCK!
That’s a very sizeable difference. My Nexus 4 apparently goes up to
Size > brightness?
Brightness > size?
It appears that when I look at the specifications, whenever there is a bright display, it is low resolution and the high resolution ones are less bright.
The alternative to getting a bigger, less bright, screen is to get TWO screens. The Pi has the HDMI out but it also has GPIO port to which you can attach a small screen, like so:
But that sort of ruins the vibe of the whole thing, I think. I want smooth and sleek and sexy. Nice smooth fonts. Sexy fonts. Crisp. It should pop out of the screen.
On a more joyous note, I only just found out that the Pi does hardware accelerated OpenVG. This is so perfect for this project. Vectors make things crisp and pop. Pop. I shall have to spend some more time investigating the API but it looks fairly straightforward. All I need to do is somehow translate all of the icons and other bits I want to display into vectors. That’ll be a bit of tedious work but it should look awesome.
The downside from this is that I don’t have a screen to test with. See where this is going?