Arduino suitable for motorcycle hour-meter/electric tach drive/speedometer?

This is my first post here, and I know very little about Arduino itself, so do bear with me if you can. I'm a pretty hardcore gearhead/motorcycle guy, and I would like to build an Arduino-based combination hour-meter/speedometer, but I have a few questions.

Given these input/outputs:

  • 3 inputs:
  • one for the speed sensor (a hall-effect sensor of some description) to drive the speedometer and tripometer
  • either an oil-pressure sensor of some sort (re-purposed brake light switch/banjo bolt, used in one of the engine-to-oil-tank oil lines, or just a regular automotive oil pressure
    switch) or mimic an electronic tach pickup, to tell the Arduino unit when to start and stop a countdown/countup timer (aka run timer if oil pressure or RPM are detected,
    stop timer if RPM or oil pressure are not detected)
  • four momentary contact switches, one to reset the service-interval bar, another to reset a tripometer, the third to toggle between tripometer, odometer, and total engine
    runtime
  • 4 outputs:
  • hour-meter bar (10-segment LED + service light, all 10 light up when countdown timer is at full, as time gets closer to 0, less LEDs light up on the bar until time equals
    zero, then the "service-me-now" LED illuminates) OR 2-3 digit countdown timer that counts down in hours to 0, and a "service-me-now" LED @ time equals zero
  • speedometer (series of LEDs that light up in 5mph increments, 1 for 5mph, 2 for 10, 3 for 15... so on and so forth)
  • tripometer (takes speed-sensor input, counts total revolutions, multiplies by circumference of the wheel in question to get distance traveled, then displays to nearest 10th on
    first 4 digits of a 7-digit readout with decimal point
  • odometer/total-engine-runtime meter (using as many digits of the above 7-digit readout as necessary, capable of displaying up to 999,999.9 miles/999,999.9 hours)

(1) Do I need a full-size Arduino unit, or can I get away with one of the smaller-board Arduinos?
(2) Given the countdown/count-up-to-infinity functions of the sketch required to run this, basic as they may be (countdown from ~100 hours for service interval, count up from 0 hours/miles for total hour meter, odometer, and tripometer), would running a SD/MicroSD shield and storing everything on an SD/MicroSD card be advisable, rather than rely on the onboard flash memory?
(3) What would be the easiest way to take the power the bike's charging system produces and get it down to 5VDC, and what is the maximum amperage @ 5VDC an Arduino can RELIABLY be exposed to before it starts to flame-broil itself?
(4) This can likely be very easily solved with rubber isolators, but how impact/shock/vibration-resistant are basic Arduino units? could they likely survive the vibrations from a 200-500cc single cylinder engine, either a 4 stroke or a 2 stroke, in a dual sport/dirt-flat-track-inspired bike?
(5) Is there anything in how I plan to execute my goals that anyone more experienced with Arduino might be able to streamline a bit? To my [VERY] un-educated (on this anyway) eye, it seems rather clunky, albeit functional, at least conceptually.

Thanks for the help everyone, I'm a complete newbie at this, and this is probably a bit more ambitious in intent than the usual beginner Arduino project also

Slyp823:
(1) Do I need a full-size Arduino unit, or can I get away with one of the smaller-board Arduinos?

You can use one of the smaller ones. Alternatively, prototype the system using a real Arduino, then move the design to a pcb or stripboard design based around an atmega328p, leaving out the Arduino bits you don't need such as the USB interface.

Slyp823:
(2) Given the countdown/count-up-to-infinity functions of the sketch required to run this, basic as they may be (countdown from ~100 hours for service interval, count up from 0 hours/miles for total hour meter, odometer, and tripometer), would running a SD/MicroSD shield and storing everything on an SD/MicroSD card be advisable, rather than rely on the onboard flash memory?

The onboard flash should be adequate, you have 1K bytes available on most Arduinos and it sounds to me that you only need a fraction of that amount.

Slyp823:
(3) What would be the easiest way to take the power the bike's charging system produces and get it down to 5VDC, and what is the maximum amperage @ 5VDC an Arduino can RELIABLY be exposed to before it starts to flame-broil itself?

If you use an Arduino with an onboard regulator, you can power it direct from the 12V supply. Otherwise, use a 7805 or similar voltage regulator. When you talk about "maximum amperage", do you mean the maximum current you can draw from the +5V pin, or something else?

Slyp823:
(4) This can likely be very easily solved with rubber isolators, but how impact/shock/vibration-resistant are basic Arduino units? could they likely survive the vibrations from a 200-500cc single cylinder engine, either a 4 stroke or a 2 stroke, in a dual sport/dirt-flat-track-inspired bike?

The Arduinos themselves are mechanically robust, it is the connections you make to it that may suffer if there is a lot of vibration.

Slyp823:
(5) Is there anything in how I plan to execute my goals that anyone more experienced with Arduino might be able to streamline a bit? To my [VERY] un-educated (on this anyway) eye, it seems rather clunky, albeit functional, at least conceptually.

Consider using an LCD display. It's much easier to drive one LCD display than it is to drive a lot of 7-segment displays, also you can display text messages. You could even go for a graphic LCD, then you can use different text sizes and even draw pictures.

You need only save the data to EEPROM when power is removed, Use a diode and capacitor on the input to the voltage regulator to provide some reserve power, and monitor the voltage across the capacitor using a potential divider feeding one of the analog inputs, so you can detect when power is failing. If using an LCD, power the backlight separately from the 12V supply via a series resistor so that it doesn't drain the capacitor, that way the reserve power will last longer without havnig to use a bigger capacitor.

You might want to add an LDR so that you can dim the LCD backlight or 7-seg displays automatically at night.

For the speed sensor, use a Hall sensor and 2 magnets, and connect the Hall sensor to one of the Arduino inputs that provides an interrupt. It's easier to measure the RPM using an interrupt.

You might get some inspiration from this beautiful Arduino project