TelTail Lights (TTL) - Interactive eSkate Lighting System

Hey guys,

For the past 2 and a half years, 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 PPM 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.

I believe I am finally at the point where I can start selling the various modules that make up the TelTail Lights Project. I have created a website both as a project documentation location and a webstore for purchasing the boards that I’ve designed. I do not have anything in stock yet, though, because I wanted to gage everyone’s interest on this forum before having boards assembled. Please take a look at the links below to read more about the project, browse the items I want to sell, and download related files. Please keep in mind the prices in the store are all estimates at the moment. They will be updated once I gage interest and order assembled modules.

TLDR: System Overview (for more detailed info visit the documetation page of my site)

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)
    • 2A max each
  • VESC communication (currently I2C, planned to change to UART)
  • PPM button input
  • Nunchuck port (a pass through of the VESC comms)
  • Direct 12v DC output (for use with HPCM or other external 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 @ 10A max
    • Max Power Output: Determined by DC converter used
    • Power Connector: 16-24 AWG Screwless Terminal Block

Low Power Control Module Features (LPCM)
  • Plugs into a switched output of the TTL Control Module
  • Used to control battery powered lights
    • Flash lights
    • Flood lights
    • Shred Lights (not yet tested)
    • Controlled Voltage: 30v max
    • Controlled Current: 3A max

High Power Control Module Features (HPCM)
  • Plugs into a switched output of the TTL Control Module
  • Used to control horns or high current devices
    • Flood lights
    • Horns
    • Controlled Voltage: 60v max
    • Controlled Current: 30A max
    • Flyback diode included for horns (deconfigurable through PCB jumper)

Analog to Digial (A2D) Module Features
  • Connects to a side light port of the TTL Control Module
  • Designed to control digitally addressable LED strips
  • Not yet implemented in the code

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 side RGB lights
      • Static - Set each side light to a solid color you choose
      • Color Cycling - 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 - 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
  • 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
  • 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
    • PPM and Nunchuck supported (UART remotes are planned to be added)
    • Enable or disable turn signals (currently only working with Nunchuck)
    • 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
        • Hold > 0.5s
  • Calibrate the IMU
  • Set the oriantation of the TTL Control Module
    • Allows you to place the control module however you like in your build

Since this project has been my hobby project for a long time now, I have decided I have taken it as far as I want on my own, and I will be making it open sorce. That way anyone interested can help further the developement and new features can be rolled-out regulaly. I have posted the schematics and files required to assemble all of the boards to the downloads page of my website (link below). I have also created git repos for both the firmware and and the android app (links below). The only thing I will not be releasing as open source is the PCB designs. I have put countless hours of work into the PCB designs alone so I will be selling them on my site but not releasing the designs.

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

I have pictures and videos of my project posted on my instagram page, here’s the link if you want to check them out:


This is a really great project man! I’m definitely keeping an eye on this. Truly great work


Wow, this is really cool work! Awesome job!


This is awesome. It could become the open source metr pro(the app side of things) as more contributors put their time in this.


@venom121212 @sofu Thanks for your support! :blush:

@mishrasubhransu I really hope so. I have A LOT of ideas for what to do with the app and control module but very little time to implement them, so help from the community would be awesome!

@maxpriority I was originally thinking I would sell whole kits, but what’s holding me back is all of the 3D printed parts and the cables. I only have one 3D printer and the headlight base alone takes somewhere around 4 hours to print. I could print multiple at once but it’s still more of a hassle than I would like. The cables are easy to provide when they are short (i.e. to ESC, to PPM receiver, to an expansion module), but I have not found an easy way to make the long cables. I cannot find a supplier for long pre-crimped wires, and if I order custom cables they become prohibitively expensive :frowning:



maybe you can help?

1 Like

I just bought my second 3d printer. I can assist if necessary!


I‘m not through everything, but which wire in which length you need @Ricco

Groundbreaking innovations is why I love this community.

1 Like

Thats great, having someone helping with the printing would definitely make the kits more feasible :smile:

1 Like

@Ricco so are the rear lights controlled by a filtered accelerator or sensing from the vesc?

I am using 24AWG for all of my cables. There are 4 cable types that I need to source:

  • Headlight: 26in., 2pos, female to female
  • Tail Light: 16in., 2pos, female to female
  • Side Lights: 13.5in., 4pos, female to wire
  • Horn: 23in., 2pos, female to wire

These are the lengths I am using in my board. The wire lengths needed would vary from project to project based on where the control module is located and how they are routed, but we may be able to work lengths that suit the majority of use cases.

1 Like

The rear lights are controlled based on the throttle position read from the VESC. The brightness ranges from 50% when not breaking, to 100% when at full brake.




This whole thing is awesome… Way better than mine… :slight_smile:

Any plans on making the code open source? :slight_smile:

(Btw:: Check your links…downloads) :slight_smile:

1 Like

Using your control module, would it work if I ran my own LEDs ?

Thank you :slight_smile: Your project is great too. Now there are two options for open source lighting controllers at different price ranges :smiley:

I do plan to make the code open source. I just need to get put the right licensing on it and make some git repos.

Thanks for pointing out the link. Its fixed now.

1 Like

In short, yes. The control module switches 12v on all of its LED ports. As long as your LEDs operate off of 12v and draw less current than what will damage the FETs or power supply, they can be controlled. Take a look at the documentation page of my site to learn more about the current capabilities of the control module.

1 Like

Which size plugs you use? 2mm jst or 2,5mm jst and how much cables you think you will need from each? It’s not a big thing to just crimp the cables but it takes some time and the wires would need to be ordered as well.

They are all 2mm JST PH connectors. Ya the time spent on crimping is the part that I am trying to avoid since there would be about 18 crimps to perform per kit. Thats counting 1 headlight cable, 1 tail light cable, 2 sidelight cables, and 1 horn cable. The ESC adapter cable and the PPM reciever adapter can be made with pre-crimped wires bought from digi-key.

1 Like