The initial vision for the Wiggum project was to have a device watching the speed of a vehicle and notifying the driver when it exceded a predefined threshold. The user would indicate to the device the current speed limit to respect depending on the road condition.
Man machine interface
To simplify the design, there would be no clear-text display but only a handful of leds indicating the status and the current speed.
With rare exceptions in France speed limits are contained in the following set: (30, 50, 70, 90, 110, 130) km/h. So by using only those values we could display the current speed threshold with only 6 leds. Just add another led for the device status.
The control of the current threshold can be done using 2 buttons: one to decrease it, one to increase.
Tickets are issued only if your go beyond a predetermined technical margin over the limit. For speed up to 100km/h the margin is 5 km/h then over 100 km/h the technical margin is 5% of the speed. So for example you can go up to 95 km/h for a 90 km/h limit and 136,5 km/h for a 130 km/h limit. I would like to be notified when I am above the speed limit with a first signal and then notified again if I exceed the technical margin with a stronger signal because this time it is for real, it is the DANGER ZONE!
So the device will include a table describing those different threshold and will use buzzer patterns to alert the driver (simple beep, double beep, long beep…)
Measuring the vehicle speed
The speed of the vehicle could be determined by deriving signals from the car electronic backbone but it is not the simplest thing to implement and it is very manufacturer and model-dependent.
Instead I will use a GPS module. A GPS module can report in realtime its position and its speed over ground. Some model can do a pretty accurate speed determination using doppler measurement of satellite signals. The EM-406A module I have previously presented have an accuracy of 10 meters for position (a value that can be degraded depending on weather or satellite position on the horizon) but an accuracy of 0.1 m/s for speed! It is more than enough for my application.
One point to keep in mind is that the GPS module has a fixed rate for sending data, 1Hz for the EM-406A, and there can be a delay between the measure of the speed and the moment it is really communicated to the serial port of the module. This could be a problem if the GPS report an accurate speed value that is 1 second old…
Device integration in the steering wheel
My initial vision was of an “hidden” device with control just where the hands are. With its 2-button interface, it could be integrated like a car stereo remote directly inside the steering wheel.
I opened my steering wheel and yes it seems there is some room for a device. Power supply wires could come from the direction column and there are already some plastic housing on the side ready to welcome the circuit.
I bought a steering wheel in a scrapyard to check the dimensions:
The plastic cases have support for an inside PCB and it seems it could fit most components (MCU, leds, buttons) using SMD parts but the GPS would have to deported elsewhere…
Finally I put the idea aside as I have now a new car and no need to integrate the device so tighly anymore. So my device will be built in a plastic case to be put on the dashboard like a traditional car GPS.
Does someone need a used Citroen Xantia steering wheel ?
The car has a plug to provide 12V. A friend had given me an USB car adapter so it felt like a good fit.
No need to add filtering and power conversion on my device. I only need to add a mini-usb plug to the design and then I can power it from the car adapter or directly from a computer (very handy for tests on the bench).
I could have used a barrel jack plug but then it would have required a special USB power cable like this one and in my mind the device could later evolve by adding a real USB interface enabling GPS NMEA output/debug output/firmware update…
Choosing the MCU
A no-brainer. I already had some ATMEGA168 around so I designed my prototype around this MCU.
I tried to port my prototype to the AT90USB162 but it is a little short on memory space not including the added complexity of USB management, so I will keep the 168 for the first iteration of my PCB design.
In the next posts I will describe the system design and begin to assemble my prototype.