agrobot_base/Firmware/Sensoriamento/ethernet/ethernet.ino

90 lines
2.7 KiB
C++

#include <UIPEthernet.h>
// Configurações do IP estático
IPAddress local_IP(192, 168, 105, 12); // Endereço IP fixo
IPAddress gateway(192, 168, 105, 1); // Gateway padrão
IPAddress subnet(255, 255, 255, 0); // Máscara de sub-rede
IPAddress primaryDNS(8, 8, 8, 8); // Servidor DNS primário (opcional)
IPAddress secondaryDNS(8, 8, 4, 4); // Servidor DNS secundário (opcional)
// Configuração do servidor Ethernet
EthernetServer server(80); // Porta TCP 80 (HTTP ou customizada)
void setup() {
Serial.begin(115200);
Serial.println("Inicializando...");
// MAC Address para a placa Ethernet
uint8_t mac[6] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05};
// Inicializa a conexão Ethernet com IP estático
Serial.println("Configurando IP estático...");
Ethernet.init(5);
Ethernet.begin(mac, local_IP, primaryDNS, gateway, subnet);
// Verifica se a inicialização foi bem-sucedida
if (Ethernet.hardwareStatus() == EthernetNoHardware) {
Serial.println("Nenhuma placa Ethernet detectada. Verifique a conexão.");
while (true) {
delay(1); // Fica preso aqui
}
}
if (Ethernet.linkStatus() == LinkOFF) {
Serial.println("Cabo Ethernet desconectado ou problema no link físico.");
while (true) {
delay(1); // Fica preso aqui
}
}
// Aguardar inicialização e exibir informações da rede
delay(1000);
Serial.println("Configuração de rede concluída:");
Serial.print("IP Address: ");
Serial.println(Ethernet.localIP());
Serial.print("Subnet Mask: ");
Serial.println(Ethernet.subnetMask());
Serial.print("Gateway: ");
Serial.println(Ethernet.gatewayIP());
Serial.print("DNS Server: ");
Serial.println(Ethernet.dnsServerIP());
// Inicia o servidor Ethernet
server.begin();
Serial.println("Servidor iniciado. Aguardando conexões...");
}
void loop() {
// Verifica se há um cliente conectado
EthernetClient client = server.available();
if (client) {
Serial.println("Cliente conectado!");
// Enquanto o cliente estiver conectado
while (client.connected()) {
if (client.available()) {
// Lê os dados enviados pelo cliente
String request = client.readStringUntil('\r');
Serial.print("Recebido: ");
Serial.println(request);
// Envia uma resposta ao cliente
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/plain");
client.println("Connection: close");
client.println();
client.println("ESP32 Servidor Ethernet");
client.println("Mensagem recebida com sucesso!");
break; // Finaliza o loop para desconectar
}
}
// Finaliza a conexão com o cliente
delay(1);
client.stop();
Serial.println("Cliente desconectado.");
}
}