Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
ESP8266を
はじめよう
けーいち@9SQ
吉村 圭一郎
THE IoT
READY
Wi-Fi
MODULE
Wankuma:Fukuoka#36
わんくま同盟 福岡勉強会 #36 March 26, 2016
はじめに
今回のお話の対象
•Arduino触ったことある
•触ったことないけど

これを機に挑戦したい
•乗るしかないこのビック
ウェーブにと思っている
超HOT
IoT
はじめに
というわけで
ESP8266で
オリジナルIoTデバイス
作りましょう。
超HOT
IoT
ESP8266とは?
上海のファブレス半導体メーカー Espressif Systems が
製造しているWi-Fiモジュールのチップセット及びそのシリーズ
ESP8266EX chipset
• TCP/IPプロトコルスタック搭載32bit ...
ESP8266とは?
http://l0l.org.uk/
今までにESP-xxとして
海外では販売されていた
しかし…
技適が通ってない
日本国内で堂々と使うと
法律的にアウトーっ!
※こっそり使ってもアウトです
そこに登場した救世主
http://espressif.com/en/products/wroom/
ESP-WROOM-02
2015年に販売開始された
ESP-WROOM-02は
FCC, CE, KCC, TELEC, LCIE,
WiF...
他の似たものと比較
Arduino UNO mbed (LPC1768) Raspberry Pi ESP-WROOM-02
値段 3000円くらい 6000円くらい
A+ ~ 2B
3000円~6000円
Breakout Board
600...
どこで買えるの?
秋月電子通商
•Wi-Fiモジュール ESP-WROOM-02 DIP化キット … 650円(税込)
http://akizukidenshi.com/catalog/g/gK-09758/
スイッチサイエンス
•ESP-WR...
その他に必要なもの
USBシリアル変換 … 1個持っていればOK
秋月電子通商
•FT231X USBシリアル変換モジュール … 750円(税込)
http://akizukidenshi.com/catalog/g/gK-06894/
スイッ...
どうやって使う(動かす)の?
方法 その1
ATコマンドを叩いて、Wi-Fi通信モジュールとして使う
※ATコマンド…簡単に言うとモデムを制御するコマンドだよ!エヴァじゃないよ!
方法 その2
内蔵ファームウェアを書き換えてArduinoみたい...
Arduinoについて(復習)
Arduino
電子工作プロトタイピング プラットフォーム
←IDE(開発環境)やボードを含めた総称
スケッチ
Arduino IDEで書くソースコードのこと
拡張子は .ino
Arduino言語
C/C++が...
Arduinoについて(復習)
void setup() {…}
電源ONした後に1回だけ実行される
void loop() {…}
setupの後に繰り返し実行される
シリアルモニタ
マイコンとのシリアル通信
コンパイル&書き込み
マイコンに...
ESP8266 core for Arduino
Arduino IDEにESP8266 core for Arduinoを導入する (1)
1. Preferences(環境設定)を開く
2. 追加のボードマネージャのURL の一番右のボタン...
ESP8266 core for Arduino
Arduino IDEにESP8266 core for Arduinoを導入する (2)
1. ツール → マイコンボード : “…”
2. ボードマネージャ...
3. 一番下の esp82...
ESP8266 core for Arduino
Arduino IDEにESP8266 core for Arduinoを導入する (3)
1. ツール → マイコンボード : “…”
2. Generic ESP8266 Module
3....
ピンダイアグラム
特定のピンをプルアップ/ダウン
することでモードが切り替わる
ESP-WROOM-02
GND
GND
GND
3V3
EN
IO14
IO12
IO13
IO15
IO2
IO0
IO16
TOUT
RST
IO5
TXD
...
スケッチを書き込む
UART Download Modeで電源をONにして書き込む
ESP-WROOM-02
FTDI Breakout 3.3V
GND
GND
GND
0
2
15
3V3
TX
RX
10kΩ
EN
スケッチを実行
ESP-WROOM-02
FTDI Breakout 3.3V
GND
GND
GND
0
2
15
3V3
TX
RX
10kΩ
Flash Boot Modeで電源をONにすると実行
EN
まずは「Lチカ」
従来のArduinoと同じように
サンプルスケッチ “Blink” を開く
LEDを点滅させる
ESP-WROOM-02を
UART Download Modeにして
コンパイル&書き込み
まずは「Lチカ」
接続はこんな感じ (実行時)
LEDを点滅させる
ESP-WROOM-02
FTDI Breakout 3.3V
GND
GND
GND
0
2
15
3V3
TX
RX
10kΩ
13
LED
1kΩ
EN
まずは「Lチカ」
LEDを点滅させる
http://www.aitendo.com/product/12120
aitendoの変換基板
Boot Mode
選択用の抵抗×3本
USBシリアル変換
FT232RL
RX
TX
LEDの電流制限抵...
まずは「Lチカ」
LEDを点滅させる
スイッチサイエンスの開発ボード
USBシリアル変換(FT231X)と
レギュレーター搭載なので
周辺のゴタゴタが不要
書き込み時はUSBを下にして
右のボタンを押しながら
左のボタンを押してリセットで
UA...
スマートフォンからLチカ
回路は先ほどと同じでOK
ブラウザ経由でLEDを点灯/消灯させる
およそ60行
https://github.com/9SQ/
esp8266-sample/tree/
master/led_server
スマートフォンからLチカ
ブラウザ経由でLEDを点灯/消灯させる
include, グローバル変数など
SSIDやIPアドレスを設定
root (/)にアクセスしてきた時の処理
jsを含むhtmlを返している
led (/led)にアクセスして...
スマートフォンからLチカ
ブラウザ経由でLEDを点灯/消灯させる
setup (起動時に1度だけ実行される処理)
WiFi.mode(WIFI_AP) : アクセスポイント

モードとして動作する
WiFi.softAPConfig(…) : I...
スマートフォンからLチカ
ブラウザ経由でLEDを点灯/消灯させる
勘所1:電源
電源容量が足りずにWi-Fiが掴めない
(モジュールが起動しない or Wi-Fi接続開始直後にリセットが掛かる)
実は(ほとんどの)USBシリアル変換ボードの場合…
USBシリアル変換ボード(FT232R/FT231Xなど)の
...
勘所1:電源
対処法1 (簡単)
容量の大きいコンデンサを入れる
対処法2 (簡単)
電池やバッテリーから電源供給
対処法3 (おすすめ)
3端子レギュレータから電源供給
あまりおすすめできない
USBシリアル変換からの3.3Vは
接続しないよ...
スマートフォンから気温チェック
http://akizukidenshi.com/catalog/g/gM-08775/
ブラウザで気温/湿度を見る
I2C接続 気温・湿度センサー HDC1000 … 680円(税込)
ESP-WROOM-02...
スマートフォンから気温チェック
ブラウザで気温/湿度を見る
およそ100行
https://github.com/9SQ/
esp8266-sample/tree/
master/hdc1000
スマートフォンから気温チェック
ブラウザで気温/湿度を見る
include, グローバル変数など
下記でタイマーを使用するためにESP8266の
user_interface.hをinclude
タイマー関連
HDC1000からの定期読み込みを...
スマートフォンから気温チェック
ブラウザで気温/湿度を見る
setup (起動時に1度だけ実行される処理)
Wire.begin(12, 14) : ピン12をSDA, 14をSCLで I2C接続
initHDC1000() : HDC1000...
スマートフォンから気温チェック
ブラウザで気温/湿度を見る
実際にスマートフォンで確認
(度と%を忘れてた…)
HDC1000とESP-WROOM-02を
I2C(2wire)で接続
void loop() {
server.handleClient();
if(led_sw) {
digitalWrite(LED, HIGH);
delay(500); //500ミリ秒点灯
digitalWrite(LED, LOW);
...
void loop() {
server.handleClient();
if (led_sw_on) {
led_blink_arm(500);
led_sw_on = false;
}
if (led_sw_off) {
led_blink_...
接続はこんな感じ (実行時)
ESP-WROOM-02
FTDI Breakout 3.3V
GND
GND
GND
0
2
15
3V3
TX
RX
10kΩ
12
LED
1kΩ
ボタンを押したらXXする
外部のサーバにHTTP GET/P...
ボタンを押したらXXする
外部のサーバにHTTP GET/POSTする
およそ180行 https://github.com/9SQ/esp8266-Yo-button
ボタンを押したらXXする
外部のサーバにHTTP GET/POSTする
主要な部分だけ説明
httpPost
普通にHTTPリクエスト(ヘッダ&ボディ)
を組み立てる
レスポンスが帰ってきたら、¥r¥n¥r¥n
を読み飛ばした後のbodyをre...
ボタンを押したらXXする
外部のサーバにHTTP GET/POSTする
loop
スイッチの状態を取得
パラメータを準備
HTTP POSTし、JSON形式で返されるレスポンス
をパース
結果がsuccessだったらLEDを短く3回点滅
結果が...
こんなのモノ作ってみました
✓押すとYoを送るボタン
✓部屋の気温や湿度、気圧を監視する
✓ドアが開いたらプッシュ通知
✓トイレの温水便座をスマホで操作
こんなのモノ作ってみました
トイレの温水便座をスマホで操作
通称 RESTful トイレ
ハードウェア構成
• ESP-WROOM-02 (with オリジナル基板)
• 赤外線LED
ケース
3Dプリンタで製作 基板
スイッチサイエンスPCB
リモコンからコードを取得
Arduino UNOに赤外線リモコン受信モジュールを接続
PL-IRM2161-XD1
Arduino-IRremote
https://github.com/z3t0/Arduino-IRremote
exampl...
リモコンからコードを取得
トイレのリモコンが
送信している信号をGET
流す(小)流す(大)
停止1 停止2
やわらか1 やわらか2
送信開始リーダ部
約6ms, 2.9ms
データ部
1.5ms=1, 0.5ms=0が続く
流す以外のコマンド...
プログラムを書く&書き込む
1. 無線LAN接続する
2. サーバ起動
3. リクエストを受ける
4. 赤外線送信
ESP8266 core for Arduino
https://github.com/esp8266/Arduino
ESP-...
設置
http://toilet.local/
HTML(bootstrap3)+JavaScript
ボタンを押すとXMLHttpRequestで

各コマンドを叩く
mDNS対応ブラウザ でアクセス可能
(Androidは…)
toilet.local/washlet
おしりを洗浄したいとき
curl -X POST -d 'c=rear' http://toilet.local/washlet
洗浄を止めたいとき
curl -X POST -d 'c=stop' h...
toilet.local/washlet
「大」を流すとき
curl -X DELETE -d 'c=big' http://toilet.local/washlet


®
ウォシュレット,WashletはTOTOの登録商標です
exam
p...
Androidアプリ作りました。
Android 5.0~
✔通知領域に常駐
他のアプリ起動中もシームレスに
おしりの洗浄が可能
こんなのモノ作ってみました
その他、作ったものを持ってきているので
見たい方は声をかけてください
もちろん質問などもOK!
ご静聴ありがとうございました!
番外編
(後日追加)
PCB製造を海外に発注してみた
~2015年度 簡易版~
これ以降のスライドは、当日の会場で質問された
プリント基板製造サービスについてのお話です。
プリント基板製造サービス比較
条件:50mm*50mm / 両面(2層)基板 / 1oz, 35μm銅箔
   1.6mm厚 / はんだレベラー / レジスト色 : 緑
国内P社 国内S社 海外F社 海外E社
10枚作る 約2万5千円 約140...
ちゃんと届く?品質は?
海外E社の場合
1回目(2種40枚):11/10発注→11/16着 (7日)
2回目(1種10枚):1/9発注→1/18着 (10日)
3回目(2種30枚+ステンシル):3/21発注→3/30着 (10日)
・今まで注文...
プリント基板製造サービスについての詳細は
改めてブログ記事 or スライドにします(たぶん)
ブログ:http://eleclog.quitsq.com/
Upcoming SlideShare
Loading in …5
×

ESP8266をはじめよう

9,308 views

Published on

2016年3月26日に開催された、わんくま同盟 福岡勉強会 #36で話した「ESP8266をはじめよう」のスライドです。

Published in: Technology
  • Hello! I do no use writing service very often, only when I really have problems. But this one, I like best of all. The team of writers operates very quickly. It's called ⇒ www.WritePaper.info ⇐ Hope this helps!
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Hi there! I just wanted to share a list of sites that helped me a lot during my studies: .................................................................................................................................... www.EssayWrite.best - Write an essay .................................................................................................................................... www.LitReview.xyz - Summary of books .................................................................................................................................... www.Coursework.best - Online coursework .................................................................................................................................... www.Dissertations.me - proquest dissertations .................................................................................................................................... www.ReMovie.club - Movies reviews .................................................................................................................................... www.WebSlides.vip - Best powerpoint presentations .................................................................................................................................... www.WritePaper.info - Write a research paper .................................................................................................................................... www.EddyHelp.com - Homework help online .................................................................................................................................... www.MyResumeHelp.net - Professional resume writing service .................................................................................................................................. www.HelpWriting.net - Help with writing any papers ......................................................................................................................................... Save so as not to lose
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Dating for everyone is here: ❤❤❤ http://bit.ly/2F7hN3u ❤❤❤
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Sex in your area is here: ❶❶❶ http://bit.ly/2F7hN3u ❶❶❶
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

ESP8266をはじめよう

  1. 1. ESP8266を はじめよう けーいち@9SQ 吉村 圭一郎 THE IoT READY Wi-Fi MODULE Wankuma:Fukuoka#36 わんくま同盟 福岡勉強会 #36 March 26, 2016
  2. 2. はじめに 今回のお話の対象 •Arduino触ったことある •触ったことないけど
 これを機に挑戦したい •乗るしかないこのビック ウェーブにと思っている 超HOT IoT
  3. 3. はじめに というわけで ESP8266で オリジナルIoTデバイス 作りましょう。 超HOT IoT
  4. 4. ESP8266とは? 上海のファブレス半導体メーカー Espressif Systems が 製造しているWi-Fiモジュールのチップセット及びそのシリーズ ESP8266EX chipset • TCP/IPプロトコルスタック搭載32bit MCU • アーキテクチャ : RISC (Diamond Standard 106Micro Core) • クロック : 80MHz • RAM : 64KB(命令用), 96KB(データ) • Wi-Fi STA, AP, STA+AP • IEEE 802.11b/g/n, WPA/WPA2 • 10-bit ADC with HSPI, SDIO, UART, PWM, I2C, and I2S
  5. 5. ESP8266とは? http://l0l.org.uk/ 今までにESP-xxとして 海外では販売されていた しかし… 技適が通ってない 日本国内で堂々と使うと 法律的にアウトーっ! ※こっそり使ってもアウトです
  6. 6. そこに登場した救世主 http://espressif.com/en/products/wroom/ ESP-WROOM-02 2015年に販売開始された ESP-WROOM-02は FCC, CE, KCC, TELEC, LCIE, WiFi Alliance Certification 技適通ってる! 日本国内で問題なく使える ので、これを使ってみよう
  7. 7. 他の似たものと比較 Arduino UNO mbed (LPC1768) Raspberry Pi ESP-WROOM-02 値段 3000円くらい 6000円くらい A+ ~ 2B 3000円~6000円 Breakout Board 600~2500円 I/O (GPIO) 20 26 17 11 機能 UART/I2C/SPI/ PWM +シールドで拡張 UART/I2C/SPI/ PWM/CAN/LAN/ USBなど UART/I2C/SPI/ PWM/LAN/USB ソフトで色々 UART/I2C/I2S/ SPI/SDIO/PWM/ IR/Wi-Fi ポテンシャル (大雑把に) ふつう ちょっとつよい 超つよい つよい 難しい? かんたん ちょっと難しい ふつう わりとかんたん 夢広がる? お勉強用+α 使いこなせたら 広がりまくり えっ、この値段… いろいろな物に 組み込んでネット に繋ぎたくなる! ※個人の感想です
  8. 8. どこで買えるの? 秋月電子通商 •Wi-Fiモジュール ESP-WROOM-02 DIP化キット … 650円(税込) http://akizukidenshi.com/catalog/g/gK-09758/ スイッチサイエンス •ESP-WROOM-02ピッチ変換済みモジュール … 909円(税込) https://www.switch-science.com/catalog/2347/ •ESP-WROOM-02開発ボード … 2160円(税込) https://www.switch-science.com/catalog/2500/ などなど… 別途 USBシリアル変換やモード 切り替え用の抵抗(後述)が不要
  9. 9. その他に必要なもの USBシリアル変換 … 1個持っていればOK 秋月電子通商 •FT231X USBシリアル変換モジュール … 750円(税込) http://akizukidenshi.com/catalog/g/gK-06894/ スイッチサイエンス •FT232RL搭載小型USB-シリアルアダプタ 3.3V … 1868円(税込) https://www.switch-science.com/catalog/343/
  10. 10. どうやって使う(動かす)の? 方法 その1 ATコマンドを叩いて、Wi-Fi通信モジュールとして使う ※ATコマンド…簡単に言うとモデムを制御するコマンドだよ!エヴァじゃないよ! 方法 その2 内蔵ファームウェアを書き換えてArduinoみたいに使う ➡Arduino IDEを使って開発&書き込みできます 今回は単体でArduinoっぽく使う方法を説明します
  11. 11. Arduinoについて(復習) Arduino 電子工作プロトタイピング プラットフォーム ←IDE(開発環境)やボードを含めた総称 スケッチ Arduino IDEで書くソースコードのこと 拡張子は .ino Arduino言語 C/C++がベースになっている
  12. 12. Arduinoについて(復習) void setup() {…} 電源ONした後に1回だけ実行される void loop() {…} setupの後に繰り返し実行される シリアルモニタ マイコンとのシリアル通信 コンパイル&書き込み マイコンに書き込むコンパイル スケッチをマイコンが 実行できる形に変換する int main(void) { setup(); while(1) { loop(); } return 0; } 実行時の動作は ←こんなイメージ
  13. 13. ESP8266 core for Arduino Arduino IDEにESP8266 core for Arduinoを導入する (1) 1. Preferences(環境設定)を開く 2. 追加のボードマネージャのURL の一番右のボタンをクリック 3. http://arduino.esp8266.com/stable/package_esp8266com_index.json をコピペ 4. OKをクリック 5. OKをクリックで環境設定を閉じる 2 3 4 5 これでボードマネージャで インストール可能になった 次へ続く 1
  14. 14. ESP8266 core for Arduino Arduino IDEにESP8266 core for Arduinoを導入する (2) 1. ツール → マイコンボード : “…” 2. ボードマネージャ... 3. 一番下の esp8266 by ESP8266 Community を インストール 3 1 2
  15. 15. ESP8266 core for Arduino Arduino IDEにESP8266 core for Arduinoを導入する (3) 1. ツール → マイコンボード : “…” 2. Generic ESP8266 Module 3. Flash Mode : QIO, Flash Size : 4M (3M SPIFFS) にする (以下のように) 3 1 2
  16. 16. ピンダイアグラム 特定のピンをプルアップ/ダウン することでモードが切り替わる ESP-WROOM-02 GND GND GND 3V3 EN IO14 IO12 IO13 IO15 IO2 IO0 IO16 TOUT RST IO5 TXD RXD IO4 GPIO14 GPIO12 GPIO13 GPIO15 GPIO2 GPIO0 GPIO16 ADC GPIO5 GPIO1 GPIO3 GPIO4 4 5 16 12 14 13 U0TXD U0RXD U1TXD CLK MISO MOSI CS SCL SDA PWM-R PWM-B PWM-G 15 2 0 3 1 I2C SPI PWM UART ADC GPIO Arduino Power GND Pin Name UART Download ModeFlash Boot Mode 3.3V GND 3.3V GND IO15 IO2 IO0 IO15 IO2 IO0
  17. 17. スケッチを書き込む UART Download Modeで電源をONにして書き込む ESP-WROOM-02 FTDI Breakout 3.3V GND GND GND 0 2 15 3V3 TX RX 10kΩ EN
  18. 18. スケッチを実行 ESP-WROOM-02 FTDI Breakout 3.3V GND GND GND 0 2 15 3V3 TX RX 10kΩ Flash Boot Modeで電源をONにすると実行 EN
  19. 19. まずは「Lチカ」 従来のArduinoと同じように サンプルスケッチ “Blink” を開く LEDを点滅させる ESP-WROOM-02を UART Download Modeにして コンパイル&書き込み
  20. 20. まずは「Lチカ」 接続はこんな感じ (実行時) LEDを点滅させる ESP-WROOM-02 FTDI Breakout 3.3V GND GND GND 0 2 15 3V3 TX RX 10kΩ 13 LED 1kΩ EN
  21. 21. まずは「Lチカ」 LEDを点滅させる http://www.aitendo.com/product/12120 aitendoの変換基板 Boot Mode 選択用の抵抗×3本 USBシリアル変換 FT232RL RX TX LEDの電流制限抵抗 5mm 赤色LED
  22. 22. まずは「Lチカ」 LEDを点滅させる スイッチサイエンスの開発ボード USBシリアル変換(FT231X)と レギュレーター搭載なので 周辺のゴタゴタが不要 書き込み時はUSBを下にして 右のボタンを押しながら 左のボタンを押してリセットで UART Download Modeになる
  23. 23. スマートフォンからLチカ 回路は先ほどと同じでOK ブラウザ経由でLEDを点灯/消灯させる およそ60行 https://github.com/9SQ/ esp8266-sample/tree/ master/led_server
  24. 24. スマートフォンからLチカ ブラウザ経由でLEDを点灯/消灯させる include, グローバル変数など SSIDやIPアドレスを設定 root (/)にアクセスしてきた時の処理 jsを含むhtmlを返している led (/led)にアクセスしてきた時の処理 HTTP POSTで送られてくる パラメータに応じてLEDをON/OFF
  25. 25. スマートフォンからLチカ ブラウザ経由でLEDを点灯/消灯させる setup (起動時に1度だけ実行される処理) WiFi.mode(WIFI_AP) : アクセスポイント
 モードとして動作する WiFi.softAPConfig(…) : IPアドレスを設定 WiFi.softAP(SSID) : SSIDを設定 dnsServer.start(…) : DNSサーバ起動 webServer.on(…) : handleをここで登録 webServer.begin() : Webサーバ起動 loop (setup後に繰り返し実行される処理) DNSとWeb serverへのリクエストを待つ
  26. 26. スマートフォンからLチカ ブラウザ経由でLEDを点灯/消灯させる
  27. 27. 勘所1:電源 電源容量が足りずにWi-Fiが掴めない (モジュールが起動しない or Wi-Fi接続開始直後にリセットが掛かる) 実は(ほとんどの)USBシリアル変換ボードの場合… USBシリアル変換ボード(FT232R/FT231Xなど)の 内蔵3端子レギュレータは50mA MAXくらい RF起動時に瞬間的に大電流 & 通信時も平均で100~300mAくらい 電源を増強しなくちゃ! 圧倒的な電源容量足りなさ感
  28. 28. 勘所1:電源 対処法1 (簡単) 容量の大きいコンデンサを入れる 対処法2 (簡単) 電池やバッテリーから電源供給 対処法3 (おすすめ) 3端子レギュレータから電源供給 あまりおすすめできない USBシリアル変換からの3.3Vは 接続しないように (GNDだけ接続) 他にも色々センサー繋げるなら 500mAくらいあると余裕で安心 3V3とGNDの間に
  29. 29. スマートフォンから気温チェック http://akizukidenshi.com/catalog/g/gM-08775/ ブラウザで気温/湿度を見る I2C接続 気温・湿度センサー HDC1000 … 680円(税込) ESP-WROOM-02 FTDI Breakout 3.3V GND GND GND 0 2 15 3V3 TX RX 10kΩ 12 14 電源 (レギュレータ, バッテリー等) EN
  30. 30. スマートフォンから気温チェック ブラウザで気温/湿度を見る およそ100行 https://github.com/9SQ/ esp8266-sample/tree/ master/hdc1000
  31. 31. スマートフォンから気温チェック ブラウザで気温/湿度を見る include, グローバル変数など 下記でタイマーを使用するためにESP8266の user_interface.hをinclude タイマー関連 HDC1000からの定期読み込みを delayではなくタイマーで実現するため root (/)にアクセスしてきた時の処理 温度や湿度をグローバル変数から取り出して 変換式で人間が読み取り可能な値に変換, 表示
  32. 32. スマートフォンから気温チェック ブラウザで気温/湿度を見る setup (起動時に1度だけ実行される処理) Wire.begin(12, 14) : ピン12をSDA, 14をSCLで I2C接続 initHDC1000() : HDC1000を初期化 timeCountArm(1000) : 1000ミリ秒でタイマーセット loop (setup後に繰り返し実行される処理) 10秒ごとにreadHDC1000()を実行 readHDC1000 (HDC1000から値を読み込む) 14bitのデータを上位, 下位で分割して読み込み, ビットシフト して結合 initHDC1000 (HDC1000を初期化) データシートに従って、HDC1000に対して初期化を実行
  33. 33. スマートフォンから気温チェック ブラウザで気温/湿度を見る 実際にスマートフォンで確認 (度と%を忘れてた…) HDC1000とESP-WROOM-02を I2C(2wire)で接続
  34. 34. void loop() { server.handleClient(); if(led_sw) { digitalWrite(LED, HIGH); delay(500); //500ミリ秒点灯 digitalWrite(LED, LOW); delay(500); //500ミリ秒消灯 } } 勘所2:タイマー delay()は全ての処理を止めてしまう void handleControl() { if (server.method() == HTTP_GET) { if (server.arg("c") == "on") { led_sw = true; } else if (server.arg("c") == "off") { led_sw = false; } String s = "<html>…</html>"; server.send(200, "text/html", s); } } LEDの1点滅中は サーバが応答しない! 注:解説用なので色々と大幅に省いています 例:スマホからLEDの点滅をON/OFFできるものを作りたい
  35. 35. void loop() { server.handleClient(); if (led_sw_on) { led_blink_arm(500); led_sw_on = false; } if (led_sw_off) { led_blink_disarm(); led_sw_off = false; } if (led_flag) { digitalWrite(LED, HIGH); } else { digitalWrite(LED, LOW); } yield(); } 勘所2:タイマー void change_led_flag(void *pArg) { if (led_flag) { led_flag = false; } else { led_flag = true; } } void led_blink_arm(int ms) { os_timer_setfn(&blink_timer, change_led_flag, NULL); os_timer_arm(&blink_timer, ms, true); } void led_blink_disarm() { os_timer_disarm(&blink_timer); } 注:解説用なので色々と大幅に省いています #ifdef ESP8266 extern "C" { #include "user_interface.h" } #endif os_timer_t blink_timer; 点滅ONになった時にタイマー設定、OFFで解除するように handleではhttpリクエストに応じて led_sw_on = true / led_sw_off = true とするようなコードを書く (現在のON/OFF状況も別途保持必要)
  36. 36. 接続はこんな感じ (実行時) ESP-WROOM-02 FTDI Breakout 3.3V GND GND GND 0 2 15 3V3 TX RX 10kΩ 12 LED 1kΩ ボタンを押したらXXする 外部のサーバにHTTP GET/POSTする 5 スイッチ 電源 (レギュレータ, バッテリー等) EN
  37. 37. ボタンを押したらXXする 外部のサーバにHTTP GET/POSTする およそ180行 https://github.com/9SQ/esp8266-Yo-button
  38. 38. ボタンを押したらXXする 外部のサーバにHTTP GET/POSTする 主要な部分だけ説明 httpPost 普通にHTTPリクエスト(ヘッダ&ボディ) を組み立てる レスポンスが帰ってきたら、¥r¥n¥r¥n を読み飛ばした後のbodyをresultに格納
  39. 39. ボタンを押したらXXする 外部のサーバにHTTP GET/POSTする loop スイッチの状態を取得 パラメータを準備 HTTP POSTし、JSON形式で返されるレスポンス をパース 結果がsuccessだったらLEDを短く3回点滅 結果がそれ以外だったらLEDを長く2回点滅 主要な部分だけ説明
  40. 40. こんなのモノ作ってみました ✓押すとYoを送るボタン ✓部屋の気温や湿度、気圧を監視する ✓ドアが開いたらプッシュ通知 ✓トイレの温水便座をスマホで操作
  41. 41. こんなのモノ作ってみました トイレの温水便座をスマホで操作 通称 RESTful トイレ
  42. 42. ハードウェア構成 • ESP-WROOM-02 (with オリジナル基板) • 赤外線LED ケース 3Dプリンタで製作 基板 スイッチサイエンスPCB
  43. 43. リモコンからコードを取得 Arduino UNOに赤外線リモコン受信モジュールを接続 PL-IRM2161-XD1 Arduino-IRremote https://github.com/z3t0/Arduino-IRremote example/IRrecvDumpを書き込んで シリアルモニタで取得
  44. 44. リモコンからコードを取得 トイレのリモコンが 送信している信号をGET 流す(小)流す(大) 停止1 停止2 やわらか1 やわらか2 送信開始リーダ部 約6ms, 2.9ms データ部 1.5ms=1, 0.5ms=0が続く 流す以外のコマンドは 2回に分けて送信されている
  45. 45. プログラムを書く&書き込む 1. 無線LAN接続する 2. サーバ起動 3. リクエストを受ける 4. 赤外線送信 ESP8266 core for Arduino https://github.com/esp8266/Arduino ESP-WROOM-02を単体で Arduinoのように使える IRremote ESP8266 https://github.com/markszabo/IRremoteESP8266 38kHzで変調して赤外線LEDを 点滅させるライブラリ トータル 150行くらい
  46. 46. 設置
  47. 47. http://toilet.local/ HTML(bootstrap3)+JavaScript ボタンを押すとXMLHttpRequestで
 各コマンドを叩く mDNS対応ブラウザ でアクセス可能 (Androidは…)
  48. 48. toilet.local/washlet おしりを洗浄したいとき curl -X POST -d 'c=rear' http://toilet.local/washlet 洗浄を止めたいとき curl -X POST -d 'c=stop' http://toilet.local/washlet
 exam ple ® ウォシュレット,WashletはTOTOの登録商標です
  49. 49. toilet.local/washlet 「大」を流すとき curl -X DELETE -d 'c=big' http://toilet.local/washlet 
 ® ウォシュレット,WashletはTOTOの登録商標です exam ple
  50. 50. Androidアプリ作りました。 Android 5.0~ ✔通知領域に常駐 他のアプリ起動中もシームレスに おしりの洗浄が可能
  51. 51. こんなのモノ作ってみました その他、作ったものを持ってきているので 見たい方は声をかけてください もちろん質問などもOK! ご静聴ありがとうございました!
  52. 52. 番外編 (後日追加) PCB製造を海外に発注してみた ~2015年度 簡易版~ これ以降のスライドは、当日の会場で質問された プリント基板製造サービスについてのお話です。
  53. 53. プリント基板製造サービス比較 条件:50mm*50mm / 両面(2層)基板 / 1oz, 35μm銅箔    1.6mm厚 / はんだレベラー / レジスト色 : 緑 国内P社 国内S社 海外F社 海外E社 10枚作る 約2万5千円 約1400円 9.99ドル 100枚作る 約4万円 約1万円 約75ドル 99.9ドル レジストを 黒色に +1000~ 3000円 +約3000円 +20ドル +0ドル 送料 込み 1080円 約5~20ドル
 (重さと配送方法で異なる) サポート 日本語 日本語 英語
  54. 54. ちゃんと届く?品質は? 海外E社の場合 1回目(2種40枚):11/10発注→11/16着 (7日) 2回目(1種10枚):1/9発注→1/18着 (10日) 3回目(2種30枚+ステンシル):3/21発注→3/30着 (10日) ・今まで注文した分で不良はゼロ ・国内製造と比較して大差ない   ※個人の感想です。   高周波回路とかアナログ回路、オーディオ向け   の場合に違いが出る/出ないとかは分からない ←シルク印刷とてもキレイ
  55. 55. プリント基板製造サービスについての詳細は 改めてブログ記事 or スライドにします(たぶん) ブログ:http://eleclog.quitsq.com/

×