The Raspberry Pi JavaFX Carputer

10,248 views
9,870 views

Published on

This is the sesison I presented at JavaOne 2013 on building an in-car informatics system using a Raspberry Pi, Java and JavaFX.

Published in: Technology, Business
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
10,248
On SlideShare
0
From Embeds
0
Number of Embeds
547
Actions
Shares
0
Downloads
115
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

The Raspberry Pi JavaFX Carputer

  1. 1. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.1
  2. 2. Is It A Car? Is It A Computer? No, It’s The Raspberry Pi JavaFX Informatics System Simon Ritter Principal Technology Evangelist Oracle Corporation @speakjava
  3. 3. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.3 The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle.
  4. 4. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.4 Program Agenda  Cars and Computers  The Raspberry Pi  Embedded Java and JavaFX  Building a Java Powered “Carputer”  Demos
  5. 5. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.5 Cars And Computers
  6. 6. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.6 My First Car: 1981  No electronics – Well, it had a radio  Purely electromechanical – Points/Distributor – Carburettor/Manual choke – Drum brakes – Dynamo – Lights, horn, wipers, fan, ignition switch 1971 Mini Clubman 1000
  7. 7. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.7 Car Wiring: 1970s Image coutesy of Haynes manuals
  8. 8. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.8 My Current Car  Lots of electronics – Engine Control Unit (ECU) – Fuel Injection/Electronic timing – “Fly-by-wire” throttle – Anti-lock Braking System (ABS) – Electronic Stability Program (ESP) – Magnetorheological Suspension – Satellite navigation – Auto-sensing wipers and lights 2011 Audi S3
  9. 9. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.9 Car Wiring: 2011 Bus architecture means substantially less wiring Convenience Bus Infotainment Bus Powertrain Bus
  10. 10. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.10 Protocols For Car Bus Communication  On Board Diagnostics (OBD-II) – Connector, SAE J1939 / ISO 15031-3  OBD-II Protocols – SAE J1850 PWM or VPM – ISO 9141-2 – ISO 14230 – ISO 15765-4: Controller Area Network (CAN) Bus  11 or 29 bit ID, 250 or 500 kbaud
  11. 11. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.11 The Raspberry Pi
  12. 12. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.12 Raspberry Pi  Project started in 2006 – Goal was to devise a computer to inspire children – Inspiration from the BBC Micro project from 1981 – Officially launched 29th Feb, 2012 – Over 1 million boards shipped so far History and Goals
  13. 13. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.13 Raspberry Pi  CPU: ARM 11 (v6) core running at 700MHz – Broadcom SoC package – Can now be overclocked to 1GHz (without breaking the warranty!)  Memory: 512Mb  I/O: – HDMI and composite video – Audio out (3.5mm plug) – 2 x USB ports – Ethernet – Header pins for GPIO, UART, SPI and I2C Specification
  14. 14. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.14 Raspberry Pi Carputer  Plenty of computing power – With low electrical power consumption (< 1 Amp at 5V)  Persistent storage provided by SD card – Disk drives not ideal in hot places with lots of vibration  Supported device for embedded Java – Hardware floating point acceleration configured – Java SE Embedded and Java ME Embedded – JavaFX Prism graphics engine ported Advantages
  15. 15. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.15 Embedded Java and JavaFX
  16. 16. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.16 Java Technology for Embedded Devices Platform Footprint Device CPU/ GPU/I-OARM 7 Cortex M ARM9/11 MIPS32 ARM Cortex A PPC Intel Atom 50KB-1MB 1MB-10MB 10MB-100MB Java ME Java SE Java Card
  17. 17. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.17 Java ME Embedded 3.3  Connected Limited Device Configuration 1.1 – Reduced footprint JVM and core libraries  Device Access API (new) – Standard library for access to  GPIO  UART  I2C/SPI  Additional profiles used as required Key Features
  18. 18. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.18 Java SE 8 Embedded (Early Access)  Tuned for Raspberry Pi – ARM6 architecture does not require hardware FP – Raspberry Pi has one, so JVM needs specific compiler options  Inlcudes JavaFX  Includes compact profiles for reduced footprint  Recently added to standard build platforms – EA updated as each new build comes out Key Features
  19. 19. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.19 JavaFX On Embedded Devices  JavaFX on embedded does not support the full feature set – No WebView component (not a problem for the carputer) – No direct media playback support  For video there is a work around (but, does the carputer need it?)  Sound would be nice, but not essential  Remember resource constraints – Big scene graphs need memory and CPU cycles – Keep number of nodes small (ideally <50) Things To Consider
  20. 20. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.20 Building a Java Powered “Carputer”
  21. 21. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.21 Carputer Design Objectives  Display realtime data – Engine performance (Power, Torque, Load) – Driver data (Throttle position, steering angle, braking force, etc) – G-Forces on car  Record data for later analysis – Produce graphs to display changes over time – Play at Formula 1 – Improve driving style (!)
  22. 22. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.22 ELM327  WiFi or Bluetooth connection to OBD-II  Fixed IP address, Ad-hoc networking  Need to configure Raspberry Pi – /etc/network/interfaces  AT style commands for control  Non-AT commands are assumed to be OBD-II – Simple request-response interaction – Easy to write Java code to handle this Cheap way to hack your car
  23. 23. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.23 Touchscreen  2 DIN fitting size – Ideal for centre console  HDMI input – Specifically marketed for Raspberry Pi  USB connection for touch screen Lots of things available on eBay
  24. 24. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.24 JavaFX And Touchscreen  Raspian Linux recognises device: eGalax Inc  Creates two devices in /dev/input/event0, event1  JavaFX sees devices and uses event0 – No events generated – Need to use event1 (No idea why)  Special build of JavaFX?  Neccesity is the mother of invention – Delete event0 and mknod event0 c 13 65 (same as event1) – Need script to repeat at boot time Not completely straightforward
  25. 25. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.25 Carputer Hardware Architecture USB WiFi Dongle Touch Screen Accelerometer HDMI USB I2C 12V Car Converter ELM327 Car Service Port 5V USB
  26. 26. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.26 Touchscreen Hardware Fitting Challenges
  27. 27. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.27 Accelerometer  Sparkfun breakout board MPU 9150 – 9 DoF sensor (accelerometer, gyroscope, compass)  Communications via I2C – Configure Raspberry Pi /etc/modules  i2c-bcm2708, i2c-dev  i2c-detect -y 1 to get address – Compass communication is a bit more complicated  Second I2C bus
  28. 28. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.28 Accelerometer Code Using Pi4J Library on Java SE Embedded I2CBus bus = I2CFactory.getInstance(I2CBus.BUS_1); I2CDevice device = bus.getDevice(0x68); /* Start sensing */ device.write(0x6B, (byte)0b00000000); device.write(0x6C, (byte)0b00000000); /* Set configuration */ device.write(0x1B, (byte)0b00011000); // Gyroscope device.write(0x1C, (byte)0b00000100); // Accelerometer device.read(0x3B, accelData, 0, ACCEL_PACKET_SIZE);
  29. 29. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.29 Compensating For Gravity In Acceleration  The accelerometer measures acceleration (obviously)  Gravity is a constant acceleration – Consider it static acceleration  What we want is dynamic acceleration  Zero out gravitational effect – Assume no rotation of the sensor – Nearly correct, car will roll in corners and pitch under braking/acceleration – Good enough for the demo – Could integrate gyro and Kalman filter for higher accuracy The Earth Sucks
  30. 30. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.30 Calculating Power And Torque  Results will not have high accuracy – Values in red are not precise  Dynamometer is the only way to get accurate figures  Interesting to see values v. manufacturers figures Torque (Nm) = Mass x Wheel Radius x Acceleration (in G) Torque (lb/ft) = Torque in Nm x 0.73756 Power (BHP) = Torque (lb/ft) x engine RPM / 5252
  31. 31. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.31 Carputer Software Architecture  Screens based – Splash screen – Basic and advanced car data – G forces on car – Graphed results of different parameters  Simple UI – Can’t read numbers when driving  Touchscreen to switch screens – Repurpose existing car controls to change screen? Realtime Data
  32. 32. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.32 UI Design Ideas Take Inspiration From Others Renault Megane Sport
  33. 33. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.33 UI Design Ideas Take Inspiration From Others Tesla
  34. 34. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.34 UI Design Ideas Take Inspiration From Others Lamborghini Reveton
  35. 35. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.35 Simple Data Display Control  Only uses 3 nodes – Polygon – Rectangle – Line – Labels are optional  Displays – Current value – Maximum value since start (resetable)  Simple to understand from a glance
  36. 36. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.36 User Interaction  Complex UIs are bad for driver distraction – Programming the SatNav while driving  Make Carputer interaction as simple as possible  Sequence of screens – Main menu? Too complex, too much reading – Cycle through screens (Keep number small) – Just touch screen to change to next display  Use setMouseTransparent(true); – Use steering wheel button
  37. 37. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.37 UI Screens Splash Screen
  38. 38. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.38 UI Screens
  39. 39. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.39 UI Screens
  40. 40. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.40 UI Screens
  41. 41. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.41 Graph Plots Of Throttle Position And Power
  42. 42. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.42 JavaFX Charts And Colours Can Only Be Changed Using CSS .axis { -fx-tick-label: #FFFFFF; } .axis-tick-mark { -fx-stroke: #FFFFFF; } .axis-minor-tick-mark { -fx-stroke: #000000; } .chart-plot-background { -fx-background-color: #000000; } .chart-alternative-row-fill { -fx-fill: #000000; } .default-color0.chart-series-line { -fx-stroke: #FFFF33; }
  43. 43. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.43 Design: Model Sensor <<Interface>> Runnable <<Interface>> AccelerationSensor <<Abstract>> OBD2Sensor <<Abstract>> ELM327SimulationCar SimulationAccelerometer MPU9150 EnginePerformance
  44. 44. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.44 Design: View Display BasicDisplay AdvancedDisplay GraphDisplay GForceDisplay ThrottleGraphDisplay PowerGraphDisplay SplashScreen
  45. 45. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.45 Design: Controller BasicDisplay AdvancedDisplay TorqueGraphDisplay GForceDisplay CarputerController Accelerometer AudiS3 ELM327 EnginePerformance PowerGraphDisplay
  46. 46. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.46 Using Car Control Buttons  Not simple – Car manufacturers don’t share the CAN bus IDs and message formats – Even things like Audi forums can’t supply this – Need to reverse engineer  ELM327 has AT MA command – Monitor all CAN Bus traffic – Need to pick the relevant message from a LOT of data – Once the ID is know use AT MT xx to monitor transmit messages Monitoring CAN Bus Data
  47. 47. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.47 Future Ideas, Conclusions and Resources
  48. 48. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.48 What Next  Integrate heart rate monitor to add biometric data  Integrate GPS receiver for mapping data  Heads Up Display (HUD) – Microprojector and half-silvered perspex  Further investigation of CAN Bus signals – Brake pressure, steering position – Use other switches – Send commands (this is rather scary)
  49. 49. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.49 The Pi Can Interface  Can’t read CAN bus and OBDII at the same time via ELM327  Use connector for entertainment system  Need to check that I2C for accelerometer will still work  Reasonable cost, $50
  50. 50. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.50 Resources  www.audi.com  www.raspberrypi.org  javafx.oracle.com  blogs.oracle.com/speakjava
  51. 51. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.51 Demos
  52. 52. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.52 Graphic Section Divider
  53. 53. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.53

×