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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Q&A

解決済

3回答

6355閲覧

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

bobby2128

総合スコア42

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

0グッド

0クリップ

投稿2017/01/16 07:38

編集2017/01/21 16:12

###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)に対応しているのでそこは問題ではないとは思うのですが…

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

matobaa

2017/01/17 00:53

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

2017/01/17 01:14

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

2017/01/19 23:27

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

2017/01/20 00:45

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

回答3

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);

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

投稿2018/05/06 11:05

spbbre1014

総合スコア8

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

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/20 06:20

mizugasira

総合スコア29

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bobby2128

2017/01/21 16:15

mizugasira様 はじめまして。ご提案いただきまして誠にありがとうございます。 現状の問題をなんとか解決したいという思いと、金銭的な余裕がまだないため、すぐには購入できませんが、 今後購入した際はぜひご参考にさせていただきます。 ありがとうございます。
mizugasira

2017/01/21 16:44 編集

bobby2128様 今回の質問自体の最終的な解決は、Wifiに接続できればいいだけですよね。 今回自分が送ったコードはESP-WROOM-02 Wi-Fi シールドを使ったものですが、そのシールド自体についているものは貴殿が使われているESP-WROOM-02(ピッチ変換済みモジュール)が使われており、送ったコードで動作すると思います。 なので、わざわざ買い直さなくとも良いです。 それと、ATコマンドでWifi接続させようと思っていますでしょうか。
bobby2128

2017/01/22 00:26

mizugasira様 こんにちは。早々のご回答をいただき誠にありがとうございます。 ESP-WROOM-02 Wi-Fi シールドに、ESP-WROOM-02(ピッチ変換済みモジュール)が使用されており、mizugasira様のコードで動作するとの事、承知致しました。勉強不足で申し訳ございません。 またmizugasira様のおっしゃる通り、動作確認と勉強の意味も含め、ATコマンドでWifi接続させようと思っております。
mizugasira

2017/01/22 02:18

動作確認という意味でATコマンドを使うのであれば良い思います。 それと、自分が書いたコードはきちんと配線しておかないと動きません。 もう調べているかもしれませんが、似たようなエラーを吐いている記事を載せておきます。 http://yk-memo.blogspot.jp/2016/01/esp-wroom-02-atcwjap-error.html
bobby2128

2017/01/23 11:21

mizugasira様 こんにちはお世話になります。 ここまで、丁寧にご指摘いただき誠にありがとうございました。 無事にモード変換し、ATコマンドによって家のWIFIへ接続することができました。 CONNECTEDと出たあと、安心してケーブルを抜き、しばらくしてから再度ATコマンドで動作するか試みたのですが、ATと入力しても動作しなくなりました。 調べたところ、 「明示的にAT+CWQAP で DISCONNECTしないと、ReadyになったらすぐにConnectされる」 http://tom2rd.sakura.ne.jp/wp/2016/06/19/post-1284/ 「モード変換のため、RSTピンをGNDに落としてLOWにしてリセット」 http://4009.jp/post/2016-04-25-esp-wroom-02/ 恐らくWIFIに接続が確立された後、ATコマンドを入力しても反応しないなんらかのモードになり、 上記のことをしないと解除できないのかと考えておりますが、誤って壊してしまうのがいやなので、実行の前に念のためお伺いいたしたく存じます。(例えばWIFIにつながってもATコマンドで反応するのであればまた別の問題も考えられますし…)また、WIFIに接続できたのち、Arduinoに配線し上記の元のプログラムをArduinoに書き込もうとするとArduino IDEにてコンパイルエラーになりました。 一難去ってまた一難なので、しばらく経ってご助言が無い場合はベストアンサーを選定させていただき、再度質問投稿させていただきます。 お手数おかけし大変恐縮ではございますが、どうかよろしくお願いいたします。
mizugasira

2017/01/24 07:33 編集

bobby2128様 お久しぶりです。 いきなり本題に入りますが、上記のプログラムのヘッダファイルのところは既存のものではないのでダウンロードしなければなりません。 ↓ この方のコードを参考にさせてもらっています。 https://github.com/qoosky/Arduino_HttpClient_ESP8266_AT ヘッダファイルのインストールをした後に追加させてください。 ヘッダファイルなどの追加方法はググったら出てきますので。 さらにREADMEを読んでいただければわかるのですがサンプルコードも載せている親切な方ですので 参考にしていただければと思います。
bobby2128

2017/01/27 03: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にもともとあるヘッダファイルだという理解でいます。 英語のサイトを見ていると、更新などで名前が違っていたりとかする場合もあるそうなのですが… こちらについて何かご存知でしたらお手数おかけいたしますがコメントをよろしくお願いいたします。
mizugasira

2017/02/03 15:35

お久しぶりです。 回答が遅れてしまいすいません。早速ですが、ヘッダファイル自体はwindows内に存在しますでしょうか。 ファイル自体があるのであれば、インクルードすれば大丈夫だと思います。 ないのであれば、webでそのヘッダファイルがダウンロード可能なのでしてからインクルードしていただければなるかと思います。 正直自分はMacだったものでそのエラーについての詳細は分かりませんが、上記の方法で実現可能だと思います。
guest

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/17 00:45

matobaa

総合スコア2493

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bobby2128

2017/01/19 17: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
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問