1: 2022-10-01 (土) 09:25:26 yuji Deleted an attach file: d1_v2.0.0.pdf at 2022-10-01 (土) 10:13:17, Deleted an attach file: esp8266-technical_reference_en.pdf at 2022-10-01 (土) 10:13:30 |
|||
---|---|---|---|
Line 1: | Line 1: | ||
+ | * WeMos D1 [#r801e7a3] | ||
+ | &ref(wemos d1.png,,50%);WeMos D1((改良版はWeMos D1 R2))は,[[中国WEMOS社>https://www.wemos.cc/]]からリリースされていたArduino UNO R3形状の小型ボード。~ | ||
+ | SoCに[[Espressif Systems社>https://www.espressif.com/]]の[[ESP8266EX>https://www.espressif.com/en/products/modules/esp8266]]が使われている。~ | ||
+ | #ref(esp8266.png,,30%) | ||
+ | |||
+ | ホストPCとはUSBで接続して仮想シリアルポートとして機能するCH340 USBシリアル変換チップが実装されている。~ | ||
+ | |||
+ | このWeMos D1の互換ボードの[[HiLetgo OTA WeMos D1>https://amzn.to/3Rnozo7]]((HiletGO製のはもう販売されていないのでこれは似たようにボード))が非常に安価でAmazonで500円程度で購入できた :) | ||
+ | |||
+ | 以下のような特徴がある。~ | ||
+ | - CPUチップにWifi機能を統合~ | ||
+ | - 動作温度が広い~ | ||
+ | ー40°C~+125°Cに対応。 | ||
+ | - 160MHzのシステムクロックで高速動作~ | ||
+ | - 4MB Flash Memoryの搭載~ | ||
+ | - 11個のデジタル入出力ピン~ | ||
+ | すべてのピンは,割り込み/PWM/I2C/1線式シリアルをサポート(D0を除く)。~ | ||
+ | - 10bit ADC x 1~ | ||
+ | - WDT内蔵~ | ||
+ | - MicroUSBコネクタ~ | ||
+ | - 電源入力ジャック DC9-24V~ | ||
+ | - Arduino互換 | ||
+ | - nodemcu互換 | ||
+ | |||
+ | 残念ながらWeMos D1クローンボードのHiLetgo OTA WeMos D1は,技術基準適合していない(技適マーク無し)ので常用は出来ない。~ | ||
+ | 改良版のボードにWeMos D1 R2(SoCモジュールにアンテナを改良したESP-12F搭載)がある。~ | ||
+ | |||
+ | * スペック [#f55144e9] | ||
+ | |CPU |ESP-8266EX(Cadence Tensilica LX106 32bit Processor)| | ||
+ | |CPU Module |ESP-12E| | ||
+ | |クロックスピード |80MHz/160MHz| | ||
+ | |WLAN |IEEE 802.11 b/g/n, RTOS/Wifi stack内蔵| | ||
+ | |命令/データ |64KB SRAM/96KB DRAM| | ||
+ | |Flash Memory |4MB| | ||
+ | |ボード動作電圧 |DC 3.3V| | ||
+ | |デジタルI/O |11(SPI, I2C, I2S)| | ||
+ | |アナログ入力 |1 | | ||
+ | |電源 |Jack 9-24VDC/USB MicroB| | ||
+ | |サイズ |68.6mm x 53.4mm(Arduino Unoと同サイズ)| | ||
+ | |重量 |25g| | ||
+ | |||
+ | #lsx | ||
+ | |||
+ | * コネクタ [#l6d45715] | ||
+ | WeMos D1ボードのコネクタ。~ | ||
+ | |BGCOLOR(Gray):DIGITAL1 headerピン|BGCOLOR(Gray):ファンクション|BGCOLOR(Gray):ESP-8266| | ||
+ | |RX |RXD, IO |RXD/GPIO3 | | ||
+ | |TX |TXD, IO |TXD/GPIO1 | | ||
+ | |D2 |IO |GPIO16 | | ||
+ | |D3 |IO, SCL |GPIO5 | | ||
+ | |D4 |IO, SDA |GPIO4 | | ||
+ | |D5 |IO, SCK, ONB_LED |GPIO14 | | ||
+ | |D6 |IO, MISO |GPIO12 | | ||
+ | |D7 |IO, MOSI |GPIO13 | | ||
+ | |BGCOLOR(Gray):DIGITAL2 header ピン|BGCOLOR(Gray):ファンクション|BGCOLOR(Gray):ESP-8266| | ||
+ | |D8 |IO, 10k Pull-up |GPIO0 | | ||
+ | |D9 |IO, 10k Pull-up, TX1, ONB_LED2|GPIO2 | | ||
+ | |D10 |IO, 10k Pull-down, SS |GPIO15 | | ||
+ | |D11 |IO, MOSI |GPIO13 | | ||
+ | |D12 |IO, MISO |GPIO12 | | ||
+ | |D13 |IO, SCK, ONB_LED |GPIO14 | | ||
+ | |GND |GND |GND | | ||
+ | |- |- |- | | ||
+ | |D14 |IO, SDA |GPIO4 | | ||
+ | |D15 |IO, SCL |GPIO5 | | ||
+ | |BGCOLOR(Gray):ANALOG header ピン|BGCOLOR(Gray):ファンクション|BGCOLOR(Gray):ESP-8266| | ||
+ | |A0 |Analog input, max 3.3V, TOUT|A0 | | ||
+ | |- |- |- | | ||
+ | |- |- |- | | ||
+ | |- |- |- | | ||
+ | |- |- |- | | ||
+ | |- |- |- | | ||
+ | |BGCOLOR(Gray):Power header ピン|BGCOLOR(Gray):ファンクション|BGCOLOR(Gray):ESP-8266| | ||
+ | |- |- |- | | ||
+ | |5V |5V |- | | ||
+ | |RESET|RESET |RST | | ||
+ | |3V3 |3.3V |3.3V | | ||
+ | |5V |5V |- | | ||
+ | |GND |GND |GND | | ||
+ | |GND |GND |GND | | ||
+ | |VIN |External Power |- | | ||
+ | |||
+ | ''J1 USB Micro B''~ | ||
+ | |1|VBUS | | ||
+ | |2|D- | | ||
+ | |3|D+ | | ||
+ | |4|ID | | ||
+ | |5|GND | | ||
+ | |Shell|Shield| | ||
+ | |||
+ | ''J2 Power Jack''~ | ||
+ | |1|GND| | ||
+ | |2|PWRIN| | ||
+ | |3|GND| | ||
+ | |||
+ | - 全IOピン:割り込み/PWM/I2C/1-wireシリアル対応(D2除く)~ | ||
+ | - 全IOピン:3.3V系~ | ||
+ | - ドライブ電流(ソース・シンク):12mA~ | ||
+ | - オンボードLEDはD5(GPIO14)に接続されている~ | ||
+ | - D8(GPIO0),D9(GPIO2)は10Kでプルアップされている~ | ||
+ | - D10(GPIO15)は10Kでプルダウンされている~ | ||
+ | - アナログ入力:入力範囲0〜1V(220Kと100Kで分圧し100K側でADCに接続されている)~ | ||
+ | - いくつかのコネクタピンは別のピンと接続されている(Arduino Unoに合わせるため?)~ | ||
+ | - SoCモジュールのオンボードLEDは,D9=2に接続されている。~ | ||
+ | |||
+ | * ソフトウェア [#f82d07d1] | ||
+ | このボードのソフトウェア開発にはいくつかの環境が利用できる。 | ||
+ | - Arduino IDE~ | ||
+ | Ardduino Unoなどで使用するArduino IDEが開発環境に使用できる。~ | ||
+ | ボードマネージャーでハードウェアパッケージをインストールすると,ToolChainもインストールされる。~ | ||
+ | - ESP8266_RTOS_SDK~ | ||
+ | SoCメーカーのEspressif Systems社からリリースされている開発環境。~ | ||
+ | ビルドするためのToolChainも用意されている。~ | ||
+ | - MicroPython~ | ||
+ | MicroPythonはPython 3互換とランタイム環境。~ | ||
+ | [[MicroPythonのダウンロードページ>http://micropython.org/download/#esp8266]]からダウンロードしてボードに書き込めば使用できる。~ | ||
+ | //- NodeMCU~ | ||
+ | //Lua(Node.jsに似ている)ベースとそのランタイム環境。~ | ||
+ | |||
+ | これ以外にも多くの開発環境がある。 | ||
+ | |||
+ | ** 仮想COMドライバーのインストール [#y2948b5b] | ||
+ | 中華製CH340のデバイスドライバーのインストールが必要。Windows10だと標準でinstallされるので必要ない。~ | ||
+ | Windows 7や標準ドライバーが入っていない場合は,この&ref(ch341ser.zip,,デバイスドライバー);をインストールする。~ | ||
+ | |||
+ | ** Arduino IDE [#nff0b1a9] | ||
+ | Arduino IDEは,[[こちらのページ>/開発/AVR/Arduino]]のようにしてインストールできる。 | ||
+ | |||
+ | *** ハードウェアパッケージのインストール [#l51e57d4] | ||
+ | ハードウェアパッケージをインストールする方法は2通りある。~ | ||
+ | gitを使う方法と Arduino IDEのマネージャーを使用する方法。 | ||
+ | |||
+ | - gitを使用する場合~ | ||
+ | > cd <arduino IDEインストール>\hardware | ||
+ | > md esp8266com | ||
+ | > cd esp8266com | ||
+ | > git clone https://github.com/esp8266/Arduino.git esp8266 | ||
+ | https://github.com/wemos/Arduino_D1.git が消滅しているので,代わりに上記からcloneする。~ | ||
+ | ~ | ||
+ | これで,以下のようなディレクトリ構成になる。 | ||
+ | ─┬ Arduino | ||
+ | └─┬ hardware | ||
+ | └─┬ esp8266com | ||
+ | └─┬ esp8266 | ||
+ | ├── bootloaders | ||
+ | ├── cores | ||
+ | ├── doc | ||
+ | ├── libraries | ||
+ | ├── package | ||
+ | ├── tests | ||
+ | ├── tools | ||
+ | ├── variants | ||
+ | ├── platform.txt | ||
+ | ├── programmers.txt | ||
+ | ├── README.md | ||
+ | ├── boards.txt | ||
+ | ├── LICENSE | ||
+ | バイナリツールをダウンロード(要Python2.7)~ | ||
+ | > cd esp8266/tools | ||
+ | > python get.py | ||
+ | Arduino IDEを再起動する。~ | ||
+ | - Arduino IDEのボードマネージャーを使用する場合 | ||
+ | Arduino IDEを起動し,ファイル>環境設定>追加のボードマネージャに, | ||
+ | http://arduino.esp8266.com/stable/package_esp8266com_index.json | ||
+ | を,追加する。~ | ||
+ | ~ | ||
+ | ツール>ボード>ボードマネージャーから,「esp8266 by ESP8266 Community」を選んで,最新バージョンをインストールする。~ | ||
+ | ~ | ||
+ | インストールが終了したら,Arduino IDEを再起動する。~ | ||
+ | *** ボードの設定 [#hacc8d02] | ||
+ | ハードウェアパッケージがインストールできたら,Wemos D1ボードを使用する場合は,以下のようにする。 | ||
+ | |||
+ | - ボード~ | ||
+ | WeMos D1 R1を選択する。~ | ||
+ | - CPU周波数~ | ||
+ | 80MHzまたは160MHz(どちらでもOK)~ | ||
+ | - Flashサイズ~ | ||
+ | 4M(FS:2MB OTA:~1019KB)を選択する。~ | ||
+ | 4M(FS:3MB OTA:~512KB)にすると,プログラムエリアを3MBに出来る。~ | ||
+ | - アップロードスピード~ | ||
+ | 921600bpsを選択する。(うまくいかない場合は,115200bpsにする)~ | ||
+ | - IWIP Variant~ | ||
+ | V1.4 Higher Bandwidhを選択する。~ | ||
+ | - シリアルポート~ | ||
+ | 接続されたCOMxを選択する。~ | ||
+ | |||
+ | ** ESP8266_RTOS_SDK [#afe3d166] | ||
+ | SoCメーカーの[[Espressif Systems社>https://www.espressif.com/en/products/socs/esp8266]]から,[[ESP8266_RTOS_SDK>https://github.com/espressif/ESP8266_RTOS_SDK]]がリリースされている。~ | ||
+ | |||
+ | ダウンロードは,上記のGitHubからダウンロードできる。 | ||
+ | また,このESP8266_RTOS_SDKをビルドするには,[[Windows用のToolChain>https://dl.espressif.com/dl/xtensa-lx106-elf-gcc8_4_0-esp-2020r3-win32.zip]]が必要になる。 | ||
+ | > cd ~/esp | ||
+ | > git clone https://github.com/espressif/ESP8266_RTOS_SDK.git | ||
+ | 環境変数を設定する。~ | ||
+ | IDF_PATH=<HOME>\esp\ESP8266_RTOS_SDK | ||
+ | |||
+ | ** MicroPython [#ha7ec5d5] | ||
+ | MicroPythonは,マイクロコントローラーで動作するPython 3互換およびそのランタイム。~ | ||
+ | マイクロコントローラーをリセット後すぐにPythonが動作する環境となる。なので比較的手軽にプログラムを試すことが出来る。~ | ||
+ | |||
+ | MicroPythonはESP8266チップをサポートしているので,MicroPythonをボードに書き込んで使用することができる。 | ||
+ | ダウンロードは,[[こちら>https://micropython.org/download/esp8266/]]から最新バージョンがダウンロード出来る。~ | ||
+ | |||
+ | ボードにMicroPythonを書き込むためにesptoolが必要なのでPCにインストールする。~ | ||
+ | > pip install esptool | ||
+ | |||
+ | MicroPythonをボードに書き込む。~ | ||
+ | > esptool.py --port COMx erase_flash | ||
+ | > esptool.py --port COMx write_flash --flash_size=detect 0 esp8266-20220618-v1.19.1.bin | ||
+ | PCとボードをUSBケーブルで接続しPuTTY等で接続する。~ | ||
+ | - baudrateは115200~ | ||
+ | - 改行はCR~ | ||
+ | |||
+ | ボードをResetする。そうすると,対話型Pythonで操作できる。~ | ||
+ | MicroPython v1.19.1 on 2022-06-18; ESP module with ESP8266 | ||
+ | Type "help()" for more information. | ||
+ | >>> print("Hello Yuji Ueno") | ||
+ | Hello Yuji Ueno | ||
+ | >>> | ||
+ | となれば動作している。 | ||
+ | |||
+ | *** 無線LANを使って接続する [#q8cdc9b2] | ||
+ | WebREPLを使用すると無線LANで通信できる。~ | ||
+ | 作成したプログラムをボードにアップロードしたりダウンロードしたり出来る。~ | ||
+ | 上記のシリアルポートで接続して,~ | ||
+ | >>> import webrepl_setup | ||
+ | とする。いくつか質問されるので,''E''と任意のPassを設定して,''Y''でリブートする。~ | ||
+ | 一度ボードをResetして,さらに | ||
+ | >>> import network | ||
+ | >>> sta = network.WLAN(network.STA_IF) | ||
+ | >>> sta.active(True) | ||
+ | >>> sta.scan() | ||
+ | >>> sta.connect('<SSID>', '<PASS>') | ||
+ | >>> while not sta.isconnected() : | ||
+ | time.sleep(0.1) | ||
+ | >>> conf = sta.ifconfig() | ||
+ | >>> print(conf) | ||
+ | これでボードIP Addressがわかる。 | ||
+ | |||
+ | PCに[[WebREPLコンソール>https://github.com/micropython/webrepl]]をインストールする。~ | ||
+ | > git clone https://github.com/micropython/webrepl.git | ||
+ | webreplディレクトリにあるwebrepl.htmlをダブルクリックする。''ws://<IP Address>:8266''と入れて,Connectボタンを押す。~ | ||
+ | これで無線LANで接続して,操作することが出来る。~ | ||
+ | |||
+ | ボードがResetした後に自動的にWLAN接続できるように''boot.py''を書き込んでおく。~ | ||
+ | #code(python){{ | ||
+ | import network | ||
+ | import webrepl | ||
+ | import utime | ||
+ | |||
+ | sta = network.WLAN(network.STA_IF) | ||
+ | sta.active(True) | ||
+ | |||
+ | sta.connect('<SSID>', '<PASS>') | ||
+ | start_time = utime.time() | ||
+ | while utime.time() - start_time < 10: | ||
+ | if sta.isconnected(): | ||
+ | print("connect") | ||
+ | webrepl.start() | ||
+ | break | ||
+ | else: | ||
+ | print("Timeout") | ||
+ | sta.active(False) | ||
+ | ap = network.WLAN(network.AP_IF) | ||
+ | ap.active(True) | ||
+ | webrepl.start() | ||
+ | }} | ||
+ | WebREPLコンソールの右にあるsend a fileでboot.pyを指定してsend to deviceボタンで書き込む。~ | ||
+ | これで,最初からWLAN接続できるようになった。~ | ||
+ | |||
+ | * スマートスピーカーと連携させる [#dccb1df6] | ||
+ | |||
+ | ** Google home mini [#i33bcb96] | ||
+ | スケッチ>Include Library>Manage Libraries...で空欄にgoogleと入れる。~ | ||
+ | esp8266-google-home-notifier 1.0.6とesp8266-google-home-tts 1.0.7をInstallする。 | ||
+ | |||
+ | これでWeMos D1ボードからGoogle home miniにしゃべらせることができる。 | ||
+ | |||
+ | ** Amazon Alexa [#b18ee335] | ||
+ | https://github.com/witnessmenow/esp8266-alexa-wemo-emulatorからzipファイルをダウンロードする。~ | ||
+ | スケッチ>Include Library>Add ZIP Libraries...>esp8266-alexa-wemo-emulator-master.zipを選択する。 | ||
+ | |||
+ | これでWeMos D1ボードから,IFTTTを使わなくても家の電気をつけたり消したり出来るようになる。 | ||
+ | |||
+ | ** IFTTTと連携 [#v46958c9] | ||
+ | WeMos D1ボードとIFTTTとの連動は,[[ESP8266IFTTT>https://github.com/pokiiio/ESP8266IFTTT]]を使う。~ | ||
+ | zipファイルをダウンロードする。 | ||
+ | |||
+ | スケッチ>Include Library>Add ZIP Libraries...>ESP8266IFTTT-master.zipを選択する。 | ||
+ | |||
+ | ESP8266IFTTTのスケッチの例 | ||
+ | //スケッチの冒頭に一行入れます。小文字のESP8266Ifttt.hだとコンパイルできません。 | ||
+ | #include <ESP8266IFTTT.h> | ||
+ | |||
+ | /*IFTTT_WEBHOOK_NAMEのところにIFTTT Webhook's nameを、IFTTT_KEYに IFTTT Webhook api keyを入れます。 | ||
+ | IFTTT Webhook api keyはIFTTT>My Applets>Web Hooks>Web Hooksのロゴマーク>Documentation、またはhttps://ifttt.com/maker_webhooks>Documentationで出てきます。*/ | ||
+ | |||
+ | //もしトリガーだけなら・・・ | ||
+ | IFTTT.trigger(IFTTT_WEBHOOK_NAME, IFTTT_KEY); | ||
+ | |||
+ | //もしvalueがあれば・・・(但しvalueは文字列に限ります。"~~"でくくってください) | ||
+ | IFTTT.trigger(IFTTT_WEBHOOK_NAME, IFTTT_KEY, value1, value2, value3); | ||
+ | |||
+ | これで準備完了。~ | ||
+ | ファイル>スケッチの例 から,いろいろ試すことが出来る。 | ||
+ | |||
+ | Google home miniやAlexaから,IFTTTを使って家の電気をつけたり消したり出来る。もちろんリモコンもコントロール出来る。 |