In Car Entertainment with Delphi – Part 1
I am so excited! Let me tell you all about my “Powered by Delphi” in-car entertainment project. I should warn you up-front, that this post (Part-1) is not strictly a Delphi related post, those are yet to come, but as there will no doubt be a series of Delphi posts born out of this project, I decided to include Part-1 in my usual Delphi blogging locations. Feel free to skip it if you crave the more technical.
Introducing my car..
When I first moved to the United States back in 2012, I had a modest amount of money to use towards a deposit on a place to rent, furniture, and a car. Lets face it, owning a car in Dallas is an essential (you try walking where there are no side-walks in 100-degree heat), anyway. I needed a car and funds were tight.
Being new to the US, I had no kind of credit rating here, and so, while purchasing a new car on finance was an option, it would be at a very high interest rate. I shopped around for the available vehicles, searching modern cars and continued to come up short on anything that I would actually want to drive. I was close to desperate, but then I thought, I wonder what I’d find if I shopped a British brand… Jaguar.
Within a few miles of where I worked there was an ‘exotic’ dealership which dealt with used European cars, and sitting right there on the lot was a 1996 Jaguar XJ6. My reason for buying this car was simple, it was in budget, it was close, and it was interesting (in that, being a 90’s Jaguar it has some actual styling to it, unlike modern cars).
Born in Coventry..
I’d like to say that I bought the car because of some nostalgic value. You see, both my car and I were born in the city of Coventry in England, and the same man (my father) had a part to play in our manufacture. My dad had worked at the Jaguar factory when I was growing up. At the time it was a very family friendly business with a social club, competitions for the children of the workers families, and on some occasions I was even permitted inside the factory with supervision and restricted access.
It happens that the car that I bought was one of the last series to be manufactured in Coventry. By the time it was manufactured the company had been acquired by Ford, and my Dad had taken the voluntary option to leave the company before they laid off most, and eventually all of the Coventry factory workers. Still, this car has the AJ16 engine, one that my Dad would have been a part in the production of, as it is a genuine Jaguar engine made before Ford started putting their Mondeo engines in the US manufactured cars.
Unfortunately, like most mid 90’s Jaguars, mine had seen far better days. The x300 XJ6 series Jaguars actually have great solid engines and transmissions, but at the 19-21 year old mark understandably they do have problems. Since purchasing the car I’ve replaced most components of the braking system, most of the components which are ancillary to the engine, all of the suspension components, the air conditioning system, the harmonic balance unit and the security computer.
When you consider that Ford stopped manufacturing these cars almost 20 years ago, and that they were manufactured entirely in England despite being shipped for sale in the states, I’m sure it’ll come as no surprise that components are difficult to find and expensive. I really could have bought one of the new XJ series for the money that I’ve spent!
So it’s now mechanically sound and the electrical system is working as it should. It’s time to turn my attention to the fading paint, the interior, and most importantly the in-car entertainment system.
The Dash Screen.
One of my hobbies (as you’ll discover if you browse the non-Delphi related portions of this site) is flying weather balloons. This involves a balloon with a GPS device on-board which transmits it’s location over HAM Radio frequencies so that I can go track it down. The chase part of this hobby requires a HAM Radio to receive the telemetry, and a computer to decode it.
When I first began considering the installation of an entertainment system into this car, it occurred to me that I could install a computer into the car with a screen installed in the dashboard. I’ve done this in two previous cars that I owned back in the UK. It would then serve as both an entertainment system and a tracking computer for my balloon hobby. Unfortunately however, a suitable sized screen must be at least 6 inches, meaning a 2-din slot, and the dash of the XJ6 has a slot for a single 1-din head unit.
The thing which annoyed me most about the Jaguar dash console, is that there is actually space in terms of height and width for a 2-din slot, if not depth as well, but Jaguar instead opted to install a digital clock in that space, a useless door-locking button, and the hazard light switch…
(Image above not from my own vehicle, borrowed from a google search).
As you may be able to make out from the image, if you were to remove the clock, the door lock switch, and the hazard switch, there would be space there for a 2-din system, and potentially a 6-7″ touch screen. That was my plan.
The Air Conditioning controls, the clock unit, and the space for the standard head unit are all mounted into a plastic dash insert. The insert is made from a cheap plastic which does not age well and so it’s becoming difficult to purchase them without broken screw mounts. I know because three times I sourced and bought one of these inserts and attempted to modify it to accept a touch screen… and three times I failed to make that modification. I guess it may be my lack of ‘maker’ skills but the three times I tried to modify the inlay using fiber-glass, I made a mess of it, or the fragile inlay simply broke.
Eventually, I gave up trying and instead turned to my brother for help. My brother is a self taught expert with 3D Studio Max. I figured if I sent one of these inlay components to him in England he could make a 3D model of the component, and then make the necessary alterations in the computer. I could then receive the 3D file from him and have it printed on one of these new 3D printers and save myself having to do any modifications myself.
My brother created the file, I sent it to a 3D printing service and…. waited, and.. waited. There was a problem printing the part, which my brother and I had half expected. It was too big for most 3D printers to print in one piece. Gluing/welding it together is problematic. My brother owns an extrusion 3D printer and had expected this issue.
The service provider, MakeXYZ (www.makexyz.com), were very helpful and communicative, and assisted me in finding a solution. They advised me that they could make the part using the SLA method of printing. SLA printing uses a laser to solidify resin rather than an extrusion head for ABS. Larger SLA printers were available and could print the part in one piece. This process is a little more costly, but I was in this far, so why not?! I accepted the advice and today, the component arrived….
(Hence this blog post)
The 3D printed screen inlay.
Today, the 3D printed component arrived, and it looks like this….
It has space for the Air Conditioning controls at the top, and space for a 7″ touch screen at the bottom. As it happens, here’s the lilliput screen I bought months ago for the project…
Unfortunately, having worked across the oceans with my brother in England, there were one or two minor sizing issues with the component…
At first try, the screen did not actually fit into the slot. The only thing holding it back though, were some tiny screw holes which protrude from the edges of the screen by about a millimeter either side. In fact, the sizing issue was so slight, that I decided to delicately (very delicately, these parts are expensive!) force the screen into place…
In the picture, the fit looks about perfect, and it really is. There is about a 1mm gap on either side of the screen, but unless you hold the part up to look for the light leaking through, which will never happen when it’s inserted into the car, then you really could not tell.
The next problem was that the AC controls didn’t fit either! you see, my brother had carefully copied the dimensions and shape leaving space for the AC controls, but again about 1mm too much material was in the final print of the part….
Well, 1mm too much material is far better than too little material. Using a craft knife I gently removed the material until the controls would slot into place. The material that I had to remove was hidden behind the AC controls in any case, and so this again is not visible on the final part.
There was however, one more fitting issue for the inserted components…
If you look carefully from below, you’ll see that the AC controls don’t meet perfectly with the rest of the surround on the under side. In the picture, that’s not bad fitting, it’s an actual gap. The picture shows the gap well, but in actual fact this is again a very small gap and entirely not visible unless you’re looking for it at an angle that you’ll never see when the component is installed in the car.
So, how does it look when installed?
As you can see from the pictures, it looks pretty darned fantastic! There is a slight amount of the inlay which is hidden beneath the paneling (known as the ski-slope to enthusiasts of these cars), but ultimately it does not affect the fit, and the entire screen is visible, and at a great angle for operation from the driving seat.
There are also some signs of the printing process which appear as layer-lines across the part. I could knock these back using some flatting paper, or perhaps a chemical wash if I cared, but actually, I really sort of like them.
So there’s only one thing to figure out now that this all fits, and that’s where to put the hazard light switch…. You’ll remember that it’s on one of the original inlay components which I’ve removed. I already have a push button switch to replace it. I just have to decide if I’m going to drill a hole for it in my new plastic facia, or in the ski-slope panel…. That’s for a later time (perhaps I’ll add it to the UI of the in-car operating system using an arduino?).
My plans for a Delphi operating system…
What I haven’t mentioned here is that I already have a computer installed in the trunk of this car, and the wiring required to connect the touch screen to it. The computer is a full blown PC, if somewhat limited in resources, it should be perfectly suitable for some basic media, simple light-weight apps, and my balloon tracking. So my plan as you might guess, is to build a UI of some kind (or perhaps install an existing one, like Kodi f.x.), and then to build apps for the car.
I’d not yet decided on an Operating System to install, and was thinking I’d have to stick to Windows for the sake of using Delphi to write the applications, but, well, hmm, Delphi now supports Linux!! Okay, so it’s not officially released yet but I do have access to the Beta, and so I could use Linux for the OS and use Delphi to write the applications. Those of you paying attention may be thinking, Delphi is only going to support non-visual applications for Linux, and this is true, but Delphi can already link to shared object files, and the GUI systems of Linux are all accessed through shared object files. I see no reason why I can’t write a visual application using bindings to say, the GTK+ graphical framework. Even if this is not possible, I already have an OpenGL wrapper which works on Linux (tested using FPC not Delphi), and so I’m certain I can write an OpenGL based graphical application if nothing else.
So for now, it’s a case of ‘watch-this-space’ but if all goes according to plan, you can expect several Delphi related posts on building applications for my ‘Delphi-in-a-car’ project! Just some of the thoughts I’ve had so far…
- Bind to GTK for UI
- Bind to OS Maps for the balloon tracking.
- App-Tethering to my phone for voice-operated in-car computing.
- App-Tethering to my phone to provide hands-free operation of the phone.
- Have the computer read-aloud my emails on my morning commute to the office.
- Have the computer notify me when my vehicle servicing is due.
- Connect to the ODB-2 port of the car for engine management & monitoring, as well as watching for service codes.
- Connect to an Arduino in the trunk to operate the automated antenna of the car, which will be connected to a TV/Radio tuner device for live radio and TV in the car.
- Stream Video / Audio from the SSD in the trunk.
- Have the car connect to my home NAS for transfer of media files.
- Roaming Wifi looking for hot-spots.
- And many more!
Thanks for Reading!