ESP32はじめるよ

ESP32とは?

ひとことで言うと、WiFiBluetoothが使える安いマイコンモジュールです。

  • ESP8266の上位版的な製品
  • WiFiに加え、Bluetooth (Classic及びBLE 4.2)が使える (※1)
  • IOが大幅に増えた
  • 秋月で700円と安い (ESP8266は550円) (※2)
  • 技適取得済み

※1 ただし、Bluetoothに関してはライブラリの対応はまだまだこれからという印象
※2 正確にはESP32はチップの名前であり、ESP32を搭載したモジュールの名前はESP-WROOM-32ですが、みんなESP-WROOM-32のことを俗にESP32と呼んでいます。この記事でも便宜上、ESP-WROOM-32をESP32と呼ぶことにします。

購入

とりあえず買ってすぐ試したいなら(A)がオススメ。開発ボードなので必要な周辺回路が実装済みです。それでこの値段は激安です。(B)は素のブレークアウトボードです。ユニバーサル基板やブレッドボード(※)でフルスクラッチで回路を組むならこっち。(C)は自分でプリント基板をおこす人向け。あるいはウレタン線(UEW)で配線するのがお好きな人向けです。


※ 片側各5列の安いブレッドボードだと片側1列しか使えないので、片側各6列あるサンハヤトのブレッドボードがオススメです。

開発環境

おもなものとして以下の開発環境があります。

ネイティブ系には、Arduino IDEで開発できるお手軽なArduino Core for the ESP32と、硬派なSDKのESP-IDFがあり、ともにメーカーが公式にサポートしています。スクリプト系には、PythonLuaJavascriptがありますが、いずれも実装が乱立してる模様。筆者はネイティブ派なので、どれが良いかよく知りません。BASICはまあ、おっさんホイホイのつもりでしょうか?
ここではとりあえず、Arduino Core for the ESP32を使うことにします。

Arduino開発環境の導入

(2018/10/05修正)
現在では、Arduino Core for the ESP32はArduino IDEのボードマネージャには対応しています。
GitHub - espressif/arduino-esp32: Arduino core for the ESP32 の手順に従いインストールします。

  • Arduino IDEがすでにインストールされていること。
  • [ファイル] > [環境設定]で、[追加のボードマネージャのURL/Additional Board Manager URLs] に https://dl.espressif.com/dl/package_esp32_index.json を追加。
  • [ツール] > [ボード] > [ボードマネージャ]を開く。
  • 検索フィルタに「esp32」を設定すると、「esp32 by Espressif Systems」が表示されるのでそれをインストール。


以前は手動でのインストールが必要でした。
Arduino IDEがすでにインストールされていることを前提にします。また、プラットフォームはWindowsで、Gitが使えるものとします。残念ながら、Arduino Core for the ESP32はArduino IDEのボードマネージャには対応しておらず、以下のように手作業でインストールする必要があります。
まず、以下のリポジトリからクローンします。もしもGitが使えない場合、こちらからDownload ZIPして解凍してもかまいません。アップデートの時の手間だけの問題かと思います。

次に、下記のバイナリを実行します。

  • C:/Users/[YOUR_USER_NAME]/Documents/Arduino/hardware/espressif/esp32/tools/get.exe

DOS窓が開いてインストールが実行されます。あとはDOS窓が閉じるまで待ちます。
ノートン先生をはじめ一部のセキュリティソフトは、いくつかのバイナリをウィルスとして検出してしまうようです。(ノートン先生ではTrojan.Gen.8!cloudとして検出されます。) これらのバイナリをセキュリティ適用から除外するかは各自の判断でお願いします。また、Pythonを実行できる環境であれば、これらのバイナリがなくてもインストール可能のようです。

結線

ESP32-DevKitCボードを使う場合は、この節は読み飛ばしてOKです。
最低限、以下の7つのピンの結線が必要です。

  • GND, 3.3V: 電源を供給します。
  • TXD0, RXD0: USBシリアル変換を介してPCに接続します。(書き込み用)
  • EN: 10kΩでプルアップし、タクトスイッチ等でGNDに落ちるようにします。(※1)
  • IO0: タクトスイッチ等でGNDに落ちるようにします。(※2)
  • IO2: 起動時にHighに「ならない」こと。(※3)

※1 ESP8266におけるENとRESETの機能を兼ねています。
※2 プルアップは不要です。(内部プルアップされています。)
※3 内部プルダウンされています。つまり、開放でもOKです。


ブートモード設定は下表の通りになります。
つまり、ENとIO0のボタンを押してからENのボタンを先にはなすと、書き込みモードに入ります。

SPI Flash Boot(通常) Download(書き込み)
IO0 1 0
IO2 Don't-care 0

ピン配置と機能

写真

書き込み

  • Arduino IDEの[ツール] > [マイコンボード]で「ESP32 Dev Module」を選択する。
  • Arduino IDEの[ツール] > [シリアルポート]でESP32のポートを選択する。
  • ESP32を書き込みモードにして、Arduino IDEの書き込みボタンで書き込みます。(※)

※ ESP32-DevKitCの場合には、ボタンを押さなくてもArduino IDEの書き込みボタンを押すだけで自動的に書き込みモードになり、書き込みができます。