Project feasibility: motorcycle hud

Hi everyone,

I'm making my first post here, but i've been reading and following projects for a while.
I need your advice on a project i'm planning, but first i would like to know if it's actually possible, so i don't end up on a dead end.
The basic idea is to do the classic rpm-meter-on-a-bike project, along with speedometer and a few extras, but nothing you haven't seen on the forums so far.
My real question is if the arduino (mega, uno or nano) can handle such amount of data input and display it, all at the same time. To add some info, i've seen and tested some hall effect sensors to measure wheel speed, and managed to make it work just fine. I've found also another project here on the forums to read RPM from the engine spark with a capacitive clamp, and seems a good idea so far (still working on it, can't get all the pieces yet). Also, i've got one of the itead displays, ITDB02 3.2", to display everything. The display covers all of the mega pins, but doesn't use them all, so i could manage to use some pins.
From an old bicycle speedometer i've recycled the hall sensor and the magnet, attaching them to the front wheel, and managed to count each wheel turn (up to 35 ms each, at max speed).
Some quick calculations tell me that at 9000 rpm from the engine (max, it's a small one, single cylinder, single spark), i would have to read a pulse each 7ms (rounding up, and it's a four stroke so it would be like 28ms for every "cycle", right?).
The problem i think i'll have when i try to assemble everything, is that arduino is working at 16mhz, and there is too much info to handle at the same time, adding the LCD protocol.
Maybe if i use an arduino nano to read RPM, another arduino nano to read speed (from hall sensor) and another arduino mega to manage and display everything i could get enough time to display info on the screen accurately enough?
Coordinating everything via I2C to get data from each nano is a good idea?
I'm not sure if i will get enough "processing speed" to refresh the screen a few times per second (a portion of the screen actually, i've read the display is quite slow too :frowning: )
Any advice would be more than helpful, and please excuse my weird english.

I don't think there would be any problem reading the sensors and doing the processing. Getting a safe and usable head up display screen is more likely to be a problem, though. Once you have the information you need on the screen, how do you propose to achieve the 'heads up' part?


you should take a look at this thread:

Hi Peter, i've been looking at several options to achieve that, and i think that using a small projector would be the best option. I have a quite large windshield installed on my motorcycle, and projecting useful info on it would be the final idea. First i want everything working on the ITEAD display, and then i'll move on to the projector.
A single Arduino can handle all that data? RPM pulses are going to be quite fast, plus hall sensor's readings, and even more processing with the display(for now) protocol. If not, using multiple arduinos could be a workaround?
The desired effect is a "realtime" measure, or at least close to it, refreshing the data as fast as possible (1 second seems too slow).
Hello Kduin, i love that project, i've seen it but i don't like the idea of wiring myself (maybe bluetooth?), and blocking one of my eyes scares me a bit, but the idea of the retroview camera is awesome, maybe it could be done with an external video processor, to send it to a display(and maybe a projector later)?
I can specify more if needed, just name it.
Thanks a lot!

If it helps describing the idea, the display is:
I'm building each part, but still don't have the whole thing assembled

A single Arduino can handle all that data? RPM pulses are going to be quite fast, plus hall sensor's readings, and even more processing with the display(for now) protocol. If not, using multiple arduinos could be a workaround?

Projecting on a windscreen seems far more feasible than projecting on the inside of a visor, which is what I was originally envisaging.

The data rate you need is not really that high. For example, 6000 RPM is still only 100Hz and your Arduino would typically be running at 16MHz, so you have time to do lots of stuff per crank revolution. Of course, you don't need to refresh the display every revolution, and that would probably make it rather hard to read if the figures were changing at all, you probably only need to update the display values a few times a second.

All right, then i'm going to continue tweaking all the sensing stuff, and put it all together on a single arduino.
You've saved me lots of time learning about I2C(and lots of money too :D)
After some more significant progress(i'd like to have something to show first) i'll start a thread again with details of what's going on.
Thanks to both of you for taking the time!