I thought it would be cool to utilize the front narrow T-badge support area on the Model S for a light show. This project could be adapted to other places for older cars or the Model X/3/Y. It could also be greatly simplified if you wanted a single color, or simply use an RGB strip. I’ll leave that for another owner! The Tshow project uses a small processor to control the individual LED pixel colors across a strip of closely spaced 88 quad-LEDs, or 352 LEDs in total. The system connects to the car to automatically change the visual styles under various conditions such as driving, parked, or showing the charging level. If not using the default operations, you can override styles, colors, brightness, and much more via an optional Android app using Bluetooth. (May-2022 update)
Video – Typical operations – charging, parked, and driving states. See part 10 for a short video with many more modes and colors.
This large project is broken up into many sections:
|Overview – This covers the summary, features, costs, warranty concerns, legalities, power requirements, and NeoPixels.
|Processor Module – The 32-bit microcontroller, CAN bus interfaces, DC/DC inverter, Bluetooth, level translators, and some additional circuitry are all within the processor module. It’s the hub of the project.
|Receiver Module – This is a small unit that converts a differential signal from the processor module to a binary signal that the LEDs can accept. It allows the signal to go over longer distances (16 feet or so).
|Front LED Assembly – This is the black plastic 30” wide indent behind the Tesla T-badge on the refreshed Model S. This holds a strip of addressable LEDs. It is covered with translucent plastic.
|Remote Module – When you’re in the car, you can’t see what the front is doing, so I created a tiny module that shows a mini-view of the front LEDs using 5 LEDs. We included a state button so it’s easy to override the current visual state.
|Testing – With a project this complex, it’s wise to test out the system before installing it.
|Using the Phone App – The ultimate remote control!
|Installation – Installing the various modules and assemblies, along with making various connecting cables.
|Designing Tshow – How I created Tshow along with schematics.
|Conclusion – My final thoughts and a demo video!
Tshow has 5 states controlled by the car, the manual override button, or the app
- Driving – When the car is not in park – The default is white
- Parked – Default is red “Cylon” mode that sweeps back and forth (low power)
- Emergency – When the emergency flashers are active – the default is left/right amber synchronized flashing
- Test – Set by the app – can try out any mode
- Off – (very low power mode)
Visual styles available for most states:
- Alternating colors (like a string of Christmas lights)*
- Backlight (four center pixels)*
- Cylon sweep*
- Eyes, sweeping (moves back and forth)*
- Eyes, steering (follows the steering angle)*
- Fast Flashing Caution
- Fast Flashing Red/Blue Police (for police officers only)
- Fast Flashing Select (any two colors)*
- Gradient Center (two colors)*
- Single Color*
- Sliding Colors
- Sliding colors from Center
- Test Charging (simulates car charging)
- Test Holidays (rotates through all holiday modes)
- Test LEDs (rotates through all white, red, green, and blue)
- Test Status (show internal statuses such as Bluetooth connection and the current date and time in binary)
* Colors can be customized for the mode along with intensity level
Some states offer to override options for special car conditions:
- Synchronized blinkers – flashes amber left/right synchronized with the blinkers
- Charging cord connected – shows the current SOC from 0 to 100% in blue
- Charging – shows the current SOC from 0 to 100% in green with a “charging” animation
- Holidays – change to a preset special style for each holiday on the day of the holiday. Holidays include New Years, Valentines, St. Patrick’s, Easter, Cinco de Mayo, Flag, Independence, Halloween, Thanksgiving, Christmas, and New Year’s Eve.
Other features include
- Automatic brightness, based on headlights on/off and the time of dusk/dawn for each day (auto-adjusted throughout the year at about 37 degrees Latitude (San Jose, CA; Virginia Beach, VA; Seoul, South Korea). Dimmer levels can be adjusted from the app.
- Dimmer timeout – After 8 hours in park, the LEDs will dim to conserve power. This timeout is also changeable by the app.
- Off Timeout – After 36 hours in park, Tshow will turn off. This timeout is also changeable by the app.
- Hard Remote Option – For the interior of the car, a tiny 5 LED module shows a mini-view of what appears on the front display. A state change button rotates through each state, and auto-resumes when any of the 3 car state changes (Drive/Park/Emergency).
- OLED Micro Display Option – shows detected Tshow states via CAN; SOC; battery temperature percent; main and 12v battery voltage, current and power; date and time; and a graph of the last 90 seconds of main power usage and regen.
This is a very complex project, and I do not explain every tiny detail. I really don’t expect anyone to build this as the cost and effort probably exceed the value. I did go ahead and document much of the project, should someone be nutty enough to consider replicating it. I spent more than $1000 on the various parts, with some unnecessary, duplicates and those that ended up trashed due to design improvements and changes. With the final design, it would cost about $450 in raw parts, at a volume level of one. At higher volumes, the cost could come down.
You should have a good assortment of tools, some power tools like a table saw and electronic tools such as a quality soldering iron. You should have a good understanding of electronics (at least to assemble the 3 PCBs), and excellent mechanical skills. You may need Java and C++ software skills and assorted tools such as Android Studio and the Arduino IDE. You’ll also need to make several 3D boxes, which there are plenty of third parties that can print cheaply. Lastly, you should have good automotive skills, as you’ll be pulling apart your car, routing wires, and doing other tasks.
I can’t estimate how much time it will take, as I spent over 10 months (part-time) designing the circuitry, writing the code, prototyping, testing, creating schematics and PCBs, creating 3D boxes, assembling, and mundane tasks like this writeup! I’ve also spent another couple of months in 2022 with a second design to support the CAN bus from the 3/Y and Model S/X 2021+ LR/Plaid. Obviously, it should take you a fraction of that time. The skill level you bring to the project will have the largest factor in how fast it goes. While the optional Tesla parts took less than a week to obtain, some non-Tesla parts took over 2 months to get, due to unexpected issues. If a kit of pre-assembled parts were available, I suspect it would take about 4 hours to install in the Tesla, for someone already familiar with pulling the car apart to route wires.
From this point onward, I will call out differences between the Tshow design and installation for the refreshed Model S manufactured between June 2016 and December 2020 which the project was originally done as “Refresh” and the Model S LR/Plaid manufactured from February 2021 and later will be referred to as “Plaid”.
If you are interested in manufacturing a kit or assembled system for others (even for profit), contact me. I’ve done much of the complex engineering work, but am not interested in making sales myself.
I try to make as little of an impact on the car and go out of my way to avoid making holes or cuts to the car. This project does require extensive modification to the front T-badge assembly, but it is only $40 in Tesla parts. We also make one hole in a grommet to pass wires into the cabin. Lastly, we drill one or two holes in the center console that is not visible for the remote cable. You could elect to place the remote in another spot that may not require holes.
Like all our projects, so long as you don’t break something else, the system should not affect your warranty. I’m not going to take any responsibility for things going wrong or something you break while working on your car! In ten years of various Tesla projects, I have yet to break something (although we did dent a trim piece years ago when I dropped my camera!).
I also designed the project so it would not interfere with Tesla’s normal maintenance. Everything is connectorized to make it trivial to gain access or repair something nearby.
Tshow can display colors that may be illegal in your state or country. I take no responsibility for any colors or animations that may be illegal in your jurisdiction.
For example, in the USA, while driving, only white or amber illumination in front of a vehicle is legal. Unless you are qualified emergency personnel, such as a police officer on duty, you cannot display the police red/blue fast alternating flashers on a public road at any time. There could be other limitations.
The power will vary depending on the number of pixels lit, colors used, brightness level, and other factors. While it might be possible to pull up to 1-2 amps (Every LED pixel full-on with all four colors on), the defaults keep the power levels to below 500 mA, about the level of many Dashcams. This assumes a string of 88 LEDs and 5 remote monitor LEDs. Current drawn from the car (12v) at the bright daytime level:
Off – 42 mA (CPU/Bluetooth still running)
Low power “Background T” choice, with one color, 4 pixels – 130 mA
Cylon animation (single color) – 135 mA
One color, all LEDs on (Red, Green or Blue) – 310 mA
White – 485 mA
All LEDs (RGBW) – 1030 mA
Each pixel takes about 0.5 mA when off to power its internal circuitry so that it takes about 55 mA even if the entire string is dark. I added additional hardware to disconnect the pixel power if all pixels are set off to further conserve power.
The amount of power, even if left on maximum brightness for an extended period, will have little effect to range. Tshow will take much less than 50 W per day for the Cylon animation. If your car had no other power drains and no internal battery leakage, Tshow would run for 5 years!
NeoPixels is a brand name given to a strip of LEDs, where each LED is individually addressable, using a serial data line. Each Pixel has an input and output and the strip has each LED connected to the next. They are powered by 5 volts DC. Each pixel holds 4 LEDs – red, green, blue, and white. Actually, the white is a blue LED with a white phosphor cap that lights up white. The driver within the pixel can set any of 256 brightness levels for each sub-LEDs, to produce a wide range of colors.
A processor can command the connected string of LEDs to display a mix of colors and brightness. The processor can do this quickly enough that simple animations can be created.
The NeoPixel strip is sheathed in a transparent silicone cover, to keep moisture and dirt out.