Welcome to Tesla Motors Club
Discuss Tesla's Model S, Model 3, Model X, Model Y, Cybertruck, Roadster and More.
Register

Something my wife and I hacked together this week- an Android app that acts as an instrument cluster

This site may earn commission on affiliate links.
We picked up JWardell's CANServer and Microdisplay and installed it last week in our Y. It was very cool to have the tiny display but what was more impressive was the CANServer itself, which emits CAN signals over UDP. The Model 3 has a exhaustively documented list of signals that could power all sorts of UI experiences. For us, the idea was whether a phone could be a good instrument cluster, either your own or something sitting in a drawer somewhere. We chose Android because of the variety of form factors, for instance this is an old Sony Z3 Compact, which has a side mounted charge port because it was designed to act as a desktop clock when docked.

Anyway, my wife and I hacked this together this week (mostly her) and got basic functionality working in car. It's all obviously quite crude but we have speed and turn signals in a rudimentary UI as well as a more raw datastream view for development and monitoring of signals. Unlike the scanner apps, this is really meant to be a solid out of the box experience for a regular driver who just wants to be able to know how fast they're going, blind spot warnings before the beep gets triggered, and whatever else makes sense front and center. Goal is to make this a free app that is open source that people can play with and make it better.

I actually found that I appreciated turn signals as much as speed being in a cluster in front of me. For larger phones, thinking of doing a wireless charging dock that is 3D printable that can just hold the phone at an angle on the dash trim. If anyone has spare dash trim to donate so I can try mocking up a charging dock that has no visible wiring, let me know.

20211030_001440.jpg



As you can see, still pretty rough at this stage in development. Goal is to make something that matches the Tesla UI better than the aftermarket clusters out there, one that doesn't add Android Auto or Carplay but has blind spot monitoring instead.
1635580620326.png

1635580642546.png
 
This look great and I've been looking to improve the basically useless Blind Spot Monitoring on the Tesla. Can this notify you immediately, when you put you blinker on, if someone is in your Blind Spot???

I already have a CanServer up and running, but am an iPhone user. I do have a very old Android phone lying around so I can give that a try. Looking forward to seeing more from this very interesting project!
 
  • Like
Reactions: Falcon73
This look great and I've been looking to improve the basically useless Blind Spot Monitoring on the Tesla. Can this notify you immediately, when you put you blinker on, if someone is in your Blind Spot???

I already have a CanServer up and running, but am an iPhone user. I do have a very old Android phone lying around so I can give that a try. Looking forward to seeing more from this very interesting project!
Yes, there are two levels of BSM, 1 and 2. 1 is someone is detected but the car doesn’t beep because you haven’t changed lanes. The Tesla doesn’t do enough to warn you IMO. Having the car actually change the entire display when you click on the blinker and a car is detected was the original goal. I will try to wire this up this week with a basic (ugly) implementation. The Microdisplays also show an arrow in this situation but it’s a little harder to notice.
 
Added some more features:

  • AP icon now works and rotates like the real one
  • Night mode triggered by when car reports the sun is below the horizon, for some reason the car doesn't change the display to night mode until a couple minutes later
  • "blind spot monitoring" when driving if obstacle sensors detect cars within 3 meters of either corner. Real BSM also triggers an alert, but the car only activates the BSM alert when the turn signal is on so I can't rely on this full time
  • Drive selector
  • Battery display
  • Turn signals match Tesla look and feel
  • Door open lights + frunk and trunk (inspired by 80s hondas!)

Also, I'm prototyping different mounts, don't judge this for looking rough- I am using a spare trim piece I got from eBay so none of my original interior trim has been modified or harmed. I will likely hack it up and try different locations, but it's a prototype for sure.

qoe0l4f9GNg7u20fP0hU2zgrVadGgdvdFi7NYupqJpJoh4-ubkfTgfWNnrdy4KNSi07eYi5ryDRWaN6EakbzFwHSuP7MWRGSCz4LUphidAlYuAZrpc8fOCoAWnROqLvEPurEPPXTXrEbvnxMUEEB8D6Vaq99PD_pThJML4urWokgX81T-rKPieqr9WfQO71IpZDUl9KNWVet9ae6ZHI0fVOoSX9WNGQcoi5vYPUIL3trqSsnmnbG9Z7rejMz0Mu4W9S358z_rMjsuglp80zr0wWxOcyM8yDLKfbJwQB7D947ewVIKKkuuJGokwO1L43Xh0KnZDX91LdXYp4OGnBb8nMrDV5RirhCDMj0cVumYkS8GFrVDFUHyivPDNYI3NnpEx6Pefp6Uh5_gL3rHb7aaB8GM_joTZ21MwUkfXncb-Aubn0nMeKwx1RxPIBzSYdLxTY_hkhy4CW4TqoxIhdFlUqOTEa48u2iX4NquS28BODHdkgQrK2BCv9C4kRDlPCSryJBQmCipn2933pEz8Rw-3jdw64KAOJS58rxrldZ10QH9EH3Z3YwCd1GJrpvxWLFagyWUDqS49eXM7czG56YvpL3qmAlu9uj2ytDtK79j70VDLsqJUwtv6stjE6J4iyOvaDdFLYpzv5YbSof2knYWC_bcR5CUtGHU5yphCFXxeBmzwmJCT5KLPpsfk_M1uUNbkoI3e1ofzaZ_TkeKC9naPsh=w1919-h1082-no


Sw9XjxJH7QFh4syU8Z84Fqlf_659Z_b0ssgkDWqO_1mXv30FJ0gwqPMclaczqkXc7j1JD3gWcq9_giFp76tadMMImKJL5z__1Vp7uqnbwDNurl8E0R2m3Tg8rueSAsyZ3ZRNBdcQkEqwP5U7S3eOmfrBskNXLqKWTEICr11G6QjfEQb6O3ZD0we73DPX09veprfmGyfzW4P2lpUAPex5ErzC0SMpbvao_ql2etdYUKlvQYMsSY1rHvb4F9aFqllgmitIJYbOeLSoD-9bm9iJ7toUg57EtQeJwNg_AsDUB2Q3ghpOPjuWKCCVY8nBlEhj6VxJ4U1g0jQYK1xNjta0zgKHwELK7r63FDeDJS867nUHlRgHhHLbehUF8Ofn3aXmo3hIKcW7pk7F0gF9U9jU8xY7kUFqagi4oMC0zJa4ACeGJJG1_Rzfks6ynS7BXMwbqo9iDpCh1Vk1QbQWmON9z5Cmo96gVqKzAUGn00QSCX2f7ow93k1no7Sj08Yxrl7pYoiw-W9XTyra7QaARvP0OAYG8Q0emgsTmRuPYldknT2l_fcXqJEer3zShSYzYGDXbdVAHk33h6ZJ1Pqe7cwunRGLV3AxKpYbG5jjz5rKJIT9u-9TSoHmj3C7jDQFvcvddt2XHm-6kyvHgUClDjCbwT5v7sNAQBr9g-2TF6eo8wMPP5tf8K68UeveTooumZDWuF07fsBXKI3bYo27dusBikN5=w1088-h1931-no
 
Yeah, making some good progress. I set up my phone to do some quick GoPro video and you can see it here. For filming I used my Z Flip3 which is a 22:9 display and I did most of my development on a 16:9 display. It's a bit sparse but I'm thinking about to make best use of the screen.


I've also experimented with different phones, I actually like using a Sony Z3 Compact as it's just big enough, doesn't block the vent, and has a nice display. It also has a physical magnetic charge connector on the side so I can charge it in landscape orientation without visible wires.

I have some connectivity and latency issues to work on but the intent is to make this an open source project for others to hack on with me. There are thousands of signals so there's a lot of potential. For the first pass my goal was to make something that felt like a Tesla UI.

So far:

  1. Used open type monserrat font which is close to Gotham
  2. Day/night mode switching based on vehicle reported sun position (how the car does it)
  3. Live obstacle detection and blind spot warnings
  4. AP steering wheel icon including rotating when active
  5. "Stick shaker" blue pulse when you need to prove you're at the wheel
  6. Door and frunk/trunk status
  7. Turn signals
  8. Battery icon with range
  9. PRND with appropriate theming and AP status
  10. Metric/US unit switch based on car set preference
  11. Auto launch when car is in ready status based on power to dock

20211116_204901.jpg
 
Yep total batts * volts would give you instantaneous watts. I'm going to start with the stupid line and think about better visualizations. The ancillaries can use 10kW which sounds like a lot until you realize the motors can use 300. Can you share a link to the visualization you miss?
 
  • Like
Reactions: Falcon73
Looks awesome. How do I get this? Does it use OBD2 or something else? I've been doing TeslaScan but I want something graphical.

Also that tablet holder wow. I'm using an old phone right now with a vent mount but I have two Android tablets doing nothing right now so what would be better.

Thanks!
 
Last edited:
Yep total batts * volts would give you instantaneous watts. I'm going to start with the stupid line and think about better visualizations. The ancillaries can use 10kW which sounds like a lot until you realize the motors can use 300. Can you share a link to the visualization you miss?
here are some images from the S dash

instrument_v6_720.jpg
 

Attachments

  • Tesla_Model_S_P85+_60_kW_Regenerative_Braking_(cropped).jpg
    Tesla_Model_S_P85+_60_kW_Regenerative_Braking_(cropped).jpg
    53.5 KB · Views: 222
Looks awesome. How do I get this? Does it use OBD2 or something else? I've been doing TeslaScan but I want something graphical.

Also that tablet holder wow. I'm using an old phone right now with a vent mount but I have two Android tablets doing nothing right now so what would be better.

Thanks!
This is what I'm using to pull data. The car doesn't have an OBD2 port anymore, but it does have CANBus, so like a cheap amazon harness would give you ELM327 support, which I may implement in the future but the harness in the back of the center console only gives you access to the chassis bus, which is basic stuff like speed but no obstacle detection or autopilot status, canserver is fantastic for development projects like this. I have no stake in the project but I've been chatting with the leads and they are good people who know what they are doing. One big thing I like is that it is a receive only device, the can transceiver is locked to receive mode only so it can't just insert random signals into the bus, which could be dangerous.

GitHub - joshwardell/model3dbc: DBC file for Tesla Model 3 CAN messages is where you can see all the documented signals that the community has figured out.

I'm 3d printing custom mounts, first I started with a spare piece of steering column trim that I could scan and drill holes into, but I had the (misfortune) of ordering a wireless charger from aliexpress that did not work. However, the replacement steering trim was perfect for designing 3D printed mounts.

Returning garbage to China is expensive so while waiting for resolution i ordered this identical looking product which might be the ticket for those of you looking for something clean and turnkey, and have a Qi enabled android device.

For the video I used a proclipusa Tesla mount and 3d printed a custom clip to hold the phone, but they have adjustable clips too. No option for hiding the wiring, though.

As for phones, I like the Sony Xperia Z3 series because they have a magnetic charge port on the side which makes installs very clean, and the Motorola Nexus 6 because it has an OLED display (looks amazing in night mode) and wireless charging so I don't have to figure out what to do with a plug sticking out the side. More to do of course. I'm still recovering from the Moderna booster (no regrets, expected) so when I am less achy I will hack more.

In the meantime if you do have a canserver and an android device, and want an APK to sideload to test, let me know in a PM. This will all be open sourced once the code is less embarrassing.
 
  • Like
Reactions: GOVA and Falcon73
Not as tech saavy as you, so unfortunately I don't have anything useful to add to the discussion with regard to the coding/implementation. But still want to say thanks for sharing this information! I like the idea of having this type of device available, and look forward to following this discussion.
 
Took some time to fix some connectivity issues and design a mount around a Nexus 6, but started working on roughing in power. The goal is to have a more graphical display but I wanted to put something really quickly that displays power in real time, so I added a live tracker with ranged min/max that I can reset by tapping. This is not final but useful for development.

zOoKcJgwmLLyjarhtu5hafDDKhZP-bk62svK707lJsNLxcoF-c59Z15SPUwY5lQeI8VKyHrc4PAc-g5628Daxn9XRbxJRDL_vwtWyZBQUg-WiyE8udgxG_azKE3PCFXV61RQYlJxf01T6Ikjv0Ql-grunb6g2_7jRE3h_eCRKVDzb2GkGlnqDlmNAIyx76wIf8zjwwsqhYcxkKGYSiurMS-xoKmegTFj66Odl7v_-eo33rRz2YYHmQhN3YCxgEICPcGRwf--6UOrlk6N8H8gGxRacXkaE_4pmJfCV5U1DfRB6AZqxpeleNuRgfdQph14zHdAKxND-5fTsXGkRY5drJd92UfD8QHn0Trlc_QGzEfbx2ux-LXl4WISm-NoGfZ6-M_jjEGbP0cGUTmQ1rBjuQjLoGZxV09aeJeLF9kXYLOs7DR3B_91sNE2f5dtujw-TwyfRsmrRNwI5e5QTlbn-e1RHxiO9KX4MmaISBfwAWIQrwjxgHSDPoT5Ef_HKQUS5Kak1nyFMX4ugP7vpTDhQntWdct8HEJGFqzv7NdPgI2ZsDcwO5U9bhsqhEdc-STdx0uL3Xp0en75oLt7fXUCRrwJMxOkfsi8YVDa0X2wOPkQirdHxMQv8EaagfmOh9zp-bykzw5iNSiLXZtEmgzicQXgY2PKpTRGMP3SHMScVc8YDp0gjiihLPGz4IzbpFdPVriqcqfWQVkHdh4wR2AaRs4n=s1931-no