TelTail Lights (TTL) - Interactive eSkate Lighting System

Background / Legacy Info


Hey guys,

For a few years now, I have been working on an interactive lighting system for diy electric longboards.

It all started when I was in college and decided to add head, tail, and RGB side lights to my longboard. I wanted lights that would turn off when I picked the board up and turn on when I dropped it back down, so I created a controller that would take IMU measurements and turn them on and off based on the board’s orientation. Shortly after finishing that project, I started a project based course in which we got to build any embedded systems project we wanted. My team decided that we would build off of my hobby project and make an electric longboard with interactive lighting, a HUD, and various safety systems built in. When that project was completed, I was allowed to keep all of the parts we used since I was the only longboarder in the group :smile: Since I had most of the expensive parts already, I decided to make my own proper electric longboard. When looking into motor controllers, I was immediately sold on the VESC because of it being open source and the awesome, dedicated community it had. When looking further into the VESC I realized that I could integrate my lighting controller project with it to gather motor data and use that to further the lighting effects that I had already created. That’s when I made the first version of what I am now calling the TelTail Lighting System.

My goal when I started this project was to create a lighting controller that was tailored to my system only and didn’t consider making it flexible to meet the needs of other community members. However, as the project matured, I kept adding features that accomplished just that and finally decided that I would go for it.

The first version I made was designed to plug directly into the original VESC.

That worked well for my purposes, but by the time I decided I would share the design with the community, the VESC hardware had changed. So I updated the design to use the same 2mm JST headers used on the VESC for all external connections. This allows the lighting controller to be a plug and play module and provides vibration resistant connections. I also removed the SD card slot and added a 12v buck circuit to the design. I removed the SD card slot because I began developing an android app and was able to log data through that instead.

After doing some testing with the v2 design, I found the 12v buck circuit I was using to be unreliable. Because of this, I updated the converter to a more dependable one. The new converter is rated for 30W @ 12v, which is just enough to supply power to the head, tail, and side lights. I also removed all unused connector pins to make room for 3 more ports; a 12v output, an auxiliary switched 12v output, and an input for the button channel of a PWM remote.

To give people options, I also created a second variant of the design that replaces the 12v buck converter with a spring loaded terminal block. This variant is cheaper and allows the user to supply power to the control module using a more powerful DC to DC converter like the one here . The connector is rated for 10A so you can even supply upwards of 60W withought issue.

The auxiliary output was added to v3 of the control module to allow the user to control a 12v motorcycle horn like the one found here , however, the FET on the TelTail Lights (TTL) control module will get fried if the horn is driven directly from this output. To solve this issue, I designed the High Power Control Module (HPCM). This expansion module allows the aux output to control a FET that is capable of driving the horn without burning up.

When I started developing the TTL control module, I could not find a 12v headlight or tail light that suited my needs so I decided to design my own. For the headlight I wanted something that mounted under my board, was bright enough to light my way on a road or path, and was not glaring in the eyes of people I passed by. To do this, I designed a PCB with 2 bright white LEDs, designed a 3D printable housing that mounts to my trucks like an 1/8" riser, and used oval lenses that cast the light in a wide narrow beam low to the ground.

For the tail light, I wanted something that created a bright red light but did not cast that light into the eyes of people behind me. To do this, I designed a PCB with 3 bright red LEDs and a housing that mounts to my trucks like an 1/8" riser and diffuses the light to create a glowing bar that lights up the ground around it.

I have a couple videos of the lights and their effects on my instagram page, here’s the link if you want to check them out:

Since I have seen many people already use lights like Shredlights, flashlights, or floodlights, I wanted to provide a way to use the TTL control module to control those lights as well. To do this I designed the Low Power Control Module (LPCM). This module allows you to control the power switch of a light with a built in battery using one of the switched outputs of the TTL control module.

The latest module that I designed is the Analog to Digital (A2D) Module. I made this module because I want to be able to control digitally addressable RGB LED strips with the side light ports of the control module. Though I have tested that the functionality of the module works, I haven’t developed the code to actually utilize it yet. Once I make all of the firware and app code for this project opensource, I hope that people in the community will help write this portion.

As mentioned above, I’ve began developing an app for the TTL System. The app has four main functions. The first is used to configure all of the settings of the TTL control module. The settings include: LED mode characteristics, module orientation, and how the eboard remote controls the lights.

The second function of the app is to read out live data from the control module. There are 2 screens where live data can be viewed: the motor data screen and the sensor data screen. The motor data screen has a graph at the top that displays whatever information the user selects from below. Below the graph is a list of all the data read from the connected VESC based ESC with checkboxes next to them to select which item are displayed in the graph.

Like the motor data screen, the sensor data screen has a scrolling graph at the top that displays whatever readings you want. The data available is all of the IMU measurements, the calculated board heading, the light sensor reading, and the remote joystick and button states.

The third function of the app is to track the users path during a given ride and provide stats from that ride. On the map screen, the users rider path is displayed on the map at the top. Stats from the displayed ride are shown below the map. The stats include current longitude/latitude/altitude, currect speed, max speed, and distance travelled.

The fourth function of the app is to provide the user with a backup remote in case their primary remote dies or will not connect. The remote screen uses a relative joystick interface to control the throttle of the VESC based ESC. Wherever the user first places their finger will be the center of the joystick. If they move their finger up, it will increase the throttle. If the they move their finger down, the ESC will start braking.

Purchasing A Kit

TelTail Lighing System Kits can be purchased HERE

System Overview

TTL Control Module Features
  • 9 switched 12v DC outputs
    • Head light
    • Tail light
    • Side RGB lights (6 total outputs)
    • Aux output (designed to control a horn)
    • 2.5A max each
  • VESC communication (UART)
  • Remote button input
  • Direct 12v DC output (for use external 12v devices)
  • Light Sensor Input (to be implemented in code)
  • BLE to connect to Android app
  • Two Types:
    • Self Powered (SP)
      • Input Voltage: 20 – 50v
      • Max Power Output: 30W (includes control logic)
      • Power Connector: Male XT30
    • Externally Powered (EP)
      • Input Voltage: 12v
      • Max Power Output: 120W (depends on DC converter used, 10A max)
      • Power Connector: 16-24 AWG Screwless Terminal Block
Analog to Digital (A2D) Module Features
  • Allows Control Module to use addressable LED strips for side lighting
  • Connects to a side light port of the TTL Control Module
  • Works with APA102 or SK9822 LED strips (more in the works)
Android App Features
  • Configure the lighting effects of the TTL system
    • Sensored control can be turn on/off (turns lights off when the board is picked up)
    • Light control can be turned on/off (not yet implemented)
    • 9 modes for analog side RGB lights
      • Static - Set each side light to a solid color you choose
      • Color Cycle - Cycles through all colors at the rate and brightness you choose
      • Compass Cycle - Controls the color based on the orientation of the eboard
      • Throttle Based - Control the color based on the throttle position
      • RPM Based - Controls the brightness based on RPM and the color cycles
      • RPM + Throttle - Controls the brightness based on RPM and color based on throttle
      • X Accel Based (Color Splash) - Controls the brightness based on the x-axis accel reading
      • Y Accel Based - Contols the color based on the y-axis accel reading
      • Custom - choose for the various brightness and color bases to create your own effect
  • 9 modes for digital side RGB lights
    • Static - Set each side light to any color gradient you want
    • Skittles - The color of each LED is randomly selected 10 times a second
    • Gradient Cycle - Cycles through the color wheel at a user selected speed and granularity
    • Compass Cycle -
    • Throttle Based -
    • RPM Based -
    • RPM + Throttle Based -
    • Compass Wheel -
    • Compass Snake -
  • View live data from connected VESC in text and on a scrolling graph
  • View live data from the on-board IMU in text and on a scrolling graph
  • View ride path and stats (not fully implemented)
  • Control the motor’s throttle with virtual remote (meant as a backup remote)
  • Get notified of fault codes issued by the VESC
  • Log data gathered from the VESC, IMU, and/or GPS
  • Configure how your remote controls the TTL system
    • Customize the output type of the aux output
      • Toggled
      • Momentary
      • Timed
      • Pattern (not yet implemented)
    • Customize what button presses perform specific actions
      • Actions:

        • Aux Control
        • Toggle All LEDs
        • Toggle Headlights
        • Toggle Side Lights
        • LED Mode Up
        • LED Mode Down
      • Button press types:

        • Single Tap
        • Double Tap
        • Triple Tap
        • Medium Press (0.5><1s)
        • Long Press (> 1s)
  • Calibrate the IMU
  • Set the orientation of the TTL Control Module
    • Allows you to place the control module however you like in your build

For more detailed info visit the documentation page of my site


The Electronics

The head light consists of two 5700K 240LM SAMSUNG LM302B LEDs housed in a 3D printed mount with oval lenses. It attaches to the board as a 1/8" riser. It was designed around Caliber II trucks but should fit most trucks and decks.

Tail Light
The tail light consists of 3 red LEDs mounted behind a transparent red diffuser that spreads the light into an even bar. It attaches to the board as a 1/8" riser. It was designed around Caliber II trucks but should fit most trucks and decks.

Courtesy Horn
The courtesy horn is suitable for use when passing pedestrians on the sidewalk or park trail. This makes it a good fit for cruiser builds that will be used in areas where people may be walking.

Loud Horn
The loud horn is suitable for use when operating your board on roads. It is a motorcycle horn and is plenty loud enough to alert any surrounding cars to your presence.

Self Powered (SP) Control Module
The SP Control Module runs off of direct 6-12S (24-48v) battery voltage and regulates that down to 12v (2.5A max) for the light outputs on it’s own. This keeps the size of the system to a minimum and allows it to easily fit into slim builds that are tight on space from the start.


Externally Powered (EP) Control Module
The EP Control Module has all of the same logic circuits as the SP version, but is powered by a 12v (10A max) buck converter that is purchased separately. Because of this, the EP version allows the user to construct a much higher power lighting system than they could with the SP version.

Universal Power Switch (UPS)
The UPS is an add-on module that allows the TTL system to be used with ESCs that have an integrated anti-spark switch. Typically the TTL system would connect to the output of a stand alone anti-spark power switch, but when the anti-spark switch is integrated into the ESC that is no longer an option. Remedy this, the UPS connects to the voltage monitor output of the ESC and turns the TTL system on when it sees battery voltage. It has been tested with the FOCbox Unity and FSESC Dual v4.12.

The App

LED Modes
Customize each lighting effect exactly how you want it.

ESC Info
View live data from the ESC plotted on a scrolling graph.

Sensor Info
View live data from the onboard 6DOF IMU plotted on a scrolling graph.

View your current location, ride path, speed, distance traveled, and more (not fully implemented).

Control the motor speed in the case of an emergency such as a dead remote battery or broken remote.

Configure every little detail of how the TTL system functions so that it suites your build perfectly.


I also have pictures and videos of the TTL system posted on my instagram page. Here’s the link if you want to check them out:

Analog Side Lights

Credit: @Venom121212

Digital Side Lights

Wireless FW Update


The app can be found on the Google Play Store HERE

Please visit my site to learn more about this project

The code for the TTL control module firmware can be found HERE

The code for the Android app can be found HERE


In an effort to catch this thread up to the original here is a summary of the project’s current state.

4 members have recieved kits for beta testing. 3 testers are waiting for kits to be assembled and shipped. 2 potential testers are in the works.

Updates were made recently to the control module FW to allow it to communicate with the ESC over UART. I am the only one who has tested it so far because no beta testers have updated the FW of their control modules yet. Pictures and videos will be posted once testers begin to update the FW and test the newly available features.

1 Like

Sorry for lagging.Give me a few days and I should have some time to update everything . Been dealing with family emergencies left and right.


Do you need anymore Beta testers? I’d be happy to help out!

@Bobby No worries at all. I know how life can get in in the way of things. Since I know all the testers are dedicated to this I’ve just been assuming you guys all have reasons for not updating yet. Plus I’ve had time to focus on the UART Splitter recently so it all works out :stuck_out_tongue:

@RuinousMarmalade Yes, I’m going to cap it off at 10 testers so if you end up with a kit then you’ll be the last :smile: I’ll PM you to get things going.


Based on feedback from the beta testers, I recently upgraded the LEDs used for the headlights. With these new LEDs the light output increased from ~50lm to ~150lm. The difference is night and day :laughing:


This is an excellent project. Great work


Here’s a short video of a night ride demoing the TTL system. Please pardon the quality as this was my first time ever using my GoPro to make a ride video :stuck_out_tongue:


How and when do I get one? Fuck the photon remote. This is the future


Thanks for the support! The beta testers and I are working to get all the kinks worked out so I can sell some kits later this year :slight_smile:


I’m so excited for this!


Im a beta tester… you should be. And its only getting better!!!


@Bobby so am I! I’m testing the super high powered functionality of this system. Straight up off road lights for my trampa. :drooling_face:


Lucky bastards

1 Like

Right! I was like hmm I wonder if there’s more space…

Ah. nope. Hopes crushed

Here’s a teaser :wink:


Update: I’ve added support for GT2B remotes. The TTL system now supports 7 different input control methods:

  • Momentary (high when pressed, low when unpressed): TB Nano
  • Latched (state toggles with every button press): ?
  • Latched PWM (a pwm signal that toggles pulse width with every button press): GT2B
  • UART [Chuck Struct] C (UART remote mapping its button to C of the VESC chuck struct): Feather
  • UART [Chuck Struct] Z (UART remote mapping its button to Z of the VESC chuck struct): Feather
  • Throttle Up (gently tap the throttle forward): Any PPM (PWM) remote
  • Throttle Down (gently tap the throttle backwards): Any PPM (PWM) remote

Here’s a video of me testing the “X-Accel Mode” of the TTL system. This mode takes the X axis accelerometer readings and tries to determine which way you are carving and how hard. The lights on the outer edge of the carve light up and the harder you carve, the brighter they get :smiley:

This mode can definitely use some tweaking, but this proof-of-concept implementation looks pretty promising :smile:


For us noobs: will there be a ready-all-included-kit available in the future? (all included as in plug and play, lights and all, Solder gun is for heating my coffee and burning my fingers…aka im stupid)


I believe Matt solders every component to the pcb’s himself before shipping them out. Hence why the beta had to be limited to some lucky members.