LoginSignup
11
9

More than 3 years have passed since last update.

M5StackのWiFIクライアント設定をSDカードから読み込んで利用する

Last updated at Posted at 2019-10-26

概要

 M5StackのWi-Fi設定(SSIDとPASS)をソースコードに埋め込むと次のような手間があります。

  • M5Stackを利用する場所やWi-FI設定が変わるたびに、ファームウェアを書き替える手間が発生する
  • ソースコードを共有する際に、Wi-FI設定を隠す手間がある

このような「手間」を省く手段を考え、SDカードから読み込むプログラムを作成しました。

 ソースコードはGithubで公開しています。
ライセンスはフリーです。使用する際は自己責任でお願いします。
 このソースコードを動かすと、SDカードからWi-Fi設定を読み込んで接続します。M5StackのディスプレイにはSSIDとPASS、IPが表示されます。
image.png

使い方

 1. Githubからソースコードを入手しファームウェアを書き込み
 2. SDカードに「wifi.csv」ファイルを作成する
 3. wifi.csvファイルに次のようなフォーマットでSSIDとPASSを記述

image.png

 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:
}

おわりに

読んでいただいた皆様のM5Stackライフがより便利になると嬉しいです(^^)

11
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
9