Back to home
Police flashers This project is for the flashers in a so-called 'chips' motorcycle (for the people that know the tv series). It is a kawasaki Z1000P, a special USA police model.

These models usually have the blue/red flashers next to the main headlight in the fairing, but once sold privately, they are taken out and replaced by either white or amber lights.
Even worse: in this country you get a ticket if you get caught even showing any red or blue lights, let alone have them working.

As it turns out, the measurements of the lights are the same as PAR36 lights (from stages etc.). Knowing that, it is possible to use some simple electronics to replace those lights with something that will work but does not get you a ticket!

Please note: this project is still active! What's here work, but things might be changed a bit or extended/expanded!
The idea The main idea is: make lights that are a drop-in replacement but when off will not show any blue/red. Even more: they should be switcheable between 'normal' mode and 'police' mode.
Normal mode means: white or amber light, police mode is ofcourse flashing red and blue!

Knowing arduino and what it can do, in short i designed a light that will replace the old lights with some electronics and programmable LED's.
The easiest ones to use are so-called neopixels. These can be obtained online in prefabricated circular PCB's, which is perfect for this purpose!
They are not as bright as the 'official' flashers, but the light coming from them is considerable, especially if you stick 60 of them in one housing..

To have it as a 'finished product', it all has to fit in a nice housing controlled by the switches and wiring that is already there so no changes are made to anything on the motorcycle at all.
Partslist All the electronic parts needed for one replacement light:
countPartexample (url)
4 (*)neopixel rings, in the url all but the middle oneNEOPIXEL rings
1 (*)12 to 5 volt converter, capable of handling the power needed on full white12 to 5V step down power supply
1 (*)3 pin plug, male and female3 pin plug, male + female
1arduino nano 5VArduino nano, 328P, 5V
11 channel relay module1 channel relay module
 5 meters wire, the usual 3 strand 220V wires will do just fine. We need at least 3 strands: 5V, GND and signal.
1PCB hole board3 X 7 cm prototype board
3resistors , 30K
3resistors , 1M
1resistor, 1K
1resistor, 100K
3zener diode, 4.7V
1L7808 power regulator
1BC547B transistor
33 pin screw terminals3 pin screw terminals
12 pin screw teminal
13 pin header
12 pin header + jumper
1Nice to have: an ISO car plug (power + speakers, male and female parts) for a car stereo! Available at any good car parts shop.

To have both lights replaced, you will need everything marked with (*) twice.


Screws and bolts in the project, mostly bought at microschroeven.nl. Yes, it's a bit of commercial but i tend to find everything i need there for fastening stuff!
All the measured lenghts are actual thread length.
The list of the bolts and nuts:
CountItem
16M3 nut
4M3 X 8
4M3 X 12
6M3 X 12 (iso 965!)
2M3 X 30 (found these at the hardware store)

Last we have some printed parts for the light and control fixture:
CountPartLink
1main bodybackplate.stl
1top ringtopring.stl
1filling ring vulring.stl
1control fixture control.stl
1relay cap relaycap.stl
1A round lens, maximum diameter 50mm
minimum diameter 46mm, thickness 2mm
I printed the parts using ABS, since it can handle shocks,stresses, chemicals (salt in winter, other stuff splashed up from the road surface like diesel etc.) and higher temperatures better than PLA. I had some white for the light parts, making them blend in nicely! The control fixture can be any color that happens to be on some leftover spool, they are hidden inside the fairing.
The 'lens' can be fabricated from a piece of acrylic of 2mm thickness.

Grand design Because the LED's will be programmable RGB leds we will need something to send the signals. In this project an arduino nano is used. It's small and has enough ports for the job.
The electronics are fairly simple, but they have to be put together with care because we do have a considerable current running through some of the cables (for instance, we need 3.6A at 5V for each of the lights if they are on in max white!).
We also take care that the lights are not powered while they are not in use, so there is no chance in draining the battery of the motorcycle while it is parked or stored and the ligths are not doing anything.
The complete circuit looks like:



Notes on this circuit:
The pinout of the terminals and jumpers are:
Electronics If we keep things nice and tidy, it is possible to get everything mounted on the small PCB. An example for this:
    


The pinout of everything on the board (terminal counting from right top to right bottom):
NumberConnection
1+12V
2GND
3-6GND connections to other circuits/modules
7data 1 (= arduino data pin 3)
8data 2 (= arduino data pin 4)
9switch in 1 (= arduino data pin 6)
10switch in 2 (= arduino data pin 7)
11switch in 3 (= arduino data pin 8)

The 3 pin header right against the arduino is positioned with GND (pin 3 of J2 in the circuit drawing) closest to the screw terminals, then the pins are:
NumberConnection
1on/off signal for relay unit
2+5V (from arduino)
3GND

The position of the arduino is such that it should be possible to plug in a USB cable without having to disassemble anything.


Once finished, we have the following parts to fit together:


All fitted (and wired):
  


To fasten this entire 'unit' in the fairing, choose either left or right pursuit light. Take the cover and the bag on that side out of the fairing and you should be able to access the nuts on the back of the light fixture.
Take the 2 bolts off the bolts and take the washers off also. Then put the unit on the bolts (through the 'slotted' holes in the middle part of the plate), put the washers back on and then put the nuts on, tightening them not too much to break things.

The wiring is hooked up to the motorcycle harness using the car radio plug. I kept the use of the plugs as intended mostly.. the power side is actually used as power, the speaker side is used for connecting the lights.

I assigned the colored cables as this:
(the terminal connections on the arduino board are counted from left to right, starting with 1)

Power connector (using standard color coding)
Cable colorUsed forterminalAttached to
blackGND2black/yellow, there is a 2-way plug empty in the fairing for this
yellowrunning lights1Splice into the BLUE wire of the left blinker, it can be done without damaging the cable. This way, nothing will work until you put the light switch to the 'PO' or 'ON' position (or: whenever the running lights switch on. I am unsure if all bikes have this PO position..).
red+12v accessoiry feedcomm on relay unitDirectly attached to the 2-way white/blue wire in the fairing
orangepursuit switch9Directly connected to the green/yellow wire in the fairing using a flat connector
bluemain light (low beam)10take out he main headlight and splice it in the low beam wire.

Speaker connector (using standard color coding)
Cable colorUsed forterminal
green5V light #1OUT+ (right most terminal) on left DC converter
green/blackGND light #15
grey5V light #2OUT+ (right most terminal) on right DC converter
grey/blackGND light #26
whitedata light #17
white/blackdata light #28
violetfree for future use
violet/blackfree for future use

Connections between arduino and modules
startingUsed forending
3GNDGND (middle terminal) left DC converter
4GNDGND (middle terminal) right DC converter
NO terminal of the relay unit+12VIN+ (left most terminal) on left and right DC converter


For the connection to the lights i used some 3 wire fire resistant and flame retardant cables, making sure to note down what color is for what. On one end they get connected to the speaker car plug. The other end is fed through the hole in the fairing for the lights and then the female part of the plugs are attached to them (making sure the pinout matches the plug on the light!).

With everything in position behind the left flasher it looks like this:


The lights
For the lights the best thing to do is start with actually damaging the rings! Or at least, the insulation on them.
The reason for this is that the outer cirle won't have to (and probably can't) handle all the power going through it, each circle of leds will be powered individually from the main powerline.

Lay them facedown on a table like they would be sitting in the body. Then locate the contacts on the PCB and draw a line from there all the way to the top with a marker.
Flip everything around (so leds up) and copy that line.

Now carefully scratch off the insulation of the PCB.
Starting on the backside, make sure the pcb contacts are facing you and only remove the insulation from the middle UP.
Then flip the circle over, making sure that the contacts again face you, and remove the insulation from the middle DOWN.
Also, when working on the LED side, take care not to remove insulation from the data lead!

Once done, take a piece of wire of about 25 cm and remove 3,5cm of the insulation. Place the rings as they sit in the body (i.e. inside eachother with the correct distance all around) and alighn the removed insulation places.
Now solder the MINUS lead on the LED side leaving the rest of the cable point out.
Then flip over the entire assembly and solder the PLUS lead to the backside, again having the rest of the cable pointing out.

You end up with the LED circles fixed, with a wire sticking out on 2 opposite sides.
I forgot to take pictures of this, but i did take pictures assembled:



Last thing to do is to solder the data wires. On the PCB there are 2 pads for this, a data in and a data out.
Start with soldering a piece of wire of about 25cm to the 'data in' of the largest circle. Then solder a short wire from the 'data out' on the same circle to the 'data in' of the next ring (i.e. daisy-chain the circles).
Next repeat this for the other rings until you end up on the inner circle.
(in the pictures, these are the short red wires on the backside of the rings).

Testing
Testing the assembly can be done using an arduino and a little testing program.
Take a USB adapter for charging your phone and an old USB plug you won't be using anymore. Cut off the end of the USB plug that usually plugs into the phone and strip the cable carefully about 10 cm.
You should see 4 small cables. All but the red and black can be cut away.
Last, take some loose wire, 2 pieces of around 10cm length. They do not have to be the same color.

Make sure there is no power on the USB adapter or the arduino!
Attach the single red wire of the USB cable to the 5V cable of the light to be tested.
Next, twist 2 wires to the black wire of the USB plug and attach these to the GND of the light and the GND pin of the arduino.
Last, connect the data wire of the light you are testing to either pin 3 or pin 4 of the arduino.
While testing the arduino is powered by the USB plug, so we do not have to attach a 5V lead to it.

Before you test things, a small test program has to be loaded in the arduino.
Download the test program and upload it to the arduino using the GUI (available at arduino download page) and Fastled library from: fastled project page

Once it is uploaded you should see the light flashing either red or blue, depending on what pin you attached the data line to. You can verify the other color by unplugging the power, then changing the pin and then plugging in the power again.

If you see something not working, check all the connections, soldering on the leds, etc..
Housing The 3D printed housing parts should fit together snug and there shouldn't be any warping. If there is, they won't sit flush.
The round ridges in the backplate are where the neopixel rings sit on.
There is no need to fasten the led rings to the ridges because with the correct size of the filling ring these get sandwidched between these ridges and the lens.
Also, by the way the rings are soldered, they are kept in position by the wires and connections.

Here is where those special iso 965 bolts come in. In this example, 3 holes are drilled in the outer ring. Then, a special drillbit is used to sink the heads of the bolts in the ring so their tops are flush with the top of the ring!
After this is done, it is best to use a grinder to take 1 mm off of the threads so they do not stick out of the nut (which is around 2mm high).



The last thing needed are holes for the cables of the LED assembly
Position the assembly on the main body and mark 3 holes just outside the outer ring on the data wire side (or: where the soldering pads are on the led rings).
There is enough room for the plus wire to run around the outermost circle to the same place, so the holes can all be next to eachother in the order: plus, minus, data

After all this, sand and paint all the white parts with white paint. It might sound strange, but 3d prints with abs have tiny holes where water can work its way in. So when the weather starts getting wetter and colder (freezing) this might cause cracks.
Another reason is that the surface of a 3d printed project is rough. With a nice high gloss paint it is as smooth as the fairing itself, making it even more look like it always belonged there.

Final assembly is done by first threading the wires through the holes drilled for them in the main body.
When pulling the wires through, the LED assembly will fall into place and the plus wire can be positioned.
The endresult will look something like this:


The light has to be weatherproof, so it is smart to use some sort of gasket.
I had some bathroom silicon sealant laying around, which is white and stays flexible when dry. Perfect for the purpose!
Apply a thin layer on the topring outer ring and some where the acrylic sits. It will seal things just fine. Then assemble all the parts so it becomes 1 unit.

Last thing to do is to attach the (male!) part of the 3 pin plug to the wires, and glue that to the back of the body with some epoxy glue, and the whole unit is finished.
The endresult will look something like in the pictures below:


In the above picture, the blue wire is the data wire, the middle is GND and the bottom one is +5V.

Placing the light in the fairing is done just like replacing the normal lights. It fits snug so there is no rattling!



Software Last, but not least, we need software to make everything work!!

For this, download my code here: Flash.ino

Download it, and put it in a folder called flash.
If you don't have it already, install the arduino GUI from: https://www.arduino.cc/en/main/software
Last, you will need the Fastled library installed from: fastled project page

Once installed, you can open the arduino gui, load the flash.ino file, connect the arduino itself and upload the program.
Please read the remarks in the flash.ini file for any specifics and how things are supposed to work with the current version of flash.ino!

Once programmed and everything plugged in, we now should have working flashers! The current programmed flash sequence is 3 short flashes, then switch to the other side.