Ayuda con mi proyecto de invernadero Automatizado

hola queridos amigos del foro :sweat_smile: estoy haciendo un invernadero automatizado para el cultivo de tomates que va a estar controlado con un arduino mega 2560, mientras tanto estoy haciendo con un prototipo es para mi tesis les voy contando que estoy utilizando sensores, actuadores y m贸dulos para mi prototipo estos son los:

sensores

  • lm35 (para medir la temperatura de ambiente)
  • LDR (para medir la luminosidad)
  • 4 (Cuatro) micro swicht para indicar el fin de camino de las aperturas de las ventanas cenitales y laterales

Modulos Arduinos

  • ethernet shield (para la conexi贸n v铆a web)
  • RTC I2C (para poder poner los horarios que se puedan iluminar el invernadero en caso que no se obtenga tanta luminosidad en el d铆a y para los horarios de riego )
  • Relay module 6 (para mis actuadores que son de 12 V)

Actuadores

  • 2 (dos) motores paso a paso 5V para mi ventana cenital y para la ventana lateral
  • 4 (Cuatro) cinta leds 12 V, para indicar el riego (cinta led verde), las lamparas de iluminaci贸n (cinta led blanco), calefacci贸n (cinta led rojo), nebulizador (cinta led azul)
  • ventiladores de cooler 12 V para indicar la ventilaci贸n con ventiladores

tengo varios inconvenientes
cuando hago la comunicaci贸n via IP al actualizar muchas veces se me cuelga la conexi贸n y ya no me env铆a nada pero el invernadero sigue funcionando sin problemas

otro inconveniente que estoy teniendo es que cuando el proceso de abrir y cerrar ventanas se genera ya no me envia nada la conexion IP hasta que se cierre o se abre completamente las ventanas eso pasa porque entra en un bucle donde el motor paso a paso trabaja hasta que sienta el toque del micro swicht, nose como puedo lograr que eso funcione

les comparto mi programaci贸n

Buenas, yo veo un peque帽o problema con la direcci贸n IP. Est谩s usando el rango que isa windows de forma autom谩tica, cuando no encuentra un servidor DHCP. Esto puede ser un problema, ya que no hay ning煤n tipo de control sobre la asignaci贸n de esta IP en el ordenador, y puede variar sin previo aviso, provocando cortes.

Te aconsejo que uses una IP fija en el ordenador, dentro de los rangos de red privada, como por ejemplo 192.168.X.X , donde, por ejemplo, el PC puede tener la 192.168.0.2 y el arduino la 192.168.0.3.

Tambi茅n es una buena pr谩ctica, a帽adir la m谩scara de red, para evitar posibles problemas. En el caso de usar las direcciones que te sugiero m谩s arriba, yo pondr铆a una m谩scara de red 255.255.255.0

En el arduino, se pondr铆a algo as铆:

IPAddress ip(192, 198, 0, 3); //IP 
IPAddress subnet(255, 255, 255, 0); //Mascara

Y en el etherner begin esto:

Ethernet.begin(mac, ip, subnet); //Inicializamos con las direcciones asignadas

Perd贸n, hay un error en el c贸digo que he puesto. Ser铆a as铆:

byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};聽 //MAC
IPAddress dnServer(0, 0, 0, 0); //DNS
IPAddress gateway(0, 0, 0, 0); //Gateway
IPAddress subnet(255, 255, 255, 0); //Mascara
IPAddress ip(192, 168, 0, 3); //IP
void setup() {
聽 Ethernet.begin(mac, ip, dnServer, gateway, subnet);//Inicializamos con las direcciones asignadas
}