90 lines
2.7 KiB
C++
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.");
|
|
}
|
|
}
|