The easiest way may be to have Arduino powered all the time. When the voltage is below 13V, the Arduino switches off all components connected to it and goes into a sleep mode. This minimises the current it uses so that it does not drain the battery. It wakes occasionally to check the voltage, perhaps every second. If the voltage is still below 13V it goes back to sleep. If above 13V, it does not go to sleep and performs it's function. If the voltage is below 11.8V it sends a message to serial port and goes back to sleep.
Arduino can measure the battery voltage by connecting an analog input to the battery through a voltage divider. The voltage divider is simply a pair of resistors that reduce the battery voltage by a fixed ratio. For example 1K and 19K resistors would reduce 13V down to 0.65V. Arduino has a built in voltage reference and by comparing the reduced battery voltage to the internal reference, it can measure the actual battery voltage.
However, there is a danger of damaging the Arduino in a car. The voltage level in a car's wiring can contain short high voltage spikes when the engine is running. You cannot detect these spikes with a multimeter. To protect the Arduino analog input from these spikes, you can use a special type of diode called a Zener.
The idea is to keep Arduino as Low as possible while car I off, it does not need to check battery status, it is only when car is on. But, How much Arduino consumes when it is sleeping?
For this project, what Zener is perfect for this? And How to use it? Like parallel circuit or serial circuit? Thanks in advance!