WIFI to Ethernet Bridge Adapter mit ESP32 WT32-ETH01 und USB-C
Table of Contents
Ideal für Kameras ist diese WIFI to Ethernet Bridge auf Basis des WT32-ETH01 Moduls.
Die Versorgung der Kamera erfolgt hier direkt per USB-C, es werden 12V am Eingang benötigt. Ein kleiner DCDC-Wandler versorgt das WT32-ETH01 Modul per 3.3V.
Materialiste
- WT32-ETH01 Modul
- USB-C PD Modul für 12V
- DCDC Buck-Converter 12V -> 3.3V
- 5521 DC-Buchse
- Gehäuse (3D-Druck)
Code
https://github.com/doctormord/esp32-wifi-bridge
Vielen Dank an Owen Walpole für die initale Umsetzung des Codes.
Anleitung: Code in GitHub Codespaces kompilieren
Dies ist eine Schritt-für-Schritt-Anleitung, um das Projekt in einer Cloud-Umgebung (GitHub Codespaces) zu kompilieren, ohne lokale Toolchain-Probleme.
1. Codespace-Umgebung vorbereiten
Bevor der Codespace gestartet wird, muss dem Repository mitgeteilt werden, welches Docker-Image verwendet werden soll (damit Rust und ESP-IDF vorinstalliert sind).
- Erstelle in deinem Fork die Datei
.devcontainer/devcontainer.json. - Füge folgenden Inhalt ein:
{
"name": "ESP-RS Env",
"image": "espressif/idf-rust:all_latest",
"runArgs": ["--privileged"],
"customizations": {
"vscode": {
"extensions": ["rust-lang.rust-analyzer", "tamasfe.even-better-toml"]
}
}
}
Starte nun den Codespace neu (oder erstelle einen neuen), damit diese Konfiguration geladen wird.
2. Konfigurationsdateien anpassen (Im Codespace Terminal)
Sobald der Codespace läuft, führe diese Änderungen durch, um Speicherprobleme zu beheben und Abhängigkeiten zu aktualisieren.
A. Cargo.toml Abhängigkeiten setzen
Öffnen Sie die Cargo.toml und stellen Sie sicher, dass der [dependencies] Block exakt so aussieht:
[dependencies] esp-idf-sys = "0.36" esp-idf-hal = "0.45" esp-idf-svc = "0.50" # ... andere Abhängigkeiten ...
B. Speicher-Fix in sdkconfig.defaults
Führe diese Befehle im Terminal aus, um die WLAN-Puffer von 64 auf 32 zu reduzieren (verhindert „no mem“ Fehler):
sed -i 's/CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=64/CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=32/' sdkconfig.defaults sed -i 's/CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER_NUM=64/CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER_NUM=32/' sdkconfig.defaults
3. Kompilieren der Firmware
Kopieren Sie diesen Block in das Codespace-Terminal. Er lädt die Umgebung, exportiert Ihre WLAN-Daten (für die Fallback-Logik) und baut das Projekt.
(Ersetzen Sie die Platzhalter bei den export Befehlen mit Ihren echten Daten!)
# 1. Umgebungsvariablen laden (Wichtig!) source /opt/esp/export.sh # 2. Alten Build-Cache löschen (Zwingend bei Config-Änderungen) rm -rf target rm Cargo.lock # 3. WLAN-Zugangsdaten setzen (Wird in die Firmware kompiliert) export WIFI_SSID_1="DeinHauptWLAN" export WIFI_PASS_1="DeinPasswort1" export WIFI_SSID_2="DeinBackupWLAN" export WIFI_PASS_2="DeinPasswort2" # 4. Kompilieren (Release-Modus) cargo build --release
4. Firmware-Dateien zusammenfügen
Nach dem erfolgreichen Kompilieren müssen Bootloader, Partitionstabelle und die App zu einer einzigen Datei verschmolzen werden. Führe diesen Befehl im Codespace aus:
esptool.py --chip esp32 elf2image target/xtensa-esp32-espidf/release/esp32-wifi-bridge esptool.py --chip esp32 merge_bin -o merged-firmware.bin \ 0x1000 target/xtensa-esp32-espidf/release/bootloader/bootloader.bin \ 0x8000 target/xtensa-esp32-espidf/release/partition-table.bin \ 0x10000 target/xtensa-esp32-espidf/release/esp32-wifi-bridge.bin
Laden Sie nun die Datei merged-firmware.bin (Rechtsklick im Dateiexplorer -> Download) auf Ihren lokalen PC herunter.
5. Lokal flashen
(benötigt installiertes esptool):
esptool.py --chip esp32 --port DEIN_COM_PORT --baud 921600 \ --before default_reset --after hard_reset write_flash \ --flash_mode dio --flash_freq 40m \ 0x1000 merged-firmware.bin
(Ersetzen Sie DEIN_COM_PORT entsprechend, z.B. durch COM3 unter Windows oder /dev/ttyUSB0 unter Linux).

