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

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

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

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Arduino

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

Q&A

解決済

1回答

482閲覧

Arduino M0 Pro と ESP WROOM-02 を使用して Wifi接続

moribro

総合スコア15

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Arduino

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

0グッド

1クリップ

投稿2018/11/25 14:52

編集2018/11/26 22:09

前提・実現したいこと

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

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

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

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

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

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

guest

回答1

0

ベストアンサー

<原因>
「本はArduino IDE ver1.7.9 での紹介で 私はver1.8.7 を使用しています」
IDEのバージョンの違いで、本はArduino IDE ver1.7.9 での紹介で 私はver1.8.7 を使用しています。pin 0, pin 1を使うシリアル通信の名称が違うようです。

<対処方法>
ソースコードの"Serial5"をすべて"Serial1"に書き換えて、再コンパイルしてみてください。

<詳細>
IDEのバージョンと、Arduinoの種類、シリアル通信の名称については、Arduino M0のSerial周りについてと+α を参考にしてください。

投稿2018/11/27 00:36

coco_bauer

総合スコア6915

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

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

moribro

2018/12/05 13:03

ご回答ありがとうございます。 >ソースコードの"Serial5"をすべて"Serial1"に書き換えて、再コンパイルしてみてください こちらが正しいようです。 また、wifi接続できないのは無線ルーターの設定の問題だと予想しています。 ・別回路でwifi接続をしようとしたところpingが返ってこない。 ・有線にしてコマンドプロンプトでping "IPアドレス"で通信確認したところ通信可能。 もう少し調べてみようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問