Announcement

Collapse
No announcement yet.

2004 Ford Focus ZTS and Odroid U3

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • 2004 Ford Focus ZTS and Odroid U3

    Hello Internet,

    I've been reading the forums for a bit now, drooling over the really cool set ups. I had put off building a carputer for a few months, but was recently the best man in my buddy's wedding, he got me the Odroid U3 as a part favour. Here's the part list:

    Odroid U3
    Chalk-Elec 7" screen w/ Frame and Ambient Light Sensor
    TDA7850 w/ Denoiser
    Intelligent DC-DC Converter from Minibox
    2 12V Relays with delay (likely set to 3 seconds for ignition)
    ELM327 OBD2 to Bluetooth
    Sure Electronics Mini USB & Bluetooth Interface GPS Demo Board
    4 Port USB hub (haven't decided/bought yet)
    Arduino with rotary encoder for volume (solder the push button directly to the power on the Odroid)
    Running Android 4.2.2

    My goals are:
    -Easily navigate to the next customer's location
    -listen to music (Mp3s)
    -Add/Remove files from the computers in the house (over wifi)
    -See text messages, toggle the phone (w/ tablet talk)
    -have just the Odroid on all the time (DC-DC cuts out at 11.6V)... as far as I could find Odroid doesn't have a sleep mode...
    -Make it look very close to OEM

    Here's a drawing... I'm not an artist, and it doesn't include the USB Hub, GPS, Wifi or Bluetooth.

    Click image for larger version

Name:	design.jpg
Views:	1
Size:	49.4 KB
ID:	2311076


    My biggest problems are how I'm going to mount all of the electronics behind the screen, and how I'm going to fit the screen in the dash. I went to the wreckers and picked up another dash for the Focus...

    Click image for larger version

Name:	panel.jpg
Views:	1
Size:	133.0 KB
ID:	2311075

    The dash panel sticks out like a bubble, so I'm debating cut out above the HVAC controls and making something a bit more flat that will clip into place. I also really like how StevieG set his up, and want to do something similar. My experience with fabrication is minimal, but it'd be good to learn.

    Anyways, that's the start of my worklog. If anyone has any comments, suggestions, or wants to point out any critical flaws, please do!

  • #2
    I gave my best man nothing because i didnt know its was the done thing...untill i saw the bridesmaids gifts from my wife...whoops!!
    you have some quality items in your parts list.if i was to go android that would be my exact parts list too.subscribed

    Comment


    • #3
      Originally posted by camo.b View Post
      I gave my best man nothing because i didnt know its was the done thing...untill i saw the bridesmaids gifts from my wife...whoops!!
      you have some quality items in your parts list.if i was to go android that would be my exact parts list too.subscribed

      Haha, you can plead ignorance on that one. This guy did pretty good for a groom, got the rest of the guys handheld nes/snes systems.

      Your build with the 10" is what sold me on the Chalk-Elecs. Looks really sharp. Did you use an adhesive to stick the screen to your dash?
      I was initially considering magnets to hold the screen (if going over the dash).

      I've gotten around to programming the arduino with the rotary encoder for volume, and researching how to get the screen in there (and checking my mail for my shipping confirmation from Chalk...). I'm leaning towards something like this. Only thing I might change is having it angle towards the driver seat a little more.

      Comment


      • #4
        Originally posted by focused View Post
        Haha, you can plead ignorance on that one. This guy did pretty good for a groom, got the rest of the guys.
        i just kept quiet...no one said anything....to my face anyway

        my screen could be a tad brighter and its a bit too reflective but there is good and bad in all..for me the good far outweighs the bad....
        in reguards to the bezel.im planning to move to win 8/9 when it becomes the must have for carpcs,so a requirement was the ability to access the charms bar with the off screen swiping and so on.one thing ive learnt is future proofing hardware is a must for me.ive been in the carpc game for 3 or so years and im far from finnished.with so many ways to expand i need to cover most bases.

        i did a quick mock up with a tablet for veiwing angles before i got started...
        but yes my screen is recessed into the new dash and held there with double sided tape...its now going to move without some serious heat gun work and a lot of nail biteing.
        i ran around for a week or two with it taped in just to iron out any bugs before i actually used the tape.

        your dash facia looks a treat to work with best thing i can say is cut some plastic/acrilic sheet exactly the same size as the screen wrap the edges in masking tape twice(this will give you a perfect gap).once your dash is about right fit the dummy screen and bog/fill the edges right up to it.once dried and sanded pop out the sacrificial dummy and your screen will fit right in with a perfect gap.just remember 2 layers of tape...one for the gap you need and one for the area the paint will take up.also dont rush the drying time between bog application,,,sanding and paint.give the bog a few days in the sun to fully shrink back before sanding and paint prep.

        love to get a copy of your arduino scetch...ive been looking ino this but havnt found the time to actually do it...i have a leonardo here but no encoder yet.

        Comment


        • #5
          one thing ive learnt is future proofing hardware is a must for me.ive been in the carpc game for 3 or so years and im far from finnished.with so many ways to expand i need to cover most bases
          Makes sense, I feel like this is going to be a never ending project. I'm already starting to think about how the information from the OBD2 will be exported to my database that tracks trips for my business' tax purposes. I want my car, and all of my business to be as automated as possible... really dislike manual data entry.

          your dash facia looks a treat to work with best thing i can say is cut some plastic/acrilic sheet exactly the same size as the screen wrap the edges in masking tape twice...
          That sounds like great advice! Thank you! I really like how your setup goes over the dash, and knowing that it is pretty difficult to remove without a heat gun calms my fears about theft (I live in the boonies, not a huge concern). I was thinking about adding a trigger to the Arduino so that if it detects someone is trying to pry the screen off it would turn on the amp and say something in a British voice about how their picture is being taken. Possibly more work than it's worth.

          I still have a while to think about it all, since I haven't received my Chalk shipping confirmation. And they seem to have ignored my inquiry e-mail.

          For the rotary encoder, I got this one from Digikey. It doesn't have notches... which would've been nice to feel when I've moved the volume up... but meh, not a big deal. The most important thing was that I could fit a knob from one of my musical electronics projects on it.

          Click image for larger version

Name:	carputerdesk.jpg
Views:	1
Size:	92.3 KB
ID:	2288457

          I'm not totally sure what the etiquette is for posting code... I hope this will suffice, here is the sketch.



          /* Volume Controller w/ Rotary Encoder
          This is a culmination of code from http://mitchtech.net/arduino-usb-hid-keyboard/
          and https://www.circuitsathome.com/mcu/r...der-on-arduino
          with some light adaptations from Focused

          It also takes a pushbutton and to goto next track

          Pins:
          Encoder Right - A0
          Center - Ground
          Encoder Left - A1

          Pushbutton - 9

          */


          int sensitivity = 4; /* Adjust this for how sensitive you want your volume knob to be
          1 = Really sensitive
          Anything higher = less sensitive
          */

          int muteMe = 9;
          int buttonState = 0;

          uint8_t buf[8] = {
          0 }; /* Keyboard report buffer */

          /* Rotary encoder read example */
          #define ENC_A 14
          #define ENC_B 15
          #define ENC_PORT PINC

          int state = 0; // Determines which way the knob was turned
          int intermediary = 0; // The intermediate variable
          void setup()
          {
          /* Setup encoder pins as inputs */
          pinMode(ENC_A, INPUT);
          digitalWrite(ENC_A, HIGH);
          pinMode(ENC_B, INPUT);
          digitalWrite(ENC_B, HIGH);
          Serial.begin (9600);

          pinMode(muteMe, INPUT);
          digitalWrite(muteMe, HIGH);

          }

          void loop()
          {
          static uint8_t counter = 0; //this variable will be changed by encoder input
          int8_t tmpdata;
          /**/
          tmpdata = read_encoder();
          if( tmpdata ) {


          //Serial.print(tmpdata);

          if ( tmpdata == 1) { // Did we turn clockwise?

          state = state + 1;

          if (state == sensitivity) {
          buf[2] = 128; // Volume up key
          Serial.write(buf, 8); // Send keypress
          releaseKey(); // Obviously, we need to release the key.
          state = 0;
          }
          }

          if ( tmpdata == -1 ) { // We probably turned counter-clockwise
          state = state - 1;

          if (state == -sensitivity) {
          buf[2] = 129; // Volume down key
          Serial.write(buf, 8); // Send keypress
          releaseKey(); // Yep, release the key.
          state = 0;
          }
          }

          }

          buttonState = digitalRead(muteMe);

          if (buttonState == LOW) {
          buf[2] = 114; // The barbaric way to send a media keypress
          Serial.write(buf, 8);
          releaseKey();
          delay(600);
          }

          }

          void releaseKey()
          {
          buf[0] = 0;
          buf[2] = 0;
          Serial.write(buf, 8); // Release key
          Keyboard.write(163);
          delay(10); // So the volume control doesn't get too eager when spinning quickly.
          }

          /* returns change in encoder state (-1,0,1) */
          int8_t read_encoder()
          {
          static int8_t enc_states[] = {0,-1,1,0,1,0,0,-1,-1,0,0,1,0,1,-1,0};
          static uint8_t old_AB = 0;
          /**/
          old_AB <<= 2; //remember previous state
          old_AB |= ( ENC_PORT & 0x03 ); //add current state
          return ( enc_states[( old_AB & 0x0f )]);
          }
          EDIT: Added volume sensitivity so you can control how eager your rotary encoder is. I have found setting the sensitivity variable to 4 works best for my encoder.

          Also added a pushbutton for the next track. To get it to work in Android edit your qwerty.kl file in /system/usr/keylayout and change MEDIA_NEXT from 163 to 193. I also did this in the Generic.kl file.
          Last edited by focused; 06-08-2014, 06:53 PM.

          Comment


          • #6
            many thanks for that,ill give it a try soon.keep us posted on your build its looking good!!!

            Comment


            • #7
              Here's an update:

              All of the parts have now come in and I've started to rig everything up.


              The Chalk-Elec 7" screen is pretty nice, but I'm having two problems.

              1. I recompiled the kernel for Android to enable the multitouch, but wasn't able to get it working.
              2. The ambient light sensor does nothing... even if I attach a wire or resistor it does nothing.

              I imagine both of these problems are from the firmware (possibly related to this?). So I updated the firmware following their steps. Now I may be doing something wrong... but as far as I can tell the firmware I'd want would be called 7-bf-mt-ab-v1-4.hex... but I can't find it anywhere, and simply renaming the file doesn't seem to give me multitouch or a working ambient light sensor. I really hope I'm doing something wrong, if anyone has experience with Chalk's firmware update, please let me know.

              EDIT: I also found a couple people tweeting about a lack of multitouch firmware, and promises that it will be available "next week"... Really makes me wonder why I purchased the Chalk screen if there is no multitouch and no ambient light sensor... I should've gotten one of the resistive ones from Ebay, regrets.


              Other than that, things are moving along well. I set up a testbench to configure everything. The TDA7850 sounds pretty good through my stereo speakers. There is a thump when the amp turns on, so I connected a relay to the standby function, it turns off a second after the amp starts up.

              Click image for larger version

Name:	testbench.jpg
Views:	1
Size:	163.8 KB
ID:	2288492

              Since the screen is on when power is connected to it, and I only want the computer to be always on, I'm going to have to pick up a cheap USB cable, splice it, and put a relay in between the power wire. That way the screen will only turn on when in accessory mode.

              I also picked up some fiberglassing materials, and am starting to think about how exactly it will be mounted. There will be some cutting, and a bezel made of wood (as I have an abundance).

              Click image for larger version

Name:	screenframe.jpg
Views:	1
Size:	183.5 KB
ID:	2288493


              Finally, I'm looking to change to Arduino script a bit so that when the rotary encoder's push button is pressed it either mutes, pauses, or plays the next track. On Android the scan code for Mute doesn't work as expected. Also, multimedia scan keys are not listed...


              So far so good, this site has been a great resource so far!

              Here's a video showing things in action!

              Last edited by focused; 06-08-2014, 01:54 PM.

              Comment


              • #8
                Weekend Update

                Hello,

                So I've done a fair amount more on my carputer:

                First, I took an old power supply box, and started sticking the parts in it. I used epoxy as a standoff, and then drilled holes through the case and mounted the Odroid, USB Hub, GPS, and TDA7850 amp. The relays are on the side of the power supply with vent holes, so I just put epoxy on either side, and it seems to be pretty secure. I put the case through a pretty thorough shake test, and will do some more tests the next time I take it out.

                To make the case a bit more friendly, I cut the sides off of the top part. It's ugly, but it works.


                Click image for larger version

Name:	case1.jpg
Views:	1
Size:	205.4 KB
ID:	2288538Click image for larger version

Name:	case2.jpg
Views:	1
Size:	178.5 KB
ID:	2288539Click image for larger version

Name:	case3.jpg
Views:	1
Size:	152.5 KB
ID:	2288540Click image for larger version

Name:	case4.jpg
Views:	1
Size:	183.7 KB
ID:	2288541


                After this I started cutting up the dash panel from the wreckers. It was only $10, so I figure if I don't like how this one turns out I can just get another. I know, the cutting looks awful... but this is giving me an idea of how I'm going to mount the thing.

                Click image for larger version

Name:	case5.jpg
Views:	1
Size:	160.0 KB
ID:	2288542Click image for larger version

Name:	case6.jpg
Views:	1
Size:	133.6 KB
ID:	2288543Click image for larger version

Name:	case7.jpg
Views:	1
Size:	303.2 KB
ID:	2288544

                Right now the screen is being held in between the bezel from the radio, and the clips that the bezel usually screws into. It's a pretty tight fit and there's no wiggle. Test drives have been quite smooth, especially after putting sill gasket along the bottom of the power supply.

                The first night I was doing testing I ended up running down my battery to 10.5V because the focus doesn't have a dedicated radio mode. So I installed two switches on the dash, one as a master kill from the 12V constant, and one that switches between the power coming from the master kill or the ignition wire. I am running the amp off the ignition wire... figured it wouldn't be a big deal since the amp was only pulling ~500mA when cranked on 8ohm speakers during the testbench. These switches are plugged using a molex adapter so I don't have to take the heat shrink tubing off every time I dismantle.

                I also put an NFC tag behind the dash so that when I get into my car I can swipe my phone to turn on the wireless hotspot and bluetooth. It then says something cheeky in a British voice.

                Next steps are to figure out a good plan for permanently mounting the screen, and filling in the gap where the volume control/hazard switch go.

                I had posted a rant here about how Chalk hadn't released the multitouch firmware, but in between writing and this post being approved (4 days), Chalk had released the multitouch firmware, and it works quite well!

                The final thing; There is no fan in the case quite yet, and we're about to get some warmer days around here. I am using Zooper and Tasker to show me the CPU temp every couple seconds. So far we got up to 80 C in the heat of the day while under a bit of CPU load, so not bad. I'm waiting on another relay. Once that comes in I'll set it to about 45-55 degrees to start up a fan.

                Ok, that is all.

                Here is another video:

                Last edited by focused; 06-20-2014, 09:48 AM.

                Comment


                • #9
                  Almost there...

                  Here's a quick update:

                  I didn't work too much on it over the last week, but finally got around to starting the fab work a couple days ago.

                  I'm going to preface this by saying I'm new to fab, and straight up brutal at it so far. Fortunately the dashes are really cheap from the wreckers, and I know they have at least 3 more.

                  I decided to use bondo, because it's readily available and pretty cheap.

                  I used a plentiful amount of Bondo, and sanded, applied more, sanded... then dealt with air bubbles, and sanded. Starting with 80 grit and working my way through 120, 220, then 600.

                  Click image for larger version

Name:	062301resize.jpg
Views:	1
Size:	333.3 KB
ID:	2288558
                  Click image for larger version

Name:	062302resize.jpg
Views:	1
Size:	272.8 KB
ID:	2288559


                  I actually really like the white look, and almost wanted to get white paint for the dash. But I figured that would make it really obvious there's a screen in there, and wouldn't match Ford's beige colour scheme.

                  Click image for larger version

Name:	062303resize.jpg
Views:	1
Size:	243.3 KB
ID:	2288560
                  Click image for larger version

Name:	062304resize.jpg
Views:	1
Size:	192.4 KB
ID:	2288561
                  Click image for larger version

Name:	062305resize.jpg
Views:	1
Size:	209.6 KB
ID:	2288562


                  So I started using some black spray paint.

                  Click image for larger version

Name:	062306resize.jpg
Views:	1
Size:	353.8 KB
ID:	2288563


                  And then I doubted myself and went to silver... but it was a bit too shiny, and showed off how terrible I am with Bondo.

                  Click image for larger version

Name:	062307resize.jpg
Views:	1
Size:	223.1 KB
ID:	2288564


                  So I went back to black and started putting things in. The hazard light sits kind of awkwardly.

                  Click image for larger version

Name:	062308resize.jpg
Views:	1
Size:	252.9 KB
ID:	2288565
                  Click image for larger version

Name:	062309resize.jpg
Views:	1
Size:	278.3 KB
ID:	2288566


                  I then put it in the car. The hazard light sits pretty awkwardly. It's being held in by two screws that go into the Bondo... which I'll probably have to reconsider. Also, the wires going to the hazard button barely make it there, and it's going to be a giant pain when I take it apart. So I'll likely end up patching an extra few inches of wire at some point.

                  Click image for larger version

Name:	062310resize.jpg
Views:	1
Size:	226.8 KB
ID:	2288567
                  Click image for larger version

Name:	062311resize.jpg
Views:	1
Size:	221.3 KB
ID:	2288568
                  Click image for larger version

Name:	062312resize.jpg
Views:	1
Size:	241.3 KB
ID:	2288569


                  One of my buddies was asking how I'm going to be able to listen to local broadcasts with this carputer. I can't remember the last time I intentionally listened to the radio, but I had one of those USB SDR sticks just hanging around. I went out with wire cutters ready to start splicing cables, but it turns out I had some foresight and bought the right adapter (even before I started considering this project) to connect directly to my antenna. I purchased the SDR Touch app from the Play Store, and can pick up regular FM, as well as all the other frequencies the stick can tune into.

                  Click image for larger version

Name:	062313resize.jpg
Views:	1
Size:	203.8 KB
ID:	2288570
                  Click image for larger version

Name:	062314resize.jpg
Views:	1
Size:	219.5 KB
ID:	2288571


                  There's an extra USB hub in the glovebox for flash drives or charging phones. It doesn't seem to have the amperage for a USB hard drive though.

                  Last week I recompiled the kernel again to overclock the CPU. The new kernel sources have the Odroid fan precompiled, so I ended up putting the fan on the CPU. At first I had overclocked and set the fan to start at 60 degrees C. This was fine when it was running, but after a trip, if I needed to restart, the Odroid wouldn't make it past the boot screen unless it had time to cool off. So I eventually ended up just going back to 50 degrees, 1.7Ghz, I didn't notice a major speed advantage in overclocking to 2.0Ghz.



                  So, we're pretty well there. I would even say that I'm done. But I might have more plans for it, or want to make it look better in a few days.

                  Reviewing my project goals:

                  My goals are:
                  -Easily navigate to the next customer's location - Yup
                  -listen to music (Mp3s) - Accomplished
                  -Add/Remove files from the computers in the house (over wifi) - With ES File Explorer FTP yes
                  -See text messages, toggle the phone (w/ tablet talk) - Oh ya
                  -have just the Odroid on all the time (DC-DC cuts out at 11.6V) - No, but I drive pretty well daily.
                  -Make it look very close to OEM - Close enough for me to be happy with it

                  Also, throughout the project, having everything be reversible for when I sell the car became a big factor. There are no permanent changes, or spliced wires. Everything can be brought back to stock within 10 minutes.

                  Thanks for reading!

                  Comment


                  • #10
                    First off, very nice project. I would love something similar in my car but have always been worried about the always-running PC draining my main battery. Have you noted how long it takes for the ODroid to drain your car's battery down to where the DC-DC USB will kick it off?

                    Also, what I do for internet on my tablet (2012 Nexus 7) in my car is USB tethering. Setting up Tasker to auto-initiate USB tethering on the phone when connected to a PC/tablet is pretty simple and actually charges the phone rather than killing the battery in short time. Also I've noticed that it was more reliable than Wifi or Bluetooth tethering. I think what you need on the ODroid is to compile in the NDIS drivers if they aren't already.

                    Looking forward to seeing a finished project and hearing more, good luck!
                    "You're just about as useless as JPEGs to Helen Keller" - Wierd Al

                    Comment


                    • #11
                      Originally posted by blafrisch View Post
                      First off, very nice project. I would love something similar in my car but have always been worried about the always-running PC draining my main battery. Have you noted how long it takes for the ODroid to drain your car's battery down to where the DC-DC USB will kick it off?

                      Also, what I do for internet on my tablet (2012 Nexus 7) in my car is USB tethering. Setting up Tasker to auto-initiate USB tethering on the phone when connected to a PC/tablet is pretty simple and actually charges the phone rather than killing the battery in short time. Also I've noticed that it was more reliable than Wifi or Bluetooth tethering. I think what you need on the ODroid is to compile in the NDIS drivers if they aren't already.

                      Looking forward to seeing a finished project and hearing more, good luck!
                      Thanks blafrisch,

                      I had thought about USB tethering, but plugging it in everytime seemed like an inconvenience (especially while driving). I have the Note 3 so the battery life is pretty solid, despite wifi hotspot. There's an NFC tag under the dash to turn on the hotspot, which is far easier.

                      I'm not sure how long it will go before killing the battery. I didn't drive for a couple days this week. It turned over just fine when I started the car. Those were after hot days with the Cpu fan working pretty hard. The next time I have a driving hiatus I'll take a multimetre to the battery. I never did set the kill threshold on the converter, so it'll just keep running. Should probably get around to that one day.

                      Comment


                      • #12
                        Thanks for that post. I found very valuable information for my own project based on your component list. Here's my idea depicted and here's my post about it: http://www.mp3car.com/show-off-your-...odroid-u3.html

                        Comment


                        • #13
                          What about screen resolution? Chalk has 1280x800, but odroid only can 1280x720 or 1920x1080. A little disproportionation or found workaround?

                          Comment


                          • #14
                            What about resolution? Chalk has 1280x800 but odroid only 1280x720.

                            A little disproportion or some workaround found?

                            Comment


                            • #15
                              The resolution seems to come in pretty clear without any workaround. I haven't noticed any blurriness.
                              It comes in very sharp (I got glasses this week, so it comes in even sharper now!).

                              Comment

                              Working...
                              X