The idea for my dashboard was born after attempting to develop smart phone solution to do a similar thing, ultimately failing? Not sure if giving up counts as failure, either way I came to the conclusion that a smart phone didn’t really have much place in a Motorsport environment, and went back to the drawing board.
I happened upon a YouTube video of someone using an Arduino with a Nextion HMI display for sim racing. That was the spark of inspiration I needed, and I soon began proving the concept. I then invested in an ECU solution that gave me a well documented CAN stream, and began bread-boarding the project, writing code and designing interfaces for the Nextion display.
Display & Electronics
Some testing of the Nextion display in sunlight proved my worries about it not being bright enough to use in a car. Fine for indoor use, and fine for what I had originally witnessed it doing for sim racing, but in a greenhouse of a car it would struggle. An Australian company 4D Systems offer a version of their HMI display in a ‘Super Bright’ flavour, with a brightness of 820 cd/m2 it is four times brighter than the Nextion, and comparable to what you’d normally find in a Motorsport display such as Motec, AEM, or DTA.
Once settled on the display I designed a circuit board to act as somewhat of a motherboard, allowing me to group together the smaller boards without the need for a messy breadboard and birds nest of wire. It’s simple in execution, but seems to work and has a small enough footprint to package nicely into an enclosure.
Enclosure & Carbon Fibre Fascia
The enclosure you can see above is version 3, it is an ABS 3D print which features a number of brass M3 fittings to aid mounting of the circuit board, display and carbon fibre fascia. One of the advantages of 3D printing is that it makes iterative design fairly inexpensive and fast, within a matter of hours you can have a working piece in your hand.
Version 1 was a very simple rectangular shape, I wasn’t setup for cutting carbon fibre at the time meaning this iteration never actually got the carbon fascia I had planned. This really was my first foray into design in Fusion 360, a simple functional shape it was, pretty it wasn’t.
Version 2 featured an integrated sunshade which was more aesthetic than anything else, it also proved to be quite fragile which is another reason it only had a short life. This enclosure would wear a carbon fibre fascia, I also designed and printed a gauge holder which neatly integrated into the mounting system of the enclosure.
Version 3, and the current version is a neater shape, I also added some strength to the overall design by thickening its walls. This would prove useful when I dropped it one day transporting between workshop and car, fortunately it survived the fall onto concrete and lives on today. I designed and cut a carbon fibre mount for the enclosure which allows it to be mounted to an existing bracket found on the steering column.
Software & Inputs
The majority of code lives on the Teensy, currently it’s what does the legwork, sending values to the display as and when they’re needed. I make use of Adafruit, 4D Systems, and FlexCAN libraries for interfacing with hardware, and then the bulk of code work is handling data on CAN BUS. As well as data from CAN there are a number of analogue inputs, such as fuel level and page buttons, which again are handled by the Teensy.
The dash is GPS ready, although currently I haven’t implemented code to make use of it. Initially it will be a data channel to display a speed reading, but I hope to use it for lap timing in the future.
The bulk of the UI is designed in Photoshop, then sliced and imported into the 4D IDE to make controls. It’s quite simple currently, I have a rev counter at the top which runs the width of the display then the ability to display six data channels on each page. A page isn’t a page in such as I have to reference them in code to display them. I simply tell the display to show a collection of data channels, instead of showing a particular page. Assuming you are happy to have a fairly consistent simple layout, this makes layout changes very easy.
Conclusion & Road Map
I think aesthetically I can say it’s “finished”, overall I’m really happy with how it looks and how it feels in hand. There are numerous things I’d like to change, but for now it will do. From a technical stand-point, it works and seems to work quite well, no real latency to speak of and it’s quite clear to read from the drivers seat. As I am only just getting my car back to a running stage, I’m at the very beginning to testing and proving it can be reliable.
In its current state, my main objectives have been realised: Boot time is around 3 seconds from power off to displaying data, it stays on during a crank event, there is no noticeable latency, and as previously said it looks like it belongs in the car.
Looking ahead, I’d like to implement predictive lap timing using GPS and I’ll need to create some form of management software for it. I have wondered about adding Bluetooth and/or WiFi to enable configuration changes via your phone or browser. Some data logging capability might be nice as well, I can’t imagine that will be too difficult to implement. Sealing the enclosure to keep electronics safe from dirt and moisture is on the list as well. Currently this isn’t too much of a problem as my car is a tin top, and barely sees sunlight never mind rain, but it’s something that plays on my mind.
Currently these aren’t for sale, I hope at some point to offer a bespoke service, but I feel as if we are a ways off that, sorry.
- Teensy 3.2 Microcontroller
- Waveshare CAN Transceiver
- Adafruit GPS Receiver
- Pololu 2831 5v Regulator
- 5″ 4D Systems ‘Super Bright’ Display
- Adafruit Neo Pixel Stick (x2)
- Motorsport Maker Circuit Board
- Motorsport Maker 3D Printed ABS Enclosure
- Motorsport Maker 2mm Carbon Fibre Fascia
- Motorsport Maker 2mm Carbon Fibre Mount
- Deutsch DTM 12 Way Connector
- TE Superseal 1.5 4 Way Connector