2010 Mazda MX-5 Build
A little backstory:
This was just fun to write… skip it if you just want my setup :)
About 6 years ago I got a brilliant idea to install a computer into my 2000 sunfire GT. I quickly stumbled across mp3car and a plethora of individuals already taking this plunge. I designed and installed my first PC and everything was great except one thing; I couldn’t see the screen with the top down. Being around 2005 the transflectives were VERY pricey and I was a poor college student. Over the winter while the car was “stored.” I decided to try my hand at a backlight upgrade. Following the footsteps of turbocad, I made an aluminum case with a large aluminum backing plate with fins, attached 16 luxeon 1 emitters (around 3200 lumens) and attached my screen to it. Of course then I had to fab it into my dash. Hours of fiber glassing and sanding later I had it all done. There was about 5 lbs of high bright glory with thermally controlled fans and all sorts of other unfortunately delicate electronics. It has been a long time but I don’t think I actually ever fired it up in the car before I decided it was just going to be too unreliable and quit the project. Original work log for the backlight upgrade here: http://www.mp3car.com/lcd-display/69...e-project.html Most of the pictures are no longer there. I can probably dig some up if people are interested.
So, I ended up selling the sunfire and replacing it with a 2003 Mazda MX-5. I installed a cheap Chinese DD all in one unit and was “happy” for about 6 years. Screen was never bright enough and I had to get it replaced 3 times under warranty but whatever. Well, the 2003 was getting old and it was time for an upgrade. I sold the 2003 and picked up a 2010 MX-5 leftover February 2011. I tried to convince myself that my iphone in a dock would replace the DD unit. Well, after the summer was over, so wasn’t that idea. I looked at name brand DD units and they all had the same issues; expensive, not bright enough. About that time my netbook (which I was getting increasingly short tempered with its slow speed thanks to my smoking fast work VIAO) keyboard died. Perfect… carpc time.
OK, here’s the work log :)
I went back and forth between using the netbook and parting it out and building a pc in the bybyte double din case. Ultimately I chose to use the netbook for a few reasons. It had a good battery to allow me to use standby instead of hibernate (comes back faster than the stock radio did), small and had everything and most importantly, the bybyte case only did pico-itx at the time which is a relatively hard and expensive MOBO to find that is any good.
So I knew I needed:
USB sound card
Steering wheel control interface
power supply for laptop
The #1 complaint my friends had about my sunfire pc was the brightness of the screen at night. I knew I wanted to be able to control the brightness or have it done automatically. I found several people were doing it with PICAXE or arduino. Sparing the gory details, I chose an arduino nano 3. The arduino turned out to be the life blood in many ways to my install. I planned to use it for steering wheel controls, ambient sensor and PWM for backlight control. It dawned on me one day that I could use it as my startup/shutdown controller as well. As time progressed, I realized more and more I could do with it.
Computer power state
Computer power button
Auxiliary power MOSFET (power for usb hub, laptop charger, audio amps)
Steering wheel control
Ambient light sensor
Pulse Width Modulation for screen
Convertible roof open/close switch
The circuit itself is relatively simple but is a nest of wires. Basically I use a mosfet and a 12v regulator to supply power to the screen and backlight. The LDR sensor and steering wheel controls are simple voltage dividers off of 5v. I used a 4 channel opto-isolator to isolate the ignition, dashlight and computer signals from the arduino. The roof switch was just a ground when closed so the arduino had no issue with it. I ended up building it into a little project box as you can see in the pictures.
I installed the laptop (asus EEEpc 1005ha) under the passenger seat with Velcro straps to the floor. I had to make some slight modifications like add bolt headers to the vga port and solder wires to the power switch and USB 5v so the arduino could tell when the computer was running or not.
I purchased a pwr+ DC-DC adapter for my netbook model.
I used the bu-353 gps receiver. I was able to remove the guts from the plastic case and install it inside the factory shark fin on my trunk lid.
As of right now I’m still using a Creative Sound Blaster MP3+ usb sound card. I’m having issues with it and should replace it but haven’t done it yet. Still open to good suggestions here: http://www.mp3car.com/car-audio/1508...ound-card.html
The screen is an EBY701 mo-co-so transflective optically bonded screen. I purchased it used off of ebay. There was a misunderstanding as the unit was listed as lightly used and as a 669GL. Turns out after I cut the backlight wires I realized it was a 701 and the truth came out it was 3 years old :(. So, the purpose of this wasn’t to crap on the individual as they did make an effort to make it right. The purpose was to show that I had to switch up. Also, I find that I’m VERY dissatisfied with this screen. I basically cannot see it under direct sunlight. It is about as bad as the screen on the cheap Chinese DD unit. I’m working on a different option.
I ended up with the scantool SX reader. Good device but the current version sucks 9ma from the obd port when usb is disconnected… translation, 9ma sucked out of your battery all the time. They are working on a replacement model that does not do this. I recommend the device, just recommend you wait for the new version. Also recommend a right angle extension cable otherwise it is going to stick down on most cars.
The arduino circuit was very time consuming as I’m no electrical engineer. But, since I made a deal with the head programmer at work that if he stopped ****ing about windows vista/7 and modern “my documents” locations, start menu changes and other differences, I would make the jump from VB6 to vb.net. Mind you I’m a systems engineer, not a programmer. I took 1 semester of VB6 about 10 years ago. So I needed a program that interfaced with Ride Runner and my arduino to do all the things I wanted it to do.
Yes, tacky name, I’m not creative. I wanted my app to have a little popup window with 5 BIG buttons that I could navigate through either with the touchscreen or the steering wheel controls. This would allow me to jump to GPS, Bluetooth, Music… quickly from the steering wheel. I could also change screen brightness, speed control volume settings and on and on. So basically my program sits between my arduino and RR. Theoretically I could have just built it as a plugin but I had my app almost all coded when I realized that and didn’t want to start again/port it. It works fine anyhow. It communicates with RR on the sdk and the arduino over serial. They talk in small “words.” 2 letter prefix followed by data of whatever length. So if I push volume up on the steering wheel, the arduino sends SWVU where as the mode button is SWMDS or SWMDL for short or long press of the mode button.
Dashlight diming of screen
Time diming of screen
Auto or manual dim levels
Steering wheel control translating to RR, CarPCCC actions or other windows actions.
Speed control volume (originally was going to be VSS but I pull from RR gps)
EQ based on top position
Skin changes from brushed aluminum to brushed aluminum with red “backlight” look to match dashlights at night
mutes/unmutes RR on system standby/resume
Displays debug info of arduino (uptime, status of pins etc.)
I’m sure there is more but that’s all I can think of right now.
I won’t get into the nitty gritty but basically it sends the 2 digit prefix with info following to the computer. It also listens for settings changes and requests for status info like is the roof closed, lights on etc. It also deals completely with controlling the backlight. The computer tells it what it wants, the arduino is in charge of making it happen. For example, auto, the arduino calculates backlight brightness based on LDR value and fades between the brightness levels. In manual, it gets a value from the computer and fades to that value and stays there until told otherwise.
Perhaps most importantly, it keeps my battery from draining! It monitors the ignition and computer state. If the ignition switches off and the computer is on, it pulses the button once. It starts checking the computer’s status. If it goes down nicely, the arduino stops the backlight, shuts off the aux mosfet and sleeps itself. If 30 seconds pass and the computer is still running, it holds the button for 5 seconds thereby forcing the PC down and then cuts all power and sleeps. If the computer still doesn’t power down… oh well, it drains its inbuilt battery but not my car battery. When the ignition goes on, the arduino resumes from sleep and powers up the mosfet followed by the computer and fades the screen up to last used brightness.
I’m using Dashcommand for obd2 software
I haven’t gotten gps software yet but will probably suck it up and pay for iguidance despite them “end of lifing” I also need to ante up for bluesoleil to get mobilephone.net online.
I’m running ride runner march right now. I’m going to probably do ever few updates as I have to recompile my program every time… kind of a pain. I have a modified version of elite2 alpha for my skin.
Arduino power, reset and ignition bypass:
The wiring mess :)
Lots more will change I'm sure. I'll update this as I do. I will post a video link eventually of me interacting with the software and stuff.
Wanted to add: I wanted to have as few "T-Taps" as possible. 95% of the wiring comes from the factory radio harness. The exceptions are:
roof switch is t-tapped at the switch
ignition had to be tapped from both accessory and ignition to hold during cranking and accessory mode. They are diode isolated.
I have an 8 gauge wire with 30 amp (I think) fuse running from the battery to my sub amp as well as the accessory Mosfet.
The rest are pulled from a metra wire harness I purchased for my car. My factory Bose amp accepts line level inputs so the sound card just outputs line level into the factory harness.
I also had to diode isolate my 12v to 5v regulator as it was doing something weird... can't remember what now as there were so many little gotchas that cropped up. Many of which can be seen on this forum as I worked through them such as my usb hub that fed 5v back to the computer.
I also updated my arduino circuit to have a .01u (I think) capacitor between ground and the reset pin to keep the thing from auto resetting every time I plugged a device into the usb hub or rebooted etc. To upload a new sketch, I watch when the uploaded switches from compiling to uploading and quickly hit the reset button in the kick panel... works every time. System has been MUCH more reliable since that tweak.
A very nice read! I will be watching your progress. SNO
Excellent! Glad to see you put this together. Couple of questions for you, of course: What kind of mosfet are you using to switch power on for the PC, and why that over a solid state or even a normal coil relay?
I had put a little thought into using my EEE, but it never even occurred to me to get a DCDC power supply for it to negate the need for an inverter. Really good idea, and the EEE is small enough it fits almost anywhere, I'll look forward to more updates and implementation details. You're giving me all sorts of good ideas for my next build :-D
Good question. I guess I should clarify. I actually had a large ~35 amp FET that I was switching on directly from the arduino BUT I found that once it was set, devices were feeding enough back to keep it open even with the pull down resistor. (I think. Again, this problem was a while ago and I don't remember the exact issue). So, I solved it by using the FET to switch a standard automotive relay instead. The "why" originally was that it is a logic level FET so I connected it directly to the PIC instead of from the pic to a reed to a coil relay. In the end... I guess I'm just using it as a reed relay sorta.
The DC to DC is the best. CHEAP. Like 25 bucks on amazon and fits perfectly. My laptop stays charged so long as I do my trip to work every couple of days. If I ever change jobs or commute shorter, I can start using hibernate as that only takes 8 seconds to resume which still is close to the time it took my sat radio to come alive last summer in this thing. Oh and I could reduce to 1 gb of memory in the lappy to help. Maybe even get an SSD :)
How does the DC-DC that you have work? Does it completely stop the current going to laptop once you turn of your car? I'm currently looking for a DC-DC to charge my laptop in my car but I really don't know what to choose because my laptop's battery doesnt work. It doesnt charge or anything, so if I disconnect the charger from it, it turns off.
Depends on how you wire it. Mine is wired to a relay that is controlled by the micro controller. When it determines the laptop has shutdown (or 30 seconds goes by) it kills power to the dc to dc (and other accessories) to keep from draining my car battery.
You would want a shutdown controller and you would want to wire it so that it gets power until the computer is asleep or off.