EthernetWebServer for ESP32, Mega, Teensy boards using Ethernet shields
Posted: Sat Feb 22, 2020 9:26 pm
https://github.com/khoih-prog/EthernetWebServer
You can install directly from Arduino Library Manager
https://www.ardu-badge.com/EthernetWebServer
From v1.0.3+, the library supports more Arduino boards ( SAM DUE, SAMD: ZERO, MKR, NANO_33_IOT, M0, M0 Pro, AdaFruit CIRCUITPLAYGROUND_EXPRESS, etc.)
From v1.0.2+, the library supports many more Arduino boards (Atmel AVR-s, Atmel SAM3X8E ARM Cortex-M3, STM32F series, ESP8266, ESP32, Intel ARC32(Genuino101), Nordic nRF51(RFduino), Teensy boards, Realtek Ameba(RTL8195A,RTL8710)) using Wiznet W5x00 or ENC28J60 EThernet shields by using UIPEthernet library https://github.com/UIPEthernet/UIPEthernet) library besides standard Ethernet library (https://www.arduino.cc/en/Reference/Ethernet).
This is simple yet complete WebServer library for ESP32, ESP8266, AVR, Teensy,SAM, STM32F, Intel, etc. boards running Ethernet shields. The functions are similar and compatible to ESP8266/ESP32 WebServer libraries to make life much easier to port sketches from ESP8266/ESP32.
The library supports
1. HTTP Server and Client
2. HTTP GET and POST requests, provides argument parsing, handles one client at a time.
Library is based on and modified from:
1. Ivan Grokhotkov's ESP8266WebServer (https://github.com/esp8266/Arduino/tree ... 6WebServer)
The EthernetWebServer class found in EthernetWebServer.h header, is a simple web server that knows how to handle HTTP requests such as GET and POST and can only support one simultaneous client.
Sample Code
The following are debug terminal output and screen shot when running example AdvancedWebServer (https://github.com/khoih-prog/EthernetW ... dWebServer) on Teensy 4.0
You can install directly from Arduino Library Manager
https://www.ardu-badge.com/EthernetWebServer
From v1.0.3+, the library supports more Arduino boards ( SAM DUE, SAMD: ZERO, MKR, NANO_33_IOT, M0, M0 Pro, AdaFruit CIRCUITPLAYGROUND_EXPRESS, etc.)
From v1.0.2+, the library supports many more Arduino boards (Atmel AVR-s, Atmel SAM3X8E ARM Cortex-M3, STM32F series, ESP8266, ESP32, Intel ARC32(Genuino101), Nordic nRF51(RFduino), Teensy boards, Realtek Ameba(RTL8195A,RTL8710)) using Wiznet W5x00 or ENC28J60 EThernet shields by using UIPEthernet library https://github.com/UIPEthernet/UIPEthernet) library besides standard Ethernet library (https://www.arduino.cc/en/Reference/Ethernet).
This is simple yet complete WebServer library for ESP32, ESP8266, AVR, Teensy,SAM, STM32F, Intel, etc. boards running Ethernet shields. The functions are similar and compatible to ESP8266/ESP32 WebServer libraries to make life much easier to port sketches from ESP8266/ESP32.
The library supports
1. HTTP Server and Client
2. HTTP GET and POST requests, provides argument parsing, handles one client at a time.
Library is based on and modified from:
1. Ivan Grokhotkov's ESP8266WebServer (https://github.com/esp8266/Arduino/tree ... 6WebServer)
The EthernetWebServer class found in EthernetWebServer.h header, is a simple web server that knows how to handle HTTP requests such as GET and POST and can only support one simultaneous client.
Sample Code
Code: Select all
#include <SPI.h>
// Use true for ENC28J60 and UIPEthernet library (https://github.com/UIPEthernet/UIPEthernet)
// Use false for W5x00 and Ethernetx library (https://www.arduino.cc/en/Reference/Ethernet)
#define USE_UIP_ETHERNET true
#include <EthernetWebServer.h>
#ifdef CORE_TEENSY
// For Teensy 4.0
#if defined(__IMXRT1062__)
#define BOARD_TYPE "TEENSY 4.0"
#elif ( defined(__MKL26Z64__) || defined(ARDUINO_ARCH_AVR) )
#define BOARD_TYPE "TEENSY LC or 2.0"
#else
#define BOARD_TYPE "TEENSY 3.X"
#endif
#else
// For Mega
#define BOARD_TYPE "AVR Mega"
#endif
// Enter a MAC address and IP address for your controller below.
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
// Select the IP address according to your local network
IPAddress ip(192, 168, 2, 100);
EthernetWebServer server(80);
const int led = 13;
void handleRoot()
{
server.send(200, "text/plain", "Hello from EthernetWebServer");
}
void handleNotFound()
{
String message = "File Not Found\n\n";
message += "URI: ";
message += server.uri();
message += "\nMethod: ";
message += (server.method() == HTTP_GET)?"GET":"POST";
message += "\nArguments: ";
message += server.args();
message += "\n";
for (uint8_t i=0; i<server.args(); i++)
{
message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
}
server.send(404, "text/plain", message);
digitalWrite(led, 0);
}
void setup(void)
{
// Open serial communications and wait for port to open:
Serial.begin(115200);
delay(1000);
Serial.println("\nStarting HelloServer on " + String(BOARD_TYPE));
// start the ethernet connection and the server:
Ethernet.begin(mac, ip);
server.on("/", handleRoot);
server.on("/inline", [](){
server.send(200, "text/plain", "This works as well");
});
server.onNotFound(handleNotFound);
server.begin();
Serial.print(F("HTTP EthernetWebServer is @ IP : "));
Serial.println(Ethernet.localIP());
}
void loop(void)
{
server.handleClient();
}