前回は親機モードを試してみました。
今回は親機・子機モードを試してみましょう。
目次
AP+Station mode(親機子機モード)について
ESP32-S3は、APモードとStationモードを同時に利用することもできます。このモードは、前述の2つのモードの機能を兼ね備えています。ESP32-S3のStationモードを有効にしてルーターのネットワークに接続することで、ルーター経由でインターネットとの通信が行えます。同時に、APモードを有効にしてホットスポットを構築できます。この場合、他のWiFi対応機器は、ESP32-S3と通信するために、ルーターのネットワークまたはホットスポットネットワークのいずれかに接続することができます。
コード
/**********************************************************************
Filename : WiFi AP+Station
Description : ESP32 connects to the user's router, turning on an access point
Auther : www.freenove.com
Modification: 2022/10/31
**********************************************************************/
#include <WiFi.h>
const char *ssid_Router = "********"; //Enter the router name
const char *password_Router = "********"; //Enter the router password
const char *ssid_AP = "WiFi_Name"; //Enter the router name
const char *password_AP = "12345678"; //Enter the router password
void setup(){
Serial.begin(115200);
Serial.println("Setting soft-AP configuration ... ");
WiFi.disconnect();
WiFi.mode(WIFI_AP);
Serial.println("Setting soft-AP ... ");
boolean result = WiFi.softAP(ssid_AP, password_AP);
if(result){
Serial.println("Ready");
Serial.println(String("Soft-AP IP address = ") + WiFi.softAPIP().toString());
Serial.println(String("MAC address = ") + WiFi.softAPmacAddress().c_str());
}else{
Serial.println("Failed!");
}
Serial.println("\nSetting Station configuration ... ");
WiFi.begin(ssid_Router, password_Router);
Serial.println(String("Connecting to ")+ ssid_Router);
while (WiFi.status() != WL_CONNECTED){
delay(500);
Serial.print(".");
}
Serial.println("\nConnected, IP address: ");
Serial.println(WiFi.localIP());
Serial.println("Setup End");
}
void loop() {
}
9行目、10行目は各自の環境に併せて修正してください。
このコードだとまだAPにつながるだけで、ESP32をWiFiルーターとして外に出ていくような中継機能は実装していないです。おそらく中継機能はこのテキストの中だけでは実装しないと思うので、何か考える必要がありそうですね。ニーズがあれば研究してみようと思います。
次回はTCP/IPのクライアントを実装してみましょう!
コメント