M5StackのWiFIクライアント設定をSDカードから読み込んで利用する
概要
M5StackのWi-Fi設定(SSIDとPASS)をソースコードに埋め込むと次のような手間があります。
- M5Stackを利用する場所やWi-FI設定が変わるたびに、ファームウェアを書き替える手間が発生する
- ソースコードを共有する際に、Wi-FI設定を隠す手間がある
このような「手間」を省く手段を考え、SDカードから読み込むプログラムを作成しました。
ソースコードはGithubで公開しています。
ライセンスはフリーです。使用する際は自己責任でお願いします。
このソースコードを動かすと、SDカードからWi-Fi設定を読み込んで接続します。M5StackのディスプレイにはSSIDとPASS、IPが表示されます。
使い方
1. Githubからソースコードを入手しファームウェアを書き込み
2. SDカードに「wifi.csv」ファイルを作成する
3. wifi.csvファイルに次のようなフォーマットでSSIDとPASSを記述
4. SDカードをM5Stackにセットして再起動
ソースコード
M5Stack_WiFi_SD.ino
#include <M5Stack.h>
#include <WiFi.h>
#include <WiFiClient.h>
#include <ESPmDNS.h>
#include <Preferences.h>
#include <string.h>
const char* fname = "/wifi.csv";
File fp;
char ssid[32];
char pass[32];
void SetwifiSD(const char *file){
unsigned int cnt = 0;
char data[64];
char *str;
fp = SD.open(fname, FILE_READ);
while(fp.available()){
data[cnt++] = fp.read();
}
strtok(data,",");
str = strtok(NULL,"\r"); // CR
strncpy(&ssid[0], str, strlen(str));
strtok(NULL,",");
str = strtok(NULL,"\r"); // CR
strncpy(&pass[0], str, strlen(str));
M5.Lcd.printf("WIFI-SSID: %s\n",ssid);
M5.Lcd.printf("WIFI-PASS: %s\n",pass);
M5.Lcd.println("Connecting...");
Serial.printf("SSID = %s\n",ssid);
Serial.printf("PASS = %s\n",pass);
// STA設定
WiFi.mode(WIFI_STA); // STAモードで動作
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
M5.Lcd.print("IP: ");
M5.Lcd.println(WiFi.localIP());
Serial.printf("IP: ");
Serial.println(WiFi.localIP());
fp.close();
}
void setup() {
M5.begin();
M5.Lcd.setTextSize(2);
SetwifiSD(fname); // Get ssid
}
void loop() {
// put your main code here, to run repeatedly:
}
おわりに
#include <M5Stack.h>
#include <WiFi.h>
#include <WiFiClient.h>
#include <ESPmDNS.h>
#include <Preferences.h>
#include <string.h>
const char* fname = "/wifi.csv";
File fp;
char ssid[32];
char pass[32];
void SetwifiSD(const char *file){
unsigned int cnt = 0;
char data[64];
char *str;
fp = SD.open(fname, FILE_READ);
while(fp.available()){
data[cnt++] = fp.read();
}
strtok(data,",");
str = strtok(NULL,"\r"); // CR
strncpy(&ssid[0], str, strlen(str));
strtok(NULL,",");
str = strtok(NULL,"\r"); // CR
strncpy(&pass[0], str, strlen(str));
M5.Lcd.printf("WIFI-SSID: %s\n",ssid);
M5.Lcd.printf("WIFI-PASS: %s\n",pass);
M5.Lcd.println("Connecting...");
Serial.printf("SSID = %s\n",ssid);
Serial.printf("PASS = %s\n",pass);
// STA設定
WiFi.mode(WIFI_STA); // STAモードで動作
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
M5.Lcd.print("IP: ");
M5.Lcd.println(WiFi.localIP());
Serial.printf("IP: ");
Serial.println(WiFi.localIP());
fp.close();
}
void setup() {
M5.begin();
M5.Lcd.setTextSize(2);
SetwifiSD(fname); // Get ssid
}
void loop() {
// put your main code here, to run repeatedly:
}
読んでいただいた皆様のM5Stackライフがより便利になると嬉しいです(^^)
Author And Source
この問題について(M5StackのWiFIクライアント設定をSDカードから読み込んで利用する), 我々は、より多くの情報をここで見つけました https://qiita.com/kmaepu/items/c390d80973efa316ca4a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .