Skip to content

feat: add W5500 SPI Ethernet support#633

Open
Spokplacenta wants to merge 3 commits intorstrouse:mainfrom
Spokplacenta:feat/w5500-support
Open

feat: add W5500 SPI Ethernet support#633
Spokplacenta wants to merge 3 commits intorstrouse:mainfrom
Spokplacenta:feat/w5500-support

Conversation

@Spokplacenta
Copy link
Copy Markdown

Summary

  • Integration of W5500 Ethernet controller via SPI for boards like Waveshare ESP32-S3 POE
  • Configuration of SPI pins (MOSI, MISO, SCLK, CS, INT, RST) through the web interface
  • Direct use of ESP-IDF APIs for W5500 since the Arduino ETH class does not natively support this controller
  • Manual DHCP and DNS management for W5500
  • Added board presets in the interface (Waveshare ESP32-S3 POE, etc.)

Technical details

The W5500 is an SPI Ethernet controller that is not natively supported by the Arduino ESP32 ETH class. This PR implements:

  1. ESP-IDF initialization: Direct use of esp_eth_* APIs to configure the SPI bus and W5500 driver
  2. Polling mode: Periodic check of link status and IP address (ESP-IDF event handlers conflict with Arduino)
  3. ETH call protection: Methods like ETH.linkSpeed(), ETH.fullDuplex(), etc. are protected to avoid crashes when W5500 is used
  4. DNS configuration: DNS is manually configured after obtaining IP via DHCP
  5. Skip GitHub OTA: Automatic update check is disabled for W5500 (HTTPClient has issues without WiFi event groups)

Tested boards

  • Waveshare ESP32-S3 W5500 POE (pins: MOSI=11, MISO=12, SCLK=13, CS=14, INT=10, RST=9)

Known limitations

  • Automatic OTA check from GitHub is disabled for W5500 (to be investigated)
  • Manual OTA updates from the web interface have not been tested

Test plan

  • W5500 Ethernet connection working
  • IP obtained via DHCP
  • Web interface accessible via Ethernet
  • No crash after several minutes

- Intégration du contrôleur Ethernet W5500 via SPI pour les cartes
  comme Waveshare ESP32-S3 POE
- Configuration des pins SPI (MOSI, MISO, SCLK, CS, INT, RST) via
  l'interface web
- Utilisation directe des APIs ESP-IDF pour le W5500 car la classe
  Arduino ETH ne supporte pas nativement ce contrôleur
- Gestion manuelle du DHCP et DNS pour le W5500
- Protection des appels ETH Arduino quand W5500 est utilisé
- Désactivation temporaire de la vérification OTA GitHub pour W5500
  (problème de compatibilité HTTPClient)
- Ajout des presets de cartes dans l'interface (Waveshare, etc.)
- Reduce verbose logs in main loop
- Remove detailed HTTP traces on shade commands
- Keep useful messages for W5500 initialization and IP status
- Add FIRMWARE_UPLOAD.md with PlatformIO upload instructions
- Translate platformio.ini comments to English
- Remove redundant comments from platformio.ini
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant