Conceptually, a bike light can seem simple: a bit of wires, a battery and light bulb. But take a closer look at one. There is a lot going on in there. Voltages are changing thousands of times a second, debouncing algorithms distinguish between user interaction and noise, power electronics limit current draw through the LED. While a bike light can seem astoundingly simple, a bit of inspection reveals that the simplest light hides an incredible amount of complexity and is the result of research from many disciplines. A bike light isn’t just a useful physical object, it is a gateway to research and discovery.
I would like to share with you my ongoing project to build and explore bike lights. I will present this topic as series of blog posts. My overall goal is two-fold: First, I want to present to you a basic knowledge of electronics, probability, engineering and programming so that you may be inspired to start a project of your own. Second, I am excited to highlight some of the concepts, algorithms, and mathematics hidden behind such a deceptively simple topic. I hope you will join me in this adventure and peek into a deep and fascinating world.
The audience for these posts varies depending on the topic. Hopefully, someone generally interested in electronics, probability, software and hardware can enjoy these posts.
Here is a “table of contents” for the upcoming series. I will write these posts out of order and link to them here:
The series begins by introducing the components of a typical bike light and reviewing how these components work and what challenges they introduce. Think of it as a survey of relevant hardware components.
A deeper dive into the process of creating a constant current circuit to drive the LED. We will lightly review how the circuit works and use a few important equations to understand how to choose the components of the circuit.
AVR programming an ATTiny85 microcontroller without Arduino
PWM and debouncing on an AVR microcontroller
Presenting my first 2 simple white bike light builds and why the first one burned out.
An algorithm for a “smart” brake light using rolling averages, the Z score, and the binomial probability mass function.
An algorithm to calculate moving averages of a timeseries in an extremely low memory environment.
The problem with 3 dimensional accelerometer readings to account for road bumps, inclines, turns. Research experiments and potential next steps.