Integrating weather, camera, xbee, and SD shields together fails, works seperate

void loop()
{
  while(1) {
    if (Serial.available() > 0) {

Why are you running an infinite loop inside an infinite loop()?