前提
現在、ESP32C3でwifi接続を行おうとしています。
実現したいこと
ESP32C3のSPIFFS領域に接続したいwifiのSSID・パスワードを記載したファイルがあり、これを読み込んでwifiに接続させたいと思っています。
発生している問題・エラーメッセージ
しかし、下のプログラムだと接続ができない状態です。
WiFi.begin(readStr01.c_str(), readStr02.c_str())
このコードでwifiに接続しようとしても、接続できないようで、while文をずっとループしてしまいます。
wifiに接続するための修正箇所等を教えて下さい。
c
1void setup() { 2 3///////////////////中略///////////////////////// 4 5 File fr = SPIFFS.open(wrfile.c_str(), "r");// ⑩ファイルを読み込みモードで開く 6 String readStr01 = fr.readStringUntil('\n');// ⑪改行まで1行読み出し 7 String readStr02 = fr.readStringUntil('\n');// ⑪改行まで1行読み出し 8 fr.close(); // ⑫ ファイルを閉じる 9 Serial.print("SPIFFS Read:"); // ⑬シリアルモニタにEEPROM内容表示 10 Serial.println(readStr01); 11 Serial.println(readStr02); 12 Serial.println(readStr01.c_str()); 13 Serial.println(readStr02.c_str()); 14 15 Serial.println("connecting"); 16 17 18 while (WiFi.status() != WL_CONNECTED) { 19 WiFi.begin((const char *)readStr01.c_str(), (const char *)readStr02.c_str()); 20 delay(5000); 21 Serial.print("."); 22 } 23 24///////////////////中略///////////////////////// 25 26}
やってみたこと
readStr01.c_str()でSSID
readStr02.c_str()でpass
これを指定したつもりですが、ちゃんと文字列があるのかを下で確認してみましたが、文字下のコードで文字列はちゃんと表示できていました。
Serial.println(readStr01.c_str()); Serial.println(readStr02.c_str());
> 文字列はちゃんと表示できていました
この手のデバッグ時は、表示できない文字が紛れ込んでいないかどうか文字コードでダンプしてみるのが定石では。
前回
https://teratail.com/questions/4zlo947h032qrr
の質問でも指摘されていましたが、
そもそもESP32にはWiFi.begin()と引数なしで接続しようとすると前回の設定値で接続を試みる機能がありますが、
ESP32C3でもできるか試しましたか?
ドキュメントを読んだ感じできそうではあるのですが。
前の質問
https://teratail.com/questions/2dorseujwgf6j5
のコードで書き込んだ情報を読み込んで、「SSID:」とか「PASSWORD:」とか入ってるものを使ってるとかってオチはないですよね?
@thkana
@YAmaGNZ
回答頂きありがとうございます。
http://www.arch.info.mie-u.ac.jp/~ohno/lecture/intprog/charcode.html
こちらのサイトで文字コードのダンプ方法があったので、やってみたところ、
67 6f 6f 67 6c 65 6d 61 69 6e d
|g|o|o|g|l|e|m|a|i|n|
最後に0x0dのCRがくっついてしまってることが確認できました。
除去方法について調べてみます。
助かります。
@ozwk
お世話になっております。
https://lang-ship.com/blog/work/esp32-wi-fi-setting/
こちらのサイトを見てみたら、一度wifiに接続できたなら、その内容は保持されてるので、WiFi.begin()のみ実施すれば接続できるようですね。
現在、ファイル操作関連のプログラム方法をほぼ忘れてしまったため、聞きまくってる状態ですが、一段落したらspiffsでの今のやり方からWiFi.begin()のみのやり方に変えていこうと思います。
すみません。この0x0dのCRを削除する方法はありますでしょうか?
回答1件
あなたの回答
tips
プレビュー