Problema con sensores

Hola, con un amigo estamos trabajando para hacer una estación meteorológica y para ello utilizamos un modulo gps Neo 6M, un barómetro bmp180 y un sensor de humedad dht22. El problema es que no podemos hacer que los sensores trabajen juntos, probándolos uno por uno si funcionan, pero cuando el GPS recibe alimentación, los sensores bmp180 y dht22 dejan de trabajar.
El GPS lo tenemos por software serial en un arduino Mega 2560.

¿Ustedes creen que si lo mandamos a un puerto serie dedicado este problema se solucionaría o que otras alternativas nos ofrecen?

Desde ya muchas gracias.

Y porque no usasa una fuente de 5V externa y alimentas todos los sensores con algo que no sea el mismo Arduino porque obviamente ese módulo GPS te esta tirando la alimentación abajo o sea consume tanto que el Arduino no puede sostener el funcionamiento de todos los sensores y el suyo propio.

Busca cuanto consume. Usa una fuente de 5V externa, aliméntalo con dicha fuente, deja todo como esta salvo la alimentación de 5V y comparte GND con el Arduino y todo irá de maravillas.

Ya hemos intentado anteriormente con la fuente, cuando el gps comienza a arrojar los datos se detiene todo lo demas. Te muestro la programación por si crees que hay algo mal. Gracias por su atención.

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SoftwareSerial.h>//incluimos SoftwareSerial
#include <TinyGPS.h>//incluimos TinyGPS
#include <Wire.h>
#include <Adafruit_BMP085.h>

TinyGPS gps;//Declaramos el objeto gps
SoftwareSerial serialgps(11, 10); //Declaramos el pin 4 Tx y 3 Rx
//Declaramos la variables para la obtención de datos
int year;
byte month, day, hour, minute, second, hundredths;
unsigned long chars;
unsigned short sentences, failed_checksum;

LiquidCrystal_I2C lcd(0x27, 20, 4); // set the LCD address to 0x27 for a 16 chars and 2 line display

Adafruit_BMP085 bmp;

void setup()
{
 Serial.begin(115200);//Iniciamos el puerto serie
 serialgps.begin(9600);//Iniciamos el puerto serie del gps
 //Imprimimos:
 Serial.println("");
 Serial.println("GPS GY-GPS6MV2 Leantec");
 Serial.println(" ---Buscando senal--- ");
 Serial.println("");
 lcd.init();                      // initialize the lcd
 lcd.init();
 // Print a message to the LCD.
 lcd.backlight();
 if (!bmp.begin()) {
   Serial.println("Could not find a valid BMP085 sensor, check wiring!");
   while (1) {}
 }

}


void loop()
{
 while (serialgps.available())
 {
   int c = serialgps.read();
   if (gps.encode(c))
   {
     float latitude, longitude;
     gps.f_get_position(&latitude, &longitude);
     Serial.print("Latitud/Longitud: ");
     Serial.print(latitude, 5);
     Serial.print(", ");
     Serial.println(longitude, 5);
     gps.stats(&chars, &sentences, &failed_checksum);
     Serial.print("Temperature = ");
     Serial.print(bmp.readTemperature());
     Serial.println(" *C");

     Serial.print("Pressure = ");
     Serial.print(bmp.readPressure() / 100);
     Serial.println(" hPa");

     Serial.print("Altitude = ");
     Serial.print(bmp.readAltitude());
     Serial.println(" meters");

     Serial.print("Real altitude = ");
     Serial.print(bmp.readAltitude(101500));
     Serial.println(" meters");

     Serial.println();
     lcd.setCursor(3, 0);
     lcd.print(latitude, 5);
     lcd.setCursor(2, 1);
     lcd.print(longitude, 5);
     lcd.setCursor(0, 2);
     lcd.print(bmp.readPressure() / 100);
     lcd.setCursor(2, 3);
     lcd.print(bmp.readTemperature());
   }
 }

}

que tienen que ver estas lecturas

     Serial.print("Temperature = ");
     Serial.print(bmp.readTemperature());
     Serial.println(" *C");

     Serial.print("Pressure = ");
     Serial.print(bmp.readPressure() / 100);
     Serial.println(" hPa");

     Serial.print("Altitude = ");
     Serial.print(bmp.readAltitude());
     Serial.println(" meters");

     Serial.print("Real altitude = ");
     Serial.print(bmp.readAltitude(101500));
     Serial.println(" meters");

Dentro de la consulta al GPS

Lee el GPS, lee los sensores y presenta todo x separado.
Todo sensor tiene tiempos y las interrupciones nunca vienen bien.

Ademas hay SoftwareSerial involucrado lo que siempre genera problemas
Verifica si no necesitas ampliar el Buffer para leer los datos del GPS