Caros,
Não estou conseguindo fazer funcionar as duas shields juntas, desconfio que é algo do código e não físico, com tudo montado junto mas rodando os códigos em separado, funciona normal. O projeto é com uma shield ethernet verificar se existe conexão (se a internet não caiu) e caso aconteça, a shield gsm envia um sms. No código a gsm está para fazer ligações, só para fins de teste, depois mudo para sms.
Durante o teste da ethernet, mesmo retornando positivo (“ok, tem”), está retornando também quando não tem (“Sem Conexao”), e isso faz a gsm trabalhar. Quando rodo apenas o código da ethernet, mesmo com a gsm plugada, funciona como esperado. Então imagino eu deve ser algo no código que não estou sabendo como corrigir. Agradeço vossa atenção. Segue o código.
#include <SPI.h>
#include <Ethernet.h>
#include <SoftwareSerial.h>
char server[] = "www.google.com";
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
EthernetClient client;
SoftwareSerial mySerial(2,3);
int onModulePin = 6;
void setup()
{
Serial.begin(9600);
mySerial.begin(19200);
digitalWrite(onModulePin,HIGH);
delay(2000);
digitalWrite(onModulePin,LOW);
Ethernet.begin(mac);
mySerial.println("\r");
delay(1000);
mySerial.println("AT+CMGF=1\r");
delay(1000);
}
void loop()
{
Serial.println("Testando se tem internet...");
if (client.connect(server, 80))
{
Serial.println("Ok");
client.println();
}
else {
Serial.println("Sem conexao");
}
client.stop();
client.flush();
Serial.println("Desconectando...");
Serial.println();
//if (mySerial.available())
if (Serial.println("Sem conexao"));
{
//mySerial.println("ATD NUMERO;"); // numero a ser discado
mySerial.println("ATD xxxxxxxx;"); // numero a ser discado
delay(10000); //completar ligação
delay(6000); //receber ligação, esperar
mySerial.println("ATH0"); //finaliza ligação
}
delay(10000);
delay(10000);
delay(10000);
delay(10000);
delay(60000);
}