Code "soft bricks" my board

IT'S ALLIIIIVVVEEEE!!!!! I "re-Frankenstein'd" it, moving methodically and systematically, fixing any errors along the way. I was able to get rid of some variables, some "BMP" lines and didn't use the "Adafruit_Sensor.h" library at all. I have not really looked back and compared the two codes yet but this one works as expected.

#include <SPI.h>
#include <Wire.h>
#include <RH_RF95.h>
#include "Adafruit_APDS9960.h"
#include <Adafruit_GPS.h>
#include <Adafruit_SHT31.h>
#include <Adafruit_BMP280.h>
#include <Adafruit_LIS3MDL.h>
#include <Adafruit_LSM6DS33.h>
#include "RTClib.h"
#include "avr/dtostrf.h"
#define GPSSerial Serial1
#include <Servo.h>
RTC_PCF8523 rtc;
#include <SD.h>
Adafruit_GPS GPS(&GPSSerial);
#define GPSECHO false
Servo servo;

Adafruit_SHT31 sht30;  // humidity
Adafruit_BMP280 bmp280; // use I2C interface
Adafruit_LIS3MDL lis3mdl;   // magnetometer
Adafruit_LSM6DS33 lsm6ds33; // accelerometer, gyroscope
Adafruit_APDS9960 apds; // proximity, light, color, gesture

#define RFM95_CS 8
#define RFM95_RST 4
#define RFM95_INT 3

#define RF95_FREQ 433.0

// Singleton instance of the radio driver
RH_RF95 rf95(RFM95_CS, RFM95_INT);

int MaxAlt = 0;
int MaxSpd = 0;
int MaxTem = 0;
int MinTem = 10000;


void setup() {

  sht30.begin();
  bmp280.begin();
  lis3mdl.begin_I2C();
  lsm6ds33.begin_I2C();
  apds.begin();
  apds.enableColor(true);
  servo.attach(5);
  servo.write(90);
  rtc.start();
  SD.begin(10);  
  pinMode(RFM95_RST, OUTPUT);
  digitalWrite(RFM95_RST, HIGH);

  Serial.begin(115200);
  GPS.begin(9600);
  GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA);
  GPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ); // 1 Hz update rate
  delay(1000);
  GPSSerial.println(PMTK_Q_RELEASE);

  delay(100);

  // manual reset
  digitalWrite(RFM95_RST, LOW);
  delay(10);
  digitalWrite(RFM95_RST, HIGH);
  delay(10);

  while (!rf95.init()) {
    while (1);
  }

  if (!rf95.setFrequency(RF95_FREQ)) {
    while (1);
  }

  bmp280.setSampling(Adafruit_BMP280::MODE_NORMAL,     /* Operating Mode. */
                     Adafruit_BMP280::SAMPLING_X2,     /* Temp. oversampling */
                     Adafruit_BMP280::SAMPLING_X16,    /* Pressure oversampling */
                     Adafruit_BMP280::FILTER_X16,      /* Filtering. */
                     Adafruit_BMP280::STANDBY_MS_500); /* Standby time. */

  rf95.setTxPower(23, false);
  if (!SD.begin(10)) {
    Serial.println("Card failed");
  }
  if (!apds.begin()) {
    Serial.println("failed to initialize device! Please check your wiring.");
  }
  if (! rtc.begin()) {
    Serial.println("Couldn't find RTC");
  }
  if (! rtc.initialized() || rtc.lostPower()) {
    Serial.println("RTC is NOT initialized, let's set the time!");
  }
}

void loop() {

  if (GPS.altitude > MaxAlt) {MaxAlt = GPS.altitude; }
  if (GPS.speed > MaxSpd) {MaxAlt = GPS.speed; }  
  if (bmp280.readTemperature() > MaxTem) {MaxTem = bmp280.readTemperature(); } 
  if (bmp280.readTemperature() < MinTem) {MinTem = bmp280.readTemperature(); }

  sensors_event_t temp_event, pressure_event;
  sensors_event_t accel;
  sensors_event_t gyro;
  sensors_event_t temp;
  lsm6ds33.getEvent(&accel, &gyro, &temp);
  lis3mdl.read();
  DateTime now = rtc.now();

  float magnetic_x, magnetic_y, magnetic_z;
  float Lo = GPS.longitude;
  float La = GPS.latitude;
  int Al = GPS.altitude;
  int Sp = GPS.speed;
  int humidity = sht30.readHumidity();
  float temperature = temp_event.temperature;
  float accel_x, accel_y, accel_z;
  float gyro_x, gyro_y, gyro_z;

  delay(1000);

  char c = GPS.read();
  if (GPS.newNMEAreceived()) {
    Serial.println(GPS.lastNMEA()); // this also sets the newNMEAreceived() flag to false
    if (!GPS.parse(GPS.lastNMEA())) // this also sets the newNMEAreceived() flag to false
      return; // we can fail to parse a sentence in which case we should just wait for another
  }
  if (GPS.fix) {
    Serial.print(GPS.latitude, 4); Serial.print(GPS.lat);
    Serial.print(", ");
    Serial.print(GPS.longitude, 4); Serial.println(GPS.lon);
    Serial.print(GPS.speed); Serial.println("kn");
    Serial.print(GPS.altitude); Serial.println("m");
  }

  delay(1000);
  char radiopacket[2] = "N";
  Serial.println(radiopacket);
  radiopacket[1] = 0;
  rf95.send((uint8_t *)radiopacket, 2);
  rf95.waitPacketSent();

  delay(1000);
  char Lat[1] = {};
  dtostrf(La, 9, 4, Lat);
  Serial.print("Sending "); Serial.println(Lat);
  rf95.send((uint8_t *) &Lat, 9);
  delay(10);
  rf95.waitPacketSent();

  delay(1000);
  char Lon[1] = {};
  dtostrf(Lo, 9, 4, Lon);
  Serial.print("Sending "); Serial.println(Lon);
  rf95.send((uint8_t *) &Lon, 9);
  delay(10);
  rf95.waitPacketSent();

  delay(1000);
  char Spd[1] = {};
  dtostrf(Sp, 3, 0, Spd);
  Serial.print("Sending "); Serial.println(Spd);
  rf95.send((uint8_t *) &Spd, 3);
  delay(10);
  rf95.waitPacketSent();

  delay(1000);
  char Alt[1] = {};
  dtostrf(Al, 6, 0, Alt);
  Serial.print("Sending "); Serial.println(Alt);
  rf95.send((uint8_t *) &Alt, 6);
  delay(10);
  rf95.waitPacketSent();

  String dataString = "";

  dataString += String(int(now.month())) += "/";
  dataString += String(int(now.day())) += "/";
  dataString += String(int(now.year())) += " ";
  dataString += String(int(now.hour())) += ":";
  dataString += String(int(now.minute())) += ":";
  dataString += String(int(now.second())) += " ";
  dataString += String(GPS.latitude, 4);
  dataString += String(GPS.lat) += ", ";
  dataString += String(GPS.longitude, 4);
  dataString += String(GPS.lon) += " ";
  dataString += String(bmp280.readTemperature()) += " C Min:";
  dataString += String(MinTem) += " C Max:";
  dataString += String(MaxTem) += " C Humidity:";
  dataString += String(sht30.readHumidity()) += "% ";
  dataString += String(bmp280.readPressure()) += " Pa ";
  dataString += String(GPS.speed) += " kn ";
  dataString += String(MaxSpd) += " kn MAX ";
  dataString += String(GPS.altitude) += " m ";
  dataString += String(MaxAlt) += " m MAX MagX:";
  dataString += String(lis3mdl.x) += " MagY:";
  dataString += String(lis3mdl.y) += " MagZ:";
  dataString += String(lis3mdl.z) += " uTesla Acc x:";
  dataString += String(accel.acceleration.x) += " Acc y:";
  dataString += String(accel.acceleration.y) += " Acc z:";
  dataString += String(accel.acceleration.z) += " m/s^2 Gyro x:";
  dataString += String(gyro.gyro.x) += " Gyro y:";
  dataString += String(gyro.gyro.y) += " Gyro z:";
  dataString += String(gyro.gyro.z) += " dps Proximity:";
  dataString += String(apds.readProximity());

  File dataFile = SD.open("datalog.txt", FILE_WRITE); //Opens new text file on SD card called datalog.txt

  if (dataFile) {
    dataFile.println(dataString);
    dataFile.close();
  }

  Serial.println(dataString);

   if (MaxAlt > 4000 && GPS.altitude < 3000) {
  servo.write(15); // moves servo to 70 degrees
   }

}