The 1 minute delay on line #45 might be causing all sorts of problems.
Here's a great post for the general recommended alternative.
It will look something like this:
unsigned long lastTime = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
unsigned long now = millis();
if ((now - lastTime) >= 60000) {
// Add your Code here, to be executed every 1 minute without blocking.
lastTime = now;
} // End 1-minute
} // End Loop