LoginSignup
5
4

More than 5 years have passed since last update.

ESP-WROOMスケッチのSSIDパスワードを変更せずにPCとWifi接続できるSoftAPを使った方法

Last updated at Posted at 2018-08-01

Wifiマイコン(ESP-WROOM)をPCのWebブラウザ(javascript)で監視やらコントロールしたい。

正直なところ、WebブラウザでHTML+javascriptでしかグラフィカルなインターフェイス作るのできないです。
マイコンはシリアル通信が普通ですが、Webブラウザでシリアル通信はHTML標準でないので、簡単にはマイコン制御はできない。。。

しかし、
ESP-WROOMだとWifiにつながるしPCのWebブラウザと簡単につながりそう。:grinning:

だが実際にやってみるとWifiのSSIDとかIPアドレスとかが以下のように面倒。

普通は以下の1~3のいずれかで接続。

  1. ESP-WROOMをアクセスポイントモードにして、PCのWifiをESP-WROOMに接続。

    PCがWifiルーターでつながっているのを一旦切って、ESP-WROOMにWifi接続するので、Wifiのネットが利用できなくて困ります。
    PCは有線LANでネットとつなげてるという手はありますが…

  2. ESP-WROOMをステーションモードにし、スケッチにSSID、パスワード記入してWifiルーターとつなぎ、Wifiルーター経由でPCとESP-WROOMに接続。

    PCのWifiはネットつながったままですが、ESP-WROOMと接続するWifiルーターのSSID,パスワードをスケッチに記入して指定するので、接続するWifiルーターが変わる場合はスケッチを書きかえねばならないです。
    使うところがいつも同じ場所であればそのままでいいですが。

  3. ESP-WROOMにWiFiManagerいれて、WebブラウザからSSID、パスワードを指定してWifiルーターとつなぎ、Wifiルーター経由でPCとESP-WROOMに接続。

    最近、AmbientブログをみてWiFiManagerを知りました。
    これで万事うまくいくかと思いますが、WiFiManagerにパスワードを入力しなければならない手間はあります。
    また、AOSS/WPSのWifiルーターのデフォだとパスワードがやたら長いので…まあコピペすればいいんですが…

これ以外にPCとつなぐ方法はないもんか?

PCにある一つのWifiデバイスで仮想デバイスなんかで2ヶ所につなげれないかと思って調べていたら、
WindowsのSoftAP てのがあるらしい。

SoftAP とは
WindowsのPCをWiFiアクセスポイント(WiFiルーター)として動作させられる機能のことです。
一つのWifiデバイスから仮想Wifiデバイスを生成し、WiFiアクセスポイントとしています。

じゃ、SoftAP立ち上げて、そこにつながるんじゃないかと

SoftAPを使ってESP-WROOMを接続

  • ESP-WROOMをステーションモードにし、スケッチに適当なSSID、パスワードを記入。
  • PCでESP-WROOMのスケッチに記入したSSID,パスワードと同じSoftAPをコマンドラインから入力して立ち上げ
  • ESP-WROOMをリセット、PCのSoftAPにDHCPで接続。
  • mDNS対応したWindowsであれば、ESP-WROOMのスケッチに書いたホスト名.local で接続。

でうまくいきました!:grin:

面倒なのはPCでSoftAPの設定と立ち上げをしなければならないところですが、以下のようにBatファイルと管理者ショートカット作ればいいです。

Windows softAPでWifi接続

PC電源を切るとSoftAPはなくなってしまいます。
Windowsのスタートアップに置いとけばいいかとおもいます。

SoftAPの設定と立ち上げ

バッチファイルの内容は以下です。

rem ネットワークモードを許可する
netsh wlan set hostednetwork mode=allow

rem 設定するアクセスポイントのSSIDとパスワードを設定します。
rem WPA2-Personal方式のパスワードなので8文字以上で設定
netsh wlan set hostednetwork ssid=wroom-ap key=12345678 keyUsage=persistent

rem アクセスポイントの開始
netsh wlan start hostednetwork

rem ネットワーク接続ウィンドウ表示
ncpa.cpl

管理者権限で実行しなければいけません。

そのほかMACやLinuxでも

SoftAPのような機能があり、検証していませんが可能なようです。
- MacをWiFiアクセスポイントとして使う方法
- コマンド一発でLinuxマシンを即席無線LANルーターにできる「create_ap」がすごい便利だった
- Androidはテザリング設定かな。

mDNS使うとESP-WROOMにIPアドレス無しでアクセス、Ajaxで便利

ESP-WROOMは以下のコードです。

#include <ESP8266WebServer.h>
#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <WiFiClient.h>

const char *ssid = "wroom-ap";
const char *password = "12345678";

ESP8266WebServer server(80);

void handleRoot() {
  // HTTPステータスコード(200) リクエストの成功
  server.send(200, "text/plain", "Root Accessed.\n");
}

void setup(void) {
  // WIFI_AP, WIFI_STA, WIFI_AP_STA or WIFI_OFF
  WiFi.mode(WIFI_STA);
  //WiFi.config(ip, gateway, netmask); //ない場合DHCP
  WiFi.begin(ssid, password);
  // Wifi接続ができるまで待機
  Serial.begin(115200);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("IPAddress: ");
  Serial.println(WiFi.localIP());
  server.on("/", handleRoot);
  // ローカルネットワーク内のみ有効のmDNS(マルチキャストDNS)を開始
  // bool MDNSResponder::begin(const char* hostname){}
  if (!MDNS.begin("wroom")) {
    Serial.println("Error setting up MDNS responder!");
    while (1) {
      delay(1000);
    }
  }
  // Start TCP (HTTP) server
  server.begin();
  // Add service to MDNS-SD
  MDNS.addService("http", "tcp", 80);
}

void loop(void) {
  // Webサーバの接続要求待ち
  server.handleClient();
}

Windows10の2018年4月版以降や,AppleのBonjourをインストしたWindows7以降でmDNSができました。
私のWindows10の一つはデフォでmDNSきかなかったんで、以下のようにBonjourで実装しました。
windows10でmDNSの問題を解決する

これで、DHCPでIPアドレス管理せずにつないでも迷子にはなりません。

mDNSのMAC、Windows、Linux、詳しくは以下にありました。
mDNSを使ってローカルDNSサーバーを廃止する

AndroidはmDNSがデフォでは使えないようです。

これでやってみたいこと

PCのブラウザでGoogleMapとGPSデーターを連携したんだけど、GPSとjavascriptでこれで通信したらいいかとおもってます。

参考にしたサイト

WIFI-TNGとESP-WROOM-02で始めるWIFI Arduino
https://qiita.com/tadfmac/items/17448a2d96bd56373a66

ESP-WROOM-02 ( ESP8266 ) チップ・メモリ・MACアドレス情報確認方法
https://www.mgo-tec.com/blog-entry-chip-info-esp-wroom-02-esp8266.html

ESP8266でmDNS
https://blog.maripo.org/2018/01/esp8266_mdns/

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4