質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.32%

Arduino M0 ProとESP-WROOM-02を用いたWifiへの接続ができません。

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 3,282

bobby2128

score 40

Arduino M0 ProとESP-WROOM-02(を用いたwifiへの接続ができません

Arduino M0 Proに以下に示すプログラムをArduino IDE 1.8.0で書き込み、
Wifiへ接続を試みているのですが、
シリアルモニタ上に「......」と表示されるのみ(待機中の意味)でwifiへの接続が確率出来ません。

解決のために試したことを以下に示しているので、ご参照いただけますと幸甚に存じます。

発生している問題

Arduino M0 ProとESP-WROOM-02を用いたwifiへの接続ができないです。

何か解決のアイデアなどございましたらぜひご教授ください。

該当のソースコード

// ライブラリの読み込み
#include "ESP8266.h"
#include "Milkcocoa.h"
#include "Client_ESP8266.h"

// 転送スピード
#define SERIAL_SPEED  115200

/************************* WiFi Access Point *********************************/

// Wi-Fi SSID
#define WLAN_SSID             "Daimon5"
// Wi-Fi PASSWORD
#define WLAN_PASS             "Admiral2128"

/************************* Your Milkcocoa Setup *********************************/

// MilkcocoaのアプリID
#define MILKCOCOA_APP_ID      "uniixstvro4"
// Data Store名
#define MILKCOCOA_DATASTORE   "toilet"

/************* Milkcocoa Setup (you don't need to change this!) ******************/

#define MILKCOCOA_SERVERPORT  1883

/************ Global State (you don't need to change this!) ******************/

// Create an ESP8266Client class to connect to the MQTT server.
ESP8266Client wifi;

const char MQTT_SERVER[] PROGMEM    = MILKCOCOA_APP_ID ".mlkcca.com";
const char MQTT_CLIENTID[] PROGMEM  = __TIME__ MILKCOCOA_APP_ID;

Milkcocoa milkcocoa = Milkcocoa(&wifi, MQTT_SERVER, MILKCOCOA_SERVERPORT, MILKCOCOA_APP_ID, MQTT_CLIENTID);

// センサーを接続するピン
const int sensorPin = A0;

// 光センサーの閾値
const int threshold = 500;

// 現在の明るさを保持
boolean nowSensorState = false;

// 切り替え前の明るさを保持する
boolean sensorState = false;

void setup() {
  // パソコンとのシリアル通信のポートを開ける
  Serial.begin(SERIAL_SPEED);
  // Wi-Fiモジュールとのシリアル通信のポートを開ける
  Serial1.begin(SERIAL_SPEED);

  // Wi-Fi設定
  setupWiFi();

  // Milkcocoaへ光センサーの値がpushされた
  milkcocoa.on(MILKCOCOA_DATASTORE, "push", milkcocoaPushDataHandler);
}

/*
 Wi-Fiを設定します
*/
void setupWiFi() {
  Serial.print("Connecting to ");
  Serial.println(WLAN_SSID);

  // シリアルポートの指定
  wifi.begin(Serial1);

  // 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() {
  // Milkcocoaのループ処理を実行
  milkcocoa.loop();

  // センサーの値
  int sensorValue = analogRead(sensorPin);

  Serial.print("Sensor Value : ");
  Serial.println(sensorValue);

  // センサーの値と閾値を比較
  nowSensorState = sensorValue > threshold;

  // 明るさに変化がなければloop()関数の始めに戻る
  if (sensorState && nowSensorState || !sensorState && !nowSensorState) {
    return;
  }

  // Milkcocoaへ送信するデータを作成
  DataElement elem = DataElement();
  // lightというデータ名で値を追加
  elem.setValue("lightState", nowSensorState);
  // Milkcocoaへデータを送信
  milkcocoa.push(MILKCOCOA_DATASTORE, &elem);

  // 1秒処理を止める
  delay(1000);
}

/*
 * Milkcocoaへ光センサーの値がpushされた
 */
void milkcocoaPushDataHandler(DataElement *pelem) {
  // 明るさの状態を更新
  sensorState = nowSensorState;
}

試したこと

(2017.1.17)
1.スマートフォンのテザリング
2.自宅のwifi

複数のwifiに対し通信を試みたのですが、いずれもシリアルモニタには「……」と接続待機中の表示のみが表示され、接続完了後の動作を行ってくれません。

(2017.1.19)
matobaa様からのご回答を参考に、
WROOM-02とPCを繋げてATコマンドで速度を9600に下げてやってからArduinoに接続いたしました。Arduinoと接続した状態で、プログラムも速度を9600に書き換えた際のシリアルモニタ上でプログラムの実行内容「……」が表示されたので、ATコマンドによる設定速度がWROOM-02に保存されている状態だと思いますが、症状変わらず、自宅のwifi,スマホのテザリング共に接続されませんでした。

そこで、試しに以下URLの通りにWROOM-02で自宅のwifiおよびスマホのテザリングに接続しようとすると下の結果に示すようにERRORと表示されたため、WROOM-02に何か原因があるのかと考えております。お手数おかけいたしますが、上記を踏まえたご意見をいただけますと幸甚に存じます。
WROOM-02の速度変更(http://www.mkbtm.jp/?p=618)

AT


OK
AT+CWJAP="bobby bobby","555512345"


ERROR
AT+CWJAP="Daimon5","e9799b94b2f9"


ERROR

(2017.1.21追記)
・CH340G USB to TTL(converter module)というケーブルを用いてESP-WROOM-02へ3.3vの電源供給をしながら、電流値も80mA付近まで流れていることを確認いたしました。
・AT+CWLAPによって、ESP-WROOM-02が認識している利用可能なWifiを一覧表示させようと試みましたが、以下にに示すようにERRORと返ってきました。

AT+CWLAP


ERROR

CH340G USB to TTL

https://www.google.co.th/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwjP_P_Iz9PRAhUBLI8KHUfZBcYQFggYMAA&url=http%3A%2F%2Fwww.thaieasyelec.com%2Fen%2Fhome%2Fch340g-usb-to-ttl-converter-module-detail.html%3Ftmpl%3Dcomponent%26flexiblelayout%3Dprint&usg=AFQjCNEqD07AFWnMVDN1Cfam3Tqb9-_pSg

補足情報(言語/FW/ツール等のバージョンなど)

Arduino M0 ProとESP-WROOM-02(ピッチ変換済みモジュール)は
日本のスイッチサイエンスで購入し、現在タイ(バンコク)で使用しているのですが、それが問題なのでしょうか。。。(自分で調べたところ、ESP-WROOM-02は802.11 b/n/g)に対応しているのでそこは問題ではないとは思うのですが…

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • matobaa

    2017/01/17 09:53

    ソースコードは ``` でくくってくださると読みやすいです。

    キャンセル

  • bobby2128

    2017/01/17 10:14

    アドバイスいただき誠にありがとうございます!ご指摘の通り、修正させていただきました。便利な機能があったのですね…ありがとうございます。

    キャンセル

  • ozwk

    2017/01/20 08:27

    '''じゃないです```です

    キャンセル

  • bobby2128

    2017/01/20 09:45

    ozwk様 ご連絡いただき誠にありがとうございます。アドバイスいただき誠にありがとうございます!ご指摘いただいた通り修正いたしました!

    キャンセル

回答 3

checkベストアンサー

0

参考になるかわかりませんが、自分はESP-WROOM-02 Wifi shieldというものを使い開発しました。
その時に使ったWifi接続のコードを貼り付けておきます。

#include <HttpClient_ESP8266_AT.h>

// Arduino UNO の場合は、例えばデジタル入出力の 2 番, 4 番ピンを利用して
// ESP-WROOM-02 とシリアル通信するように設定します。
const byte rxPin = 2; // Wire this to Tx Pin of ESP8266
const byte txPin = 4; // Wire this to Rx Pin of ESP8266
HttpClient_ESP8266_AT httpClient(rxPin, txPin);

void setup() {
    // PC と通信する HardwareSerial の baudrate を設定します。
    // ESP-WROOM-02 の baudrate とは関係ありません。
     Serial.begin(9600);

    // ESP-WROOM-02 との接続確認を行います。
    while(true) {
        if(httpClient.statusAT()) {
            Serial.println("AT status OK");
            break;
        }
        else {
            Serial.println("AT status NOT OK");
        }
        delay(1000);
    }

    // SSID と PASSWORD でアクセスポイントに接続します。
    while(true) {
        if(httpClient.connectAP("SSID", "PASSWORD")) { // <- 書き換えてください。
            Serial.println("Successfully connected to an AP");
            break;
        }
        else {
            Serial.println("Failed to connected to an AP. retrying...");
        }
        delay(1000);
    }
}

void loop() {
    // 本サンプルでは特に通信はせず、WiFi の接続が切れていないかどうかを
    // 1 秒毎に確認して結果を出力しつづけます。
    if(httpClient.statusWiFi()) {
        Serial.println("WiFi status OK");
    }
    else {
        Serial.println("WiFi status NOT OK");
    }
    delay(1000);
}

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/01/24 16:33 編集

    bobby2128様
    お久しぶりです。
    いきなり本題に入りますが、上記のプログラムのヘッダファイルのところは既存のものではないのでダウンロードしなければなりません。

    ↓ この方のコードを参考にさせてもらっています。
    https://github.com/qoosky/Arduino_HttpClient_ESP8266_AT

    ヘッダファイルのインストールをした後に追加させてください。
    ヘッダファイルなどの追加方法はググったら出てきますので。

    さらにREADMEを読んでいただければわかるのですがサンプルコードも載せている親切な方ですので
    参考にしていただければと思います。

    キャンセル

  • 2017/01/27 12:53

    こんにちは。ご親切にご回答くださり誠にありがとうございました。
    ヘッダファイルをインストールし、いただいたプログラムをコンパイルさせてみたところ、

    C:\Users\yoshinaga.y\Documents\Arduino\libraries\Arduino_HttpClient_ESP8266_AT-master/HttpClient_ESP8266_AT.h:5:28: fatal error: SoftwareSerial.h: No such file or directory

    #include <SoftwareSerial.h>


    と表示され、SoftwareSerial.h というヘッダファイルが無いと表示されたのですが、
    SoftwareSerial.hというヘッダファイルはArduino IDEにもともとあるヘッダファイルだという理解でいます。

    英語のサイトを見ていると、更新などで名前が違っていたりとかする場合もあるそうなのですが…

    こちらについて何かご存知でしたらお手数おかけいたしますがコメントをよろしくお願いいたします。

    キャンセル

  • 2017/02/04 00:35

    お久しぶりです。
    回答が遅れてしまいすいません。早速ですが、ヘッダファイル自体はwindows内に存在しますでしょうか。
    ファイル自体があるのであれば、インクルードすれば大丈夫だと思います。

    ないのであれば、webでそのヘッダファイルがダウンロード可能なのでしてからインクルードしていただければなるかと思います。

    正直自分はMacだったものでそのエラーについての詳細は分かりませんが、上記の方法で実現可能だと思います。

    キャンセル

0

http://qiita.com/umi_kappa/items/639d3f2e91e368adbcb6
http://www.mkbtm.jp/?p=640
あたりをみると、115200bpsだとArduino側が根を上げて通信できないみたいです。

手元では未確認ですが、WROOM-02とPCを繋げてATコマンドで速度を下げてやってからArduinoに接続すればよいでしょう。

おっと、速度の設定ってWROOM-02側に保存されるのだろうか?? SSIDなど保存されることは確認済ですが、速度まで保存されるかは未確認です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/01/20 02:00

    matobaa様
    こんにちはお世話になります。早々にコメントいただいていたのにも関わらず、なかなかご返事できずに誠に申し訳ございませんでした。

    参考URLを参照し、
    WROOM-02とPCを繋げてATコマンドで速度を下げてやってからArduinoに接続いたしました。
    Arduinoと接続した状態で、プログラムも9600に書き換えた際のシリアルモニタ上でプログラムの実行内容「……」が表示されたので、速度が保存されている状態だと思いますが、自宅のwifi,スマホのテザリング共に接続されませんでした。

    そこで、試しに以下URLの通りにWROOM-02で自宅のwifiおよびスマホのテザリングに接続しようとすると下の結果に示すようにERRORと表示されたため、WROOM-02に何か原因があるのかと考えております。お手数おかけいたしますが、上記を踏まえたご意見をいただけますと幸甚に存じます。
    http://www.mkbtm.jp/?p=618

    AT


    OK
    AT+CWJAP="bobby bobby","555512345"


    ERROR
    AT+CWJAP="Daimon5","e9799b94b2f9"


    ERROR

    キャンセル

0

既に問題となっていないと思われますが、『シリアルモニタ上に「......」』の事象(=WROOM-02とシリアル通信できていない)を解決できたので書き込みいたします。

Arduino M0 Pro
Arduino IDE 1.8.5
PCとシリアル通信して速度を9600に変更したWROOM-02を利用。

この状態で事象が発生しました。

解決方法
ESP8266.hの以下で指定されている速度を書き換え。
書き換え前:void begin(HardwareSerial &uart, uint32_t baud = 115200);
書き換え後:void begin(HardwareSerial &uart, uint32_t baud = 9600);

元のソースの

  // Wi-Fiモジュールとのシリアル通信のポートを開ける
  Serial1.begin(SERIAL_SPEED);


ここの部分よりヘッダファイルの方が優先されているようです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.32%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る