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製のはもう販売されていないのでこれは似たようにボード

新しくコメントをつける

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

Front page   Freeze Diff Backup Copy Rename Reload   New Page Page list Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom)
Counter: 81, today: 1, yesterday: 0
Last-modified: 2022-10-07 (Fri) 14:24:28 (JST) (166d) by yuji