しなぷすのハード製作記

ESP-WROOM-02でLチカとWi-Fiの動作試験をする(3)

ツイート
シェア
このエントリーをはてなブックマークに追加
フォロー
目次へ  前のページへ (1) (2) (3) (4) 次のページへ
2017年07月20日 公開。
2017年08月01日 図13の回路図にLEDが抜けていたのを訂正。

5.ESP-WROOM-02のピン配置と各ピンの機能

ESP-WROOM-02は、写真1に示すように18ピンのモジュールです。各ピンの名称や働きについて、表2にまとめました。

写真1(再掲)、ピッチ変換基板に載ったESP-WROOM-02
↑ 画像をクリックすると拡大
写真1(再掲)、ピッチ変換基板に載ったESP-WROOM-02
表2、ESP-WROOM-02のピン配置
番号 名称 働き
1 3V3 3.3V電源(VDD)。
2 EN チップイネーブルピン。アクティブ・ハイ。
3 IO14 GPIO14/HSPI_CLK
4 IO12 GPIO12/HSPI_MISO
5 IO13 GPIO13/HSPI_MOSI/UART0_DCTS
6 IO15 GPIO15/MTD0/HSPICS/UART0_RTS
7 IO2 GPIO2/UART1_TXD
8 IO0 GPIO0
9 GND GND
10 IO4 GPIO4
11 RXD UART0_RXD/GPIO3
UARTダウンロードの際の受信ピン。
12 TXD UART0_TXD/GPIO1
UARTダウンロードの際の送信ピン。
13 GND GND
14 IO5 GPIO5
15 RST リセットピン。
16 TOUT A/D変換器の入力ピン。電源電圧をA/D変換する場合は、このピンをフローティングにする。
17 IO16 GPIO16
RSTピンと接続し、ディープ・スリープモードからウェイク・アップするのにも使われる。
18 GND GND

ここで、ESP-WROOM-02のピン配置の特徴について考えてみます。

Arduinoなどのマイコンボードと比較する場合、I/Oピン(入出力ピン)が少ないのが特徴のひとつです。ESP-WROOM-02のデジタルI/Oピンは11ピンで、アナログ入力ピンは1本です。それに対し、Arduino Unoの場合は、デジタルI/Oピンが20ピンあり、うち6ピンはアナログ入力ピンとしても使えます。

表2の働きの欄に"GPIO"に続いて数字が載っている(GPIO2、GPIO14など)のが汎用のI/Oピン(GPIO)として使えるピンです。これらのピンにおいては、pinMode関数digitalWrite関数digitalRead関数が使えます。例えば

pinMode(2,OUTPUT);

とすればGPIO2(つまり、IO2ピン)が出力モードになりますし、続いて

digitalRead(2,HIGH);

とすれば、GPIO2の出力がHになります。

ただし、ESP-WROOM-02のデジタルI/Oピンの中には、他の機能と兼用になっており、GPIOとして使うには、注意が必要なものがあります。

例えば、IO15、IO2、IO0の各ピンの入力電圧は、リセット時に読み取られ、それらの状態によって、表3の様にブートモード(起動モード)が決まります。

表3、ブートモードの決定
ブートモード IO15 IO2 IO0
UART Download Mode
L
H
L
Flash Boot Mode
L
H
H
SD-Card Boot Mode
H
L
L

UART Download Modeは、UART経由でプログラム(スケッチ)を読み込み、読み込んだ内容をフラッシュメモリに書き込むモードです。

Flash Boot Modeは、フラッシュメモリに書き込まれたプログラム(スケッチ)を実行するモードです。

SD-Card Boot Modeは、SDカードに書き込んだプログラムを実行するモードらしいですが、使用頻度が低く、ネット上にもほとんど情報がありません。私もよく理解していません。

通常はIO15をプルダウン、そしてIO2とIO0をプルアップして、デフォルトでFlash Boot Modeにします。そして、プログラム(スケッチ)を書き込む時だけ、IO0をタクトスイッチなどでGNDにショートして、UART Download Modeにします。(図12参照)

図12、よく使われるブートモード選択回路
↑ 画像をクリックすると拡大
図12、よく使われるブートモード選択回路

Flash Boot Modeでリセットを掛けた場合、CPUが動作を始めたらIO15、IO2、IO0をGPIOとして使ってもいいのですが、リセットを掛けた場合に、確実にプルアップ抵抗やプルダウン抵抗で決められる論理状態でリセットがかかる様に回路構成を工夫する必要があります。特に、これらのピンを入力ピンとして使う場合は、リセット時に信号源をバススイッチなどで切り離す様な回路構成にする必要があり、回路が複雑になります。そのため、IO15、IO2、IO0の各ピンは、ブートモードの決定のみに使い、GPIOとしては使わない事が多いのです。

GPIOと別の機能を兼ねているために注意が必要なピンの別の例としては、RXDとTXDの2つのピンが挙げられます。RXDとTXDはそれぞれGPIO3とGPIO1としても使用されますが、UART Download Modeでプログラム(スケッチ)をフラッシュメモリに書き込む際には、UART0のRXD(受信)とTXD(送信)として働き、(USBシリアル変換器経由で)パソコンと通信するのに使われます。そのため、RXDとTXDのピンには、通常はUSBシリアル変換器のTXDとRXDのピンが、それぞれ接続されます。

Flash Boot Modeで起動してプログラム(スケッチ)を実行する際には、RXDとTXDのピンはそれぞれGPIO3とGPIO1としては使えるものの、回路構成を工夫しないと、元々つながっているUSBシリアル変換器と、制御対象のデバイスの信号が干渉する可能性があります。

以上の様に、使用上の注意が必要な5つのGPIOピン(IO15、IO2、IO0、RXDおよびTXD)を使わないとすると、GPIOピンは11ピンから6ピンに減ってしまいます。この様に、使えるI/Oピンが少ない事を考慮して回路設計する事が、ESP-WROOM-02を使いこなす上で、ポイントとなります。

さらに、アナログ入力ピン(A/D変換入力ピン)がTOUTの1ピンしかなく、入力電圧の範囲も0~1Vの範囲に固定されている点も、設計の制約を大きくしています。

2チャンネル以上のアナログ信号を計測する場合は、I2C接続やSPI接続のA/D変換器を増設する必要があるでしょう。また、1チャンネルでいい場合でも、入力電圧のレベルを0~1Vの範囲に収めるために、分圧回路が必要になる場合があります。

ENピンは、チップイネーブルピンです。このピンをLにすると、ESP-WROOM-02が停止します。このピンは、他にマイコンがある場合に、そのマイコンからESP-WROOM-02の停止をENピンで指示し、通信機能を使わない時に電力消費を抑える目的で使われます。ESP-WROOM-02を単独で使用する場合は、プルアップ抵抗でENピンをHに固定します。

広告

6.ESP-WROOM-02でLチカの試験をするための回路

それでは、ESP-WROOM-02でLチカの試験をするための回路を紹介します。回路図を図13、回路の写真を写真3に示します。

図13、ESP-WROOM-02でLチカの試験をするための回路
↑ 画像をクリックするとPDFファイルで表示
図13、ESP-WROOM-02でLチカの試験をするための回路
写真3、図13の回路をブレッドボード上に組んだ様子
↑ 画像をクリックすると拡大
写真3、図13の回路をブレッドボード上に組んだ様子

スケッチを書き込むために使うUSBシリアル変換器として、秋月電子で売っているFT232RL USBシリアル変換モジュールを使いました。

FT232RL USBシリアル変換モジュールにはモード設定のためのジャンパピンが2つ(J1とJ2)がありますが、写真4の様に設定してください。これで、I/O電圧が3.3Vになり、USBシリアル変換用IC(FT232RL)がUSBバスパワーで動作する様になります。

写真4、FT232RL USBシリアル変換モジュールのジャンパピンの設定
↑ 画像をクリックすると拡大
写真4、FT232RL USBシリアル変換モジュールのジャンパピンの設定

ESP-WROOM-02は3.3Vの電源電圧で動作しますが、USBからは5Vしか供給されません。3.3Vに電圧を降下させる電源回路(LDO)が必要になります。FT232RLにも3.3V出力のLDOが内蔵されているのですが、FT232RL内蔵のLDOは、出力電流が最大50mAしかありません。

一方で、ESP-WROOM-02の平均消費電流は80mAもあり、さらに、下記参考リンクのサイトによると、電源投入時には、300mA以上の突入電流が流れるそうです。また、ESP-WROOM-02のデータシートにも、500mA以上供給できる電源が望ましいと書いてあります。

FT232RLの内蔵LDOではESP-WROOM-02に十分な電流を供給できないので、秋月電子で売っているTA48M033FというLDOを使う事にしました。

電源回路は大電流を扱うため、ブレッドボードのピンの接触抵抗が問題になる可能性があります。そのため、電源回路だけはブレッドボードで組まず、ユニバーサル基板を使って組みました。(写真3の左上の茶色い基板)

なお、今回は、USBシリアル変換器に秋月電子のFT232RL USBシリアル変換モジュールを使いましたが、使っている信号線はTXDとRXDだけですので、例えばスイッチサイエンスFTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き)(写真5参照)などを使う事もできます。

写真5、FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き
↑ 画像をクリックすると拡大
写真5、FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き

ただし、スイッチサイエンスのUSBシリアル変換器は、I/O電圧を3.3Vに切り替えると、VCC出力が3.3Vになり、5Vの電源が取れなくなるため、今回は使用しませんでした。JP1の5V側の端子から電源を取るなどの工夫をすれば、スイッチサイエンスのシリアル変換器でもUSBの5V電源を引き出せると思います。

次のページでは、このページで紹介した回路のLEDを点滅させる試験をします。

ツイート
シェア
このエントリーをはてなブックマークに追加
フォロー
目次へ  前のページへ (1) (2) (3) (4) 次のページへ

このページで使われている用語の解説

関連ページ

このサイトの記事が本になりました。
書名:Arduino 電子工作
ISBN:978-4-7775-1941-5
工学社の書籍の内容の紹介ページ
本のカバーの写真か書名をクリックすると、Amazonの書籍購入ページに移動します。
こちらのページもおすすめです。
サイトマッププライバシーポリシーお問い合わせ用語集
しなぷすのハード製作記