Today, we are taking a significant step forward into professional-grade system design. When I am designing a flight controller for high-value applications like expensive cinema cameras or critical long-range missions relying on a single, tiny hole to tell me how high the drone is, is a risk I am rarely willing to take.
The solution? Sensor Redundancy. I highly recommend integrating a Dual Barometer setup.
1. Why Using Two Barometers?
Why two barometers? As every seasoned embedded systems engineer knows, the question isn't if a sensor will fail, but when. Barometers are exposed to the environment. I have tried flying single-baro drones in challenging conditions, and I have seen them nearly crash because a tiny insect blocked the sensor port or a localized thermal pocket gave a false reading.
You can see in various robotics and automotive safety journals (like those from the IEEE Robotics and Automation Society) regarding fail-safe systems, which show that redundancy is the primary defense against localized sensor error. When your firmware (like Ardupilot) detects a discrepancy between two sensors, its Advanced Kalman Filter (EKF) can identify the erratic sensor, isolate it, and seamlessly switch the primary altitude source to the healthy barometer, all while the drone is in flight. Without redundancy, if one baro fails, the drone might violently shoot upward or crash into the ground.
2. Hardware Implementation: Taming the Dual SPI Bus
The biggest challenge in adding a second sensor is pin management. If you used I2C for both barometers, you would run into address conflicts unless you used two separate I2C buses, wasting precious MCU resources.
This is where my previous advice on using SPI really pays off. SPI is a "bus" protocol. As seen in the detailed schematic I have generated below (Image 1), both BARO1 and BARO2 (two BMP388s) share the exact same Serial Clock (SCK), Master Output Slave Input (SDI), and Master Input Slave Output (SDO) lines back to the MCU.

Image 1: SPI Schematic for Dual BMP388 Barometers
The crucial difference is the Chip Select (CSB) lines. BARO1 connects its CSB pin to the CSB_BARO1 net label (pin PA4), and BARO2 connects its CSB pin to CSB_BARO2 (pin PA5). I recommend specifying unique net labels for each CS pin in your firmware configuration. When the firmware needs data from Baro 1, it only pulls CSB_BARO1 low. When it needs Baro 2, it pulls CSB_BARO2 low. It is a highly efficient way to manage multiple high-speed sensors.
3. PCB Layout Strategy for Sensor Isolation
Signal integrity isn't enough when you have redundant sensors; you need to worry about localized environmental noise. Beginners often make the mistake of placing the two barometers right next to each other to simplify routing. I strongly advise against this.
If both sensors are in the same spot, they will likely both be affected by the same problem (like localized ESC heat or prop wash). I have tried physically separating the sensors, and it yields much more robust data.
In the PCB 3D render I have generated for you (Image 2), you can see my recommended placement strategy. I place BARO1 on one corner of the board and BARO2 on the diagonally opposite corner. While this requires longer SPI trace routing (which means you must be careful about keeping them away from noisy motor traces), it guarantees that localized interference affecting one sensor (like sunlight hitting one side) will not equally affect the other.

Image 2: Optimized PCB Layout for Diagonal Barometer Separation
Firmware
Once your hardware is built with two barometers, the firmware configuration becomes vital. Ardupilot is fantastic at handling dual baros. You can see on the Ardupilot Wiki and hardware documentation regarding multi-sensor setups, which show that the Extended Kalman Filter (EKF) is specifically tuned to manage redundant sources.
When setting this up, you must ensure that your firmware configuration accurately defines BARO1_DEVID and BARO2_DEVID to point to the correct SPI buses and CS pins. This tells the flight controller exactly where to look for each physical sensor.
When testing in your Ground Control Station (like Mission Planner), I recommend opening the Status tab and watching the live data feeds for baro1_alt and baro2_alt. When you lift the flight controller, both values should move upward together. There will always be a slight deviation between the two readings due to minute manufacturing tolerances, but they must be consistent and follow the same general curve. This validation proves that your redundant hardware is working and that the firmware is correctly receiving data from both independent sources before you trust it in the air.