2022年8月26日発売 書籍『あっと驚く技術力 ガジェット改造』に記事を掲載して頂きました!

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

普段Arduinoを使った電子工作をメインで楽しんでいますが、最近ESPシリーズのマイコンボードも使うようになりました。
ESPシリーズのマイコンボードはWi-FiやBluetoothといった無線機能が標準で搭載されているので、使っていて便利に感じる場面は多いと思います。

Wi-FiやBluetoothといった無線機能を使いたい場合、Arduinoボードでは標準で無線機能が搭載されていません。
そのため、Arduinoではそれらに対応した無線モジュールを外部接続して使う必要があります。

例えばArduinoでよく使われる無線モジュールでは、HC-05(HC-06)などのBluetoothモジュールはよく使われます。
技適が取得されていないモジュールなのでその使用には注意が必要ですが、Arduinoで便利に使えるBluetoothモジュールだと思います。

Arduinoを使いBluetooth通信をやってみる!HC-05/HC-06 Bluetoothモジュールの使い方!

またWi-Fiを使った無線通信をしたい場合には、ESP-WROOM-02やESP-01(ESP8266)などがよく使われるモジュールだと思います。
ESP-01は非常に小型なのでArduinoに接続して使う外部Wi-Fiモジュールとして使いやすく、最近製作したものでいくつか使いました。

こちらは3Dプリントパーツで作った手乗りサイズのラジコンです。
マイコンボードはArduino Pro miniを使いWi-FiモジュールにESP-01という組み合わせで、このサイズを実現することが出来ました。

【Arduino】小型Wi-FiモジュールESP8266(ESP-01)の基本的な使い方!スケッチの書き込み&モジュール単体で動かす基本的な方法!
【Arduino】Arduino Pro Miniを使ってみる。小型で電子工作用途の組み込みに便利に使えそうですね!

技適の話で言うと技適取得済みのESP-WROOM-02などを使うのがいいのですが、製作物に組み込んで使いたい場合には小型Wi-Fiモジュールは何かと重宝しArduino学習用としても最適です!

このようにArduinoで無線通信(Wi-Fi/Bluetooth)したい場合にはそれらに対応した無線モジュールをArduinoに外部接続する必要がありますが、ESP8266シリーズのマイコンボードではWi-Fi機能が搭載されていて、ESP32のボードではさらにBluetoothも使うことが出来ます。

これらボードはArduinoスケッチが動くわけですが、最終的に製作したものに使うマイコンボードがArduinoになるのかESPシリーズのボードになるのか分かりませんが、無線通信を使ったものではその製作過程でESP32やESP8266開発ボードを使うのは便利となります。

そして今回はArduino Uno形状のESP32開発ボードとなるWeMos D1 R32(ESPDuino32)というちょっと変わったボードをご紹介します。

普段Arduinoをメインで使っているのでArduino目線で言うと、WeMos D1 R32は便利に使える開発ボードです。
形状はArduino Uno互換でピンの並びもUnoと統一して作られているのでArduinoシールドを使うことも出来ます。

またボードの中身はESP-WROOM-32互換なのでWi-FiやBluetooth機能が標準で搭載されていてこれを使うことも出来ます。
搭載されている無線モジュールは技適も取得されているようで、日本国内で合法的に電波を飛ばすことが出来ます。

Arduino Loveな私としては大好きなボードの一つで、開発環境もArduino IDEがそのまま使えるので普段よく使っているArduino Unoに無線機能が搭載されたボードという感覚で使っています。

無線機能を使ったテストをしたい場合などで無線モジュールを外部接続する手間が必要がなく便利に使うことが出来るボードだと思います。
しかし中身はESP32互換ボードなので当然Arduinoと仕様が異なる部分もあります。

それではWeMos D1 R32の基本的な使い方を見ていきたいと思います。

WeMos D1 R32(ESPDuino32)の基本的な使い方!

こちらがWeMos D1 R32(ESPDuino32)です。
ESP32開発ボードとなりWi-FiやBluetoothモジュールが搭載されているので、Arduinoのように無線モジュールを外部接続する必要がなく無線機能を使うことが出来ます。

搭載されている無線モジュールは技適が取得されているようなので、国内でも合法的に使うことが出来ます。
Arduinoに外部接続する無線モジュールでは技適取得済みのものは数が限られているので、これは助かりますね!

外観だけ見ると完全にArduino Uno形状に作られた互換ボードとなっています。
Arduino Unoとピン配列も統一して作られているので、全てではありませんがArduino用のシールドを使うことも出来ます。

WeMosはESP32で有名なブランド(メーカー)ですが、最近「LOLIN」という名称に変更したようですね!
WeMosの方が馴染みがある方も多いと思うのでWeMosという名称で進めていきます。

WeMosと言えばWeMos D1 miniは非常に有名なESP8266開発ボードの一つとなります。
小型で便利な開発ボードなので、最近製作したものにいくつか使いました。

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

そしてWeMos D1 R32はESP32を搭載しWi-Fi/Bluetoothが使えるESP-WROOM-32互換ボードとなります。

使えるアナログ入力端子(ADC)もWeMos D1 Miniでは1本だけでしたが多くの端子を使うこともでき、ピン配列もArduino Unoに統一されたArduino Uno形状の互換ボードとなっています。

ESP32ボードパッケージのインストール

まずWeMos D1 R32をArduino IDEで使うための開発環境を作っていきます。

WeMos D1 R32はArduino Uno互換(中身はESP-WROOM-32互換ボードです)なESP32開発ボードなのでArduino IDEで使う場合、ESP32に対応したボード情報(ボードパッケージ)をインストールしておく必要があります。

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

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

Arduino IDEの[環境設定]から[追加のボードマネージャのURL]の項目へと進みます。

以下のURLを追加します。

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

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

[esp32]で検索すると[esp32 by Espressif Systems]というボードパッケージが見つかるのでこれをインストールします。

以上でArduino IDEでWeMos D1 R32を使うための環境が整いました。

ボードパッケージのインストール方法に関して詳しくは、こちらの記事も参考にして下さい!

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

スケッチのコンパイルとWeMos D1 R32への書き込みには、ボードを[ESP32 Dev Module]に設定します。

[ツール]→[ボード]へと進むと[ESP32 Arduino]という項目が追加されています。
WeMos D1 R32はESP-WROOM-32互換ボードなので、この中にある[ESP32 Dev Module]を選択する事によりコンパイル&ボードにスケッチを書き込むことが出来ます。

動作確認(Lチカ)

それでは簡単なスケッチを書き込み動作確認をしてみたいと思います。
オンボードLEDを点滅させるLチカのスケッチを書き込み動作確認をしてみます。

MEMO
WeMos D1 R32のオンボードLEDはGPIO2と繋がっています。(Arduino Unoの場合はD13です)

そしてスケッチの書き込みですが、先述のようにボード設定には[ESP32 Dev Module]を選択します。
その際にデフォルトのアップロード速度(Upload Speed)は921600bpsとなっていますが、この速度では書き込みエラーが出るようです。
1段落とした460800bpsやさらに遅い230400bps/115200bpsの速度に変更する事によりスケッチの書き込みが出来ます。
その他の項目は特に変更する必要はありません!

赤色のオンボードLEDが1秒間隔で点滅すれば成功です!

製品仕様

簡単にWeMos D1 R32の仕様をまとめておきます。
ESP32互換ボードなのでArduino Unoと比べるとスペックだけ見ると高くなっていますね!

WeMos D1 R32 製品仕様
モデル名WeMos D1 R32
MCUESP-WROOM-32
CPUデュアルコア Tensilica LX6(32ビット)
クロック周波数240MHz
ROM448KB
SRAM512KB
フラッシュメモリ4MB
データポートの種類UART / SPI / I2C / DAC / ADC
MicroUSB入力電圧5V(最大500mA)
入力電圧VINおよびDCジャック 7~16V
動作電圧3.3V
消費電流最大250mA 節電モード:0.15mA / 動作時(Wi-Fiなし):20mA
USB-TTLCH340 USB-シリアルコンバーター
プログラミングソフトウェアArduinoおよびMicroPython、LUA
 Wi-Fi802.11 b/g/n(802.11n 最大150Mbps)
BluetoothBluetooth v4.2BR/EDRおよびBLE
参考 ESP-WROOM-32データシートEspressif Systems

ピン配列

WeMos D1 R32のピン配列を見ておきます。
電源関係やUART/SPI/I2Cなど完全にArduino Uno互換配列で作られていますね。

Arduino IDEを使ってArduino Unoとほぼ同じ感覚でプログラミングする事ができ、他のデバイスとの接続も分かりやすいと思います。

SDカードインターフェースやタッチセンサー用のポート、ディープスリープモードで使えるRTC端子など省略しましたが、基本的なピン配列はこのようになっています。

使用するピン(端子)の指定にはGPIO番号が使われます。
ボードにGPIO番号がプリントされているので分かりやすいと思います。

Arduinoボードではデジタル入出力端子では”D1”やアナログ入力端子では”A1”などボードに記載されているラベル番号を使いますが、WeMos D1 R32はESP系のボードなのでGPIO番号で指定します。

上記Lチカのスケッチを見ると分かりますが、GPIO2は単に”2″という指定になります。(ArduinoではD2やA3といったラベル番号での指定でした)

電源供給

電源供給方法は、Arduino Unoと同じです。
USB端子(MicroUSB)からの5V供給によりボードへの電源供給およびPCからのスケッチ書き込みが行えます。

またボード上に5Vと3.3Vレギュレータが搭載されているので、DCジャックまたは[VIN端子]からの7~16Vの給電でボードを駆動(3.3V)する事ができ、[5V端子]および[3.3V端子]からそれぞれ電圧を取り出しブレッドボードなど外部に組んだ回路に電源供給を行うこともできます。
完全にArduino Unoと同じですね。

ボードへの電源供給方法に関して詳しくは、こちらの記事も参考にして下さい。

【電子工作】Arduinoボードへの電源供給方法まとめ!

デジタル入出力端子

Arduinoと同様にGPIOと書かれた端子は基本的にデジタル入出力端子として使うことが出来ます。

また、アナログ入力端子もArduinoと同様にpinMode()関数を使いpinMode(2, OUTPUT)やpinMode(2, INPUT)のように指定すればデジタル入出力端子として使うことも出来ますが、GPIO34/35/36/39など一部のピンでは入力のみとなっています。(上記ピン配列図を参照して下さい)
普段ESP系のマイコンボードを使われている方はお分かりだと思いますが、GPIO34以降の端子は入力専用となります。

ちなみにGPIO端子からの出力電圧は、Arduinoの5Vと違い最大3.3Vとなっています。
ESP系のマイコンボードなので当然なんですが、Arduinoボードとの違いになります。

アナログ出力(PWM出力)

PWM出力はGPIO0~GPIO33までサポートされています。
Arduino Unoの場合、PWM出力はデジタル入出力端子D3/D5/D6/D9/D10/D11の特定の端子しか使えませんでしたが、ESP32(ESP-WROOM-32)互換ボードなので多くの端子がPWM出力に対応しています。

analogWrite()関数に与えるデューティー比は8ビット(0~255)の範囲で指定します。
これはArduinoと同様ですね!

アナログ出力(PWM出力)に関して詳しくは、こちらの記事も参考にして下さい!

【Arduino入門編③】PWM制御でLEDをゆっくり点灯&消灯させてみる!アナログ出力(PWM)の解説その①

アナログ入力端子

複数の端子でアナログ入力(ADC:アナログ-デジタルコンバーター)が使えます。
そしてArduinoの場合アナログ入力の分解能は10ビット(0~1023)ですが、WeMos D1 R32(ESP-WROOM-32)ではアナログ入力の分解能は12ビットとなっています
つまり、0~4095までの範囲で取得されるということですね。
中身はESP32なのでArduinoより分解能が高くなっているのが特徴です。

また、Arduinoと同様にアナログ入力端子はデジタル入出力端子として使うことも出来ますが、先述のようにGPIO34/35/36/39など一部のピンでは入力のみとなっています。

Arduinoのアナログ入力端子に関してはこちらの記事も参考にして下さい。

【Arduino入門編⑥】可変抵抗を使いアナログ値を読み取る。アナログ値から実際に入力されている電圧を計算。アナログ入力端子の解説です!
MEMO
ESP32のアナログ入力(ADC)には、内部的にADC1とADC2という2つのADCモジュールが内蔵されています。
無線機能を使う場合には内部でADC2が使われるため使用できるのはADC1のみとなります。
このあたりESP32の話となるので詳しくは今回割愛します。

最後に!

WeMos D1 R32の基本的な使い方を見ていきました。
Arduino Uno形状で作られた中身はESP32(ESP-WROOM-32)互換なちょっと変わったボードですね!

搭載されている無線モジュールは技適が取得されているようなので、国内で合法的に使える無線機能が付いたArduino Unoのような感覚で使えるボードになるかと思います。

ESP32互換ボードなのでArduinoと仕様が異なる部分もありますが、ピン配列がArduino Uno互換で作られているので全てではありませんがArduino用のシールドを使うことが出来たりとArduino好きの私としては結構好きなボードの一つで、無線機能を使いたい場合でArduinoのように無線モジュールを外部接続する必要がないので便利に使えています。

下記動画はBluetoothで接続しスマホアプリからリレーを動かしていますが、ボードにリレーモジュールを接続するだけで簡単に動かすことが出来ます。
無線通信のテストをしたい場合などで便利に使えますね。

同様なことはもちろんArduinoを使っても出来ますが、Arduino UnoにBluetoothモジュールを接続する手間があったり、使用する無線モジュールによってはAppleとのライセンスの問題でiPhoneでは使えないなどの制約を受ける場面も出てきます。

形状はArduino Uno互換で作られたボードなんですが中身はESP32開発ボードとなるためArduinoと仕様が異なる所がありますが、基本的な部分のみ簡単に見ていきました。

普段ESP系のマイコンボードを使われている方は問題ないと思いますが、私のようにArduinoからESP系のマイコンボードも使うようになったという方はもう少し突っ込んだ事をやろうと思うとESP系のマイコンボードの知識も必要となってきます。

ESP32ではESP−WROOM-32/ESP32-DevKitC-32は非常にメジャーな開発ボードの一つですが、これと中身はほぼ同じなのでArduinoからESP系のマイコンボードにも触れてみたいとお考えの方はArduino Uno形状のWeMos D1 R32は取っ付きやすいかもしれませんね!

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

コメントを残す