hiro yamamoto works

ESP8266 Web logger
RaspberryPi HiRes Audio
Mini Solar power system
当ブログ掲載内容は無保証です。利用は自己責任でお願いいたします。

 

カレンダー

2020
July
Sun Mon Tue Wed Thu Fri Sat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

QRコード

検索



このブログを検索

カウンター

本日のアクセス
昨日のアクセス
総アクセス数

ブログサービス

Powered by

teacup.ブログ
RSS

ESP-WROOM-02 SDカード内のsetup.txtを使ってWi-Fi接続する。

ESP-WROOM-02マイコンに接続したSDメモリカード内に
WiFi、ネットワーク設定を書いたsetup.txtというファイルを
置いて、起動時に読み込んで接続することができました。

webブラウザでSD内ファイルがすべて見えてしまう問題が
ありましたが、特定のファイルだけ見えないようにすることが
出来ました。
特定ファイルを開かせない・・・を見て下さい。
追記 2020/07/26
クリックすると元のサイズで表示します
ip address,gateway,sabnet,dnsは固定できるように
しました。必要なければスケッチのIPAdress行と
WiFi.config行の頭に//をつけてコメント行にしてください。

投稿当初
ボードマネージャバージョンの違いでWiFi接続に失敗する
現象を確認しましたが、現在は発生しません。参考に
ボードマネージャバージョン2.5.2では発生なし。
ボードマネージャバージョン2.6.2は調査中
ボードマネージャバージョン2.7.2で書き込み後最初の
動作でかなりの確率で接続失敗しました。
その後RESETすると接続できました。

作例をWeb公開している方々に感謝します。


setup.txt例とスケッチを紹介します。

SDメモリカードにsetupというフォルダを作り、下記内容を
setup.txtというファイルを作って保存します。
setup.txt例
##以降はコメントとして扱われます。
#SSのあとにSSID、paのあとにpasswordを入力してください
#SS your-SSID #SSID
#pa your-password #password
#
SS ********** #SSID
pa ********** #password
#
#gw 192,168, 1, 1 #gateway
#sn 255,255,255, 0 #subnet
#dn 192,168, 1, 1 #dnS1
#ip 192,168, 1, 10 #ip address
#
gw 192,168, 1, 1 #gateway
sn 255,255,255, 0 #subnet
dn 192,168, 1, 1 #dnS1
ip 192,168, 1, 10 #ip address


スケッチ
スケッチ例DumpFileを改変したものです。
#include行のライブラリ名を<>で囲んで下さい。

#include SPI.h
#include SD.h
#include ESP8266WiFi.h
const int chipSelect = 15;
String ssid;
String password;
int gw[4], sn[4], dn[4], ip[4];
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
//while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
//}
Serial.print("Initializing SD card...");
// see if the card is present and can be initialized:
if (!SD.begin(chipSelect)) {
Serial.println("Card failed, or not present");
// don't do anything more:
return;
}
Serial.println("card initialized.");
// open the file. note that only one file can be open at a time,
// so you have to close this one before opening another.
File dataFile = SD.open("setup/setup.txt",FILE_READ);//setupフォルダ内setup.txtをopen
// if the file is available, write to it:
if (dataFile) {
while (dataFile.available()) {//dataFileを1行づつ評価していく
String line = dataFile.readStringUntil('\n');//終端文字'\n'が検出されるまで読んで文字列全体をlineへ入れる
line = line.substring(0, line.indexOf('#'));//インデックス0(行頭)から(#までのインデックス数)の文字列取得
if (line.substring(0, 2) == "SS") {
ssid = line.substring(line.indexOf(' '));//スペースから行末まで
ssid.trim();//スペース等を除去
} else if (line.substring(0, 2) == "pa") {
password = line.substring(line.indexOf(' '));//スペースから行末まで
password.trim();//スペース等を除去
} else if (line.substring(0, 2) == "gw") {
String gw0 = line.substring(3, 6);
String gw1 = line.substring(7, 10);
String gw2 = line.substring(11, 14);
String gw3 = line.substring(15, 18);
gw[0] = gw0.toInt(); gw[1] = gw1.toInt(); gw[2] = gw2.toInt(); gw[3] = gw3.toInt();
} else if (line.substring(0, 2) == "sn") {
String sn0 = line.substring(3, 6);
String sn1 = line.substring(7, 10);
String sn2 = line.substring(11, 14);
String sn3 = line.substring(15, 18);
sn[0] = sn0.toInt(); sn[1] = sn1.toInt(); sn[2] = sn2.toInt(); sn[3] = sn3.toInt();
} else if (line.substring(0, 2) == "dn") {
String dn0 = line.substring(3, 6);
String dn1 = line.substring(7, 10);
String dn2 = line.substring(11, 14);
String dn3 = line.substring(15, 18);
dn[0] = dn0.toInt(); dn[1] = dn1.toInt(); dn[2] = dn2.toInt(); dn[3] = dn3.toInt();
} else if (line.substring(0, 2) == "ip") {
String ip0 = line.substring(3, 6);
String ip1 = line.substring(7, 10);
String ip2 = line.substring(11, 14);
String ip3 = line.substring(15, 18);
ip[0] = ip0.toInt(); ip[1] = ip1.toInt(); ip[2] = ip2.toInt(); ip[3] = ip3.toInt();
}
}
dataFile.close();

}
// if the file isn't open, pop up an error:
else {
Serial.println("error opening setup.txt");
}
Serial.println(), Serial.println();
Serial.print("Connecting to "), Serial.println(ssid);
IPAddress local_IP(ip[0], ip[1], ip[2], ip[3]);
IPAddress gateway(gw[0], gw[1], gw[2], gw[3]); // NTPサーバ名アクセス時必要
IPAddress subnet(sn[0], sn[1], sn[2], sn[3]);
IPAddress dns1(dn[0], dn[1], dn[2], dn[3]); // NTPサーバ名アクセス時必要
WiFi.mode(WIFI_STA);//WiFi子機モード
WiFi.config(local_IP, gateway, subnet, dns1);//ESP引数順序変更不可 NTPサーバ名アクセス時dns1要
WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println(""); Serial.println("WiFi connected!");
Serial.print("IP address: "); Serial.println(WiFi.localIP());
Serial.print("ESP Mac Address: "); Serial.println(WiFi.macAddress());
Serial.print("Subnet Mask: "); Serial.println(WiFi.subnetMask());
Serial.print("Gateway IP: "); Serial.println(WiFi.gatewayIP());
Serial.print("DNS: "); Serial.println(WiFi.dnsIP());
}
void loop() {
}


ArduinoIDEにコピペしたらメニューの「ツール」「自動整形」
で見やすくなります。
#includeのライブラリ名を忘れずに<>で囲って下さい。

無保証自己責任でよろしくお願いします。
0
投稿者:管理人

ターミナルブロックのピン数変更加工方法

必要なピン数がない場合はブロックごとに取り外し
取り付けができます。(自己責任でやります。)

クリックすると元のサイズで表示します

取り外しはひっくり返して、リードの出ている隙間へ入る
小さなマイナスドライバを幅広い方へ押し込みます。
クリックすると元のサイズで表示します

ドライバーを左へ動かして少しずつ隙間を広げます。
クリックすると元のサイズで表示します

もう一方の隙間も同様に広げます。
クリックすると元のサイズで表示します

他の面にも隙間が出来ているので、マイナスドライバを
押し込み隙間を広げます。
クリックすると元のサイズで表示します

隙間が広がったらつまんで引っ張ると取れてきます。
クリックすると元のサイズで表示します

1ブロックが取れた状態
 再使用するときは部品をなくさないように注意
クリックすると元のサイズで表示します

組み立て方
ピン数が不足のときは外したブロックを取り付けられます。
クリックすると元のサイズで表示します

位置を合わせて重ねます。オレンジ色部品がずれないように
気をつけます。
クリックすると元のサイズで表示します

ずれないように気を付けながら、静かに万力へはさみます。
万力の幅をギリギリにして、押し込むぐらいにすると良い。
クリックすると元のサイズで表示します

セットできたら
クリックすると元のサイズで表示します

静かに万力を閉めて、隙間がなくなれば取り付け完了です。
クリックすると元のサイズで表示します
オレンジ色ロックレバーの動きを確認して、他と同じ
手応えならうまく組み立てられているでしょう。
実際に電線でロック状態を確認して問題なければ完成です。
0
投稿者:管理人
1 2 3 4 | 《前のページ | 次のページ》
/4 
 
AutoPage最新お知らせ