WeMos D1 anchor.png

WeMos D1*1は,中国WEMOS社からリリースされていたArduino UNO R3形状の小型ボード。

このWeMos D1の互換ボードのHiLetgo OTA WeMos D1 CH340 WiFi 開発ボード ESP8266 ESP-12F Arduino IDE UNO R3*2が非常に安価でAmazonで500円程度で購入できた :)
HiLetgo_D1.png

SoCにEspressif Systems社ESP8266EXが使われている。

esp8266.png

ホストPCとはUSBで接続して仮想シリアルポートとして機能するCH340 USBシリアル変換チップが実装されている。

以下のような特徴がある。

  • 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はCPU ModuleにAI-Thinker製ESP-12Fを使用しており,これは改良版WeMos D1 R2と同じ。
AI-Thinker製ESP-12Fは技術基準適合しているようなので,HiLetgo OTA WeMos D1も技術基準適合しているということなのかな?

Page Top

スペック anchor.png

CPUESP-8266EX(Cadence Tensilica L106 32bit Processor)
CPU ModuleAI-Thinker ESP-12F
クロックスピード80MHz/160MHz
WLANIEEE 802.11 b/g/n, RTOS/Wifi stack内蔵
命令/データ64KB SRAM/96KB DRAM
Flash Memory4MB
ボード動作電圧DC 3.3V
デジタルI/O11(SPI, I2C, I2S)
アナログ入力1 (10bit)
電源Jack 9-24VDC/USB MicroB
サイズ68.6mm x 53.4mm(Arduino Unoと同サイズ)
重量25g
Page Top

コネクタ anchor.png

WeMos D1ボードのコネクタ。

DIGITAL1 headerピンファンクションESP-8266
RXRXD, IOGPIO3/RXD
TXTXD, IOGPIO1/TXD
D2IO(no interrupt/no PWM), WAKEGPIO16
D3IO, SCLGPIO5
D4IO, SDAGPIO4
D5IO, SCK, ONB_LEDGPIO14
D6IO, MISOGPIO12
D7IO, MOSIGPIO13
DIGITAL2 header ピンファンクションESP-8266
D8IO, 10k Pull-upGPIO0
D9IO, 10k Pull-up, TX1, ONB_LED2GPIO2
D10IO, 10k Pull-down, SSGPIO15
D11IO, MOSIGPIO13
D12IO, MISOGPIO12
D13IO, SCK, ONB_LEDGPIO14
GNDGNDGND
---
D14IO, SDAGPIO4
D15IO, SCLGPIO5
ANALOG header ピンファンクションESP-8266
A0Analog input, max 3.3V, TOUTADC0
---
---
---
---
---
Power header ピンファンクションESP-8266
---
5V5V-
RESETRESETRST
3V33.3V3.3V
5V5V-
GNDGNDGND
GNDGNDGND
VINExternal Power-

J1 USB Micro B

1VBUS
2D-
3D+
4ID
5GND
ShellShield

J2 Power Jack

1GND
2PWRIN
3GND
  • 全IOピン:割り込み/PWM/I2C/1-wireシリアル対応(D2除く)
  • 全IOピン:3.3V系
  • ドライブ電流(ソース・シンク):12mA
  • オンボードLEDはD5(GPIO14)に接続されている
  • SoCモジュールのオンボードLEDは,D9=2に接続されている。
  • D8(GPIO0),D9(GPIO2)は10Kでプルアップされている
  • D10(GPIO15)は10Kでプルダウンされている
  • アナログ入力:入力範囲0〜1V(220Kと100Kで分圧し100K側でADC0に接続されている)
  • いくつかのコネクタピンは別のピンと接続されている(Arduino Unoに合わせるため?)
Page Top

ソフトウェア anchor.png

このボードのソフトウェア開発にはいくつかの環境が利用できる。

  • Arduino IDE
    Ardduino Unoなどで使用するArduino IDEが開発環境に使用できる。
    ボードマネージャーでハードウェアパッケージをインストールすると,ToolChainもインストールされる。
  • ESP8266_RTOS_SDK
    SoCメーカーのEspressif Systems社からリリースされている開発環境。
    ビルドするためのToolChainも用意されている。
  • MicroPython
    MicroPythonはPython 3互換とランタイム環境。
    MicroPythonのダウンロードページからダウンロードしてボードに書き込めば使用できる。
    昔のBasicマシンのような使い勝手。

これ以外にも多くの開発環境がある。

Page Top

仮想COMドライバーのインストール anchor.png

中華製CH340のデバイスドライバーのインストールが必要。Windows10だと標準でinstallされるので必要ない。
Windows 7や標準ドライバーが入っていない場合は,このfileデバイスドライバーをインストールする。

Page Top

Arduino IDE anchor.png

Arduino IDEは,こちらのページのようにしてインストールできる。

Page Top

ハードウェアパッケージのインストール anchor.png

ハードウェアパッケージをインストールする方法は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を再起動する。
Page Top

ボードの設定 anchor.png

ハードウェアパッケージがインストールできたら,Wemos D1ボードを使用する場合は,以下のようにする。

  • ボード
    WeMos D1 R1を選択する。
  • CPU周波数
    80MHzまたは160MHz(どちらでもOK)
  • Flashサイズ
    4M(FS:2MB OTA:~1019KB)を選択する。
    4M(FS:3MB OTA:~512KB)にすると,プログラムエリアを3MBに出来る。
  • アップロードスピード
    921600bpsを選択する。(うまくいかない場合は,115200bpsにする)
  • LWIP Variant
    V1.4 Higher Bandwidhを選択する。
  • シリアルポート
    接続されたCOMxを選択する。
Page Top

ESP8266_RTOS_SDK anchor.png

SoCメーカーのEspressif Systems社から,ESP8266_RTOS_SDKがリリースされている。

ダウンロードは,上記のGitHubからダウンロードできる。 また,このESP8266_RTOS_SDKをビルドするには,Windows用のToolChainが必要になる。

> cd ~/esp
> git clone https://github.com/espressif/ESP8266_RTOS_SDK.git

環境変数を設定する。

IDF_PATH=<HOME>\esp\ESP8266_RTOS_SDK
Page Top

MicroPython anchor.png

MicroPythonは,マイクロコントローラーで動作するPython 3互換およびそのランタイム。
マイクロコントローラーをリセット後すぐにPythonが動作する環境となる。なので比較的手軽にプログラムを試すことが出来る。

MicroPythonはESP8266チップをサポートしているので,MicroPythonをボードに書き込んで使用することができる。 ダウンロードは,こちらから最新バージョンがダウンロード出来る。

ボードに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
>>>

となれば動作している。

Page Top

無線LANを使って接続する anchor.png

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コンソールをインストールする。

> git clone https://github.com/micropython/webrepl.git

webreplディレクトリにあるwebrepl.htmlをダブルクリックする。ws://<IP Address>:8266と入れて,Connectボタンを押す。
これで無線LANで接続して,操作することが出来る。

ボードがResetした後に自動的にWLAN接続できるようにboot.pyを書き込んでおく。

Everything is expanded.Everything is shortened.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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接続できるようになった。

Page Top

スマートスピーカーと連携させる anchor.png

Page Top

Google home mini anchor.png

スケッチ>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にしゃべらせることができる。

Page Top

Amazon Alexa anchor.png

https://github.com/witnessmenow/esp8266-alexa-wemo-emulatorからzipファイルをダウンロードする。
スケッチ>Include Library>Add ZIP Libraries...>esp8266-alexa-wemo-emulator-master.zipを選択する。

これでWeMos D1ボードから,IFTTTを使わなくても家の電気をつけたり消したり出来るようになる。

Page Top

IFTTTと連携 anchor.png

WeMos D1ボードとIFTTTとの連動は,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を使って家の電気をつけたり消したり出来る。もちろんリモコンもコントロール出来る。


*1 改良版はWeMos D1 R2
*2 HiletGO製のはもう販売されていないのでこれは似たようにボード

新しくコメントをつける

題名
ゲスト名
投稿本文
より詳細なコメント入力フォームへ

トップ   凍結 差分 バックアップ 複製 名前変更 リロード   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom
Counter: 513, today: 2, yesterday: 0
最終更新: 2022-10-07 (金) 14:24:28 (JST) (564d) by yuji