Monday, May 18, 2015

Carputer 2015 - Sourcing Parts

When I began this car computer project, I imagined that the current popularity of hobbyist embedded computing and custom A/V projects would make it easy to obtain components. Not so much. Internet searches and scouring forums can lead toward the specific products that will work best for a project, but many of these products will not be available from a domestic distributor.

Be prepared to work directly with distributors in Asia. Some of these distributors may have a web site for ordering, some work through eBay, and some just have an email address. It helps to respect that English is not the first language and to keep communication simple and clear. Payment is generally accepted through PayPal and timely shipping may cost a bit. I have so far dealt with four different Asian distributors and have received correct and functioning components each time.

Expect a lot of parcels like this one.

The apparent cheapest solutions to problems may not actually be the cheapest. One of my initial project guidelines was to start with inexpensive components and be able to justify price increases. Having done this, I can now offer advice to others who may be considering a similar project.

  1. Don't buy an EasyCAP / EzCAP for composite video capture from Linux. You could spend a fortune in money, time, and frustration to get a combination of device and kernel that actually works. Spend the money and get a UVC capture device from +Andy FEBON.
  2. Don't settle for a cheap TN display panel or resistive touchscreen overlay. An IPS panel with capacitive touchscreen gives the true "tablet experience" that most people expect. I finally found what I was looking for at Chalkboard Electronics.
Left good (FEBON100 UVC), right bad (EasyCAP).

The US$56 TN panel and resistive touchscreen setup below is pretty much only useful for prototyping. I certainly wouldn't want to have to use it.

Cheap TN panel and resistive touchscreen.

Below is the 7" IPS panel that I will install in my car. The pictures don't do it justice. The display controller is small and affixed to the back of the panel. Entire unit can be powered over USB! Full information here.

IPS panel in direct lighting.
IPS panel in indirect lighting.

I'm now just waiting on a powered USB3 hub and some cables before being able to demo this system in my car. A number of commenters have mentioned that it's hard to grasp what I'm trying to achieve with this project. My next posting should contain a demo video that makes things much more clear.

Monday, May 11, 2015

Carputer 2015 - System Design

The carputer design is coming together. I've collected a decent set of system components, cabling, connectors, and tools that will be useful for prototyping. System design has been a bit up in the air as I'm coming to understand the limited selection of components and their constraints. In particular, finding acceptable display panels and controllers has been a problem.

The following is my current iteration on the overall design.

Car outline clip art image by Diagram produced using Inkscape.
  1. Vehicle battery.
    Note the new cable run through the engine firewall to the rear of the vehicle. This will allow maintenance of a low-power sleep mode to quickly bring the master carputer online when the vehicle is turned on or a remote network query is made.
  2. Vehicle system bus and accessory power distribution module.
    This represents a magical (to me) black box that provides 12V accessory power and vehicle systems signaling.
  3. Vehicle A/V control unit.This module processes input and output for non-essential vehicle systems, such as climate control and audio. This is designed to interface with a display unit that will be entirely replaced by new components for this project.
  4. Flat panel touchscreen display and controller module.
    The existing LCD panel is 8 years old and the backlight is weak. Readily available panels in the 7" size seem to go from 800x480 to 1280x800. For this application, panel visibility in a variety of lighting conditions is much more important than resolution.
  5. Legacy display signal conversion and digital capture module.
    The A/V control unit generates what appears to be a 15kHz RGBs video output (like an old arcade game). This will be converted to composite video and then digitally captured with a USB dongle. The master carputer needs to be able to process and display these video frames.
  6. Legacy wiring interface microcontroller.
    This is a controller like an Arduino that interfaces signals from the A/V wiring harness to USB. The master carputer will then be able to determine things like vehicle speed and reverse state.
  7. Powered USB hub.
    This supplies the power and data bus for components in the front and center consoles of the vehicle. The uplink is wired to the master carputer host at the rear of the vehicle.
  8. Switchable DC to DC power conversion module.
    The master carputer requires a stable DC power supply, possibly with multiple voltages and possibly with battery backup support.
  9. Master carputer.
    This is the main computer that handles all USB I/O devices and generates audio/video output to the front display over HDMI. The carputer setup is as yet unspecified. This could be a repurposed coreboot plus Linux Chromebook, an embedded PC, or a Raspberry Pi. Potentially the frontend (audio/video) and backend (input processing and control) could be separate computers.
  10. Rear-view camera module.
    This vehicle did not originally come with a backup camera. A camera will be added to provide rear-facing video to the master carputer for display or recording.
Notice that the long cable runs between the front and rear of the vehicle use digital signaling. I had originally planned to run composite video from the rear camera and analog audio from the master carputer to the front of the vehicle. The flatscreen display module I'm most strongly considering now only has HDMI input and breaks out HDMI audio to a D/A converter. Display controllers often have a board with switches to select between inputs and configure the display like a computer monitor. In the carputer case, fewer switches might be a good thing. I also like the idea of using only digital signals over distance. Solving glitchy or noisy analog audio/video problems is no fun at all.

Sunday, May 3, 2015

Carputer 2015 - Motivation and Goals


I've long wanted to do an in-car computer system but the timing was never right. Recently I decided that my midlife crisis car will be the car I already have: a 2007 Infiniti G35x sedan. Being willing to invest time and money into this car means I can finally have the carputer I want. Interestingly the carputer I want now bears only a passing resemblance to the carputer I wanted 5 years ago.

Mobile Device Integration

In-dash navigation used to be a really big deal. The factory Navigation Package including a 7" LCD touchscreen and Sirius XM Radio was a $2,100 option for my car. Needless to say I'm happy I declined. Now that mobile touchscreen devices are so ubiquitous, why would anyone want to be locked into an in-dash system that works differently and more awkwardly than one's own smartphone or tablet? The industry has clearly figured this out with integration platforms like Android Auto.

Starting Points

This is my car and its sorry 7" non-touch LCD screen. Status display is 15 kHz RGB video, just like old '80s arcade games! I still need access to status information but this washed-out and washed-up LCD needs to go.

The original Bose audio system is still good enough to my aging ears. I'm planning to integrate with the existing audio instead of replace it.

Philosophy and Goals

Having a software and systems background, I like to go into new projects with a set of guidelines. Here's what I've come up with for this carputer:
  • Incrementally add and augment features such that at no point are existing features lost.
    e.g. Kickass visualizations aren't as fun if there's no way to know cabin thermostat settings.
  • Integrate rather than re-create. Follow the mobile device integration philosophy.
  • Carefully plan the physical installation.
    Do I really want to open up the dash and interior panels more than, say, twice?
  • Be mindful of how and when components need to be powered.
  • Run multiplexed buses over distance rather than individual signals.
  • Be mindful of component placement and possibilities for modularity.
  • Maintain a professional look when the vehicle is turned off. Hide wires and dongles.
  • Start cheap and be able to justify increases to the BOM.
  • Prototype outside of the vehicle until a minimally acceptable feature set can be achieved.
    Yeah, this probably isn't as fun when it comes to posting progress pictures.
The following is my set of non-negotiable requirements:
  • The main computer shall run a Linux kernel. I understand this environment.
  • There must be a highly visible touchscreen within usable distance from the driver.
  • As a new feature, backup camera functionality must be integrated.


I'm in the process of ordering parts for initial prototyping. I've tested a few system components to make sure they work and will satisfy requirements. I intend to continue posting status updates here on my blog and on Google+. It would be great if this becomes something of an open project with a degree of collaboration. You let me know what does/doesn't work and I'll let you know. Please let me know when I'm being stupid; I can take it. I'll attempt not to dwell on deep specifics of my vehicle so as to be useful to other carputer enthusiasts. Any generally useful software I develop will be made available, although I can't yet guarantee it will be open source or free.