Stewge
25-10-2013, 02:55 PM
Thought I'd journal my CarPC build here for anyone who might be interested.
What is a carPC?
For those who don't know, a CarPC is literally a PC designed to run in a car. Usually with the purpose of replacing the headunit as the primary source of media/entertainment.
For a long time, CarPCs have been cumbersome things. Ill-suited to the car environment, power-hungry and slow to boot. The amount of effort and custom building required to get something nice and integrated was out of this world.
However, things have progressed in the PC space and many key new bits of gear have come out over the past year have made things significantly easier.
The concept is sort-of been introduced into mainstream with new car touch screen entertainment systems. Some of which are beginning to run more standardised software such as Android. However, these all tend to be nothing short of crap and unsupported when it comes to software updates and bugfixes.
All up, the project will come in around the $1000 mark for parts and many hours of time, mainly spent in testing. I expect another $1000 or so in upgrading the sound system in the car, however this isn't required nor directly contributing to the cost of the carPC build itself.
Pics are done with my phone so they're not terribly good.
Other Ideas
I'm exploring a few other ideas regarding integration. These, I consider secondary to the main purpose of the build and might work on after completion (avoiding scope creep :P).
UHF Scanner: I'm considering integrating a UHF scanner into the build. Either via a PCIE card or simply plugging one in via the Microphone input and relaying output to the speakers on demand.
Game controller buttons: I've got a few old PS2-style USB game controllers which could be re-purposed for PC controls. I could easily locate one of the analog sticks to somewhere in the dash where it could operate as a virtual mouse via some joystick->keyboard/mouse mapping software.
PicoLCD dash screen: Simple multi-line programmable LCD screens are easy to get nowadays. I'm thinking I could mount one somewhere directly in my (driver) field of view with things like song info, time, GPS directions (not sure if I can integrate that well), OBD info etc.
Heads Up Display: Basically the same as the PicoLCD idea except as a projected HUD. Usually the HUD can be achieved by simple mounting a screen flat with the dash where it reflects off the windscreen at the driver.
Rear-Parking Cam: The Touchscreen in use has the ability to act as a rear-view monitor with reverse-trigger cable and RCA input. I consider myself decent at parking so it's not terribly important.
USB tire pressure monitoring: MP3Car has these on offer (pricey). Interesting, but only once everything else is complete.
CAN Bus Hacks: In VY/VZ an enormous amount of control information is passed over the CAN bus. This includes things like the dashboard screen music info when you change volume/tracks etc. In cars equipped with GPS standard, directions are fed to the screen via CAN. This kind of control would require many hours of programming/debugging as very few people have decoded the VY/VZ CAN messages used by audio.
The PC Hardware (100% Complete)
The PC hardware is just like any other, but with low power and high efficiency in mind. Everything I've used is off-the-shelf with very little soldering or custom building required.
http://i20.photobucket.com/albums/b222/ViperKnight/CarPC/th_PCBits_zpsa953636c.jpg (http://s20.photobucket.com/user/ViperKnight/media/CarPC/PCBits_zpsa953636c.jpg.html)
CPU: i3 4130T - The "T" variants have a much lower idle TDP (35W). Given the carPC is comparable to a Home Media PC in requirements, a powerful CPU is not required and efficiency is where it's at. It's also dirt cheap.
Motherboard: ASRock Z87E-ITX - This is a top-end ITX motherboard which I primarily chose for the combined WiFi/bluetooth capabilities and high numbers of USB ports and headers. Being an Overclockers board, it also has a very tweakable BIOS which will come in handy for under-volting the CPU to save even more power. ASRock motherboards also feature an Ultra-Fast boot mode. When using an Intel CPU and onboard graphics, it can boot an i7 system from the button->Start screen in under 4 seconds. With my i3, my system boots in 9 seconds. This motherboard is damn expensive (even more than my super-fast water-cooled i7 desktop).
PIC: http://i20.photobucket.com/albums/b222/ViperKnight/CarPC/th_motherboard_zps1de73226.jpg (http://s20.photobucket.com/user/ViperKnight/media/CarPC/motherboard_zps1de73226.jpg.html)
RAM: 8GB DDR3 1600mhz - Nothing special here. Opted for a single stick purely out of gaining more space to route cables.
SSD: Samsung 250GB EVO - These are rudely fast, and cheap $$/GB. 250GB is more than enough for me to store a majority of my music collection plus space for some movies/games (yes, passengers could play games on it). They also draw very little power and not susceptible to head damage from the car bumping around.
Camera: Creative HD Webcam. This is a cheapy and will essentially work as a DashCAM. It'll be configured in software to record on bootup, cycling footage every couple of days and combined with SSD storage should work as an effective "blackbox" solution in case of an accident. I may get a better quality cam if the idea works out well.
Wireless/Networking: This is provided by the motherboard. 802.11/a/b/g/n/ac as well as Bluetooth 4.0. Bluetooth will pair with my OBDLink MX for engine diagnostics and logging as well as my phone for handsfree and 3G tethering.
Cooling: CPU Cooling is provided by a Noctua NH-L9i low profile CPU cooler (this thing is TINY, but way more efficient than the boxed Intel Crap). Case cooling is done with a single 40mm Noctua fan @ 4500RPM. Both of these are dead silent even at full rpm (which is likely required in the hot car environment).
PSU: Power is supplied to the motherboard by a PicoPSU-150W. If you've not seen a pico PSU, these are damn small. Roughly the same size as the ATX power connector itself!! 95% efficient as well due to passive cooling. I had to opt for the 150W model as the lower ones don't supply a P4 12V dedicated CPU connector which is required with almost all new CPUs.
Car Related Hardware (90% Progress)
GPS: GPS is supplied with a BU-353 USB GPS receiver. This will likely be stuck in the left corner of the dash, around where the tweeter is mounted. The software I'm using is MapFactor Free. It uses OpenStreetMap as a base and has turn-by-turn navigation.
Steering Controls: I'm using a JoyCon EXD for steering controls. It's a simple programmable board which converts resistive input (IE steering controls) into USB HID (keyboard/mouse) events. It has press-and-hold functionality as well as being able to interpret most digital steering controls as well. It has several headers so I may hook some other buttons around the dash to it. My only trouble here is finding an ISO type C connector/harness to use. I'd rather not cut the original harness but they're damn near impossible to find.
UPS: OpenUPS. This is the greatest thing ever created for carPCs. A small PCB which takes 1 variable DC Input as "mains", 1 input as Battery (which it can charge, either SLA or LiPo/LiIon), then outputs variable (set to 12V) DC stable. It also features a USB connector for the PC. With the USB connection it simply appears as a Laptop battery inside Windows. The purpose of this, is the "mains" input will be the Accessories 12V. The problem here, is when the car is switched off, power is cut and would basically cut power to the PC without shutting down (bad). With this UPS, it will detect when accessories power is cut, switch to the battery and trigger windows to shutdown gracefully on battery power. Prior setups required a 12V link directly to the battery and a "shutdown controller" which first triggered software shutdown, then hard killed if the battery voltage got too low. Given that shutdown is not always 100% reliable, it was relatively common for these to drain the battery and shorten the lifespan of the car battery. This is something I wanted to avoid and now can.
Currently I'm testing with a standard 7000mah 12V SLA battery (as used in many UPS devices) which gives me nearly 4 hours of runtime. I'll be experimenting with different battery sizes and possibly switching to LiPo if I can source them. Realistically I only require about 10 minutes of battery runtime so I should be able to get something really small.
UPS Board (USB, 12V (4pin) main and 12V (2pin) battery connectors on the left. 12V output on the right):
http://i20.photobucket.com/albums/b222/ViperKnight/CarPC/th_OpenUPS_zps53efe887.jpg (http://s20.photobucket.com/user/ViperKnight/media/CarPC/OpenUPS_zps53efe887.jpg.html)
Board, Battery and AC/DC brick for testing:
http://i20.photobucket.com/albums/b222/ViperKnight/CarPC/th_openups-battery-dc_zps6db18435.jpg (http://s20.photobucket.com/user/ViperKnight/media/CarPC/openups-battery-dc_zps6db18435.jpg.html)
Case: The case I'm using is a 2DIN mini ITX specific case available on ebay for around $300 including touch-screen (see below). It seems pretty solid, has a bit of room to work with and several pre-drilled holes for mounting hardware.
Case from the top with the lid off and 40mm fan mounted:
http://i20.photobucket.com/albums/b222/ViperKnight/CarPC/th_Caseinside_zpse9b04f96.jpg (http://s20.photobucket.com/user/ViperKnight/media/CarPC/Caseinside_zpse9b04f96.jpg.html)
Back of the case with the motherboard plate in:
http://i20.photobucket.com/albums/b222/ViperKnight/CarPC/th_case-back-panel_zps92acad90.jpg (http://s20.photobucket.com/user/ViperKnight/media/CarPC/case-back-panel_zps92acad90.jpg.html)
Touchscreen: The touchscreen is a Samsung sourced 7" resistive touch panel. The controller allows for either HDMI input or VGA. It does have audio capabilities via crappy speaker but due to poor design I accidentally burnt out my audio chip (screen still works though). Display looks good for the price and the touch seems pretty accurate. It runs on 12V DC, so I cut and soldered the standard connector with a left-over molex connector to get 12V from the PicoPSU and it seems pretty happy. Bonus being the screen power is tied to the PC (it powers on automatically when it recieves power). It screws directly onto the front of the Case. The screen is natively 800x480 resolution which is standard for these types of screens. However, it is capable of accepting up to 1920x1080 input. Currently I'm running 1360x768 as it's the lowest resolution which still allows Metro Apps to function. I'm not sold yet on using Metro as the primary interface so if this changes I may go to a 1:1 800x480 resolution down the track.
Front view of the screen:
http://i20.photobucket.com/albums/b222/ViperKnight/CarPC/th_screen-whole_zps684964e1.jpg (http://s20.photobucket.com/user/ViperKnight/media/CarPC/screen-whole_zps684964e1.jpg.html)
Rear view of the controller board:
http://i20.photobucket.com/albums/b222/ViperKnight/CarPC/th_Screen-guts_zps64210ed9.jpg (http://s20.photobucket.com/user/ViperKnight/media/CarPC/Screen-guts_zps64210ed9.jpg.html)
Touchscreen Button Board: As can be seen in the above shot, there's a button board running along the left side. This connects with a simple USB header and power-button 2pin header to the motherboard. The USB side of things is programmable as well as modifying the LED colouring. Currently have issues with the mounting. Since it uses small micro-switches, the force required to press the middle buttons causes the PCB to flex rather than trigger them. It's only screw mounted at the top and bottom. I may have to rig up something to keep the board in place. There's also a USB port and SDcard reader supplied via USB header. Currently the aux-input and mic don't function due to burning out the audio chip. These don't bother me much anyway.
Wifi/BT Aerial: I'm looking at repurposing a windscreen surface-mount aerial to act as the WiFi/BT receiver. These are available cheaply on ebay and I can get some BNC connectors from Jaycar to make it work.
Audio Considerations: The PC I'm building will not contain a built-in amplifier (although you can buy small 4-channel 50W amps which would mount in the box). I'm building this to compliment a head unit, not to replace it. I'll be mounting a short depth Sony head-unit (CD-less) into the pocket next to the window controls (in a VY this is the cup-holder). I have access to 3D printing and perspex laser-cutting facilities so I'll be making my own "fascia" so it looks nice and OEM-ish.
The original audio ISO connector will run to the head-unit which will be fed audio via a 3.5mm auxiliary input. This is done so that, should anything fail on the PC, I've still got a basic unit with USB/radio features to listen to music with. I went CD-less as there is really very little room in that drink holder pocket.
What is a carPC?
For those who don't know, a CarPC is literally a PC designed to run in a car. Usually with the purpose of replacing the headunit as the primary source of media/entertainment.
For a long time, CarPCs have been cumbersome things. Ill-suited to the car environment, power-hungry and slow to boot. The amount of effort and custom building required to get something nice and integrated was out of this world.
However, things have progressed in the PC space and many key new bits of gear have come out over the past year have made things significantly easier.
The concept is sort-of been introduced into mainstream with new car touch screen entertainment systems. Some of which are beginning to run more standardised software such as Android. However, these all tend to be nothing short of crap and unsupported when it comes to software updates and bugfixes.
All up, the project will come in around the $1000 mark for parts and many hours of time, mainly spent in testing. I expect another $1000 or so in upgrading the sound system in the car, however this isn't required nor directly contributing to the cost of the carPC build itself.
Pics are done with my phone so they're not terribly good.
Other Ideas
I'm exploring a few other ideas regarding integration. These, I consider secondary to the main purpose of the build and might work on after completion (avoiding scope creep :P).
UHF Scanner: I'm considering integrating a UHF scanner into the build. Either via a PCIE card or simply plugging one in via the Microphone input and relaying output to the speakers on demand.
Game controller buttons: I've got a few old PS2-style USB game controllers which could be re-purposed for PC controls. I could easily locate one of the analog sticks to somewhere in the dash where it could operate as a virtual mouse via some joystick->keyboard/mouse mapping software.
PicoLCD dash screen: Simple multi-line programmable LCD screens are easy to get nowadays. I'm thinking I could mount one somewhere directly in my (driver) field of view with things like song info, time, GPS directions (not sure if I can integrate that well), OBD info etc.
Heads Up Display: Basically the same as the PicoLCD idea except as a projected HUD. Usually the HUD can be achieved by simple mounting a screen flat with the dash where it reflects off the windscreen at the driver.
Rear-Parking Cam: The Touchscreen in use has the ability to act as a rear-view monitor with reverse-trigger cable and RCA input. I consider myself decent at parking so it's not terribly important.
USB tire pressure monitoring: MP3Car has these on offer (pricey). Interesting, but only once everything else is complete.
CAN Bus Hacks: In VY/VZ an enormous amount of control information is passed over the CAN bus. This includes things like the dashboard screen music info when you change volume/tracks etc. In cars equipped with GPS standard, directions are fed to the screen via CAN. This kind of control would require many hours of programming/debugging as very few people have decoded the VY/VZ CAN messages used by audio.
The PC Hardware (100% Complete)
The PC hardware is just like any other, but with low power and high efficiency in mind. Everything I've used is off-the-shelf with very little soldering or custom building required.
http://i20.photobucket.com/albums/b222/ViperKnight/CarPC/th_PCBits_zpsa953636c.jpg (http://s20.photobucket.com/user/ViperKnight/media/CarPC/PCBits_zpsa953636c.jpg.html)
CPU: i3 4130T - The "T" variants have a much lower idle TDP (35W). Given the carPC is comparable to a Home Media PC in requirements, a powerful CPU is not required and efficiency is where it's at. It's also dirt cheap.
Motherboard: ASRock Z87E-ITX - This is a top-end ITX motherboard which I primarily chose for the combined WiFi/bluetooth capabilities and high numbers of USB ports and headers. Being an Overclockers board, it also has a very tweakable BIOS which will come in handy for under-volting the CPU to save even more power. ASRock motherboards also feature an Ultra-Fast boot mode. When using an Intel CPU and onboard graphics, it can boot an i7 system from the button->Start screen in under 4 seconds. With my i3, my system boots in 9 seconds. This motherboard is damn expensive (even more than my super-fast water-cooled i7 desktop).
PIC: http://i20.photobucket.com/albums/b222/ViperKnight/CarPC/th_motherboard_zps1de73226.jpg (http://s20.photobucket.com/user/ViperKnight/media/CarPC/motherboard_zps1de73226.jpg.html)
RAM: 8GB DDR3 1600mhz - Nothing special here. Opted for a single stick purely out of gaining more space to route cables.
SSD: Samsung 250GB EVO - These are rudely fast, and cheap $$/GB. 250GB is more than enough for me to store a majority of my music collection plus space for some movies/games (yes, passengers could play games on it). They also draw very little power and not susceptible to head damage from the car bumping around.
Camera: Creative HD Webcam. This is a cheapy and will essentially work as a DashCAM. It'll be configured in software to record on bootup, cycling footage every couple of days and combined with SSD storage should work as an effective "blackbox" solution in case of an accident. I may get a better quality cam if the idea works out well.
Wireless/Networking: This is provided by the motherboard. 802.11/a/b/g/n/ac as well as Bluetooth 4.0. Bluetooth will pair with my OBDLink MX for engine diagnostics and logging as well as my phone for handsfree and 3G tethering.
Cooling: CPU Cooling is provided by a Noctua NH-L9i low profile CPU cooler (this thing is TINY, but way more efficient than the boxed Intel Crap). Case cooling is done with a single 40mm Noctua fan @ 4500RPM. Both of these are dead silent even at full rpm (which is likely required in the hot car environment).
PSU: Power is supplied to the motherboard by a PicoPSU-150W. If you've not seen a pico PSU, these are damn small. Roughly the same size as the ATX power connector itself!! 95% efficient as well due to passive cooling. I had to opt for the 150W model as the lower ones don't supply a P4 12V dedicated CPU connector which is required with almost all new CPUs.
Car Related Hardware (90% Progress)
GPS: GPS is supplied with a BU-353 USB GPS receiver. This will likely be stuck in the left corner of the dash, around where the tweeter is mounted. The software I'm using is MapFactor Free. It uses OpenStreetMap as a base and has turn-by-turn navigation.
Steering Controls: I'm using a JoyCon EXD for steering controls. It's a simple programmable board which converts resistive input (IE steering controls) into USB HID (keyboard/mouse) events. It has press-and-hold functionality as well as being able to interpret most digital steering controls as well. It has several headers so I may hook some other buttons around the dash to it. My only trouble here is finding an ISO type C connector/harness to use. I'd rather not cut the original harness but they're damn near impossible to find.
UPS: OpenUPS. This is the greatest thing ever created for carPCs. A small PCB which takes 1 variable DC Input as "mains", 1 input as Battery (which it can charge, either SLA or LiPo/LiIon), then outputs variable (set to 12V) DC stable. It also features a USB connector for the PC. With the USB connection it simply appears as a Laptop battery inside Windows. The purpose of this, is the "mains" input will be the Accessories 12V. The problem here, is when the car is switched off, power is cut and would basically cut power to the PC without shutting down (bad). With this UPS, it will detect when accessories power is cut, switch to the battery and trigger windows to shutdown gracefully on battery power. Prior setups required a 12V link directly to the battery and a "shutdown controller" which first triggered software shutdown, then hard killed if the battery voltage got too low. Given that shutdown is not always 100% reliable, it was relatively common for these to drain the battery and shorten the lifespan of the car battery. This is something I wanted to avoid and now can.
Currently I'm testing with a standard 7000mah 12V SLA battery (as used in many UPS devices) which gives me nearly 4 hours of runtime. I'll be experimenting with different battery sizes and possibly switching to LiPo if I can source them. Realistically I only require about 10 minutes of battery runtime so I should be able to get something really small.
UPS Board (USB, 12V (4pin) main and 12V (2pin) battery connectors on the left. 12V output on the right):
http://i20.photobucket.com/albums/b222/ViperKnight/CarPC/th_OpenUPS_zps53efe887.jpg (http://s20.photobucket.com/user/ViperKnight/media/CarPC/OpenUPS_zps53efe887.jpg.html)
Board, Battery and AC/DC brick for testing:
http://i20.photobucket.com/albums/b222/ViperKnight/CarPC/th_openups-battery-dc_zps6db18435.jpg (http://s20.photobucket.com/user/ViperKnight/media/CarPC/openups-battery-dc_zps6db18435.jpg.html)
Case: The case I'm using is a 2DIN mini ITX specific case available on ebay for around $300 including touch-screen (see below). It seems pretty solid, has a bit of room to work with and several pre-drilled holes for mounting hardware.
Case from the top with the lid off and 40mm fan mounted:
http://i20.photobucket.com/albums/b222/ViperKnight/CarPC/th_Caseinside_zpse9b04f96.jpg (http://s20.photobucket.com/user/ViperKnight/media/CarPC/Caseinside_zpse9b04f96.jpg.html)
Back of the case with the motherboard plate in:
http://i20.photobucket.com/albums/b222/ViperKnight/CarPC/th_case-back-panel_zps92acad90.jpg (http://s20.photobucket.com/user/ViperKnight/media/CarPC/case-back-panel_zps92acad90.jpg.html)
Touchscreen: The touchscreen is a Samsung sourced 7" resistive touch panel. The controller allows for either HDMI input or VGA. It does have audio capabilities via crappy speaker but due to poor design I accidentally burnt out my audio chip (screen still works though). Display looks good for the price and the touch seems pretty accurate. It runs on 12V DC, so I cut and soldered the standard connector with a left-over molex connector to get 12V from the PicoPSU and it seems pretty happy. Bonus being the screen power is tied to the PC (it powers on automatically when it recieves power). It screws directly onto the front of the Case. The screen is natively 800x480 resolution which is standard for these types of screens. However, it is capable of accepting up to 1920x1080 input. Currently I'm running 1360x768 as it's the lowest resolution which still allows Metro Apps to function. I'm not sold yet on using Metro as the primary interface so if this changes I may go to a 1:1 800x480 resolution down the track.
Front view of the screen:
http://i20.photobucket.com/albums/b222/ViperKnight/CarPC/th_screen-whole_zps684964e1.jpg (http://s20.photobucket.com/user/ViperKnight/media/CarPC/screen-whole_zps684964e1.jpg.html)
Rear view of the controller board:
http://i20.photobucket.com/albums/b222/ViperKnight/CarPC/th_Screen-guts_zps64210ed9.jpg (http://s20.photobucket.com/user/ViperKnight/media/CarPC/Screen-guts_zps64210ed9.jpg.html)
Touchscreen Button Board: As can be seen in the above shot, there's a button board running along the left side. This connects with a simple USB header and power-button 2pin header to the motherboard. The USB side of things is programmable as well as modifying the LED colouring. Currently have issues with the mounting. Since it uses small micro-switches, the force required to press the middle buttons causes the PCB to flex rather than trigger them. It's only screw mounted at the top and bottom. I may have to rig up something to keep the board in place. There's also a USB port and SDcard reader supplied via USB header. Currently the aux-input and mic don't function due to burning out the audio chip. These don't bother me much anyway.
Wifi/BT Aerial: I'm looking at repurposing a windscreen surface-mount aerial to act as the WiFi/BT receiver. These are available cheaply on ebay and I can get some BNC connectors from Jaycar to make it work.
Audio Considerations: The PC I'm building will not contain a built-in amplifier (although you can buy small 4-channel 50W amps which would mount in the box). I'm building this to compliment a head unit, not to replace it. I'll be mounting a short depth Sony head-unit (CD-less) into the pocket next to the window controls (in a VY this is the cup-holder). I have access to 3D printing and perspex laser-cutting facilities so I'll be making my own "fascia" so it looks nice and OEM-ish.
The original audio ISO connector will run to the head-unit which will be fed audio via a 3.5mm auxiliary input. This is done so that, should anything fail on the PC, I've still got a basic unit with USB/radio features to listen to music with. I went CD-less as there is really very little room in that drink holder pocket.