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円程度で購入できた
SoCにEspressif Systems社のESP8266EXが使われている。
ホストPCとはUSBで接続して仮想シリアルポートとして機能するCH340 USBシリアル変換チップが実装されている。
以下のような特徴がある。
WeMos D1クローンボードのHiLetgo OTA WeMos D1はCPU ModuleにAI-Thinker製ESP-12Fを使用しており,これは改良版WeMos D1 R2と同じ。
AI-Thinker製ESP-12Fは技術基準適合しているようなので,HiLetgo OTA WeMos D1も技術基準適合しているということなのかな?
CPU | ESP-8266EX(Cadence Tensilica L106 32bit Processor) |
CPU Module | AI-Thinker ESP-12F |
クロックスピード | 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 (10bit) |
電源 | Jack 9-24VDC/USB MicroB |
サイズ | 68.6mm x 53.4mm(Arduino Unoと同サイズ) |
重量 | 25g |
WeMos D1ボードのコネクタ。
DIGITAL1 headerピン | ファンクション | ESP-8266 |
RX | RXD, IO | GPIO3/RXD |
TX | TXD, IO | GPIO1/TXD |
D2 | IO(no interrupt/no PWM), WAKE | GPIO16 |
D3 | IO, SCL | GPIO5 |
D4 | IO, SDA | GPIO4 |
D5 | IO, SCK, ONB_LED | GPIO14 |
D6 | IO, MISO | GPIO12 |
D7 | IO, MOSI | GPIO13 |
DIGITAL2 header ピン | ファンクション | 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 |
ANALOG header ピン | ファンクション | ESP-8266 |
A0 | Analog input, max 3.3V, TOUT | ADC0 |
- | - | - |
- | - | - |
- | - | - |
- | - | - |
- | - | - |
Power header ピン | ファンクション | 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 |
このボードのソフトウェア開発にはいくつかの環境が利用できる。
これ以外にも多くの開発環境がある。
中華製CH340のデバイスドライバーのインストールが必要。Windows10だと標準でinstallされるので必要ない。
Windows 7や標準ドライバーが入っていない場合は,このデバイスドライバーをインストールする。
Arduino IDEは,こちらのページのようにしてインストールできる。
ハードウェアパッケージをインストールする方法は2通りある。
gitを使う方法と Arduino IDEのマネージャーを使用する方法。
> cd <arduino IDEインストール>\hardware > md esp8266com > cd esp8266com > git clone https://github.com/esp8266/Arduino.git esp8266
─┬ Arduino └─┬ hardware └─┬ esp8266com └─┬ esp8266 ├── bootloaders ├── cores ├── doc ├── libraries ├── package ├── tests ├── tools ├── variants ├── platform.txt ├── programmers.txt ├── README.md ├── boards.txt ├── LICENSE
> cd esp8266/tools > python get.py
http://arduino.esp8266.com/stable/package_esp8266com_index.json
ハードウェアパッケージがインストールできたら,Wemos D1ボードを使用する場合は,以下のようにする。
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
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等で接続する。
ボードを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 >>>
となれば動作している。
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を書き込んでおく。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
WebREPLコンソールの右にあるsend a fileでboot.pyを指定してsend to deviceボタンで書き込む。
これで,最初からWLAN接続できるようになった。
スケッチ>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にしゃべらせることができる。
https://github.com/witnessmenow/esp8266-alexa-wemo-emulatorからzipファイルをダウンロードする。
スケッチ>Include Library>Add ZIP Libraries...>esp8266-alexa-wemo-emulator-master.zipを選択する。
これでWeMos D1ボードから,IFTTTを使わなくても家の電気をつけたり消したり出来るようになる。
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を使って家の電気をつけたり消したり出来る。もちろんリモコンもコントロール出来る。
新しくコメントをつける