Arduino勉強会

2015/10/25からのアクセス回数 4118

お手軽IoTモジュールESP-WROOM-02

秋月で550円で購入できるWiFIモジュール ESP-WROOM-02*1は、 それ単体でもArduinoとして利用でき、アナログデータをサーバに送信することができます。

M-09607.jpg

初めて使う時には、Wi-Fiモジュール ESP-WROOM-02 DIP化キット(K-09758)

K-09758.jpg

を使うか、スイッチサイエンスのESP-WROOM-02ピッチ変換済みモジュール《シンプル版》 (ボードのみ 162円) を使うと便利です。

esp_1line3.jpg

Arduinoで始めるWiFiモジュール

今回参考にしたサイトは、技適済みWi-Fiモジュール「ESP8266」で始めるIoT入門(ブレイクアウトボード実装編)です。

今回は、ESP-WROOM-02の取り付け基板として、上記サイトで紹介されていた CEREVOのブレークアウトボードを使いました。

最初は、ハンダ付けしたESP-WROOM-02が正しく動作するか確認します。

check_brd.png

CEREVOのブレークアウトボードの端子の説明は、以下の通りです。*2

53f0389a5f6bf0a2dfde0073841dbd67.jpg

上記の資料を参考に以下の様にブレッドボードに接続しました。

CEREVOブレッドボード
1 3V33.3V
2 EN10KΩ抵抗で3.3V
9 GNDGND
11 RXDUSBシリアルのTXD
12 TXDUSBシリアルのRXD
13 GNDGND
15 RST10KΩ抵抗で3.3V
18 GNDGND

シリアルモジュールと USBシリアルモジュール *3 との接続は、以下の通りです。

CEREVOUSBシリアル
12 TXDRXD
11 RXDTXD

USBシリアルモジュールをPCに接続し、Arduinoのシリアルモジュールを起動します。 通信速度は、115200 baudで「CRおよびLF」を選択します。

最初にATコマンドを入力して、OKが返ってくれば接続は大丈夫です。 次にESP-WROOM-02のファームウェアのバージョンをAT+GMRコマンドで確認しておきましょう。 *4

testbench.png

転送速度の変更

3.3Vで動作するArduino Pro Miniと接続する場合、115200 baudのデータ転送に対応できません。 そこで、ESP-WROOM-02の通信速度を9600 baudに変更します。

Arduinoのシリアルモニタから以下のコマンドを入力してください。

AT+UART_DEF=9600,8,1,0,0
AT+RST

このあとシリアルモニタの通信速度を9600 baudに変更してOKが表示されれば転送速度変更完了です。 *5

テストベンチの作成

Arduinoと接続してESP-WROOM-02の実験するために、以下の様にブレッドボードにテストベンチを組み立てました。

  • PCからATコマンドを入力し、ESP-WROOM-02に転送
  • メッセージを送信用のスイッチを追加

testbench.png

テストベンチ用のArduinoのスケッチは、以下の通りです。

#include <SoftwareSerial.h>

int sw_pin = 10;
int sTx_pin = 12;
int sRx_pin = 11;
int c;

SoftwareSerial  pc(sRx_pin, sTx_pin);

void setup() {
  pc.begin(9600);
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }
  pinMode(sw_pin, INPUT);
  pc.println("ESP8266IF3tTest");
  delay(1000);
}

void loop() {
  if (pc.available()) {
    while((c = pc.read()) != -1)
      Serial.write(c);
  }
  if (Serial.available()) {
    while((c = Serial.read()) != -1)
      pc.write(c);
  }
  if (digitalRead(sw_pin) == LOW) {
    pc.println("SW pressed");
    delay(500);
  }
}

通信実験

さあWiFiモジュールを使って通信してみましょう。 一番簡単なテストは、Webサーバにアクセスすることです。 以下のSageサーバにHello World!を出力するページを作成しました。

まずは、このページを出力することを目標にしてみましょう。

ESP-WROOM-02をルータに接続

最初にESP-WROOM-02をルータに接続するまでの手順を確認します。

  • ESP-WROOM-02(今回は省略します)
  • ATコマンドでOKが返ることを確認
  • モード設定(Stationモード1)に設定
  • ルータに接続
  • 接続状況の確認(プログラム化では不要)

では順に試してみます。 シリアルモニタでATを入力してReturnキーまたは「送信」ボタンを押します。

AT

OK

次にAT+CWMODEコマンドでモードをStationモードの1にセットします。 AT+CWMODE=1と入力してください。

AT+CWMODE=1

OK

ルータに接続するために、AT+CWJAPコマンドを使います。 AT+CWJAP="ルータのSSID","ルータ接続パスワード"を入力してください。

AT+CWJAP= "ルータのSSID","ルータ接続パスワード"

WIFI DISCONNECT
WIFI CONNECTED
WIFI GOT IP

OK

AT+CIFSRコマンドで、接続状況を確認します。 AT+CIFSRと入力してください。

AT+CIFSR

+CIFSR:STAIP,"192.168.179.8"
+CIFSR:STAMAC,"18:fe:34:9c:eb:22"

OK

私の公開しているSageサーバのWebに接続します。 SageサーバのIPアドレスは、49.212.164.205です。 AT+CIPSTART="TCP","49.212.164.205",80と入力してください。

AT+CIPSTART="TCP","49.212.164.205",80
CONNECT

OK

AT+CIPSENDコマンドで送信するデータのバイト数を指定します。 今回は、"GET /hello.html HTTP/1.0\r\n\r\n\r\n"を送信するので、30バイトとなります。 AT+CIPSEND=30を入力してください。

つぎに送信する文字列を続けて入力してください。 GET /hello.html HTTP/1.0 次に、2回送信ボタンを押してください(HTTPプロトコルでヘッダと本文の区切りを表します)。

AT+CIPSEND=30

OK
> GET /hello.html HTTP/1.0
Recv 30 bytes

SEND OK

+IPD,303:HTTP/1.1 200 OK
Date: Sun, 25 Oct 2015 02:04:08 GMT
Server: Apache
Last-Modified: Sat, 24 Oct 2015 23:49:16 GMT
ETag: "c005e-34-522e260431c88"
Accept-Ranges: bytes
Content-Length: 52
Connection: close
Content-Type: text/html; charset=UTF-8

<html>
<body>
<h1>Hello World!</h1>
</body>
</html>
CLOSED

これで、無事SageサーバのWebからHello World!のHTMLが送れました。 とても簡単ですね。

Webサーバの場合は、自動的に接続が切れますが、 クライアントから接続を切る場合には、AT+CIPCLOSEコマンドを使います。

シリアルモニタに出力された一連の出力は以下の様になりました。

first_con.png

スイッチサイエンスのピッチ変換モジュール

スイッチサイエンスの ESP-WROOM-02ピッチ変換済みモジュール《フル版》 は、ブレッドボードの幅と同じサイズのため、以下のようにブレッドボードを2枚使うか、

sw_convertor_full.png

以下の様にブレッドボードで配線をして、5V電源から3.3Vに変換して使ってください。

sw_conv_brd.png sw_conv_cfg.png

ESP-WROOM-02ピッチ変換モジュールとの結線は以下の通りです。

ESP-WROOM-02変換モジュールブレッドボード
3V3VCC(3.3V)
EN10KΩでプルアップ
IO15GNDに接続
IO210KΩでプルアップ
IO0GND接続でDownloadモード、未接続でBootモード
RXDUSBシリアルのTXD
TXDUSBシリアルのRXD
RSTプルアップしたタクトスイッチに接続
GNDGND

コメント

選択肢 投票
おもしろかった 9  
そうでもない 0  
わかりずらい 0  

皆様のご意見、ご希望をお待ちしております。勉強会で分からなかったこと等、お気軽に問い合わせて下さい。

スパム防止に画像の文字列も入力してください。

  • スイッチサイエンスのピッチ変換モジュールの説明を追加しました。 -- 竹本 浩? 2015-12-13 (日) 10:36:45

(Input image string)


*1 画像は秋月サイトへのリンク
*2 参考サイトの画像へのリンクです
*3 FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き)の互換モジュールで、Amazonで見つけました
*4 後で転送速度の設定ミスでファームウェアの入れ直しをしたときにバージョンを確認しておいて助かりました
*5 間違ってもAT+IPRを使っていけません。私はこれでファームウェアを入れ直しました。ファームウェアのアップデートにはesp8266_flasher.exeを使います

添付ファイル: filesw_convertor_full.png 339件 [詳細] filesw_conv_cfg.png 343件 [詳細] filesw_conv_brd.png 360件 [詳細] filetestbench.png 468件 [詳細] fileFirstcheck.png 169件 [詳細] filefirst_con.png 356件 [詳細] filecheck_brd.png 415件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-02-17 (金) 21:09:13 (244d)
SmartDoc