As you can see in the pictures I used an Arduino Pro Mini, and a Nextion 3.5" Basic display. Since the GUI can be designed on the computer with its on software, it was pretty easy, but really time consuming to make it look like this. It's a touchscreen display, which make real buttons unnecessary, because all the setting can be done with a few touches.
You have the set the size of the wheel and the magnet's distance from the axle, to make the speedometer accurate.
I used and magnet in the rotor and a hall effect sensor on the forks, to measure the speed.
As you can see the brightness is also adjustable, which isn't really needed since the maximum brightness is perfect in every occasions. I just wanted the try out the slider component :) (that white circle can be moved up and down to adjust)
The RPM can been seen with actual numbers, but there's also a "progress bar" which shows the RPM to make it more like a real dashboard. Since the progress bar have a range from 0 to 100 percent, you have the set the maximum RPM the engine can reach. The measurement is done with a single wire, that has to be wrapped around the spark plug wire.
Of course, all of the settings are saved in the Arduino's EEPROM, so they don't reset every time the bike is turned off.
Another feature is the voltage sensor, which examines the battery's voltage every few seconds, and turns on the low voltage (red battery) icon, when the voltage is under ~12.4 Volts. At first, I wanted to display the voltage real time on the screen, but since the Arduino's internal voltage sensor really inaccurate, I gave up on this idea. The critical voltage range will be calibrated manually it the Arduino code, which I haven't done yet. BTW, I used a simple voltage divider to make the Arduino able the read voltages above 5 Volts.
There will be also an engine temperature sensor. I ordered some sensors from Aliexpress, but I haven't got them, so I have no idea whether it's going to work as a charm or will be a complete failure. Measuring the temperature will be done by using a sensor which changes it's resistance when the temperature changes. The actual temp is calculate from the resistance. There's also a high temp indicator, which shows up when the temp is above 95 or 100 Celsius.
Obviously, there is a Turn Indicator and High Beam lamp, which connect to the factory indicator lamps, so the bike don't have to be modified.
When it comes to the fuel sensor, there are more option:
-If the bike has a fuel level sensor, a progress bar can be used to display how much fuel we have.
-If bike has only a low fuel level indicator from the factory, it can be wired to the Arduino (like the high beam indicator).
-Or, if the bike has neither of them, we can add our own low fuel level indicator using for example reed switches or hall effect sensors.
The bike I am testing the dashboard with is a Derbi Senda, which has a low fuel level indicator from the factory, so I use that.
I wanted to add a clock, which is quite difficult, since the Arduino does not have an internal clock, so a Real Time Clock module has to be used, which unfortunately has not arrived yet.
There's also 3 odometers. There's a main, which can't be reset. I added also Trip A and Trip B which can be reset any time separately with a tap on the screen. These are also saved in the EEPROM.
That's all I've done so far, there's a lot of work left to finish the project. I think the most difficult part will be to make a housing for the screen and the electronics.