Ⅰ. 開発準備と専用電源の製作(ESP-WROOM-02)

 ESP-WROOM-02とはどのような性能のチップなのか、どんな特徴があるかについて簡単に整理します。続いて今後の開発のベースになるハードウェアを準備します。ひとつはMCUボードの製作で、ブレッドボードにESP-WROOM-02を組み付けて基本的な配線を行います。もうひとつは、同様にブレッドボードで専用電源を組み立てます。最後にPC上のArduino開発環境でESP-WROOM-02を開発できるように準備して、MCUボードと専用電源を接続し、PCとUSB接続して動作確認を行います。

1.ESP-WROOM-02とは何か

 ESP-WROOM-02は、Espressif Systems社が提供しているESP8266EXというチップを搭載したWi-Fiモジュールです。製品の外観とメーカーのデータシートに記載されている主なスペックは次のとおりです。


 ・Wi-Fi802.11 b/g/n (2.4GHz)
 ・電源電圧3.0~3.6V
 ・消費電流平均80mA
 ・Wi-Fi modestation/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
○Arduino Unoに比べて大きいメモリー容量
 ・自由に使用可能な36KBのSRAM
 ・ファイルとしても使える4MBのフラッシュメモリー
○MCUに組み込まれた豊富なインターフェイスモジュール
 ・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)
    アナログ-デジタル変換。
  など
○Arduino IDEでソフトウェアを開発することができる


 このように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/4W4本各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.3A1個650円
 ・配線材料少々
 LXDC55は村田製作所製のDCDCコンバータICで、小型ながら最大1.5Aの出力電流を確保できます。入力電圧範囲が広く(どちらも6.0V~14.0V)発熱量が少ないので取り扱いが容易です。


(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を接続しての動作確認

 これですべての準備が整いました。まずMCUボードと専用電源3.3V側をジャンパーコードで配線します。次にスイッチングACアダプターをDCジャックに差し込んでAC電源につなぎます。最後に、USBシリアル変換モジュールとPCをUSBケーブルで接続します。
 Arduino IDEを起動して図のようなスケッチを作成します(プログラムコードを書き込みます)。すでにIO13ピンに設置しているLEDを点滅させる内容です。プログラムはsetup()とloop()の2つの部分から構成されていて、setup部は処理開始時に一度だけ実行されます。loop部は繰り返し呼び出され実行されます。IO13ピンを1秒間(1000mSec.)Highにして、つまり点灯して、1秒間Lowで消灯することを繰り返します。
 コンパイル前に[ファイル]を選択して、「名前をつけて保存」で「L_chika」と命名しました。この状態で、図の①のチェックアイコンをクリックすると、スケッチをコンパイルしてエラーの有無をチェックすることができます。また②をクリックすると、コンパイルした結果をMCUボードに書き込みます。
 その前に、今後よく利用することになるシリアルモニターの設定を済ませておきましょう。[ツール]を選択して「シリアルモニタ」をクリックしてください。下図のようなモニター画面が現れます。右下のリストボックスを開いて、「改行なし」を「CRおよびLF」に切り替え、通信速度は「115200bps」に設定してください。
 ②をクリックする前にちょっと待ってください。MCUボードはこの状態ではプログラムをダウンロードする用意ができていません。そこで、黄色のタクトスイッチを押したままで赤のタクトスイッチを押してください。リセットが掛かり、その瞬間に黄色スイッチの押下でIO0がLowになっていたので「書き込みモード」で待機します。
 ②をクリックするとコンパイルを開始し、スケッチに問題(エラー)がなければMCUボードに書き込まれます。そしてMCUボードのLEDが1秒ごとにチカチカを繰り返せば、MCUボードの配線も電源も、そしてここまでのインストールとスケッチもすべてOKということになります。もし動作しなければ、もう一度配線等をチェックしてください。
 LEDのチカチカはPCとの接続を切っても続き、MCUボードの電源供給を絶つまで動作し続けます。

 次のステップでは、電池バックアップ機能と時刻自動補正機能を持ったシステムクロックを製作します。お楽しみに!