Announcement

Collapse
No announcement yet.

Mazda RX8 CarPC 3.0 with stock navigator screen, ainol minipc, arduino

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

  • Mazda RX8 CarPC 3.0 with stock navigator screen, ainol minipc, arduino

    (This project takes inspiration and some ideas from another project, more advanced, with lots of useful information: http://www.mp3car.com/show-off-your-...minipc-in.html )

    After 10 years using carpcs in my two cars, it's time again to renew them. So here we go!

    First generation was based on mini ITX form factor VIA motherboard. Now sitting around, but still working.

    Second generation was based on 6.2 inches phablet running android. Very promising but my experience with android in car has been no good: basically too much attention required while driving, and lack of stability. I know this is against mainstream opinion these days, and I won't argue about this. If you have an android based system in your car and you are happy with it, I'm happy too.

    Still using it in my other car (Mazda 6 sw) waiting for a unit of CarPC 3.0

    Third generation will be based on an ainol mini pc, linked with an arduino micro-controller capable to send key presses, detect external conditions,...

    Lets go into details. This is a 3D block model build in sketchup with all the relevant parts so far:



    Total size is only 26 x 16 cm (10.2 x 6.3 inches)

    Blocks are:

    - ainol mini pc Windows 8.1 64 bit Intel Z3735F 2Gb RAM 32Gb 7000mAh included battery

    - HDMI to VGA video converter

    - VGA to CGA video converter (I need this to use car's original navigator screen)

    - CPT DC-DC converter 12 to 5v 3A 15W

    - DC filter

    - Micro controller Arduino Micro ATmega32u4 5V 16MHz. (This one can emulate key presses through USB)

    - Module 4 relays 250v 10A opto couple (controlled by arduino)

    -USB HUB (not shown) 2.0 x7 powered separately

    1.- Strategies of design:

    1.1- Minimum power consumption: ainol mini pc only draws about 3 watts when fully working. It can run on battery for more than 7 hours.

    1.2.- Minimum distraction to operate while driving. Able to operate it without have to look at the screen. So no touchscreen: I’ve seen that operating a touchscreen that is always located out of direct sight of the road is distracting. I prefer a touchpad located near the steering wheel. That way a single operation can be separated into several moments, as driving allows it.

    1.3.- Ability to connect with internet, but normally disabled. Reception of messages and notices while driving is distracting.

    1.4.- Integration with car as much as possible: interior lights, windows, ODB2 readings,…

    1.5.- PC removable easily for maintenance


    2.- Arduino micro controller functions:

    2.1.- On/off carpc (resume/hibernate) based on ignition on/off and possibly door open + presence detection

    2.2.- Steering wheel resistive button input

    2.3.- Additional interior lights based on leds

    2.4.- Read old navigator buttons from central console and interface them with several functions / selections on the FE through simulated keypress and mouse movements

    2.5.- Switch rear video camera without rear gear engaged when desired

    2.6.- Interface with CAN bus to detect several conditions and actuate on the non-essential parts of the car


    3.- Planned functionality:

    3.1.- Music advanced player: playlists, cover art,…

    3.2.- Video advanced player (when not driving)

    3.3.- GPS navigation system (currently based on Igo navigator)

    3.4.- ODB2 integration to monitor different car values (coolant and air intake temperatures, malfunction codes,…)

    3.5.- Hands free Bluetooth phone interface integrated with the other functionalities

    Front end:

    I'm following an interesting Front End still under development but very promising:

    http://forum.offtware.dk/

    It has still no name, but uses PC resources very efficiently and is very stable.
    Last edited by joan; 01-06-2016, 02:25 PM. Reason: Information added
    risk more than others think is safe dream more than others think is practical
    care more than others think is wise expect more than others think is possible

  • #2
    How to use stock navi screen with standard VGA signal

    Lets go to adapt the RX-8 original navigator screen to make it able to work with standard VGA video signal:



    This screens work with CGA signal, a sort of RGB + composite sync at 15KHz. Fortunately this was a standard used by video game machines during 80's 90's (the ones that could be found at bars). As there is a market for people that restore these old machines adapting them to VGA, it's possible to find converters from VGA to CGA:



    You can get them on ebay for about 20 USD:

    http://www.ebay.com/sch/i.html?_odkw=%22vga+to%22++converter+-hdmi&_osacat=0&_from=R40&_trksid=p2045573.m570.l13 13.TR0.TRC0.H0.X%22vga+to%22++converter+-hdmi+%2Bcga.TRS0&_nkw=%22vga+to%22++converter+-hdmi+%2Bcga&_sacat=0

    Beware not to get the opposite model (CGA to VGA) which is not valid for our purpose. Must be VGA to CGA.

    Finally, signal level must be adjusted connecting 75 ohm resistors between R, G and B wires to ground:


    Navigator is located between rear seats. Here is where screws are located to disassemble and reach the navigator unit:



    and then:



    The relevant connector on the unit:



    and then the relevant wires for R, G, B, sync and GND:


    This way we can use any VGA video source with the navigator screen. Open/close action when key is inserted, tilt and other buttons functionality are maintained in this way. Here is in action using a notebook as VGA video source:

    Last edited by joan; 01-08-2016, 06:36 PM.
    risk more than others think is safe dream more than others think is practical
    care more than others think is wise expect more than others think is possible

    Comment


    • #3
      (reserved)
      risk more than others think is safe dream more than others think is practical
      care more than others think is wise expect more than others think is possible

      Comment


      • #4
        Nice detail on that mod, how is CGA with text and Windows? I guess it's ok on a small screen but the old CGA standard was pretty poor. I'm wondering if it's just the interface that running at the old CGA scan frequency, and the screen is actually a higher dot count that the true original CGA standard?

        I like that someone else is focusing on the fact that a vehicle is not (99% of the time), a mobile entertainment lounge, and that it is sometimes used for - shock! horror! - actually driving from point A to B.

        You are pretty much going the same way I went after years of refining my FE, that is, the FE is used 99% of the time as an aid for the Driver of the vehicle and to cause as little visual / audible distraction as possible.

        I had to retain touch screen functionally as my old vehicle did not have NAV, so I use Garmin or Odyssey navigator and both require touch screen input for address, although I can plan any number of trips on the Home PC and then add them to the Car PC NAV route or favorites file. My wife actually uses the touch screen while I'm driving, she uses it to pick an album, DAB station or adjust the passenger zone of the climate control system. I actually find that less distracting then having her use the physical iDrive controls between the front seats, so from that perspective it's occasionally handy for me, but of course not necessary. For me as the driver, the iDrive and steering buttons are the only way to go, I can find/feel them (strange how they never shift) without taking my eyes off the road, and of course I have audio indication/feedback where required.

        One thing I wanted to add that I glossed over in my build thread, the Ainol was a dog on resume and would loose (not correctly initialize) random USB devices under WIN8.1, that was the main reason that I initially dismissed it as a viable alternative for a car pc, however under Win10, hibernate, resume, and general USB behaviour are all just brilliant, and I'm using the exact same drivers and driver versions. Watch the ainol bios - you can brick them with some bios versions. If there is an option to partly disable USB3, don't touch it, there is also another setting to leave alone but I would have to go back and search for it, this is the one I do remember reading a lot about.
        Last edited by Mickz; 01-08-2016, 08:33 PM.
        Palm sized ainol MiniPC, 8" Transreflective PRO, Win10, Reverse camera, Dual 10HZ GPS RX's for Speed Display & Sat Nav, FM-DAB & Phone Modules, iDrive interface. T-Screen HVAC control, custom microcontrollers, microcode and FE.

        Comment


        • #5
          Originally posted by Mickz View Post
          Nice detail on that mod, how is CGA with text and Windows? I guess it's ok on a small screen but the old CGA standard was pretty poor. I'm wondering if it's just the interface that running at the old CGA scan frequency, and the screen is actually a higher dot count that the true original CGA standard?

          ...
          Quality is enough for me (direct sun against the camera):



          This is a close up of logo part of same screen above:



          It's not touchscreen. I've been using since 10 years an USB touchpad located under the steering wheel:



          It's very discrete and handy, and integrates very well with the car. I can break down an action into several separate interactions. This way I only have sight off the road a fraction of a second each time. It can emulate left and right mouse buttons and mouse wheel also. And it could be used at the same time with a touchscreen or other input methods.

          My ainol mini pc has been working ok so far with hibernate/resume and USBs under stock Windows 8.1. I have two more units coming and we'll see what happen with them, but this one works fine. Even an old GPS BU-235 that has no drivers for Windows 8, but works pretty well and stable with old drivers:

          risk more than others think is safe dream more than others think is practical
          care more than others think is wise expect more than others think is possible

          Comment


          • #6
            That looks fine, not like the old CGA screens. Yes the ainol and Win8.1 worked fine with a few USB devices, once I increased the number past 5 it started to randomly drop ports on resume. There were a few complaints from reviewers about this behaviour. I initially thought that it must have been just the unit they tested, however I have used a few of these and all were the same until Win-10 went in, I can also confirm that it's not just the ainol, other minis and tablets have done this, a Win10 upgrade always fixed it. But as you noted, with most installations on Win8, it may not be a problem.
            Palm sized ainol MiniPC, 8" Transreflective PRO, Win10, Reverse camera, Dual 10HZ GPS RX's for Speed Display & Sat Nav, FM-DAB & Phone Modules, iDrive interface. T-Screen HVAC control, custom microcontrollers, microcode and FE.

            Comment


            • #7
              I'll be following this. I like the idea of using the factory nav screen. How are you piping audio to your factory radio?

              Sent from my SM-N920T using Tapatalk

              Comment


              • #8
                I use Car2PC:

                http://indashpc.org/new/adapters/car2pc-maz.html

                Coming soon real pictures of the install...

                risk more than others think is safe dream more than others think is practical
                care more than others think is wise expect more than others think is possible

                Comment


                • #9
                  Can't wait to see more

                  Sent from my SM-N920T using Tapatalk

                  Comment


                  • #10
                    mini pc auto on/off control from ACC by suiciding arduino

                    This is a kind of heretic approach to automate control of mini pc on/off using an arduino.

                    I don't want connections to permanent 12v able to drain my battery or do weird things while I'm not in the car if something goes wrong. So everything must work on ACC 12v.

                    I plan to use an arduino micro-controller to automatically switch on ainol mini pc when car is turned on and switch it off when car is turned off. Problem is that if no power supply no arduino.

                    To overcome that I'll use a Lithium ion protected battery: it provides 2500 mAh at 3.2 to 4.2 volts, enough to run arduino for hours. This battery will be charged from ACC 12v while car is on. Battery volts will be converted to +5v to feed the arduino.

                    To save battery power, arduino will be feed from this auxiliary battery through a relay that is controlled by arduino itself:

                    1.- Initially all is turned off: car (ACC) and arduino

                    2.- When ACC voltage appears feed arduino, it start running and connects auxiliary battery as power source as well as ACC. Then "push" ainol mini pc on/off button and starts it.

                    3.- arduino monitors ACC voltage to detect when car has been turned off.

                    4.- At that point arduino is still alive, running on auxiliary battery. It "push" ainol mini pc button to turn it off.

                    5.- Then arduino monitors mini pc status until it has been effectively turned off or a fixed amount of time has passed by and mini pc won't turn it off (these kind of things happen in real life).

                    6.- If mini pc is off arduino cut auxiliary battery supply and "suicide" itself. If not it force a shutdown maintaining ainol button pressed for 10 seconds, and then suicide itself.

                    This is the scheme:



                    and the proto board:



                    and here the software for arduino:

                    Code:
                    //  Controlador RX8 v.1.1        (c) Joan Sales 2016
                    
                    //  Push on/off button on ainol mini pc when ACC on and when ACC off
                    //  Maintain arduino power from battery and  disconnect itself after ACC off and ainol mini pc is turned off
                    //  Checks ainol mini pc status (on/off) through USB power line
                    
                    //  Lines:
                    //    D5: INPUT     ACC +5v from car through power supply for arduino
                    //    D6: OUTPUT    controls relay to push on/off switch on ainol  mini pc
                    //    D8: INPUT     detects +5v USB power line from ainol  mini pc to
                    //                  check is it's on or off
                    //    D9: OUTPUT    controls relay to enable/disable arduino power from battery
                    
                    
                    const int ACC = 5;
                    const int minipc_switch = 6;
                    const int minipc_onoff = 8;
                    const int poweronbatt = 9;
                    const int led = 13;
                    
                    
                    int ok;             //result about minipc has been turned off
                    int minipc;         //minipc on or off
                    int duration;       //milliseconds of minipc button pressed 
                    int timeout;        //milliseconds before force minipc shutdown
                    
                    void setup() {
                    
                      pinMode(minipc_switch, OUTPUT);           // to switch ainol mini pc
                      pinMode(ACC, INPUT);                      // from ACC power from car
                      pinMode(minipc_onoff, INPUT);             // from +5v USB feedback 
                      pinMode(led, OUTPUT);                     // led on arduino board
                      pinMode(poweronbatt, OUTPUT);             // to relay to kill or allow battery supply
                    
                      //Initial status
                      digitalWrite(poweronbatt, LOW);           // feed arduino's power also from battery
                      digitalWrite(minipc_switch, HIGH);        // forces not to press switch from beginning
                      digitalWrite(led, HIGH);                  // led on to signal it
                      delay(1000);                              // allow to stabilize everything
                    
                      //start minipc if it's off
                      if (digitalRead(minipc_onoff) == LOW)  {  // if minipc is off
                        press_minipc_switch(1000);              // press minipc switch for 1 second
                        delay(10000);                           // allow time for cranking car
                        minipc = 1;                             // annotate minipc is on
                      } 
                    
                    }
                    
                    void loop() {
                    
                    //Test for witch off
                    if (minipc == 1 && digitalRead(ACC) == LOW)  {    // minipc was on and ACC has been turned off
                      press_minipc_switch(1000);                      // press minipc switch to turn it off    
                      ok = wait_minipc_off(30 000);                   // wait for minipc to turn off
                            
                      if ( ok == 1 ) {                                // if minipc turned off successfully...
                       delay(3000);    
                       minipc=0;
                       digitalWrite(poweronbatt, HIGH);               // turns off battery power supply
                                                                      // so arduino is turned off
                       digitalWrite(led, LOW);                        // led off to signal it
                                                                      // and everything ends
                        }
                      else {                                          // ... if not...
                        press_minipc_switch(10000);                   // press minipc switch for 10 seconds
                                                                      // to force switch off
                        digitalWrite(poweronbatt, HIGH);              // turn off battery power supply
                        digitalWrite(led, LOW);                       // led off to signal it
                        }
                      }
                    }
                    
                    //-------------------------------------------------------
                    // Function press minipc switch for duration milliseconds
                    //-------------------------------------------------------
                    
                    void press_minipc_switch(int duration) {
                    
                      digitalWrite(minipc_switch, LOW);     // press minipc switch
                      delay(duration);                      // for duration/1000 seconds
                      digitalWrite(minipc_switch, HIGH);    // release minipc switch
                    }
                    
                    //-------------------------------------------------------
                    // Function wait until minipc is turned off or timeout
                    //-------------------------------------------------------
                    // Result:
                    //    1: minipc switched off successfully
                    //    0: timeout and minipc still on
                    
                    int wait_minipc_off( int timeout) {
                    
                      int result;
                      long timer;
                    
                      timer = millis();                                          //take milliseconds count after arduino started
                      result = 0;                                                //set to 0 if no good result
                    
                        do {                                                     //loop checking for minipc turned off
                          if (digitalRead(minipc_onoff) == LOW) {                //if it turned off..
                            result = 1;                                          //mark success
                          }
                        } while (result == 0 && millis() - timer < timeout);     //repeat until minipc turned off or timeout
                    
                        return result;
                    }
                    
                    //-------------- end of sketch -------------------------
                    Last edited by joan; 02-27-2016, 12:57 PM. Reason: Update arduino code
                    risk more than others think is safe dream more than others think is practical
                    care more than others think is wise expect more than others think is possible

                    Comment


                    • #11
                      And here it is in the real world:



                      connections still not finished, but battery system finished. All blocks are simply hot glued on a board base.

                      I've used (I'm directing to searches on ebay, so links will be alive upon time):

                      Battery

                      4 relay module

                      arduino micro ATMega32u4 (this one is able to simulate USB mouse and keyboard to mini pc)

                      CPT Car power supply 12v to 5v 3A

                      PFM control 0.9-5v to 5v DC-DC boost step up module (to convert from battery voltage to 5v)

                      LIon battery charger module (converts and controls from 5v to charge the battery)
                      Last edited by joan; 02-21-2016, 03:14 PM.
                      risk more than others think is safe dream more than others think is practical
                      care more than others think is wise expect more than others think is possible

                      Comment


                      • #12
                        and finally working and controlling ainol mini pc:



                        works like a charm
                        risk more than others think is safe dream more than others think is practical
                        care more than others think is wise expect more than others think is possible

                        Comment


                        • #13
                          Great Work!

                          Comment


                          • #14
                            Originally posted by marlo View Post
                            Great Work!
                            Thanks, marlo. It runs so well that I'm planning to sophisticate it a bit more:

                            1.- As arduino has huge autonomy with this Lipo battery, I can left it running on battery for few hours after car is switched off. During that time I plan to detect the presence of driver in the car to start the carpc before key is even inserted in the car. This can allow carpc and frontend start and appear instantly when car is started and monitor opens! This will be perfect for short stops (gas station, go lunch, stops during long trips,...)

                            2.- I have a CANBUS - RS232 interface pending to explore. In theory it will be able to inter-actuate with the non essential part of the car signals (windows, doors lock, lights, wipers,...)

                            3.- The model of arduino I use is able to emulate keyboard key presses and mouse positioning and clicks through USB. This allows to control the front end in many ways: buttons, detect hand movements,...

                            Lots of things to try now. The base is already working.
                            risk more than others think is safe dream more than others think is practical
                            care more than others think is wise expect more than others think is possible

                            Comment


                            • #15
                              Yeah with your CANBUS interface it should be possible to start the PC with your key remote control.
                              So door unlock - PC booting.

                              Comment

                              Working...
                              X