ESP32-C3 SuperMini: Einfache Antennenmodifikation für verbesserte WiFi-Leistung

24. Juni 2025
ℹ️Hinweis zur Quelle

Dieser Blogartikel wurde automatisch erstellt (und übersetzt). Er basiert auf dem folgenden Original, das ich für die Veröffentlichung auf diesem Blog ausgewählt habe:
ESP32-C3 SuperMini ANTENNA MODIFICATION | Peter’s electric trick and electronic blog.


# ESP32-C3 SuperMini: Einfache Antennenmodifikation für verbesserte WiFi-Leistung

Das ESP32-C3 SuperMini Modul ist bekannt für seinen günstigen Preis und seine kompakte Bauweise. Allerdings schränkt die integrierte SMD-Antenne die WiFi-Reichweite oft erheblich ein. Eine simple Modifikation kann hier Abhilfe schaffen und die Performance deutlich verbessern.

## Die Modifikation

Die Modifikation besteht aus dem Hinzufügen eines 31 mm langen, versilberten Drahtes (1.0 mm Durchmesser), der als Viertelwellenantenne (λ/4) konfiguriert wird. Der untere Teil des Drahtes wird zu einer horizontalen Schleife gebogen (ca. 16 mm Drahtlänge, Durchmesser ca. 8 mm), während der restliche Teil vertikal nach oben abgewinkelt wird.

Die Drahtschleife wird um den Schaft eines 5 mm Bohrers gewickelt und die Enden der Schleife werden so aufgeweitet, dass sie die Anschlüsse der SMD-Antenne berühren. Die SMD-Antenne schließt die Drahtschleife ab – mechanisch bei einem Viertel ihres Umfangs, elektrisch als λ/4-Element parallel zu einem λ/8-Draht. Der Draht wird dann an beide Enden der originalen SMD-Antenne gelötet. Es ist entscheidend, dass die Lötstellen sauber ausgeführt sind. Die ursprüngliche Antenne kann auf der Platine verbleiben, da sie in dieser Konfiguration elektrisch inaktiv wird.

## Testen der Modifikation

Um die Wirksamkeit der Modifikation zu überprüfen, wurde ein Programm zur Messung der Signalstärke (RSSI) verwendet. Zwei ESP32 Module wurden verglichen: ein unmodifiziertes und eines mit der neuen Antenne.

Die Signalstärke wurde in Echtzeit auf einem Tablet-Browser angezeigt. Beide Module wurden nebeneinander auf einer Powerbank montiert, um identische Testbedingungen zu gewährleisten.

Die Messungen zeigten, dass das modifizierte Modul durchgehend höhere Signalpegel lieferte. Im Durchschnitt betrug die Verbesserung der Signalstärke mindestens 6 dB. In vielen Fällen, insbesondere an den Rändern der WiFi-Signalreichweite oder in Umgebungen mit mehr Interferenz, überstieg die Verbesserung sogar 10 dB. Diese Differenz in der Signalstärke hatte einen erheblichen Einfluss auf die Stabilität der Verbindung. Das modifizierte Modul hielt eine stabile Verbindung aufrecht, während das unmodifizierte Modul anfälliger für Verbindungsabbrüche oder Leistungseinbußen war.

* **In unmittelbarer Nähe zum Access Point:** Die Verbesserung lag oft zwischen 6 dB und 8 dB, was zu einer stabileren und weniger schwankenden Verbindung führte.
* **In größerer Entfernung vom Access Point:** Die Verbesserung erreichte oft 10 dB oder mehr, was den Unterschied zwischen einer nutzbaren und einer unbrauchbaren Verbindung ausmachte. Das modifizierte Modul konnte Daten empfangen und senden, während das unmodifizierte Modul keine Verbindung herstellen konnte oder unter extrem langsamer Datenübertragung litt.
* **In Umgebungen mit Hindernissen (z.B. Wänden):** Die modifizierte Antenne zeigte eine bessere Durchdringung und sorgte für eine stabilere Verbindung im Vergleich zum unmodifizierten Modul, das Schwierigkeiten hatte, das Signal aufrechtzuerhalten.

**Diese Verbesserungen führten zu einer deutlich erweiterten WiFi-Reichweite. Theoretisch entspricht jede Erhöhung der Signalstärke um 6 dB einer Verdoppelung der Reichweite.**

## Ursachen der Verbesserung

Die ursprüngliche SMD-Antenne ist aufgrund ihrer geringen Größe, des dielektrischen Keramikmaterials und der kompakten Geometrie weniger effizient beim Senden und Empfangen von Funksignalen als ein freistehender Draht. Zudem ist die Antenne auf dem ESP32-C3 SuperMini Modul nicht optimal positioniert: sie befindet sich zu nah an der Massefläche und anderen Komponenten, was die Abstrahlung der HF-Energie behindert.

Im Gegensatz dazu profitiert die neue, nicht verkürzte Viertelwellenantenne von ihrer Geometrie und einer freieren Abstrahlung.

## Mögliche Konsequenzen eines schlechten Antennendesigns

Ein schlechtes Antennendesign kann zu einem ungünstigen Stehwellenverhältnis (SWR) führen. Dies bedeutet, dass ein erheblicher Teil der HF-Energie von der Antenne in den ESP32 zurückreflektiert wird und somit nicht abgestrahlt werden kann. Dadurch kann sich die Endstufe erwärmen, was die tatsächliche HF-Ausgangsleistung und damit die Übertragungsreichweite reduziert. Im ungünstigsten Fall empfängt der ESP32 zwar noch ein ausreichend starkes Wi-Fi-Signal, der Access Point empfängt aber ein schwächeres oder sogar unzureichendes Signal vom ESP32. **Das Ergebnis ist eine deutlich reduzierte Wi-Fi-Reichweite.**

## Fazit

Die vorgestellte Antennenmodifikation bietet eine überzeugende und kostengünstige Methode zur deutlichen Verbesserung der WiFi-Leistung von ESP32-C3 SuperMini Modulen. Durch die Kombination der serienmäßigen PCB-Antenne mit einer sorgfältig gefertigten Viertelwellen-Drahtantenne können Anwender deutliche Verbesserungen in Bezug auf Signalstärke, Stabilität und Reichweite erzielen. Die beobachteten Gewinne von 6 dB bis über 10 dB führen zu einer zuverlässigeren Konnektivität, insbesondere in Umgebungen mit schwachen Signalen oder Hindernissen. Diese Modifikation erweitert nicht nur die nutzbare Reichweite des ESP32-C3, sondern erschließt auch sein Potenzial für Anwendungen, die eine robuste und konsistente drahtlose Kommunikation erfordern.

## Testprogramm

Das verwendete Testprogramm zur Messung und grafischen Darstellung der WiFi-Signalstärke wurde in ANNEX32-BASIC geschrieben.

„`basic
‚######## WIFI-GRAPH-LOGGER ####################################

‚ Dieses Programm vergleicht die WiFi-Signalstärke (RSSI) von zwei ESP32-Modulen.

‚ Ziel ist die graphische Darstellung der Auswirkung unterschiedlicher Antennen auf die Signalqualität.

‚ – Modul 1 (lokal): Zeigt die eigene Signalstärke zum Access Point (AP) an.

‚ – Modul 2 (remote): Sendet seine Signalstärke an Modul 1.

‚ Operation modes:

‚ RX = 1: Dieses Modul (lokal) sendet regelmäßig HTTP-Anfragen an das Remote-Modul.

‚ TX = 1: Dieses Modul (remote) antwortet auf HTTP-Anfragen mit seiner Signalstärke.

‚ Author: Peter Neufeld (peter.neufeld@gmx.de, 03/2025)

‚ Configuration for the local module (ESP32 Module 1):

RX = 1 ‚ Dieses Modul sendet Anfragen an das Remote-Modul.

TX = 0 ‚ Dieses Modul antwortet nicht auf Anfragen.

‚ Configuration for the remote module (ESP32 Module 2):

‚RX = 0 ‚ Dieses Modul sendet keine Anfragen.

‚TX = 1 ‚ Dieses Modul antwortet auf Anfragen.

REMOTE_IP$ = „192.168.0.134“ ‚ IP-Adresse des Remote-Moduls (Modul 2)

X_Num = 100 ‚ Anzahl der Messwerte, die im Diagramm angezeigt werden sollen.

WIFI_REMOTE$ = „“ ‚ Speichert die empfangenen RSSI-Werte vom Remote-Modul.

‚onhtmlreload: Wird ausgelöst, wenn die Webseite neu geladen wird.

onhtmlreload WEBPAGE

gosub WEBPAGE

‚ Aktiviert URL-Handler für TX-Modus:

IF TX = 1 onurlmessage RETURN_WIFI_STRING

‚ Aktiviert asynchrone HTTP-Anfragen im RX-Modus:

IF RX = 1 onwgetasync RECEIVE_REMOTE_STRING

‚ Timer zur regelmäßigen Messung der lokalen Signalstärke:

timer0 500, LOG_MY_WIFI_CONNECTION

‚ Timer zur regelmäßigen Abfrage der Remote-Signalstärke:

IF RX = 1 timer1 1000, GET_REMOTE_WIFI_LOG_STRING

WAIT

‚###############################################################

LOG_MY_WIFI_CONNECTION:

‚ Misst die lokale WiFi-Signalstärke und speichert sie in WIFI_LOCAL$.

w=0

for i = 1 to 50

w = wifi.rssi + w ‚ Sammelt RSSI-Werte zur Mittelwertbildung.

next i

w = W / (i-1) ‚ Berechnet den durchschnittlichen RSSI-Wert.

WIFI_LOCAL$ = trim$(WIFI_LOCAL$ + “ “ + str$(wifi.rssi,“%2.1f“))

c = word.count(WIFI_LOCAL$, “ „) ‚ Zählt gespeicherte Werte.

p = instr(1, WIFI_LOCAL$, “ „) ‚ Findet den ersten Wert in der Zeichenkette.

p = len(WIFI_LOCAL$) – p ‚ Berechnet die Länge der verbleibenden Werte.

If c > X_Num then WIFI_LOCAL$ = right$(WIFI_LOCAL$, p) ‚ Begrenzt die Anzahl der Werte.

‚ Aktualisiert das Diagramm mit lokalen Werten:

jscall |traceme(0,“| + WIFI_LOCAL$ + |“);|

‚ Aktualisiert das Diagramm mit Remote-Werten, falls verfügbar:

if WIFI_REMOTE$ <> „“ jscall |traceme(1,“| + WIFI_REMOTE$ + |“);|

return

‚###############################################################

RETURN_WIFI_STRING:

‚ Gibt lokale RSSI-Werte als Antwort auf eine HTTP-Anfrage zurück.

URLMSGRETURN WIFI_LOCAL$

R=PING(“ “) ‘workaround for memory leak issue in 1.70.3 to .5

return

‚###############################################################

GET_REMOTE_WIFI_LOG_STRING:

‚ Sendet eine HTTP-Anfrage an das Remote-Modul, um dessen RSSI-Werte abzufragen.

wgetasync („http://“ + REMOTE_IP$ + „/msg?x=1“)

return

‚###############################################################

RECEIVE_REMOTE_STRING:

‚ Empfängt und speichert die RSSI-Werte vom Remote-Modul.

WIFI_REMOTE$ = WGETRESULT$

R=PING(“ “) ‘workaround for memory leak issue in 1.70.3 to .5

return

‚###############################################################

WEBPAGE:

‚ Erstellt und lädt die HTML-Seite mit dem Diagramm zur Anzeige der RSSI-Werte.

cls

jsexternal „/xy.min.js“ ‚ Lädt externe JavaScript-Bibliothek für Diagramme.

cnt = 0

a$ = „“

a$ = a$ + |WiFi Graph for two ESP32 modules:|

a$ = a$ + |GREEN: With additional antenna|

a$ = a$ + |RED: With standard antenna|

a$ = a$ + | |
html a$

pause 500

A$ = „“

A$ = A$ + |var datasets = [

A$ = A$ + | {

A$ = A$ + | lineColor : ‚rgba(20,100,100,1)‘,

A$ = A$ + | pointColor : ‚rgba(20,20,20,1)‘,

A$ = A$ + | pointStrokeColor : ‚#fff‘,

A$ = A$ + | data : []

A$ = A$ + | },

A$ = A$ + | {

A$ = A$ + | lineColor : ‚rgba(151,30,0,1)‘,

A$ = A$ + | pointColor : ‚rgba(151,80,0,1)‘,

A$ = A$ + | pointStrokeColor : ‚#fff‘,

A$ = A$ + | data : []

A$ = A$ + | }

A$ = A$ + |];

A$ = A$ + |var ctx2 = document.getElementById(‚canvas1‘).getContext(‚2d‘);|

A$ = A$ + |

A$ = A$ + |var xy = new Xy(ctx2, {rangeX:[0,|+ STR$(X_Num)+ |],
rangeY:[-80,-35]|

A$ = A$ + |, smooth:0.05, pointCircleRadius:2, pointStrokeWidth:1 });|

A$ = A$ + |

A$ = A$ + |function traceme(set, data){

A$ = A$ + | var s = data.split(“ „);|

A$ = A$ + | for (var i=0; i


Die Kommentare sind geschlossen.