Arduinoと接続して使えるWi-FiモジュールにESP-01(ESP8266)という無線モジュールがあります。
ESP-01は非常に小型なWi-FiモジュールでArduinoと外部接続することによりWi-Fi機能を持たせることが出来ます。
技適が取得されていない無線モジュールなのでその使用には注意が必要ですが、安価で小型モジュールとなり使いやすいことからArduino学習用としても便利に使えます。
標準で無線機能を持たないArduinoですが、ArduinoでWi-Fi機能を使いたい場合にセットで使うことが多いモジュールとなります。
ESP-01はESP8266開発ボードの中では一番小型でシンプルなボードとなります。
メモリやクロック発生用のクリスタルなど一通りの回路が搭載されているので、ESP-01自体にスケッチを書き込み単体でミニArduinoのように動かす事もできます。
便利なWi-FiモジュールなのでArduinoでWi-Fi機能が使いたい時に私はよく使っています。
これまで当ブログでいくつか作例等含めご紹介してきたので、ESP-01関連の記事一覧はこちらからご覧ください!
そして上記記事を見て頂いた方から、ESP-01が安定動作しないといったお問い合わせをいくつか頂きました。
私がこれまでESP-01をArduinoに接続して使っていて動作が安定しないなどのトラブルが起こる原因は、ESP-01を駆動する電源が関係している事がほとんどでした。
今回はESP-01をArduinoと接続して使う場合の電源関連の話を簡単にまとめておきたいと思います。
ESP-01はESP系のボードなのでその動作電圧(ロジックレベル)はArduinoの5Vとは違い3.3Vとなっています。
Arduinoと接続するTX/RXラインはレベル調整(電圧調整)をするのが望ましくなりますが、Arduinoと接続する場合は直結しても特に問題はないようです。
トラブルの多くはESP-01の駆動電圧となる3.3Vをどこから取るかが問題になってくる場合が多いようですね!
【ESP-01】Arduinoの3.3V端子からの給電では電流不足になる場合があるようです
こちらがESP-01(ESP8266)です。
Arduinoと接続して使えるWi-FiモジュールにはESP-WROOM-02などいくつかありますが、ESP-01は小型&安価なモジュールとなりArduinoと組み合わせて使うWi-Fiモジュールとして便利に使えます!
このようにWi-Fiを使ったちょっとしたテスト動作をさせたい場合などでも便利に使えます。
この投稿をInstagramで見る
ESP-01はArduinoとシリアルで接続します。
ESP-01のTX/RXラインをArduino側のRX/TXラインに接続するといった感じですね。(ESP-01に関して詳しくはこちらの記事を参考にして下さい)
そしてArduinoとESP-01はそれぞれロジックレベルが5Vと3.3Vと異なっています。
本来TX-RX/RX-TXラインはレベル調整するのが望ましくなります。
特にArduinoのTXからESP-01のRXラインは5V→3.3Vなので抵抗2本を使った分圧などで簡単に対応する事が出来ます。
また、このようなレベルシフタがあれば5V→3.3V/3.3V→5Vの調整をするのは簡単なんですが・・・
実際にはArduinoと接続して使う場合、直結させても特に問題にはならないようです。
そしてArduinoにESP-01を接続して使う場合に動作が安定しないなどのトラブルは、ESP-01の駆動電源をどこから取るかという事が問題になることが多いようです。
お問い合わせ頂いた内容の多くは、ArduinoにESP-01を接続して使う場合に動作(Wi-Fi接続)が不安定になる事があるといったものです。
この事はESP-01を使っていて私も感じていた部分で、ブログ記事内ではそのような場合は外部電源を使ってESP-01を駆動するのが望ましいといった事を書いていました。
ESP-01の動作が安定しない要因
Arduinoボードには、外部に電源供給を行うための[5V][3.3V]端子が用意されています。
そのため、接続するセンサーやモジュールの動作電圧が違っていても対応する事が出来ます。
そしてESP-01の動作電圧は3.3VなのでArduinoと接続して使う場合、この[3.3V]端子を使って電源供給を行うことができます。
・・・出来るのですが、ESP-01はWi-Fiモジュールとなり電波を飛ばすなど消費電力が比較的高いモジュールとなるようで、Arduino側の[3.3V]端子では電流不足になることがあるようです。
Arduinoは本家ボード以外にも多数互換ボードが販売されています。
ボードによって使われているレギュレーターに違いがあり、また互換ボードによっても異なります。
例えば本家Arduino Unoの3.3VラインにはLP2985という3端子レギュレーターが使われているようです。(公式Arduino Uno Rev3の回路図より)
データシートを見ると流せる最大電流値は150mA程となっています。
また互換ボードではこの3.3Vレギュレーターが強化されているボードもあります。
そしてESP-01(ESP8266)の消費電流は、通常時で約80mAとなり最大360mA程度となるようです。
ESP-01をArduinoと接続して使う場合に動作が安定しなかったり、またESP-01自体を駆動できない(ボードLEDすら光らない)事はこれまで多々経験しました。
結論から言うと、Arduinoの[3.3V]端子からの給電だけではESP-01を駆動するための電流が不足する場合があるということですね!
使用するArduinoボードにもよりますが、ESP-01の駆動にはArduinoとは別系統の外部電源を用意するのが望ましくなるようです。
ESP-01の駆動に外部電源を用意する
先述のようにArduinoにESP-01を接続してWi-Fi機能を使う場合で動作が不安定になる等のトラブルが起こるようなら、ESP-01の駆動用電源はArduinoとは別系統の外部電源を用意すると安定動作させることが出来ます。
3.3Vの外部電源を作る方法はいろいろとありますが、簡単にいくつか見ておきます。
まず直流安定化電源をお持ちなら任意の電圧を作り出すことが出来るので簡単です。
電子工作では必須アイテムですね!
テスト動作で使うなら、このようなブレッドボード用電源モジュールを使っても簡単に3.3Vの電圧を作ることが出来るので便利だと思います。
この電源モジュールにはAMS1117という3.3Vレギュレーターが使われています。
出力側には最大800mAほど流せるのでESP-01の駆動にも問題になることはありません。
また、このような3.3V降圧モジュールが搭載されたボードもあります。
こちらもAMS1117(3.3V)3端子レギュレーターが搭載された非常に小さなボードですが、ドロップアウト電圧が低いことからArduinoの[5V]端子からでも安定した3.3Vの電圧を作り出すことが出来ます。
比較的多くの電流が流せるArduinoの[5V]端子を使い3.3Vに降圧させそのままESP-01を駆動することが出来るので、ブレッドボード上でArduinoやESP系のマイコンボードを使う際に便利な降圧モジュールです。
またこのようなESP-01専用のアダプタボードも販売されています。
上記のような3.3Vレギュレータが搭載されているので、Arduinoの5V/GND/TX/RXに接続するだけでESP-01を使うことが出来ます。
このようなボードが販売されているということは、やはりESP-01の駆動にArduino側の[3.3V]端子を使うのはあまり望ましくないということだと思います。
ボード固定用のM2ビス穴も用意されているので、製作物にも組み込みやすいと思います。
最後に!
ESP-01は無線機能を持たないArduinoボードと接続して使える便利なWi-Fiモジュールです。
しかしその動作で比較的高い動作電流が必要となることから、Arduinoの[3.3V]端子からの給電では動作が安定しないことがあります。
ESP系のマイコンボードでは標準でWi-FiやBluetoothといった無線機能が搭載されているのであまり意識する必要はありませんが、Arduinoの場合は外部電源を用意したり、[5V]端子からの降圧により使うなど工夫する事により安定して動作させることが出来ます。
ESP-01モジュールを使っていてこれまで経験した不具合等の問題の大半は駆動電源(電流不足)によるものだったので、参考になればと思います。
コメントを残す