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を使って家の電気をつけたり消したり出来る。もちろんリモコンもコントロール出来る。

  • 開発/WeMos D1 のバックアップ一覧
  • 開発/WeMos D1 のバックアップ差分(No. All)
    • 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
    • 現: 2022-10-07 (金) 13:24:28 yuji
      • Deleted an attach file: hiletgo_wemosd1.png at 2022-10-07 (金) 14:59:33, Deleted an attach file: HiLetgo_D1.png at 2022-10-07 (金) 14:59:44

トップ   差分 バックアップ 複製 名前変更 リロード   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom
Counter: 523, today: 2, yesterday: 0