【ミーア】Wi-Fi接続を直接入力ではなく、候補リストから選べるようにする。
はじめに
現状のミーアはESP32とアプリの接続を、まずはBluetoothで接続した後に、Wi-Fi の接続をアプリから BLE 経由で行っている。
ただ、Wi-Fi接続のSSIDとパスワードを直書きする仕様になっていて、これだと、ユーザーからするととても面倒なため、接続可能なWi-Fiを探索して選べる形式に変更したい。
デバイス(ESP32)側実装
Wi-Fiネットワークの探索機能をESP32に実装
ESP32が利用可能なWi-Fiネットワークをスキャンしてリストを作成し、そのリストをBLE経由でアプリに送信するようにファームウェアを実装する。
現在のPlatformIOでのWifi接続部分のコードはこちら
// WifiConnection.h
#pragma once
#include <WiFi.h>
bool setupWiFi(const char *ssid, const char *password);
// WifiConnection.cpp
#include "WiFiConnection.h"
#include "SPIFFS.h"
#define WIFI_CONNECT_TIMEOUT 5000
bool setupWiFi(const char *ssid, const char *password) {
unsigned long startTime = millis();
if (ssid == nullptr || password == nullptr) {
Serial.println("Connecting to WiFi with previously stored credentials...");
WiFi.begin();
} else {
Serial.println("Connecting to WiFi with SSID and password from build flags...");
WiFi.begin(ssid, password);
}
while (WiFi.status() != WL_CONNECTED && millis() - startTime < WIFI_CONNECT_TIMEOUT) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
if (WiFi.status() == WL_CONNECTED) {
Serial.println("Connected to WiFi");
return true;
} else {
Serial.println("Not connected to WiFi");
return false;
}
}
ESP32でのWi-Fi機能に関する解説はこちらがわかりやすい
ESP32のWi-Fiライブラリは、WiFi.scanNetworks()という、利用可能なWi-Fiネットワークリスト表示してくれる関数がある。
今回は、ESP32をWi-Fiステーションモードに設定する。これにより、ESP32はWi-Fiアクセスポイントとして動作するのではなく、利用可能なWi-Fiネットワークをスキャンしたり、特定のネットワークに接続したりできるようになる。
続きはこちらで記載しています。
いいなと思ったら応援しよう!
よろしければサポートお願いします!いただいたサポートはクリエイターとしての活動費に使わせていただきます!