West Gate Laboratory

人生を少しでも,面白く便利にするモノづくり

ESP-WROOM-32(DevKitC)で0からLチカまで

先日タイトルのESP-WROOM-32を購入した。

akizukidenshi.com

私は今までずっとPICかRaspberryPiを使っていた。これまではその2つのどちらかで十分だった。 ただ、今回「PICよりも高速」かつ「RaspberryPiより低消費電力」なマイコンが欲しくなりESP-WROOM-32を使うことにした。

f:id:kaname_m:20200119181708p:plain
ESP-WROOM-32(DevKitC)

ESP-WROOM-32の主なスペックを抜粋すると、

  • WiFi:802.11 b/g/n
  • Bluetooth v4.2
  • デュアルコア Tensilica LX6
  • クロック:240MHz
  • SRAM:520KB
  • 電源電圧:2.2V~3.6V
  • 消費電流:平均80mA
  • 使用温度範囲:-40~85度

他にも色々あるが、とにかくWifiもBTも載っててクロックが240MHzも出せるすごいマイコン、という感じ。 さらに、こいつはArduinoの開発環境が使える。

今回初めてArduinoの開発環境に触ったのだが、あまりにあっという間に何でもできてしまうので拍子抜けしてしまった。

ESP32でLチカなんてこれまで数多の人間がネットに方法を載せているが、ボードのリビジョンや開発環境は日々更新されており、それによって手順も多少異なる(実際に微妙に人によって書いてある手順が異なる)ので、今日段階での手順を載せておく。

というわけで今回、今まで一度もArduinoを触ったことがなかった私がほんの数瞬でLチカできるようになるまでの備忘録。

環境は以下の通り。

ボード:ESP-WROOM-32(DevKitC)

PC:Windows10 64bit

ESP-WROOM-32で0からLチカ

まずは、Arduinoの開発環境(Arduino IDE)をインストールする。 以下の公式サイトから「Windows Installer, for Windows XP and up」をダウンロードしてインストールする。

www.arduino.cc

次にESP32のサポートパッケージをダウンロードする。ESP-WROOM-32はArduinoの公式ボードではないため、追加でボードの情報をIDEに入れる必要があるためだ。

espressifのGithubのStable release linkのURLをコピーする。

f:id:kaname_m:20200119182424p:plain
アンダーライン部分をコピーする

Arduino IDEを立ち上げ、ファイル→環境設定→追加のボードマネージャ のURLに貼り付け、OK

f:id:kaname_m:20200119182847p:plain
ArduinoIDEの環境設定画面

次にIDEのツール→ボード:hogehoge→ボードマネージャ を開いて、esp32で検索する。すると、esp32のパッケージが出てくるので最新バージョンを選んでインストールする。(2020年1月19日時点で最新バージョンは1.0.4)

f:id:kaname_m:20200119182426p:plain
ESP32のボードパッケージ

次に、ツール→ボードからESP32 dev moduleを選択。

ここまで来たらブレッドボードでLチカ用回路を用意する。実はこのESP-WROOM-32のDev-kitC、ブレッドボードに絶妙にうまくはまらない。普通に挿すと片側しかピンが取り出せないし、電源ラインをまたごうとすると0.5ピン分間隔がずれ、これも上手く挿せない。

そこで、ブレッドボードの一部を引っ剥がし、0.5ピン分ずらしてもう一度はっつけた。(以下の画像の赤矢印部分、少し隙間があるのがわかるだろうか) こうすることで両側のピンを使うことができる。

(なお、このE-CALLのブレッドボードはユニットごとにテープではっつけてあるだけなので力をかけて剥がせば外れる。ただし導通用金属片が抜ける場合があるので、慎重に)

f:id:kaname_m:20200119184433p:plain
少し改造したブレッドボードにESP-WROOM-32を挿す

あとはソースコードを書いてコンパイル、書き込みをする。 LチカをするならIDEのファイル→スケッチ例→01.Basics→Blink のコードを少し改造して、

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(4, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(4, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(500);                       // wait for a second
  digitalWrite(4, LOW);    // turn the LED off by making the voltage LOW
  delay(500);                       // wait for a second
}

で良い。なお、PIN4とはDev-kitCに「4」と書いてあるピンのことだ。あとはマイコンボードに書き込めばOK。ボード上のスイッチ操作は不要である。

環境構築からLチカまで、本当に数瞬でできてしまう。PICでレジスタいじいじしていた身からすると、信じられない・・・。

本当に、やりたいことを1行書けばできてしまう世界が目の前にあるようだ。