39
Wifiにつながるデバイス ( ESP8266EX ESP-WROOM-02 ESPr Developer など) 2016-07-15 サイボウズ・ラボ 西尾泰和

Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)

  • Upload
    nishio

  • View
    2.603

  • Download
    5

Embed Size (px)

Citation preview

Page 1: Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)

Wifiにつながるデバイス

( ESP8266EX

ESP-WROOM-02ESPr Developer など)

2016-07-15サイボウズ・ラボ

西尾泰和

Page 2: Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)

今回の目的

Raspberry Piを使えばWifi接続も簡単だがなにぶんサイズや電力消費が大きいのでもっとコンパクトなデバイスを使いたい。

そういうニーズでよく使われているデバイス(ESP-WROOM-02とか)

について、用語の整理をしつつ解説する。

2

Page 3: Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)

ESP8266EXEspressif Systemsの出しているWifiチップ

802.11 b/g/n、WPA/WPA2

Arduinoスケッチを書きこめる

3

http://espressif.com/en/products/hardware/esp8266ex/overview

Page 4: Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)

ESP-WROOM-02

ESP8266EXとアンテナとをセットにして日本の技適マークを取得した、日本で合法的に使えるWifiモジュール。

550円@秋月電子

4

http://akizukidenshi.com/catalog/g/gM-09607/

Page 5: Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)

形状5

←アンテナ

←1.5mmピッチ(ブレッドボードなどは2.54mmが一般的)

Page 6: Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)

CDP-ESP8266

1.5mmピッチは使いづらい。

使いやすくするためにブレイクアウトボードのセットをCerevoが出した

842円@Cerevo store

6

http://cerevo.shop-pro.jp/?pid=91592223

https://tech-blog.cerevo.com/archives/859/

Page 7: Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)

使い方

はんだ付けが大変そうでひるむ……

7

https://tech-blog.cerevo.com/archives/859/

Page 8: Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)

AE-ESP-WROOM-02

秋月が出したESP-WROOM-02のDIP化キット

はんだ付けの難しいチップの表面実装をやってくれて、650円@秋月電子(本体+100円)

8

筆者はこれを買った

http://akizukidenshi.com/catalog/g/gK-09758/

Page 9: Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)

周辺回路9

Page 10: Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)

必要だったもの

A: USBシリアル変換モジュール

B: LM3671搭載 3.3V出力DC-DCコンバータ

10

A B

Page 11: Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)

AE-UM232R

FTDI(Future Technology Devices International)のUSBシリアル変換IC「FT232RL」を使ったUSBシリアル変換モジュール。

950円@秋月電子

11

http://akizukidenshi.com/catalog/g/gK-01977/

ここでいう「シリアル」はRS232CではなくUART

Page 12: Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)

USBシリアル変換モジュール

信号を変換するだけでなく、電源電圧の返還もやってくれる優れもの

しかしWROOMを動かすのには不足らしい

「このモジュールからも3.3V電源が取れますが50mAと少ないので、USBバスパワーから、別途レギュレータで3.3Vを作って、Wifiモジュールに供給します。」*

12

* https://tech-blog.cerevo.com/archives/859/

Page 13: Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)

3.3Vを作る

Cerevoの記事* では三端子レギュレータで3.3Vの電圧を作っていたが、筆者はスイッチング電源を使った。(手元に三端子レギュレータがなかったので)

13

* https://tech-blog.cerevo.com/archives/859/

Page 14: Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)

技術的な違い

シリーズレギュレート方式入力電圧と出力電圧の差を熱として捨てることで目標の電圧を出力する装置スイッチングノイズがない回路が安価

スイッチングレギュレート方式半導体で高速にON/OFFしてそれをコンデンサで平滑することで目標の電圧を出力する装置発熱が少ない電力の変換効率が高い

14

https://www.kikusui.co.jp/knowledgeplaza/?d=powersupply2

Page 15: Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)

価格を比較15

http://akizukidenshi.com/catalog/g/gI-00538/

低損失三端子レギュレータ

TA48M033F

100円@ 秋月電子

LM3671搭載 DC-DCコンバータ

ADA-2745

691円@ スイッチサイエンス

https://www.switch-science.com/catalog/2638/

Page 16: Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)

合算

AE-ESP-WROOM-02 650円USBシリアル変換モジュール 950円DC-DCコンバータ 691円

合計: 2291円

16

(ただしブレッドボード、ジャンパーケーブル、ジャンパーワイヤー、抵抗2本、は既に持っていたものとみなす)

Page 17: Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)

ESPr Developer

スイッチサイエンスが出したESP-WROOM-02開発ボード。

ESP-WROOM-02とUSBシリアル変換と三端子レギュレータがセットになった回路。

2160円@スイッチサイエンス

17

https://www.switch-science.com/catalog/2500/

ピンヘッダは付属しません

Page 18: Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)

価格を比較

2291円 v.s. 2160円

18

Page 19: Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)

教訓

開発ボードはWifiモジュール本体の4倍高い。

でもゼロから必要なものをそろえると大差ない。

ブレッドボードやシリアルUSBは再利用できるとはいえ、間違えないように配線する労力とか、ワイヤーをひっかけて抜かないように注意して運ぶ精神的コストを考えたら開発ボードを買った方が(気が)楽だった。

中の仕組みがどうなっているか理解できるという点は(低級言語を使ってから高級言語を使った方がよい的な意味で)よかったのかも。

19

Page 20: Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)

次にすること

ハードウェアが準備できたのでシリアル接続で制御してみる

• PCからUSBシリアルで接続

• 115200ボー

• 送信の改行はCR+LF

• ATコマンドをPCから送信

20

Page 21: Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)

ATコマンド

ATと入力するとOKと返ってくる。これでまずは動作チェック。

AT

OK

21

Page 22: Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)

AT+GMR

AT+GMRAT version:0.25.0.0(Jun 24 2015 18:02:27)SDK version:1.1.2compile time:Jun 24 2015 18:15:2OK

22

Page 23: Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)

AT+CWMODE

AT+CWMODE=3

OK

1: station(アクセスポイントにつなぎに行く)

2: AP(自分がアクセスポイントになる)

3: 両方

23

Page 24: Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)

AT+CWLAP

AT+CWLAP

+CWLAP:(0,“ssid",-70,"7c:0e:ce:7a:xx:xx",1)

+CWLAP:(3,“ssidfoo",-71,"7c:0e:ce:7a:xx:xx",1)

+CWLAP:(4,“ssidbar",-82,"a6:12:42:eb:xx:xx",1)

+CWLAP:(3,“ssidbaz",-69,"7c:0e:ce:7a:xx:xx",1)

周辺のアクセスポイントのSSIDや電波強度、MACアドレスなどが見える。たぶん「List Access Point」の略

24

返り値の詳細はこちら

https://github.com/espressif/ESP8266_AT/wiki/CWLAP

Page 25: Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)

AT+CWJAP

AT+CWJAP=“ssid”,“password”

WIFI CONNECTED

WIFI GOT IP

OK

指定したSSIDのアクセスポイントに接続。たぶん「Join Access Point」

25

Page 26: Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)

AT+CIFSR

AT+CIFSR

+CIFSR:APIP,"192.168.4.1“

+CIFSR:APMAC,"1a:fe:34:a2:xx:xx“

+CIFSR:STAIP,"10.210.121.17”

+CIFSR:STAMAC,"18:fe:34:a2:xx:xx“

自分がもらったIPアドレスがわかる。

26

Page 27: Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)

AT+PING

AT+PING=“www.google.com”

+6

OK

27

Page 28: Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)

HTTPAT+CIPSTART=“TCP”,“www.google.com”,80CONNECTOKAT+CIPMODE=1(後述)OKAT+CIPSENDOK>GET / HTTP/1.1HTTP/1.1 302 FoundCache-Control: privateContent-Type: text/html; charset=UTF-8Location: (略)Content-Length: 259Date: Fri, 08 Jul 2016 10:46:55 GMT

<HTML><HEAD>(以下略)

28

TCPの80番ポートでgoogleのサーバに接続、HTTPヘッダを送信するとレスポンスが表示される

Page 29: Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)

AT+CIPMODE=1

シリアルコンソールからの入力を透過的にTCPソケットの無効に送る。

エコーバックされない。

どうやって抜けるのかよくわからない。(+++を送信すればよいらしいが??)

CIPMODE=1せずにCIPSEND=123などとすれば123バイト固定長で送信する。

29

Page 30: Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)

ここまでのまとめ

Wifiのアクセスポイントに接続できる。

TCPでコネクションを張れる。

HTTPヘッダを送ってやればレスポンスが返ってくる。

30

Page 31: Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)

ここからのあらすじ

アクセスポイントになることもできる。

31

Page 32: Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)

再掲:AT+CWMODE

AT+CWMODE=3

1: station(アクセスポイントにつなぎに行く)

2: AP(自分がアクセスポイントになる)

3: 両方

32

Page 33: Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)

アクセスポイント

+CIFSR:APIP,"192.168.4.1“

+CIFSR:APMAC,"1a:fe:34:a2:f1:cf"

33

Page 34: Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)

サーバを立てる

AT+CIPMUX=1

OK

AT+CIPSERVER=1,80

OK

同時接続OKにして、80番でサーバを立てる。

Q: 何のサーバ?A: TCPをLISTENしてシリアルに吐くサーバ

34

Page 35: Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)

ブラウザからアクセスサーバのアドレスにブラウザからアクセスするとシリアルコンソールにリクエストが表示される

35

0,CONNECT

1,CONNECT

+IPD,0,403:GET / HTTP/1.1

Host: 192.168.4.1

Connection: keep-alive

Cache-Control: max-age=0

Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 6.3; 以下略Accept: (以下略)

Accept-Encoding: gzip, deflate, sdch

Accept-Language: ja,en-US;q=0.8,en;q=0.6

0,CLOSED

1,CLOSED

Page 36: Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)

ここまでの話

APに接続できる

APになることもできる

TCPで接続できる

めでたしめでたし……?

36

Page 37: Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)

APにつながらないケース

AP接続後にDHCPでIPアドレスを得るのに失敗しているらしい?

37

AT+CWJAP=“****”,“****”WIFI CONNECTED(この後10秒以上)

WIFI DISCONNECT+CWJAP:1

FAIL

Page 38: Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)

理想と現実

理想:各種デバイスが既存のオフィスインフラ(Wifiアクセスポイント)につながって手軽に通信できる。

現実:DHCPに失敗してつながらない。

38

Page 39: Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)

次回

「Raspberry PiでWifiルータを作る」

乞うご期待!

39