A mobile environmental logger using an 18M2

A mobile environmental logger using an 18M2

My wife and I have been retired 13 years and spend at least 2 months a year traveling, mostly road trips in our 2014 Chevrolet Impala, 105 trips so far, three trans-continental.
In addition to photos, we take a Q*Starz recording GPS and a Davis Instruments CarChip.
We usually also take the Picaxe altimeter I made in 2008, which has proved reliable. I upgraded this in 2015 to a 14M2, enabling it to use the 6-segment pressure to altitude code from this project.
This project performs recording of temperature, humidity, altitude and supply voltage.
It is housed in n oak box 8x5.5x4 in, and runs on vehicle 12V. The temperature and humidity probes plug in.
It has three sensors:
1. A DS18B20 digital temperature IC on a probe, using a Dallas 18B20 digital temperature sensor.
2. A AM2301 digital humidity and temperature sensor.
3. A MPX-5100A analog pressure sensor MEMS, from Digi-Key.
There are 2 interior metal sub-assemblies, front and rear, inter-connected by a 15-pin ribbon cable.
The front assembly contains:
1. A 12-position rotary switch for display selection, and a 16-segment voltage divider on a board.
2. A Ledtech UN(M)5624 4-digit 7-segment green LED display and a MC14489 driver/multiplexer on a second board.
3. A RogueRobotics uMMC Secure Digital (full-size) to serial interface and on-off switch.
The rear assembly contains:
1. A board containing a power regulator and 5-to-1 voltage divider to monitor the supply voltage. This was upgraded in 2015 to prevent memory file system corruption from sudden power loss.
2. A board containing the Picaxe 18M2 and a DS1302 clock-calendar with a CR2032 backup battery.
3. A board with the MPX-5100, its amplifier, and the AM2301 PWM to DS1302 interfacing circuit.
4. A 3-way momentary toggle switch for adjustments

The Picaxe program has an initial one-time initialization section and a main loop, plus sub-routines.
Another version loads the DS1302 with time, date and pressure constants, due to lack of space.
The Picaxe runs at 16 MHz and the loop is asynchronous. It has three sections:
1. Data acquisition.
          Every loop: Switch position, pressure and time/date.
          Once per minute: Supply voltage, probe and humidity.
          The data is stored in the Picaxe un-labelled variable space in ASCII.
2. Adjustments for minute, hour and pressure offsets.
3. Display selection and interfacing.
4. Recording in spread-sheet-compatible format in pre-set year and month sub-directories, one file per day.

This project had great complexities both for the circuit and the software.
The DS1302, the MC14489, the AM2301,the DS18B20 and the SD interface all have incompatible serial interfaces.
The data items varied from 4, 8 and 16-bit.
Data coding varied from binary, BCD and ASCII. Some were LSB-first and some MSB first. The DS1302 RAM used LSB first for the address, followed by MSB for the data byte.
I don't think I would have got it right without my Tektronix Digital Storage Oscilloscope, a gift from my ever-loving wife.

For convenience when traveling, the logger output is transmitted to a hand-held display. Now recycled into the OLED_Display.

Here are photographs

Here are the circuit diagrams

Here is the code