前提・実現したいこと
Arduino M0 Pro と ESP WROOM-02 を使用して Wifi接続したい。
発生している問題・エラーメッセージ
Wifi接続できていないようです。それ以前にシリアルモニターに"Connecting to "と任意の"WLAN_SSID"の表示がされません。
以下がシリアルモニターの表示です。
.........
wifi接続できずに"."を繰り替えし出力しています。
該当のソースコード
「おもしろまじめ電子工作」という本に掲載されている内容を再現しようとしています。
コード内の"WLAN_SSID"と"WLAN_PASS"は無線LAN本体に記載の"プライマリSSID"と"暗号化キー(AES)"をコードの" " 内に入力しています。
本はArduino IDE ver1.7.9 での紹介で 私はver1.8.7 を使用しています。 (ver1.7系はダウンロードできなかったので。。。)
不明な点は下記の2点です。
① Serial.print("Connecting to "); と Serial.println(WLAN_SSID); がシリアルモニターに表示されない原因
② Wifiに接続できない原因
// ライブラリの読み込み #include "ESP8266.h" // 転送レート #define SERIAL_SPEED 115200 // Wi-Fi SSID #define WLAN_SSID "**********" // Wi-Fi パスワード #define WLAN_PASS "***********" // サーバーのホスト名 #define HOST_NAME "******.******.ne.jp" // PHPファイルが格納されている場所のファイルパス #define PHP_PATH "/ledGet.php" // ポート番号 #define PORT_NUMBER 80 // Wi-Fiモジュール ESP8266 wifi; // LEDを接続するピン const int ledPin = 13; void setup(void) { // デジタル13番ピンを出力として設定 pinMode(ledPin, OUTPUT); // パソコンとのシリアル通信のポートを開ける Serial.begin(SERIAL_SPEED); // Wi-Fiモジュールとのシリアル通信のポートを開ける Serial5.begin(SERIAL_SPEED); // Wi-Fi設定 setupWiFi(); } /* Wi-Fiを設定します */ void setupWiFi() { Serial.print("Connecting to "); Serial.println(WLAN_SSID); // シリアルポートの指定 wifi.begin(Serial5); // Wi-Fiへ接続(成功するまで処理を繰り返す) while (!wifi.joinAP(WLAN_SSID, WLAN_PASS)) { delay(500); Serial.print("."); } Serial.println("Wi-Fi connected"); Serial.println("IP address: "); // Wi-FiのローカルIPアドレスをシリアルモニターへ表示 Serial.println(wifi.getLocalIP().c_str()); } void loop(void) { // TCP接続を確立 if (wifi.createTCP(HOST_NAME, PORT_NUMBER)) { Serial.print("Requesting URL: "); Serial.println(PHP_PATH); // サーバーへ送信するデータ char sendData[] = ""; sprintf(sendData, "GET %s HTTP/1.1\r\nHost: %s\r\nConnection: close\r\n\r\n", PHP_PATH, HOST_NAME); // サーバーへデータを送信 wifi.send((const uint8_t*)sendData, strlen(sendData)); // サーバーから取得したデータ uint8_t buffer[512] = {0}; // 取得した文字列の長さ uint32_t len = wifi.recv(buffer, sizeof(buffer), 10000); // 1文字以上取得できていれば if (len > 0) { // サーバーから取得した文字列を解析 String resultString = parse(len, buffer); // 取得した文字列が"ON"ならば if (resultString == "ON") { Serial.println("LED ON"); // LEDを接続しているピンをHIGH状態に変更(点灯) digitalWrite(ledPin, HIGH); } // 取得した文字列が"ON"以外ならば else { Serial.println("LED OFF"); // LEDを接続しているピンをLOW状態に変更(消灯) digitalWrite(ledPin, LOW); } } } // TCP接続の確立失敗 else { Serial.println("TCP failure"); } // 1秒処理を止める delay(1000); } /* サーバーから取得した文字列を解析します */ String parse(int len, uint8_t buffer[512]) { // サーバーから取得した文字列 String resultCode = ""; // サーバーから取得した文字列を1つずつ格納 for (uint32_t i = 0; i < len; i++) { resultCode += (char)buffer[i]; } // 文字列(led-status:)を検索 int lastLF = resultCode.indexOf("led-status:"); // 検索にHitしたら if (lastLF > 0) { // 全体の文字列の長さを取得する int resultCodeLength = resultCode.length(); // 検索がHitした位置+検索した文字列数から最後までを取得 String resultString = resultCode.substring(lastLF + 11, resultCodeLength); // 前後のスペースを取り除く resultString.trim(); return resultString; } else { return "OFF"; } }
試したこと
Arduino IDE でサンプルコードを実行し、シリアルモニターを確認
ネット上に同様の内容が無いか探しましたが、有効な手段が探せず質問させて頂いた次第です。
補足情報(FW/ツールのバージョンなど)
Arduino M0 Pro
ESP-WROOM-02 開発ボード(switch science)
Aruduino IDE 1.8.7
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/05 13:03