1.ESP-WROOM-02とは何か
ESP-WROOM-02は、Espressif Systems社が提供しているESP8266EXというチップを搭載したWi-Fiモジュールです。製品の外観とメーカーのデータシートに記載されている主なスペックは次のとおりです。
・Wi-Fi | 802.11 b/g/n (2.4GHz) |
・電源電圧 | 3.0~3.6V |
・消費電流 | 平均80mA |
・Wi-Fi mode | station/softAP/SoftAP+station |
・セキュリティ | WPA/WPA2 |
・暗号化 | WEP/TKIP/AES |
・サイズ | 18mm×20mm×3mm |
写真のブルーの部分は基板プリントアンテナで、これを含んだサイズが18mm×20mmですからとてもコンパクトであることが分かります。
この小さなパッケージは、Wi-Fi機能だけでなくマイコンも内蔵していて、Arduinoでは実現できないような規模の大きいソフトを実行することができます。利用面から見たESP-WROOM-02の特徴を列挙してみましょう。
○技適マークが付いたWi-Fiモジュールである
○低消費電力の32bitCPUを内蔵している
・CPUクロック | 80MHz |
・電源電圧 | 3.0~3.6V |
・自由に使用可能な36KBのSRAM |
・ファイルとしても使える4MBのフラッシュメモリー |
・GPIO(General Purpose Input/Output) |
汎用入出力インターフェイス。 |
・SPI(Serial Peripheral Interface) |
モトローラ社が提唱した3または4本の通信線で構成する通信方式で、数Mbpsでの通信が可能。 |
・SDIO(Secure Digital Input/Output) |
SDカードと同じインターフェースでデータの入出力を行う。 |
・UART(Universal Asynchronous Receiver Transmitter) |
調歩同期方式によるシリアル信号をパラレル信号に変換したり、その逆を行う。 |
・PWM(Pulse Width Modulation) |
パルス幅変調によりアナログ電圧出力を実現することができる。 |
・I2C(Inter-Integrated Circuit) |
フィリップス社が提唱した2線式の通信方式で、1つのマスターから複数のスレーブと通信できる。 |
周辺デバイスとのシリアル通信に利用することができて、最大1Mbpsの通信が可能。 |
・ADC(analog-to-digital converter) |
アナログ-デジタル変換。 |
など |
このようにWiFiモジュールと言うよりも、むしろWi-Fi機能を内蔵したMCUともいえる優れもの。しかもこれがワンコイン+αの金額で入手できるのです(2017年2月時点の秋月電子通商価格は税込550円)。
2.MCUボードの製作
ESP-WROOM-02は秋月電子通商、スイッチサイエンス、マイクロテクニカなど多くの販売先から入手することができます。ただし、先の写真で紹介したものはピン配置が1.5mmピッチのため、そのままではブレッドボードに取り付けることができません。そこで、2.54mmピッチの基板(ブレイクアウトボード)にピッチ変換されたものを購入します。
執筆時点では、ESP-WROOM-02とUSB-シリアル変換IC FT231XSを搭載したスイッチサイエンス社の開発ボード「ESPr Developer」に人気が集中しているようです。価格は2,160円と少々高いのですが、他にも3.3V出力レギュレータやリセットスイッチ、動作モード切替用スイッチが搭載されているので、すべてを個別に揃えるよりも割安感があります。また、電源さえ準備できればすぐに使用できるので便利です。
〔資料〕・スイッチサイエンス社 ESPr Developer(ESP-WROOM-02開発ボード)
ここでは、単純にピッチ変換だけしたものを購入しました。写真のようにスイッチサイエンスのものはコンパクトなので、基板に組み込むのに都合が良い。しかし、標準ブレッドボード上では横方向のピン幅が広いため配線しにくくなる。いっぽう秋月電子のものは縦に長いが、ブレッドボードにはフィットしやすいと言えます。
〔資料〕・ESP-WROOM-02ピッチ変換済みモジュール《フル版》
・Wi-Fiモジュール ESP-WROOM-02 DIP化キット
これらを選んだのは、ただ価格が安いからと言うことだけでなく、周辺回路の組み立て方や個々のピンの動作などを調べてみたかったからです。それぞれ1個ずつ購入しましたが、スイッチサイエンスのものはこのプロジェクトの最後で、最終的にプリント基板に組み付けるまで保管しておくことにします。以降の製作や評価は、秋月電子のもので進めることにしました。
さて、どちらも使用に当たってヘッダーピンを半田付けする必要があります。秋月電子のものはピンが付属していますが、スイッチサイエンスのもは別途用意しなければなりません。
(1)使用する部品
MCUボードの製作には以下の部品を使用します。
USBケーブルと抵抗器の格安セット(37種類740本)はアマゾンで、他はすべて秋月電子通商で購入しました。
・Wi-Fiモジュール ESP-WROOM-02 DIP化キット | 1個 | 650円 |
・超小型USBシリアル変換モジュール | 1個 | 600円 |
・抵抗内蔵5mm LED(5V用) | 1本 | 12円 |
・タクトスイッチ 赤色・黄色 | 各1個 | 各10円 |
・カーボン抵抗器 10KΩ 1/4W | 4本 | 各1.5円 |
・ブレッドボード 400穴 | 1枚 | 200円 |
・USB 2.0 A オス -マイクロB 5 ピンケーブル | 1本 | 475円 |
・配線材料 | 少々 |
(2)ESP-WROOM-02のピン配置と役割
秋月電子のブレイクアウトボードは、ESP-WROOM-02のピンをそのまま忠実に引き出しているのでGNDがいくつもありますが、他社のものではGNDを1本にまめているものもあります。
Wi-Fi機能を内蔵しているので、実際に使用できるGPIOは少なくなっています。また、12・13番ピンは開発時などにPCとシリアル通信に使うので、GPIOとしての使用は制限されます。注意すべきはTOUTピンです。これは唯一のアナログ入力ピンで、0~1Vの電圧を10ビットの分解能でA/D変換します。したがって、電圧レベルが1.0Vに収まるように調整する必要があります。
MCUボード製作の前に、ESP-WROOM-02の処理モードを理解しておくことが大切です。15番のリセットピンはGNDに接続された(Lowになった)とたんにモジュールをリセットします。この時、処理モードを決定する他のピンの状態を調べて、次の3種類の動作をします。
SDブートモードを使用することはまれなので、これを除くとGPIO15は他の用途に使用できます。GPIO2は常時High(3.3Vに接続)にしておき、GPIO0をLow/Highに切り替えることで処理モードが決定されることになります。GPIO0がHighなら実行モード(Flash Boot Mode)として、すでにフラッシュメモリーに書き込まれているプログラムを実行します。Lowなら書き込みモード(UART Download Mode)として、PCから実行プログラムをフラッシュメモリーにダウンロードしてから実行を開始します。
(3)MCUボードを組み立てる
ブレイクアウトボードを使用する前に、ヘッダーピンの半田付けをします。あらかじめヘッダーピンをブレッドボードに刺しておき、その上にブレイクアウトボードを固定してから、先の細い半田ごてで溶接します。右の写真は半田付けが終わったものです
次に超小型USBシリアル変換モジュールですが、これもピンを半田付けして使用します。左端の5VピンはPCのUSBケーブルから供給されるので、MCUボードでは使用しません。RXDとTXDはESP-WROOM-02のTXDとRXDに、それぞれクロスするように接続します。また、リセットと処理モードを決定する部分は、それぞれ赤と黄色のタクトスイッチを使うことにします。ESP-WROOM-02を基板に取り付けて配線を完了すると、次の写真のようになります。
以上を回路図で示すと次のとおりです。
配線順序を簡単に整理しておきます。
1) 3.3Vピンをブレッドボード下側の赤[+]ラインに接続します。
2) EN、IO2、IO0の各ピンは、プルアップ抵抗10KΩを通して[+]ラインに接続します。
3) IO15ピンから10KΩを通してブレッドボード下側の青[-]ラインに接続します。
4) GNDピンを[-]ラインに接続します。
5) 黄色タクトスイッチを取り付けて片側をIO0ピンへ、もう一方を[-]ラインに接続します。
6) 18番ピンのGNDをブレッドボード上側の青[-]ラインに接続します。
7) 赤色タクトスイッチをRSTとGNDピンをまたがせて配置します。
8) USBシリアル変換モジュールを写真の位置に取り付けて、RXDとTXD、TXDとRXDがクロスするように接続。
9) USBシリアル変換モジュールのGNDを反対側の[-]に接続します。
10) 動作テストに備えて、抵抗内蔵のLEDをIO13ピンと[-]ラインに接続。LEDの極性に注意してください。
以上でMCUボードが完成しました。電源供給は、次に作成する専用電源の3.3V側に、MUCボード下側の[+][-]ラインを接続します。後でも述べますが、赤のタクトスイッチを押すとモジュールがリセットされて、すでに保持しているプログラムを再実行します。黄色のタクトスイッチを押さえたままで赤のタクトスイッチを押すと、モジュールをリセットして待ち状態になります。USB接続したPC上でプログラム(Arduinoではスケッチと呼びますが)の書き込み指示をすると、コンパイルした実行プログラムをMCUボードにダウンロードして実行します。
3.専用電源の製作
マイクロコンピュータにとっていかに電源が大切であるかは、Raspberry Pi関連コーナーでも冒頭で取り上げています。ESP-WROOM-02は低消費電力チップではありますが、センサーや周辺器を増設すると、PCと接続したUSBケーブルからの電力供給だけは安定動作面でムリがあります。これを解消するために、専用電源(と呼ぶほど大げさなものではないのですが)を製作することにしました。
ESP-WROOM-02は3.3Vで動作しますが、センサー類には5Vを必要とするものもあるので、2種類の電圧を供給できる仕様とします。
(1)使用する部品
専用電源の製作には降圧スイッチング・モジュールを採用することにして、以下の部品を揃えます。
・LXDC55使用DCDCコンバータキット(3.3V) | 1個 | 450円 |
・LXDC55使用DCDCコンバータキット(5V) | 1個 | 450円 |
・ブレッドボード用DCジャックDIP化キット | 1個 | 100円 |
・ミニブレッドボード 170穴 | 1枚 | 130円 |
・超小型スイッチングACアダプター 9V 1.3A | 1個 | 650円 |
・配線材料 | 少々 |
(2)専用電源を組み立てる
2つのLXDC55使用DCDCコンバーター、それにブレッドボード用DCジャックもキットなので、まずこれらに同梱されているピンを半田付けします。
DCDCコンバーターには3つの端子があり、前面から見て左[I]が入力、真ん中[G]がGND、右の[O]が出力ときわめてシンプルです。ブレッドボードに組み立てた部品と配線は写真のとおりで、とくに説明の必要はないでしょう。
出来上がりはこんな感じで、電源はAC 100VからスイッチングACアダプターで9Vに降圧したものを入力します。
出力はジャンパーコードで取り出すことになります。
4.Arduino開発環境の拡張
Arduinoでセンサー類のテストをしたり遊んだりしていた自分には、C言語やC++で記述できて使いやすいArduino IDE(開発環境)がそのまま使えるのは最大の魅力です。プログラム言語の子細はさておき、誰でも感覚的になじみやすい環境が整備されています。
ただし、Arduino IDEでESP-WROOM-02の開発を行うにはちょっとした準備作業が必要になります。もしArduinoの開発をしたことがなければ、その前にArduino開発環境のインストールを行いましょう。また、古い環境を使い続けている場合は、これを機に最新の環境をインストールしてはいかがでしょうか。
(1)Arduino IDEのインストール
Arduino IDEがインストールされていない場合は、次のリンクをクリックしてインストールしてください。
Arduino IDE Download
「Download the Arduino IDE」の画面からダウンロードします。Windows、Mac、 Linux OS向けに提供されているので、手元の環境に合ったものを選びます。Windowsの場合は「Installer」と「ZIP file for non admin install」のどちらかを選択します。
ここでは「Installer」を選択しました。次の画面が表示されるので、[JUST DOWNLOAD]のリンクをクリックするとダウンロードが始まります。
「arduino-1.8.1-windows.exe」というファイルがダウンロードされるのでこれを実行させます。
インストールが始まると以下のような画面が表示されます。とくに問題がなければ既定の内容のままでインストールを進めてください。
途中で下のようなデバイスソフトのインストール確認画面が何度か表示されるので、いずれもインストールしてください。
インストールが完了すると「Completed」画面になります。インストール進行中に[Show details]ボタンをクリックしていたので、画面にはインストールの経過が表示されています。
デスクトップにショートカットが作成されているので起動してみましょう。
しばらく下のような起動中画面が表示された後、プログラム入力画面が現れます。
標題が「sketch_」から始まり、タスクバーにも「スケッチ」が見えます。Arduinoではプログラムのことをスケッチと呼び、ほとんどすべての開発作業はこの画面で行うことができます。
(2)ESP-WROOM-02の開発準備インストール
この状態でArduinoをUSBケーブルで接続すればすぐにも開発を始められるのですが、ESP-WROOM-02を使うためにはさらに追加インストールが必要になります。
①ESP-WROOM-02ボードの追加
[ファイル]を選択して現れるメニューから「環境設定」をクリックします。
環境設定ダイアログが開くので「追加のボードマネージャのURL」に次のURLを入力します。
http://arduino.esp8266.com/stable/package_esp8266com_index.json
また、ここでスケッチの保存場所を指定することもできます。
[OK]ボタンでダイアログを閉じます。
次に[ツール]を選択して現れるメニューから「ボードマネージャ」をクリックします。
表示された一覧の最後の方にesp8266という項目があるので、右下のリストボックスでバージョンを選択して[インストール]ボタンをクリックします。
インストールが終わると表示が次のように変わります。これでArduino IDEのもとでESP-WROOM-02を開発できるようになりました。
②ボード選択
もう一度[ツール]を選択して、メニューから「マイコンボード」を選択します。マイコンの一覧が表示されるので「Generic ESP8266 Module」を選択します。
続いて「Flash Mode」以下の項目を下図のように設定します。ただし、シリアルポートはそれぞれのPC環境に合わせてください。
(3)MCUボード、専用電源、PCを接続しての動作確認