ESP8266モジュールでArduinoからWi-Fiを使う

今までArduinoでネットワークに接続するにはイーサネットシールドを使っていました。
それも互換品(?)の超安いやつを。
本家は4000円くらいしますが、互換品は1000円弱なので。

ArduinoのWi-Fiシールド(純正)はイーサネットシールドより高く、10000円くらいしますし、ほぼ無線LANは諦めていました。
そこで見つけたのがESP8266を使ったモジュールです。
ArduinoからWi-Fiでネットワークに接続できますし、なんと1個400円弱とめちゃくちゃ安いのです。
さらに資料も続々と増えてきてる模様で、苦労することもなさそうです。
超魅力的なESP8266モジュール使ってWi-Fiでネットワークに接続してみたいと思います。

スポンサーリンク

用意するもの

  • ESP8266 モジュール ×1
  • Arduino ×1
  • Arduinoの開発環境
  • その他(USB-シリアル変換モジュール、ブレッドボード)

ESP8266のモジュールは現在AliexpressやSeeed Studioなど海外のショップでしか手頃に購入できるところを把握しておりません。
Amazonでも売っているみたいですが非常に高いですね・・・

ESP8266の電源電圧は3.3Vなので通信の電圧も3.3Vが望ましいですが、Arduino Unoなどの5Vでも大丈夫なようです、たぶん・・
実際に使用するときは安全も兼ねてレベルシフト回路などをはさみましょう。

USB-シリアル変換モジュールはデバッグ用です。
これがなくてもやろうと思えばできますが、あったほうが確認しやすいです。

Arduinoのテストスケッチ

Arduino用のライブラリは以下のところから頂きました。

注意点としてはESP8266のファームウェアのバージョンに応じてシリアル通信の速度を変えてやる必要があります。
今回のだとシリアル通信の速度を変えるにはライブラリ内部のコードを書き換えなければなりません。
そこまで難しくはないのでライブラリのReadmeを読んでください。

私の買ったモジュールは古かったので9600bpsでした。
新しいのだと115200bpsでも行けるみたいです。

次のコードはライブラリのサンプルコードです。
Wi-Fiで接続してプライベートIPアドレスを取ってくるだけです。
「SSID」と「PASSWORD」は環境に合わせて書き換えてください。

#define SSID       "Itead_1(Public)"
#define PASSWORD   "27955416"

#include "uartWIFI.h"
#include <SoftwareSerial.h>
WIFI wifi;

void setup()
{

  wifi.begin();
  bool b = wifi.Initialize(STA, SSID, PASSWORD);
  if(!b)
  {
    DebugSerial.println("Init error");
  }
  DebugSerial.print("Connecting...");

  String wifistring  = wifi.showJAP();
  while(wifistring == "") {
    delay(200);
    wifistring = wifi.showJAP();
  }

  String ipstring = wifi.showIP();
  while(ipstring == "") {
    delay(200);
    ipstring = wifi.showIP();
  }

  DebugSerial.println(wifistring); //show the name of current wifi access port, "AP" label is included here
  DebugSerial.print("IP Address:");
  DebugSerial.println(ipstring); //show the ip address of module
}
void loop()
{
}

回路

ESP8266モジュールのピンアサインは次のようになっています。
ESP8266ピンアサイン

回路といってもArduinoとESP8266モジュールを接続するだけです。
今回はArduino Unoで考えてみます。
Arduino MEGAなどでは、また違ってきますがここでは省略します。

ESP8266
Module
Arduino
Uno
VCC 3.3V
CH_PD 3.3V
UTXD 0(RX)
URXD 1(TX)
GND GND
GPIO0 未接続
GPIO2 未接続
RST 未接続

配線は次のようになります。
接続写真
モジュールとブレッドボードの接続は自作の治具(?)を使っています。
そのほうがスッキリしていて好きなんです。
書いてはいないですけどデバッグ用のUSB-シリアル変換モジュールも接続しています。

ArduinoからWi-Fiによるネットワーク接続

成功するとこんな感じになるはずです、デバッグ用の通信結果です。
接続結果
IPアドレスが取得できたら、とりあえず成功です。
このプログラムはIPアドレスを取ってくるだけですが、サンプルプログラムにはHTTPリクエストを送信するものやUDPを使って通信するものもあるのでこのライブラリで大体の事はできそうですね。


これでイーサネットシールドを使わずに、さらにWi-Fiシールドも使わずにネットワークに接続できました。
もうイーサネットシールドは控えめにしてESP8266を積極的に使っていこうと思います。

最後に言うのもなんですが、技適は取得していないので個人利用だとしても無線モジュール同様グレーなモジュールになります。
ご使用の際は十分に気をつけて下さい。

追記(2015/7/17)

ESP-WROOM-02というモジュールが出ているみたいです。
こちらは技適取得済みのため日本国内でも安心して使えるようですね。

スポンサーリンク

Leave a Comment