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

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

ただいまの
回答率

87.36%

ESP32でエラーがないのにWiFiが飛ばない(アクセスポイントが生成されない)

解決済

回答 4

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 10K+

score 7

 前提・実現したいこと

ESP32というWiFiモジュールがついたマイコンからWiFiを飛ばして(アクセスポイントにして)そのWiFiにスマホやタブレットから接続しようとしています。

コンパイルエラー、書き込みエラーなどはないのにも関わらず(Lチカはできました)WiFiが飛ばない(スマホなどから見えない&検索しても出て来ない)ため悩んでいます。

何かしらアドバイスがあったらいただきたいです(_ _)

 発生している問題・エラーメッセージ

Lチカができたため、書き込みは成功していると思われます。
特にエラーなどは発生していないです。
以下のプログラムを書き込んでも、WiFiが飛んでくれません。

 該当のソースコード

インターネットからいただいたものそのままです。

#include <WiFi.h>

WiFiServer server(80);

const char ssid[] = "ESP32-WiFi";  // SSID
const char pass[] = "esp32wifi";   // password

const IPAddress ip(192, 168, 20, 2);      // IPアドレス
const IPAddress subnet(255, 255, 255, 0); // サブネットマスク

void setup() {
  Serial.begin(115200);

  WiFi.softAP(ssid, pass);           // SSIDとパスの設定
  delay(100);                        // 追記:このdelayを入れないと失敗する場合がある
  WiFi.softAPConfig(ip, ip, subnet); // IPアドレス、ゲートウェイ、サブネットマスクの設定

  IPAddress myIP = WiFi.softAPIP();  // WiFi.softAPIP()でWiFi起動
  server.begin();                    // サーバーを起動(htmlを表示させるため)

  /* 各種情報を表示 */
  Serial.print("SSID: ");
  Serial.println(ssid);
  Serial.print("AP IP address: ");
  Serial.println(myIP);

  Serial.println("Server start!");
}

void loop() {
  WiFiClient client = server.available();

  if (client) {
    String currentLine = "";
    Serial.println("new client!");
    while (client.connected()) {
      if (client.available()) {
        if (currentLine.length() == 0) {
          client.println("HTTP/1.1 200 OK");
          client.println("Content-type:text/html");
          client.println();
          client.println("hello!");
          break;
        } else {
          currentLine = "";
        }
      }
    }

    // 接続が切れた場合
    client.stop();
    Serial.println("client disonnected");
  }
}

 試したこと

ESP32のリセットボタンを押してコードを実行すると、落ちるような感じなので、コメントアウトしてどこで落ちているのか探りました。

どうも、WiFi関連のメソッドで落ちているようです。
追記:ESP32にLEDつけた状態でWiFi関連メソッドを書いてコンパイルしたものを実行した時にLEDがパッと消えたので落ちたと表現しました。実際にESP32がどう動いているかわかっていません。
例えば

WiFi.softAP();


です。

WiFi.mode(WIFI_AP);
WiFi.softAP;


などもためしましたが、今度は一行目のWiFi.modeメソッドで落ちています。

追記2
IPアドレスと、ゲートウェイのアドレスを別にして実行しましたがうまくいきませんでした。

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

ArduinoIDE1.8.5からESP32に直接書き込み。
ボード:ESP32 dev Module
QIO
4MB(32Mb)
80MHz
115200
なし

ESP32のライブラリ、ESP8266のライブラリは導入済みです。
よろしくお願いします。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

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

  • coco_bauer

    2018/03/20 21:09

    「落ちるような感じ」とか「落ちているようです」とか書かれていますが、落ちるの意味は何ですか?

    キャンセル

  • ana906

    2018/03/20 22:18

    LEDをつけて実行してみると、WiFi関連メソッドを書いてコンパイルしたものを実行した時に、パッとLEDが消えたので落ちたと表現しました。実際にESP32がどう動いていかわかっていません。

    キャンセル

回答 4

checkベストアンサー

+1

コンパイルエラー、書き込みエラーなどはない

それは、C(C++/Arduino言語)として間違っていなかった、というだけであまり役に立つ情報ではありません。エラーになるのはプログラム言語として成り立っていないので話にならないレベルですが、コンパイルを通ったというのはテストで「解答欄を全部埋めました」みたいなもので、まだまだ100点でないどころか0点を貰っちゃう可能性も残っています。特にC/C++の類は落とし穴が一杯ありますから。というのは考え方の一般論ですが、今回は

インターネットからいただいたものそのままです。

とのことで一応動作実績があるプログラムとは考えられますね。
でも、これ、ローカルのIPアドレスはあなたの環境に合わせていますか? 192.168.20.xxというのはあまり皆さん使ってないんじゃないかと思います。私は変態的に192.168.10.xxにしてたりするけど(ワイヤレスのネットワークを分けてた名残り)、普通は192.168.0.xxの人が多いんじゃないかしら。
DHCPが出来るのならその方がいろいろ面倒はないと思いますけれど、出来ませんか? 確かESP-WROOM-02でも出来たと思った(しばらくいじってないから忘れた...)ので、その高級版?のESP32なら出来るんじゃないかと思いますが。

落ちるような感じ

そう言われても...客観的な観察事実をお願いします。

追記:
見落としてました。APモードだったらIPアドレスはそれでいいのかな。
それと、ESP-WROOM-02の話を調べているときには結構「電源重要」な話が出てきました。Wifi接続時結構(数百mA)電流を喰うみたいで。ESP32でもそんなに変わらないと思いますが、その辺は大丈夫でしょうか。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/03/20 23:13

    返信ありがとうございます。
    現状、USBシリアル変換モジュールをはさんでPCからUSB経由で全電源を供給しています。
    確かに、問題があるかもしれません。
    調べると、独立電源がよいという情報も出てきました。
    後日、電源周りを変えてチャレンジしてみます。

    キャンセル

  • 2018/03/20 23:18

    LEDが消えたりする、なんてのは相当怪しいですね。
    とりあえず電源にパラに10μFぐらいのコンデンサ噛ませてしのげないかな?

    キャンセル

  • 2018/03/20 23:57

    いま、Arduinoを一台電源に接続した状態で用意してブレッドボードの+に3.3vの出力を、-にGNDを接続し、そのブレッドボードの上にESP32とシリアル変換モジュールを乗っけてPCに繋いで実行したら、動きました!!
    電源を別途用意しない状態ではWiFi関連プログラムを走らせた時に電圧が降下して、ESP32がリセットされてしまっていたみたいです。(Lチカでは耐えていたみたいです)
    本当にありがとうございました!!(_ _)

    キャンセル

+1

ソースがサイトのをそのままもってきたもので、間違いが無い、とすれば、問題はハードにあるということです。
全く電波さえ飛んでいないというなら、配線の間違いの可能性が高いです。

まずは配線をテスターなどで徹底的に確認すること、電源を入れて、きちんと電源、GNDピンに所定の電源電圧がかかっていることを確認してください。
オシロなどがあるなら、通信ラインに信号が来ているかを確認、またその他各ピンに信号が来ているかを確認することです。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/03/20 23:03

    @coco_bauerさん
    返信ありがとうございます。
    確かに、変数currentLineに代入される値はありませんね。
    IPアドレス、デフォルトゲートウェイについては、知識が少ないので調べてみます。
    とりあえずIPアドレスとゲートウェイのアドレスをずらして実行しましたがうまくいきませんでした。

    キャンセル

  • 2018/03/21 00:06

    解決しました。
    ご指摘のとおり、ハードの問題でした。配線が完了した時にテスターで電圧を測っていたので問題ないと思っていましたが、コードを実行した時に電圧が下がっていたみたいです。実行した瞬間の電圧は測っていませんでした。ありがとうございました(_ _)

    キャンセル

  • 2020/05/02 18:31

    電源は、USB充電器が5Vでているのでそこから取ればいいです
    USB充電ケーブルを剥いたら5V持ってこれます
    これなら電流不足って事にはなりません
    #っても、0.5Aまでですが

    キャンセル

0

回答ではなくて申し訳ありません。
自身のやりたいことに類似する記事を探していてたどり着きました。 
この記事で気になった(知りたい)箇所があります。
私が参考にしているスケッチ例ではIPアドレスは自動設定されたものを
Serial通信でIPアドレスを知ってそのアドレスにアクセスするんですが、
こちらのスケッチではこのサーバのIPアドレスを狙いで決めてしまうというやり方ということでしょうか? 
スケッチ例:ArduinoIDE →「ファイル」 ->「スケッチ例」 -> 「ESP32」 -> 「Camera」 -> 「CameraWebServer」 

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2020/05/02 14:11

    はい。IPアドレスを固定して、そこにアクセスしています。
    ただ、このESPはインターネットに繋がっていない(ESPからWiFiの電波を出して、物理的にその電波が届く範囲の端末しかESPにアクセスできない)ため、自由にアドレスを決められたと理解しています。


    そのため、インターネットに繋がっているESPで同じように書いてできるかは怪しいと思ってます。

    キャンセル

  • 2020/05/02 14:50

    > このサーバのIPアドレスを狙いで決めてしまうというやり方ということでしょうか?
    そういうことでしょうね。
    ESP32をAPにして、WiFiで一台だけ繋ごうなんていう接続の場合はある意味IPアドレスなんて「なんでもあり」ですから、DHCPサーバーを置くのも面倒、というところでしょう。

    キャンセル

0

ESP32を契約しているWifiルータ経由にサーバとして使うことはできますか?

サーバ構築関連のサイトを調べると
(例えばネットショップ運営などの)サーバ運用はセキュリティの問題等があり、
サーバ運用のためのソフトやレンタルサーバの利用などがいいとありますが、
一方的にセンサで読み取った気温やカメラで撮った画像を配信する程度であれば
そこまで、セキュリティの心配もないですし、
その他のアクセス負荷についても自分自身と家族程度であれば
そこまで気にするレベルではないように感じています。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2020/05/02 18:27

    新しく質問してください

    キャンセル

  • 2020/05/02 22:21

    すいませんそうします。

    キャンセル

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

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

関連した質問

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