Upload
nishio
View
2.603
Download
5
Embed Size (px)
Citation preview
Wifiにつながるデバイス
( ESP8266EX
ESP-WROOM-02ESPr Developer など)
2016-07-15サイボウズ・ラボ
西尾泰和
今回の目的
Raspberry Piを使えばWifi接続も簡単だがなにぶんサイズや電力消費が大きいのでもっとコンパクトなデバイスを使いたい。
そういうニーズでよく使われているデバイス(ESP-WROOM-02とか)
について、用語の整理をしつつ解説する。
2
ESP8266EXEspressif 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+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
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
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ヘッダを送信するとレスポンスが表示される
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: 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
ここまでの話
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