Ethernet shield: DHCP o DNS no me dejan salir a internet

Hola a todos que tal, antes que nada gracias por pasarte por mi post y tomarte la molestia de ayudarme.

me encuentro realizando una alarma de temperatura para un site, para eso estoy utilizando los siguientes materiales:

-Sensor ds18b20
-Arduino Uno
-Ethernet Shield
-Cable rj45

  • Cable USB

una vez que la temp llega a cierto nivel(50°C por ejemplo) el sistema debe enviar un mail hacía una cuenta destino ya establecida para eso estoy usando SMTP, Especificamente smtp2go, ya que trabajo con cuentas gmail y pues es el unico servicio que me convenció ya que también vi temboo pero no quise hacerlo con eso.

Ahora, el problema es que según yo ya hice todo bien, pero al energizar la placa en el conector rj45 de la shield, solo se enciende el led verde y el naranja queda apagado, no se a que se deba esto sinceramente y por eso vine aquí a ver si alguien de ustedes puede orientarme puesto que en redes no soy nada bueno.

Añado el código que estoy usando y si se me olvido dar algún detalle agradecería que me dijesen.

Saludos.

#include <SPI.h>				//Incluimos las librerías necesarias para trabajar con el
#include <Ethernet.h>			//módulo Ethernet.
#include <OneWire.h>				//Se importan las librerías necesarias para
#include <DallasTemperature.h>		//el sensor de temperatura.

//OJO: Al usar esta shield, los siguientes pines quedan sin poderse usar; 10, 11, 12, y 13.

#define ONE_WIRE_BUS 	2	//"Attach" del sensor al pin 2 de nuestro arduino.
OneWire conexion(ONE_WIRE_BUS);		//Se crea una instancia de la librería "onewire" a la cual llamamos "conexion" y le decimos que el sensor estará en el pin 2.
DallasTemperature sensor(&conexion);  //Iniciamos la librería del sensor, creamos una instancia llamada "sensor" y le pasamos los parametros de "onewire"

//
byte mac[] = {0x90,0xA2,0xDA,0x00,0x59,0x67};			//Se le asigna una mac al shield la cual puede ser aleatoria.
IPAddress ip(172,18,xxx,xxx);		//Se le asigna una ip al shield.
IPAddress gateway(172,18,xxx,xxx);	//Gateway de la red.
IPAddress mascara(255,255,0,0); //Mascara de red.

char server[] = "mail.smtp2go.com";
int port = 2525;

EthernetClient cliente; 		//Creamos una instancia de la librería ethernet, mediante la cual se realizarán las peticiones que se necesiten.

float temperatura = 0;			//Variable donde se guardará el dato 

void setup(){
	Serial.begin(9600);
	Ethernet.begin(mac,ip,gateway,mascara);		//Inicializamos el shield, pasandole los parametros que se ingresaron anteriormente.
	delay(2000);								//Realizamos una espera de 2 seg.
	sensor.begin();								//Iniciamos el sensor.
}

void loop(){
	sensor.requestTemperatures();				//Le "decimos" al sensor que realizaremos tomas de temperatura.
	temperatura = sensor.getTempCByIndex(0);	//obtenemos la temp en grados Celsius mediante el metodo.
	Serial.println(temperatura);
	delay(500);

	if(temperatura >= 30){
	    if(sendEmail()) Serial.println(F("Correo Enviado"));
	    else Serial.println(F("Correo Fallido"));
	}
}

byte sendEmail(){
	byte thisByte = 0;
	byte respCode;

	if(cliente.connect(server,port) == 1){
		Serial.println(F("Conectado :)"));
	}

	else{
		Serial.println(F("Conexion Fallida :("));
		return 0;
	}

	if(!eRcv()) return 0;

	Serial.println(F("Sending Hello"));
	cliente.println(F("EHLO 172.18.xxx.xxx"));

	if(!eRcv()) return 0;

	Serial.println(F("Sending auth login"));
	cliente.println(F("auth login"));

	if(!eRcv()) return 0;

	Serial.println(F("Sending User"));
	cliente.println("xxxxxxxxxxxxxxxxxxxxxxxxx"); correo del que se envia, code64

	if(!eRcv()) return 0;

	Serial.println(F("Sending Pass"));
	cliente.println("yyyyyyyyyyyyyyyyyyyyyyy");    //pass del correo code64
	Serial.println(F("Sending From"));
	cliente.println("MAIL From: <xxxxxx@xxxxxx.com>");   //correo del que envia
	Serial.println(F("Sending To"));
	cliente.println("RCPT To: xxxxxxx@xxxxxx.com");     //destinatario

	if(!eRcv()) return 0;

	Serial.println(F("Sending DATA"));
	cliente.println("DATA");

	if(!eRcv()) return 0;

	Serial.println(F("Sending EMAIL"));
	cliente.println("To: You <xxxxxxx@xxxxxx.com>");
	cliente.println("From: Me <xxxxxxx@xxxxxx.com>");
	cliente.println("Subject: Alarma\r\n");
	cliente.println("Hola mundo");
	cliente.println(".");

	if(!eRcv()) return 0;

	Serial.println(F("Sending QUIT"));
	cliente.println("QUIT");

	if(!eRcv()) return 0;

	cliente.stop();
	Serial.println(F("Desconectado"));

	return 1;
}

byte eRcv(){
	byte respCode;
	byte thisByte;
	int contador = 0;

	while(!cliente.available()){
	    delay(1);
	    contador++;

	    if(contador > 10000){
	        cliente.stop();
	        Serial.println(F("\r\nTimeout"));
	        return 0;
	    }
	}

	respCode = cliente.peek();

	while(cliente.available()){
	    thisByte = cliente.read();
	    Serial.write(thisByte);
	}

	if(respCode >= '4'){
	    efail();
	    return 0;
	}

	return 1;
}

void efail(){
	byte thisByte = 0;
	int contador = 0;

	cliente.println(F("QUIT"));

	while(!cliente.available()){
	    delay(1);
	    contador++; 
	    if(contador > 10000){
	        cliente.stop();
	        Serial.println(F("\r\nTimeout"));
	        return;
	    }
	}

	while(cliente.available()){
	    thisByte = cliente.read();
	    Serial.write(thisByte);
	}

	cliente.stop();

	Serial.println(F("Desconectado"));
}

Este código lo tomé de playground.arduino.cc/Code/Email

es el segundo ejemplo donde dice SMTP2GO, solo que lo adapte a lo que quería pero no funciona.

Otra cosa que realice fue ejecutar el sketch "DhcpAddressPrinter" y la dir. ip que me dió la coloque en los campos correspondientes, aunque esto tampoco funcionó. Lo curioso es que eso está pasando porque el led naranja del rj45 de la ethernet no está encendido ni parpadeando solo el verde esta encendido.

Espero y pueda ayudarme.

Editado:

El día de hoy, tuve la idea de ponerle una MAC similar a la de mi equipo(Recuerdo haberlo leído en algún foro) y probé el ejemplo "WebServer" que contiene el IDE y finalmente pude ver la temp desde otros equipos que estuviesen en la misma red(ya que probé desde mi móvil usando datos y no pude hacerlo). Dejo el código por si puede ser útil

#include <SPI.h>
#include <Ethernet.h>
#include <OneWire.h>
#include <DallasTemperature.h>

OneWire oneWire(2);
DallasTemperature sensors(&oneWire);

float temp;
char newT[7];

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {
  0x00, 0x23, 0xXX, 0xXX, 0xXX, 0xXX
};
IPAddress ip(172, 18, xxx, xxx);

// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  sensors.begin();

  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }


  // start the Ethernet connection and the server:
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
}


void loop() {
  // listen for incoming clients
  EthernetClient client = server.available();
  if (client) {
    Serial.println("new client");
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
        // if you've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so you can send a reply
        if (c == '\n' && currentLineIsBlank) {
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");  
          client.println("Refresh: 5");  
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
         
          for (int muestra = 0; muestra < 2; muestra++) {
            sensors.requestTemperatures(); // Send the command to get temperatures
            temp = sensors.getTempCByIndex(0);
            dtostrf(temp,5,2,newT);
            client.print("La temp es: ");
            client.print(newT);
            client.print(" Grados ");
            client.println("
");
          }
          client.println("</html>");
          break;
        }
        if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        }
        else if (c != '\r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    // close the connection:
    client.stop();
    Serial.println("client disconnected");
  }
}