11月25日発売 書籍『Arduinoと3Dプリンタでロボットを作ろう』を出させて頂きました!

ESP8266開発ボード『WeMos D1 mini(Lolin)』の基本的な使い方!

普段Arduinoを使った電子工作をメインで楽しんでいます。
私の場合Arduinoとの出会いが電子工作を始めるキッカケとなったのですが、ESPシリーズのマイコンボードから電子工作を始める方も多いと思います。

基本的にESPシリーズのマイコンボードでもArduinoスケッチを動かすことが出来るので、使用に関してはそれほど大きな違いはないように感じますが、Arduinoを使い慣れてくるとWi-FiやBluetoothといった無線通信モジュールを標準で搭載しているESPシリーズのマイコンボードを使うと便利に感じることも多くなりました。

ESPシリーズのマイコンボードはESP32シリーズとESP8266シリーズがあるわけですが、その違いは使える無線通信機能です。
ESP8266ではWi-Fi機能が使えます。
また後発で登場したESP32ではWi-Fi機能に加えBluetooth通信を使うことも出来ます。

ESP32の開発ボードでは、ESP-WROOM-32D/ESP32-DevKitC-32Dは非常にメジャーな開発ボードになり私もいくつか使っています。

はじめてのESP32開発ボードのおすすめ!『ESP-WROOM-32D開発ボード/ESP32-DevKitC-32D』の基本的な使い方!

またESP8266ではESP-WROOM-02は技適が取得されたものもあり、また開発ボードとしてはESP8266 NodeMCUもよく見かけます。

今回はESP8266開発ボードとなるWeMos D1 mini(Lolin)をご紹介したいと思います。
WeMosと言えばESP32で有名で海外サイトで電子パーツを見ている時によく見かけていましたが・・・最近はLolinというブランド名(社名?)に変わったようですね。
無線モジュールの技適が取得されていないため日本のサイトで紹介されているのをあまり見かけませんが、安価なESP8266開発ボードとなるのでArduinoの扱いに少し慣れてきたら使ってみるのは面白く学習用としても最適です。

WeMos D1 mini(Lolin)は、ESP8266(ESP-12F)が搭載されておりWi-Fi機能が付いたミニArduinoのように動かすことが出来て結構便利なボードとなります。

最近このようなミニラジコン(Mini Tank)を製作していたのですが、このスケッチ作成に使っていました。

最終的にラジコンに載せたのはスペースの関係でさらに小型なESP8266ボードとなるESP-01となりましたが、テストスケッチを作成する際にUSB-シリアル変換モジュールも搭載されているので直接スケッチの書き込みを行うことが出来るので役立ちました。

ESP-01は非常に小型なボードですがスケッチ書き込みの際にUSB-TTLモジュールを用意する必要があるので、テストスケッチはWeMos D1 miniで作成&テストし、組み込みにはESP-01モジュールを使うなんていう使い方をしていました。

【Arduino】小型Wi-FiモジュールESP8266(ESP-01)の基本的な使い方!スケッチの書き込み&モジュール単体で動かす基本的な方法!

なんですが・・・、やはりスケッチの書き込みやGPIO端子の数からさらに拡張して楽しめるように少しボディーサイズを変更してWeMos D1 miniを使ったバージョンも作ってみました。
なかなか面白いミニラジコンなのでまた別記事でご紹介できればと思います。

そしてWeMos D1 miniはESP8266開発ボードとしては小型なボードでD1 miniに対応した専用のシールドも多数販売されているので、ESP8266の学習用ボードとして使ってみるのはおもしろいと思います。

それではWeMos D1 mini(Lolin)の基本的な使い方を見ていきましょう!

MEMO
WeMos D1 mini(Lolin)に搭載されているWi-Fiモジュールは日本で技適が取得されていません。
そのため使用には注意が必要です!

【ESP8266】WeMos D1 mini(Lolin)の基本的な使い方!

こちらがWeMos D1 mini(Lolin)です。
ESP-12Fが搭載されたESP8266開発ボードとなります。

WeMosはESP32で有名なブランド(メーカー)なので知っている方も多いと思いますが、Lolinにブランド名が変更されたようですね。
そのためLolin D1 miniと言った方がいいのかもしれませんが、WeMosの方が馴染みがある方も多く互換ボード(クローン品)ではWeMosの名称で販売されているものも多いので、WeMosと表記して進めていきます。

ESP-12Fモジュールは単体でも販売されています。
これにUSB-シリアル変換チップや電源(レギュレータ)などが搭載されたESP8266開発ボードとなります。
USB端子をPCと繋げスケッチの書き込みが行えるので、ミニArduinoのような感覚で使うことが出来ます。

WeMos D1シリーズとしては、今回ご紹介するD1 miniの他にもArduino Uno形状になっているWeMos D1 R2(ESP8266)やWeMos D1 R32(ESP32)などもあります。

WeMos D1 R32(ESPDuino)はArduino Loveな私としては大好きなArduino Uno互換ボードです。
内部的にはESP-WROOM-32互換ボードとなり内蔵されているWi-FiやBluetoothモジュールは技適が取得されているので日本国内で合法的に使うことが出来ます。

またArduino用のシールドが使えたりと便利なESP32開発ボードの一つとなります。
おもしろいボードなので詳しくは別記事でご紹介できればと思います。

Arduino Uno形状でWi-Fi/Bluetoothが使える便利なESP32開発ボード!WeMos D1 R32(ESPDuino32)の基本的な使い方!

付属ピンヘッダー

WeMos D1 miniには3種類のピンヘッダーが付属しています。

開発ボードとしてブレッドボードで使う事が多い場合はオス型ピンヘッダーを取り付けておけば便利に使えます。

またArduinoのようにワイヤーを挿し込んで使いたい場合はメス型のものを取り付けて使う感じですね。

そしてWeMos D1 miniには、このボードに対応したシールドが多数販売されています。
私の手元にあるものでは、バッテリーなどから電源供給が行える電源シールドやユニバーサル基板で小規模な回路が組める拡張シールド、小型なディスプレイ(I2C接続)が付いたOLEDシールドなどがあります。

これらシールドを2段・3段・・・と積み重ねて使う場合は足長のメス型ピンヘッダーを取り付けたりと、用途に応じて使い分ければ便利に使えます!

WeMos D1 miniの種類とバージョン

WeMos D1 miniには、いくつかのバージョンと上位モデルとなるD1 mini Proもあります。
今回写真でご紹介しているものは、よく見かけるV2タイプのものとなりAmazonなど国内サイトでも入手する事が出来ます。

ボードには表面実装でESP-12F(ESP8266)モジュールが取り付けられています。

ボード裏面にはUSB端子やリセットスイッチ、5Vと3.3Vレギュレータなどのパーツが搭載されており、これ単体でESP8266開発ボードとして機能します。

USB端子をPCと接続してArduino IDEからスケッチの書き込みなどArduinoと同様に扱うことが出来ます。

またこちらはV3タイプのボードです。
ボードに固定用のビス穴が追加され、無線用モジュールの形状も変更されています。

互換ボードによってはUSB端子の形状が異なっていたり、使われているUSB-シリアル変換チップに違いがあったりするようです。
WeMosのサイトも参考にして下さい。

参考 D1 BoardsWeMos

また本家LolinではLolin D1 Mini V4.0も販売しているようです。
I2C用の端子(ポート)が追加されているようですね。(V4ボードの写真を追加しました)

ESP8266開発ボードでよく見かけるメジャーなボードには、ESP-01やNodeMCU、そしてこのWeMos D1 miniなどがありますが、日本での技適が取得されていないのでその使用には注意が必要です!
技適が取得されたものではESP-WROOM-02があげられます。

ボードチップフラッシュメモリー
D1 mini Lite(V1)ESP82851MB
D1 mini V2ESP8266(ESP-12F)4MB
D1 mini V3ESP82664MB
D1 mini ProESP8266 16MB
MEMO
WeMos D1 mini(Lolin)は日本での技適が取得されていないモジュールなのでその使用には注意が必要です!

ピン配列

WeMos D1 miniのピン配列を見ていきます。
合計11本のGPIO端子(I/Oピン)に1本のアナログ端子(A0)、電源端子として5V/3.3V/GND、リセットピンが配置されています。
小さなボードですが、UART/I2C/SPIインターフェースを使うことも出来ます。
完全にWi-Fi機能を搭載したミニArduinoって感じですね!

ボードの電源供給は基本的にUSB端子(microUSB or Type-C)から行います。
USB-シリアル変換チップ(CH340)が搭載されているので、PCと接続してArduinoのように電源供給&スケッチの書き込みを行うことができます。

MEMO
私の手元にあるボード(互換ボード)ではUSB-TTLチップにCH340が使われていました。
FT232やCP2104タイプのものもあるようです。

電源供給

USB端子からの電源供給以外にも[5V]端子や[3.3V]端子から電源を供給する事も出来ます。
Arduinoのようにボードに5Vと3.3Vレギュレータが搭載されているので、[5V]端子や[3.3V]端子を使いボードを駆動することが出来ます。

[5V]端子に約3~7Vの範囲、または[3.3V]端子に約2.5~3.6Vの電圧を印加する事によりボードを駆動する事が出来ます。
ちなみにマイクロコントローラーの動作電圧は2.5~3.6Vとなっています。

デジタル入出力端子(I/Oピン)

合計11本のGPIO端子(I/Oピン)が使えます。
D0端子(GPIO16)を除く全ての端子でPWMに対応しています。

Arduinoの5Vに対してESP8266ではGPIO端子の最大出力電圧は3.3Vです。

Arduinoでは特定のデジタル入出力端子しかPWMに対応していませんが、全ての端子でPWMを使うことが出来ます
PWM分解能はデフォルトではArduinoと同じ8ビットとなっています。(最大10ビット)

MEMO
ESP8266 Arduino Core V3.0以降、Arduinoとの互換性の問題でデフォルトの分解能は8ビットになったようです。
最大10ビットで使うことも出来るようです。

アナログ入力端子 A0(ADC0)

アナログ入力端子も1本用意されています。
入力電圧は最大3.2V、AD変換の分解能は10ビットとなっています。
これもArduinoと同様ですね!

UART / I2C / SPI

小さなボードですがインターフェースとしてUART/I2C/SPI通信を使うことも出来ます。

SPI
SCLKD5(GPIO14)
MISOD6(GPIO12)
MOSID7(GPIO13)
SSD8(GPIO15)
I2C
SCLD1(GPIO5)
SDAD2(GPIO4)
UART
TXTX(GPIO1)
RXRX(GPIO3)
D7(GPIO13)をRXD2・D8(GPIO15)をTXD2で使用することも出来ます。

ArduinoのようにI/Oピンにはその他役割が割り振られ複数の機能を持っています。
WeMos D1 miniのI/Oピンの主な機能をまとめるとこのようになります。

ラベルGPIO番号入力出力PWMその他機能
TX1TXTX
RX3RXRX
D016WAKE
D15SCL(I2C)
D24SDA(I2C)
D30◯(プルアップ)FLASH
D42◯(プルアップ)オンボードLED
D514SCLK(SPI)
D612MISO(SPI)
D713 ◯MOSI(SPI)
D815 ◯(10kプルダウン)SS(SPI)
A0A0アナログ入力(最大3.2V)

WeMos D1 mini製品仕様

WeMos D1 mini 製品仕様
動作電圧3.3V
デジタル入出力ピン11
アナログ入力ピン1(最大3.2V)
クロックスピード80/160MHz
フラッシュメモリー4M Bytes
ボードサイズ約34.2×25.6mm
重量約3g

【Arduino IDEの開発環境】ESP8266ボード情報のインストールを行う

それではWeMos D1 miniに簡単なスケッチを書き込み実際に動かしてみたいと思います。
Arduino IDEを使った開発環境でWeMos D1 mini(ESP8266)を使えるようにします。

Arduino IDEのインストールがまだの方はこちらの記事も参考にして下さい。

Arduinoの開発環境を構築する。Arduino IDEのインストール方法!

Arduino IDEにはデフォルトで各種Arduinoボードにスケッチを書き込むための[Arduino AVR Boards]しか入っていません。
ESP8266系のマイコンボードにスケッチを書き込む際は対応したボード情報をインストールしておく必要があります。
詳しくはこちらの記事も参考にして下さい!

Arduino IDEでESP32やESP8266を使う時の環境設定を行う手順!

Arduino IDEを立ち上げ、[環境設定]から[追加のボードマネージャ]へと進みます。

以下のURLを追加しておきます。

https://arduino.esp8266.com/stable/package_esp8266com_index.json

MEMO
他のボードURLが記載されている場合は改行して新たな行にペーストして下さい!

次に[ツール]→[ボード]→[ボードマネージャ]へと進みます。

「esp8266」で検索すると[esp8266 by ESP8266 Community]というボードパッケージが見つかります。
これをインストールすれば完了です!

インストールが完了すると、先程の[ツール]→[ボード]の項目に[ESP8266 Boards]が追加されます。
ESP8266系のボードは結構多いのですが、[LOLIN(WEMOS D1 R2 & mini]を選択する事によりスケッチを書き込むことが出来ます。

デフォルト設定から特に変更する必要はありません。
これでWeMos D1 miniにスケッチの書き込みが行えます。

スケッチを書き込み動作確認

それではWeMos D1 miniにスケッチを書き込み実際に動かしてみます。
マイコンボードの動作確認と言えばLチカですね。

以下のスケッチでオンボードLEDを点滅させてみます。
オンボードLEDはESP8266(ESP-12E)モジュールの横に付いています。

スケッチは簡単ですね!

WeMos D1 miniのオンボードLEDはD4(GPIO2)に接続されています。(上記ピン配列図をもう一度確認してみて下さい!)

上記スケッチではdigitalWrite()関数を使いLEDのON/OFFをさせています。
digitalWrite(D4, LOW)というように端子指定にラベル番号(ボードに記載されている番号)を使って行います。

GPIO番号を使いdigitalWrite(2, LOW)という記述でも同じ動作をさせることができます。

MEMO
オンボードLEDが繋がっているD4(GPIO2)端子はプルアップされているのでLOWの時にLEDが点灯します。

ArduinoでWi-Fiを使った無線通信をしたい場合、Wi-Fiモジュールを外部接続する必要があります。
WeMos D1 mini(ESP8266)はWi-Fiモジュールが搭載されているのでモジュールを接続する必要もなく、Arduinoの扱いに慣れてくると非常に便利に感じます。

下記動画はスマホアプリRemoteXYを使いWi-Fi経由で操作しています。
小型な開発ボードなので製作物に組み込む際も便利に使えます!

ArduinoやESPシリーズのマイコンボードをスマホで操作する。スマホアプリ『RemoteXY』の基本的な使い方!

技適の問題

ESP8266シリーズの開発ボードではWi-Fiが使え、ESP32シリーズではWi-FiとBluetooth機能を使うことが出来ます。

Arduinoでは無線機能が搭載されていないので対応した無線モジュールを外部接続する必要がありますが、ESP系の開発ボードでは無線モジュールが標準搭載されているので便利に使えます。

WeMos D1 miniはESP8266モジュールが組み込まれWi-Fi機能が使える開発ボードとなりますが、技適の取得がされていません。

ESP8266モジュールにはオリジナルとなるEspressif Systemsが製造しているものやAi-Thinkerが製造しているものがあります。
ともにESP8266やESP8266EXチップが使われていますが、日本で販売されている技適が取得されたものはEspressif SystemsのESP-WROOM-02になります。

WeMos D1 miniは安価で入手しやすい便利なESP8266開発ボードとなりますが、技適が取得されていないのでその使用には注意が必要で自己判断でお願いします。

【追記】ミニウェザーステーションを作ってみました!

WeMos D1 Miniを使ったミニサイズのウェザーステーションを作ってみました!
Wi-Fi経由で気象データを取得、またリアルタイムの温湿度も表示させています。

ブレッドボード上で組んで動かしてみるだけでも面白いので、興味ある方はこちらの記事もご覧下さい。

ESP8266で動かすミニウェザーステーションの製作!【WeMos D1 Mini】

【追記】WeMos D1 Miniで制御するミニラジコン「Mini Tank」を作ってみました

WeMos D1 Miniで動かす手の平サイズのミニラジコンを作ってみました!

WeMos D1 Miniは小型で便利に使えるESP8266開発ボードですね。
マイコンを使ったこのようなラジコンの製作は非常に楽しく、作ったあとも楽しめます。

【電子工作】ESP8266で動かすミニラジコン「Mini Tank」の製作!【WeMos D1 Mini】

【追記】オープンソースの携帯ゲーム機『ESPboy』を作ってみました!

WeMos D1 Miniで動かすオープンソースハードウェアの携帯ゲーム機『ESPboy』を作ってみました!

入手しやすいパーツ構成なので、ブレッドボードやユニバーサル基板を使って簡単に組んで遊ぶことが出来ます。

【電子工作】ESP8266(WeMos D1 Mini)で動かすオープンソースの携帯ゲーム機『ESPboy』が面白い!

【追記】技適に対応した自作D1 Miniを作ってみました!

WeMos(Lolin) D1 Miniは使いやすいESP8266開発ボードの一つで個人的に気に入っており何かと使う頻度も高いボードです。
そのため、日本では技適が取得されていないのが残念なところです!

電子工作で自作基板の製作も始めたことから、ESP系のマイコンボードの回路構成の勉強等を兼ねESP-WROOM-02を使って技適に対応したD1 Mini自作基板を作ってみました。

何かの参考になればと思います。

【電子工作/PCB】技適に対応したWeMos D1 Miniを自作してみました!

最後に!

WeMos D1 miniの基本的な仕様&使い方を見ていきました。
ESP系のマイコンボードは非常に多くの開発ボードがありますが、技適が取得されたものとなると数は限られます。

WeMos D1 miniは技適が取得されていないため使用には注意が必要ですが、ESP8266開発ボードとして有名で学習用としては安価で便利に使える開発ボードだと思います。

小型&安価なボードなので製作物に組み込んで使いたい場合も重宝します。

5 COMMENTS

マーくん

新しいボードを購入し、確認したところ、うまく書き込めました。
やはりボードが壊れていたと思われます。
3〜400円とはいえ、正常動作しないのは困ってしまいますね。
それにしてもD1 mini面白いですね。
色々と作ってみようと思います。
このページ、とても参考になっています。
ありがとうございました。

返信する
東京バード

なるほど、ボードの故障だったんですね!
不具合あるものに当たってしまうとほんとモヤモヤしますが、正常に動作したということで良かったです。

海外からバージョン違いのものも入手しましたが、D1 mini面白いですよね!
便利で使いやすいESP8266開発ボードです。

ご報告、ありがとうございました。
安心しました(^o^)

返信する
マーくん

素早い返信ありがとうございます。
BaudRateは、色々変更していますが、だめでした。
バードさんが特別な事をせずとも書き込めているのであれば、やはり私のボードが故障しているのでしょうね。
もう何枚かボードを購入することにします。
失礼しました。

返信する
マーくん

D1 miniへスケッチを書き込む時、何か特別な準備が必要でしょうか?
どうやっても「Failed to connect ESP8266: Timed out waiting for packet header」となり、書き込みできません。
D3をGNDに落してResetしたり、別のUSBケーブルを使用してもダメなのです。
壊れたボードなのでしょうか?
別のボード(NodeMCU 1.0)では「Flush+Reset」して書き込みを行なってうまくいっています。

返信する
東京バード

コメントありがとうございますm(_ _)m

特に私の環境ではこのボードに限った特別な事をする必要なく他のESP8266ボードと同じ感覚で使えていますが・・・

GPIO0をLOWに落として書き込みモードにしてもだめということなので、あと考えられるのはアップロードスピードでしょうか?
デフォルトのUpload Speedは921600となっていますが、一段落とした57600(さらに遅いスピード)に設定してアップロードしてみてはどうでしょうかね?

返信する

東京バード へ返信する コメントをキャンセル