●Arduino用 ESP8266モジュールを使う

EasyWordMall OTA ESP-12E D1 WiFi UnoシールドベースESP8266モジュールArduino用
ここで購入しましたが、時々見ると地味に値上がりしています。

前面の存在感のある部品の無線LANモジュールみたいなものの中にマイコンが入っています。
ピンの部分に色々文字が書いてあり、Arduino UNOの配置でデジタルピンの気がしますが用途が違っているようで、 この番号でプログラムを書いて動作しません。
何のために書いてあるのか不明です。


裏面を見ると、ここに本当の(Arduino IDEでプログラムに書き込む)ピン番号が印刷されています。


この裏面のGPIO14の部分にLEDを取り付けて、pinMode(14,OUTPUT)と設定してdigitalWrite(14,1)とするとLEDが点灯できますが、
スイッチを取り付けた時にINPUT_PULLUPが効かなかったりと、AVRとはやはり違うようです。


■Arduino IDE で ESP8266ボード の開発が出来るように設定

Arduino IDEではそのままではESP8266ボードの開発が出来ないため、出来るように設定します。

ファイル→環境設定を開いて、 http://arduino.esp8266.com/stable/package_esp8266com_index.json を追加のボードマネージャの部分に書き込みます。


ツール/ボードで「ボードマネージャ」を選択し


esp8266 by ESP8266 Communityをインストールします。
この時にエラー(ダウンロードできません)が発生し先に進めませんでしたが、Arduino IDEの最新バージョンをインストールしたら解決しました。


ツールを開いて、次のようにボードを設定しました。


これで、コンパイルと書き込みが出来るようになりました。
書き込み時にポートにボードが無いと言ってきた時はリセットボタンを押すとうまくいく可能性があります。
GPIOにLEDなどを取り付けていると、うまく行かない事がありました。


■WEBサーバーのサンプルを走らせてみる

せっかくの無線LAN搭載なのですから、LEDのチカチカではなくWEBサーバーを走らせてみます。
このWEBサーバーに接続したパソコンのブラウザからLEDを点灯させたり、スイッチのON・OFFをブラウザから確認したりと、応用はかなり広そうです。
このWEBサーバーは無線LANルーターに接続して、そこでDHCPからIPアドレスを取得して動作するものです。

スケッチ例でHelloServerを開きます。


まず、HelloServerのスケッチの接続先ルーター設定をします。
自宅の無線LANルーターのIDとパスワードをスケッチの上の方の(11行目付近)に入力します。
#define STASSID "your-ssid"
#define STAPSK "your-password"
接続先ルーターははWPA2-PSK(AES)でしたが問題なく接続できました。

その後、シリアルモニタを開き速度を115200bpsに設定しておきます。

ボードへの書き込みが終了して、無線LANルーターの接続がうまく行くとDHCPから取得した自身のIPアドレスを表示してきます。


ブラウザを開いて指定されたIPアドレス、http://192.168.0.113 (人によって変わります)を開くとボードでWEBサーバーが起動しているのが確認できます。




■ブラウザからLEDを制御する

ブラウザに文字を送る事が出来るということは、ブラウザからデータを取得する事も出来るということです。
そこで、ブラウザからLEDチカチカの制御をやってみたいと思います。

18行目にあるこの控えめなhandleRootを見つけます

void handleRoot() {
  digitalWrite(led, 1);
  server.send(200, "text/plain", "hello from esp8266!");
  digitalWrite(led, 0);
}

そのhandleRootを消して、次のゴージャスなhandleRootに置き換えちゃいましょう。

void handleRoot() {
  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, 1);
  for (uint8_t i = 0; i < server.args(); i++) {
    if(server.argName(i)=="chkbox" && server.arg(i)=="on"){
      digitalWrite(LED_BUILTIN, 0);
    }
  }
  server.send(200, "text/html", 
  "<html><form method=\"post\" action=\"./\" enctype=\"multipart/form-data\">"
  "<input id=\"Checkbox1\"  name=\"chkbox\" type=\"checkbox\">"
  "<span id=\"Checkbox1.Label\">Checkbox1</span></input>"
  "<input type=\"submit\" name=\"write\" value=\"submit\"></from>");
}

そうして、ボードにスケッチを書き込んでWEBサーバーを起動させます。
ブラウザでボードのアドレスにアクセスすると、チェックボックスとボタンが現れるます。
Checkbox1にチェックを入れてsubmitボタンを押しましょう。


ボタンを押すとCPU横のLEDが点灯します。


チェックボックスに何も入れないでボタンを押すと、


LEDが消灯します。


ブラウザからデータを送る方法として、今回のようなボタンやチェックボックスを使う方法以外に
アクセスするアドレスにデーターを追加する方法があります。
a=1を送りたいのならこのようにします。
http://192.168.0.113?a=1
複数の値を送りたいのならこのようにします。
http://192.168.0.113?a=1&b=2
この場合でも今回と同様の方法でデータを読むことができました。


▲トップページ > マイコンなど