Zenn
🐝

ESP32外部アンテナの実験

に公開

はじめに

ESP32-C3 Super MiniはWiFiの送受信効率が非常に悪く、少し距離が離れたり、木造家屋の1階と2階の通信にも支障が出ることがあります。
ネットを検索していると次の記事を見つけ、これに触発されて外部アンテナを試してみました。

https://community.home-assistant.io/t/esp32-c3-super-mini-wifi-signal-booster/657661

In English

The ESP32-C3 Super Mini experiences poor WiFi performance.
This article is engaging experiments with external antennas.
Testing various lengths based on the 2.4GHz frequency revealed that a 1.5λ(19.5cm, 7.68in) antenna provided the best relative gain, followed by a 5/8λ(7.8cm, 3.07in) antenna.

WiFiの波長について

日本で使用されている2.4GHz帯のWiFiは2.4GHzから2.485GHzの周波数が使用されており、その中心周波数は2.45GHzとなっています。
この中心周波数の波長は

λ=3.0×108 m/s2.4×109 Hz0.125 m\lambda = \frac{3.0 \times 10^8 \text{ m/s}}{2.4 \times 10^9 \text{ Hz}} \approx 0.125  m

となり、波長は約12.5cmです。
この12.5cmを元にいくつかのアンテナ長を実験してみました。

実験環境

ESP32-C3 Super MiniとWiFiルートを木造家屋内で直線距離約7mで障害物がない状態で行いました。
アンテナ長は1.5λ、1λ、5/8λ、1/2λ、1/4λとしました。
アンテナの取り付け位置は先のURLにある写真を参照しました。


画像引用元: https://community-assets.home-assistant.io/original/4X/6/a/d/6ad96b62e34472a58450ddb63b5cafbfaf11c621.jpeg

偏波面は垂直(基板に対してアンテナを垂直に立てる)としました。

データ取得はMicropythonで簡単なプログラムを作成してRSSIの値を取得しました。
以下に実験に使用したプログラムを示します。
1秒ごとに5回測定し、並べ替えた後、最高、最低を取り除いた3つのデータを平均しています。

RSSI測定プログラム
# Measure RSSI on ESP32-C3 super mini
# Mar. 25th 2025

from network import WLAN
from time import sleep


WIFI_SSID = 'WiFiルータのSSID'
WIFI_PASS = 'WiFiルータのパスワード'

def measure_rssi(wifi):
    rssi_array = []
    for i in range(5):
        strength = wifi.status('rssi')
        print(strength)
        rssi_array.append(strength)
        sleep(1)
    rssi_array.sort()
    print(rssi_array)
    average = sum(rssi_array[1:4])/3
    print("{:.1f}".format(average))
        
wifi = WLAN(0) # network.STA_IF = 0
if not wifi.isconnected():
    print("Connecting to WiFi...")
    wifi.active(True)
    wifi.connect(WIFI_SSID, WIFI_PASS)
    sleep(0.1)
    while not wifi.isconnected():
        print(".", end="")
            
        sleep(0.2)
        pass
    
ip = wifi.ifconfig()[0]
print(ip)
measure_rssi(wifi)

実験結果

最初にアンテナ無しのノーマル状態でRSSIを測定し、次に19.5cmの単線を半田付けし、RSSIを測定し、順次短くして行きました。

下表の相対利得の欄はアンテナ無しのRSSIとの差分を示しています。

下の表の実験結果にあるように、1.5λの19.5cmにした場合の相対利得が一番高く、22.4dBmの改善が見られました。次が5/8λの7.8cmで21.6dBm、その次が1λの12.5cmで16.3dBmとなりました。

アンテナ長[cm] 波長λ 1回目[dBm] 2回目[dBm] 3回目[dBm] 平均[dBm] 相対利得[dBm] 順位
None ? -83.3 -83 -83 -83.1 None 6
19.5 1.5λ -61 -60 -61 -60.7 22.4 1
12.5 -67.3 -66.7 -66.3 -66.8 16.3 3
7.8 5/8λ -62 -61.3 -61.3 -61.5 21.6 2
6.25 1/2λ -73 -67.7 -68 -69.6 13.5 5
3.124 1/4λ -67.3 -68 -66.3 -67.2 15.9 4

おわりに

1/2λの6.25cmが良いという記事を見かけますが、今回の実験結果からすると19.5cmが一番良い結果となっています。ただ、線が長すぎるので、5/8λの7.8cmを採用することにしました。

19.5cmを巻きつけてヘリカル状にするのも一つかも知れませんが、指向性が出てくると思われます。時間があるときに試してみたいと思います。

Discussion

ログインするとコメントできます