Wifiにつながるデバイス
( ESP8266EX
ESP-WROOM-02
ESPr Developer など)
2016-07-15
サイボウズ・ラボ
西尾泰和
今回の目的
Raspberry Piを使えばWifi接続も簡単だが
なにぶんサイズや電力消費が大きいので
もっとコンパクトなデバイスを使いたい。
そういうニーズでよく使われている
デバイス(ESP-WROOM-02とか)
について、用語の整理をしつつ解説する。
2
ESP8266EX
Espressif Systemsの出しているWifiチップ
802.11 b/g/n、WPA/WPA2
Arduinoスケッチを書きこめる
3
http://espressif.com/en/products/hardware/esp8266ex/overview
ESP-WROOM-02
ESP8266EXとアンテナとをセットにして
日本の技適マークを取得した、
日本で合法的に使えるWifiモジュール。
550円@秋月電子
4
http://akizukidenshi.com/catalog/g/gM-09607/
形状
5
←アンテナ
←1.5mmピッチ
(ブレッドボードなどは
2.54mmが一般的)
CDP-ESP8266
1.5mmピッチは使いづらい。
使いやすくするためにブレイクアウトボードの
セットをCerevoが出した
842円@Cerevo store
6
http://cerevo.shop-pro.jp/?pid=91592223
https://tech-blog.cerevo.com/archives/859/
使い方
はんだ付けが大変そうでひるむ……
7
https://tech-blog.cerevo.com/archives/859/
AE-ESP-WROOM-02
秋月が出したESP-WROOM-02のDIP化キット
はんだ付けの難しいチップの表面実装を
やってくれて、650円@秋月電子(本体+100円)
8
筆者はこれを買った
http://akizukidenshi.com/catalog/g/gK-09758/
周辺回路
9
必要だったもの
A: USBシリアル変換モジュール
B: LM3671搭載 3.3V出力DC-DCコンバータ
10
A B
AE-UM232R
FTDI(Future Technology Devices International)の
USBシリアル変換IC「FT232RL」を使った
USBシリアル変換モジュール。
950円@秋月電子
11
http://akizukidenshi.com/catalog/g/gK-01977/
ここでいう「シリアル」はRS232CではなくUART
USBシリアル変換モジュール
信号を変換するだけでなく、
電源電圧の返還もやってくれる優れもの
しかしWROOMを動かすのには不足らしい
「このモジュールからも3.3V電源が取れますが
50mAと少ないので、USBバスパワーから、別途
レギュレータで3.3Vを作って、Wifiモジュールに
供給します。」*
12
* https://tech-blog.cerevo.com/archives/859/
3.3Vを作る
Cerevoの記事* では三端子レギュレータで
3.3Vの電圧を作っていたが、
筆者はスイッチング電源を使った。
(手元に三端子レギュレータがなかったので)
13
* https://tech-blog.cerevo.com/archives/859/
技術的な違い
シリーズレギュレート方式
入力電圧と出力電圧の差を熱として捨てることで
目標の電圧を出力する装置
スイッチングノイズがない
回路が安価
スイッチングレギュレート方式
半導体で高速にON/OFFしてそれをコンデンサで
平滑することで目標の電圧を出力する装置
発熱が少ない
電力の変換効率が高い
14
https://www.kikusui.co.jp/knowledgeplaza/?d=powersupply2
価格を比較
15
http://akizukidenshi.com/catalog/g/gI-00538/
低損失三端子レギュレータ
TA48M033F
100円 @ 秋月電子
LM3671搭載 DC-DCコンバータ
ADA-2745
691円 @ スイッチサイエンス
https://www.switch-science.com/catalog/2638/
合算
AE-ESP-WROOM-02 650円
USBシリアル変換モジュール 950円
DC-DCコンバータ 691円
合計: 2291円
16
(ただしブレッドボード、ジャンパーケーブル、
ジャンパーワイヤー、抵抗2本、
は既に持っていたものとみなす)
ESPr Developer
スイッチサイエンスが出したESP-WROOM-02開
発ボード。
ESP-WROOM-02とUSBシリアル変換と三端子レ
ギュレータがセットになった回路。
2160円@スイッチサイエンス
17
https://www.switch-science.com/catalog/2500/
ピンヘッダは付属しません
価格を比較
2291円 v.s. 2160円
18
教訓
開発ボードはWifiモジュール本体の4倍高い。
でもゼロから必要なものをそろえると大差ない。
ブレッドボードやシリアルUSBは再利用できると
はいえ、間違えないように配線する労力とか、ワ
イヤーをひっかけて抜かないように注意して運ぶ
精神的コストを考えたら開発ボードを買った方が
(気が)楽だった。
中の仕組みがどうなっているか理解できるという
点は(低級言語を使ってから高級言語を使った方
がよい的な意味で)よかったのかも。
19
次にすること
ハードウェアが準備できたので
シリアル接続で制御してみる
• PCからUSBシリアルで接続
• 115200ボー
• 送信の改行はCR+LF
• ATコマンドをPCから送信
20
ATコマンド
ATと入力するとOKと返ってくる。
これでまずは動作チェック。
AT
OK
21
AT+GMR
AT+GMR
AT version:0.25.0.0(Jun 24 2015
18:02:27)
SDK version:1.1.2
compile time:Jun 24 2015 18:15:2
OK
22
AT+CWMODE
AT+CWMODE=3
OK
1: station(アクセスポイントにつなぎに行く)
2: AP(自分がアクセスポイントになる)
3: 両方
23
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
AT+CWJAP
AT+CWJAP=“ssid”,“password”
WIFI CONNECTED
WIFI GOT IP
OK
指定したSSIDのアクセスポイントに接続。
たぶん「Join Access Point」
25
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
AT+PING
AT+PING=“www.google.com”
+6
OK
27
HTTP
AT+CIPSTART=“TCP”,“www.google.com”,80
CONNECT
OK
AT+CIPMODE=1(後述)
OK
AT+CIPSEND
OK
>GET / HTTP/1.1
HTTP/1.1 302 Found
Cache-Control: private
Content-Type: text/html; charset=UTF-8
Location: (略)
Content-Length: 259
Date: Fri, 08 Jul 2016 10:46:55 GMT
<HTML><HEAD>(以下略)
28
TCPの80番ポートで
googleのサーバに接続、
HTTPヘッダを送信すると
レスポンスが表示される
AT+CIPMODE=1
シリアルコンソールからの入力を透過的に
TCPソケットの無効に送る。
エコーバックされない。
どうやって抜けるのかよくわからない。(+++を
送信すればよいらしいが??)
CIPMODE=1せずにCIPSEND=123などとすれば
123バイト固定長で送信する。
29
ここまでのまとめ
Wifiのアクセスポイントに接続できる。
TCPでコネクションを張れる。
HTTPヘッダを送ってやれば
レスポンスが返ってくる。
30
ここからのあらすじ
アクセスポイントになることもできる。
31
再掲:AT+CWMODE
AT+CWMODE=3
1: station(アクセスポイントにつなぎに行く)
2: AP(自分がアクセスポイントになる)
3: 両方
32
アクセスポイント
+CIFSR:APIP,"192.168.4.1“
+CIFSR:APMAC,"1a:fe:34:a2:f1:cf"
33
サーバを立てる
AT+CIPMUX=1
OK
AT+CIPSERVER=1,80
OK
同時接続OKにして、80番でサーバを立てる。
Q: 何のサーバ?
A: TCPをLISTENしてシリアルに吐くサーバ
34
ブラウザからアクセス
サーバのアドレスにブラウザからアクセスすると
シリアルコンソールにリクエストが表示される
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: 1
User-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
ここまでの話
APに接続できる
APになることもできる
TCPで接続できる
めでたしめでたし……?
36
APにつながらないケース
AP接続後にDHCPでIPアドレスを得るのに
失敗しているらしい?
37
AT+CWJAP=“****”,“****”
WIFI CONNECTED(この後10秒以上)
WIFI DISCONNECT
+CWJAP:1
FAIL
理想と現実
理想:各種デバイスが既存のオフィスインフラ
(Wifiアクセスポイント)につながって
手軽に通信できる。
現実:DHCPに失敗してつながらない。
38
次回
「Raspberry PiでWifiルータを作る」
乞うご期待!
39

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