ガイド · 読了まで16分

ESP32の授業計画:初回授業の準備チェックリストと40分の流れ

ESP32の授業計画:初回の授業では全グループがコードを書き込んでLEDを点灯させます。準備チェックリスト、24人分の材料、40分の流れ、コード、8つのトラブルの直し方をまとめました。

ESP32の授業計画を立てるときは、初回の授業の目標を1つに絞りましょう。授業が終わるまでに、全グループが自分のESP32にコードを書き込み、LEDを1つ点灯させることです。Wi-Fi、センサー、スマホからの操作は次回以降の授業で扱います。40分で足りるかどうかは、授業中に何をするかよりも、授業の前に何をしておくかで決まります。USBシリアル変換チップのドライバはインストールされているか、Arduino IDEにESP32のボードパッケージは入っているか、机の上のケーブルは本当にデータを通すか。この3つが準備できていれば最初の書き込みは5分で終わります。準備できていなければ、授業の半分が「ポートが見えない」で過ぎてしまいます。

この記事では、明日の授業にそのまま持っていけるセットを紹介します。1週間前、前日、授業当日の朝にコピーして使えるチェックリスト、材料表、1分刻みの40分の流れ、そのままコンパイルできるスケッチ2本、ESP32がArduino Unoと違う5つの点、授業でよく起きる8つのトラブルの1分でできる対処法、そしてまとめの質問です。ここでは24人のクラスで、生徒を3人ずつ8グループに分けると仮定します。以下の数字はすべてこの前提で出しています。授業時間が45分や50分なら、増えた時間は予備として使えます。ESP32にまだなじみがなければ、先にESP32とは?を読んでおいてください。

30ピンのESP32 DevKitボード:Micro-USBポート、BOOTボタンとENボタン、ESP32-WROOM-32モジュール、2列に並んだピン
初回授業で使うボード:30ピンのESP32 DevKit。始める前に、USBポート、BOOTボタンとENボタン、D5、GND、3V3のピンを生徒と一緒にボード上で探しましょう。

初回授業の目標:なぜLED1つだけなのか?

ESP32の初回授業には2つの選択肢があります。Wi-Fiを使った見栄えのするプロジェクトを実演するか、全員が自分の手で小さなものを動かすかです。学べることがはるかに多いのは後者です。LEDを1つ点灯させるには、生徒は一連の流れを最初から最後まで一度たどる必要があります。コードを開き、ボードとポートを選び、コンパイルし、書き込み、回路を組み、結果を確かめ、値を1つ変えてもう一度書き込む。この流れが一度うまくいけば、次回以降の授業では新しい部品を足していくだけです。この流れができる前にWi-Fiへ進むと、ネットワークのパスワード、ドライバ、ケーブルの問題が重なり、どれがエラーの原因なのかを見分けることがほぼ不可能になります。そのため、この計画では初回授業でネットワークを使いません。まずボードの内蔵LED、次にブレッドボード上の外付けLED1つ、早く終わったグループには両方を交互に点滅させる課題を用意します。

授業前の準備チェックリスト

準備は3つの時期に分けます。リストはコピーして印刷しても、学校のICT担当者と共有してもかまいません。ドライバやソフトのインストールのように管理者権限が必要な作業は、多くの学校でICT担当者を通すことになります。1週間前にすること:

  • ボードの数を数え、型番を確認します。この計画は30ピンのESP32 DevKit(ESP32-WROOM-32モジュール搭載)向けに書いています。38ピンのボードでもコードは同じで、ピンの並びだけが違います。
  • ボードのUSBポートの横にある小さなチップの刻印を読みます。CP2102、CH340、CH9102のどれでしょうか?必要なドライバはこれで決まります。
  • 授業で使うパソコンにArduino IDE 2をインストールしておきます。学校のパソコンは、たいていインストールに管理者権限が必要なので、ICT担当者と日程を合わせましょう。
  • Arduino IDEのボードマネージャからesp32 by Espressif Systemsパッケージをインストールします。数百メガバイトのダウンロードになるので、学校のネットワークで授業中にダウンロードしようとすると40分では足りないかもしれません。
  • USBシリアル変換チップのドライバをインストールし、ボードを1台つないで「ツール」>「ポート」に新しいポートが表示されることを確認します。
  • ケーブルをテストします。1本ずつボードへの書き込みを試し、充電専用ケーブルを取り除き、データ通信用ケーブルに色付きテープで印を付けます。
  • ESP32をブレッドボードに挿し、両側に空いた穴が残るか確認します。残らない場合は、各グループにブレッドボードを2枚配ります。
  • 学校のネットワークの制限を調べます。ESP32は2.4 GHzのWi-Fiにしか接続できず、ユーザー名とパスワードを求める企業向けのネットワークは扱いが難しくなります。初回授業ではWi-Fiを使いませんが、次回以降の授業のためにこの情報が必要です。
充電専用ケーブルの落とし穴:引き出しにあるMicro-USBケーブルやUSB-Cケーブルの中には、充電専用でデータ線がないものがあります。このようなケーブルでもボードの電源LEDは点灯するので、生徒はボードが動いていると思い込みますが、Arduino IDEにはいつまでたってもポートが表示されません。「ポートがない」と言うグループがまずすべきことは、ケーブルの交換です。テスト済みのデータ通信用ケーブルには印を付け、初回授業では生徒が家から持ってきたケーブルを使わないようにしましょう。

前日には、すべてのパソコンを授業で使える状態にしておきます。授業中に初めて行うセットアップ作業を1つも残さないことが目的です。授業当日の朝にも10分ほど時間を取りましょう。2つのリストを1か所にまとめました。

  • 前日:すべてのパソコンでテスト書き込みをします。ボードをつなぎ、ESP32 Dev Moduleとポートを選び、内蔵LEDのスケッチを書き込んで、LEDが点滅することを確認します。最初のコンパイルは1分以上かかることがあります。この試しの書き込みで、その後のコンパイルも速くなります。
  • 前日:Windowsでは、ポート番号(COM3、COM5など)を書いたラベルをパソコンの横に貼っておきます。同じボードを同じUSBポートに挿せば、たいてい同じ番号になります。
  • 前日:グループごとの箱を用意します。ボード、ケーブル、ブレッドボード、LED 2個、220 Ωの抵抗2本、ジャンパーワイヤー4本です。予備のセットは教卓に置いておきます。
  • 前日:2本のスケッチをすべてのパソコンのデスクトップに保存しておきます。インターネットが遅くなっても、生徒はそこからコードを開けます。
  • 前日:プロジェクターに映したBlueGraysでESP32の内蔵LEDを点滅プロジェクトが開くことを確認します。
  • 当日の朝:パソコンを起動してArduino IDEを開き、ボードの設定がESP32 Dev Moduleのままになっていることを確認します。
  • 当日の朝:ホワイトボードにボードの簡単な図を描きます。USBポート、BOOT、EN、GND、3V3、GPIO5(ボード上の表記はD5)です。
  • 当日の朝:ホワイトボードの隅に1行書いておきます。「Connecting...で止まったらBOOTを押し続ける」。
  • 当日の朝:箱の中のLEDと抵抗の数を最後にもう一度数え、ケーブルを箱の上に置いておきます。

ドライバ、ボードパッケージ、BOOT:知っておきたい詳細

Arduino IDEのボードマネージャには、ESP32のパッケージが2つ表示されることがあります。授業で使うボードに合うのはEspressifのesp32パッケージです。「Arduino ESP32 Boards」という名前のパッケージは、Arduino純正のNano ESP32用です。インストール後、「ツール」>「ボード」>「esp32」からESP32 Dev Moduleを選びます。パッケージが一覧に表示されない場合は、「基本設定」の「追加のボードマネージャのURL」にEspressifのパッケージのURLを追加する必要があります。手順はESP32とは?にあります。ESP32のスケッチはUnoよりコンパイルに時間がかかり、LEDの点滅でも最初のコンパイルに1分以上かかることがあります。このことを最初に生徒に伝えておきましょう。そうしないと、進行状況バーが止まって見える間に「書き込み」を何度も押してしまいます。インストールするドライバは、ボードのUSBシリアル変換チップで決まります。

USBシリアル変換チップボード上での見分け方Windowsでのポート名メモ
CP2102 / CP2104USBポートの横にある小さな正方形のチップで、CP2102またはSiLabsと刻印されているSilicon Labs CP210x USB to UART Bridge (COMx)Windowsが自動でドライバを入れることが多い。入らない場合はSilicon LabsのCP210xドライバが必要
CH340 (CH340C, CH340G)長方形のチップで、CH340と刻印されているUSB-SERIAL CH340 (COMx)WCHのCH340ドライバが必要。Windows Updateで自動的に入ることもある
CH9102新しいボードにある小さな正方形のチップで、CH9102と刻印されているUSB-Enhanced-SERIAL CH9102 (COMx)WCHのCH9102/CH343ドライバが必要。CH340のドライバではこのチップを認識しない

BOOTボタンはESP32のGPIO0ピンにつながっています。書き込みが始まるとき、ボードは書き込みモードに入る必要があります。ほとんどのDevKitは、USBシリアル変換チップからの2つの信号を使ってこれを自動で行います。ボードとケーブルの組み合わせによっては、この自動切り替えがうまくいかないことがあります。出力欄の「Connecting...」の点が延々と続き、最後に「Failed to connect to ESP32」(ESP32に接続できない)というエラーになります。対処法は、「Connecting...」が表示されたらすぐにBOOTを押し続け、「Writing at」で始まる進行状況の行が流れ始めたら離すことです。ENボタンはボードを再起動します。書き込みは終わったのにコードが動いていないように見えるときは、ENを1回押せば十分です。同じボードで何度も問題が起きる場合は、「ツール」メニューのUpload Speedを921600から115200に下げるとたいてい改善します。macOSでは、ポート名はたいていcu.usbserialまたはcu.SLAB_USBtoUARTで始まります。

初回授業ではWi-Fiを使わないでください。ESP32は2.4 GHzのネットワークにしか接続できません。学校のネットワークでは、ユーザー名とパスワードでのログインを求められたり、ブラウザにログインページが表示されたりすることが多く、ESP32はこうしたページを通過できません。Wi-Fiの授業に進んだときに一番実用的なのは、先生のスマホのテザリングを2.4 GHz帯に設定して使う方法です。これも前日に自分のボードで試しておきましょう。

材料リスト:グループごとと24人のクラス全体

24人の生徒を3人ずつに分けると8グループになり、予備を1セット加えて9セットを用意します。2人組にする場合は12グループと予備で13セットが必要になり、パソコンの台数もそれに合わせて増えます。はんだ付けが必要な部品はありません。各グループにLEDと抵抗を2つずつ入れる理由は単純です。初回授業では、LEDを逆向きに挿したり足を折ったりすることがとてもよくあり、グループを待たせたくないからです。

部品グループごとクラス全体(8グループ+予備1)メモ
ESP32 DevKit(30ピン、ESP32-WROOM-32)19型番は1種類に統一する。型番が混ざるとピンの並びも混乱する
USBデータ通信用ケーブル(ボードに合わせてMicro-USBまたはUSB-C)111予備2本。すべてテスト済みで印を付けておく
ブレッドボード(830穴)19ボードが収まらない場合はグループごとに2枚(クラス全体で18枚)
5 mmの赤色LED220赤色LEDは3.3 Vで十分に点灯する
220 Ωの抵抗220カラーコード:赤・赤・茶
オス-オスのジャンパーワイヤー4約40本GNDには必ず黒を使う
Arduino IDEとESP32パッケージを入れたパソコン18台+先生用のパソコンポート番号のラベルを貼っておく
BlueGraysを開いたスマホまたはタブレット1(任意)8回路図とコードを見るため。プロジェクターでも代用できる
部品箱または袋19授業の最後に数えて回収する
30ピンのESP32 DevKitは標準的なブレッドボードのほぼ全体を覆い、片側に1列分の穴しか残りません。D5とGNDのピンがある側に穴が空くようにボードを挿し、LEDと抵抗はその側に組みます。このボードではD5、GND、3V3が同じ列に並んでいるので、初回授業の回路は片側だけで完成します。それでも場所が足りない場合は、ブレッドボードを2枚並べ、ボードのピン列を1列ずつそれぞれに挿します。ボードを抜くときは、ピンを曲げないように両端を均等に持ち上げてください。

40分の授業の流れ

この流れは、BlueGraysの無料プロジェクト2つをもとにしています。まずESP32の内蔵LEDを点滅(回路なし、ボードとケーブルだけ)、次にESP32でLEDを点滅(GPIO5、220 Ωの抵抗、LED)です。どちらのプロジェクトも、部品リスト、回路図、コード、ブロック、コードを理解が無料で公開されています。各グループで3つの役割を割り当て、段階ごとに交代させましょう。キーボードを操作する人、回路を組む人、スマホやプロジェクターで回路図とコードを読む人です。こうすれば、40分間ただ見ているだけの生徒はいなくなります。

時間(分)段階先生生徒
0〜4導入と目標ボードを掲げて、目標を1つだけ伝える:「チャイムが鳴る前に、全グループが自分でコードを書き込んでLEDを点灯させます」。このボードにはスマホと同じようにWi-Fiがあるが、今日は使わないことにも触れる。役割を分担し、箱を開けて部品を数える。
4〜9ボードを知るホワイトボードの図を使い、USBポート、BOOTボタンとENボタン、GND、3V3、GPIO5のピンを示す。3.3 Vについて注意する。自分のボードでこれらの場所を探し、内蔵LEDの位置を確認する。
9〜17最初の書き込み:内蔵LEDプロジェクターでESP32の内蔵LEDを点滅プロジェクトを開き、ボードとポートの選び方を一度見せ、BOOTの注意をもう一度伝える。コードを開くかコピーし、ESP32 Dev Moduleとポートを選んで書き込む。LEDが1秒ごとに点滅する。
17〜21値を1つ変える「1000の代わりに200と書いたらどうなる?」と質問し、まず予想させる。予想を発表し、2つのdelay()の値を変えてもう一度書き込み、結果を予想と比べる。
21〜31外付けLEDの回路ESP32でLEDを点滅の回路図を映し、LEDの長い足と抵抗の位置を示す。教室を回り、USBを抜いた状態で各グループの回路を確認する。USBを抜き、GPIO5 → 220 Ω → LEDの長い足、短い足 → GNDの回路を組む。先生のOKが出たら書き込む。
31〜35ミニ課題早く終わったグループに追加課題を出す:内蔵LEDと外付けLEDを交互に点滅させる。つまずいているグループでは、まずケーブルとLEDの向きを確認する。両方のピンを出力に設定し、片方が点灯している間はもう片方を消す。終わったグループは「コードを理解」の「自分で試す」課題に進む。
35〜38片付け全員にUSBを抜き、部品を数えるよう指示する。回路を外し、部品を数えながら箱に戻す。
38〜40まとめの質問4つの質問をホワイトボードに書くか、口頭で出す。紙に短く答えを書き、教室を出るときに提出する。
「ESP32の内蔵LEDを点滅」プロジェクトのブロック:BUILTIN_LED_PIN = 2の宣言、セットアップでピンを出力に設定、ずっと繰り返すの中でHIGHとLOWを書き込み1000 ms待つ
最初の書き込みのブロックです。この画像をプロジェクターでコードと並べて見せると、宣言のブロックがintの行に、セットアップのブロックがsetup()に、繰り返しのブロックがloop()に対応していることがすぐにわかります。

コード:内蔵LEDと外付けLED

次の2本のスケッチは、アプリのプロジェクトと同じピンと時間を使っていて、Arduino IDEでESP32 Dev Moduleを選んだ状態ならそのままコンパイルできます。1本目はボード上のLEDを1秒ごとに点滅させます。ほとんどのESP32 DevKitボードでは、この青いLEDはGPIO2につながっています。Arduino Unoでは内蔵LEDは13番ピンでした。Unoを使ったことのある生徒は、癖で13と入力してしまうことがあるので、違いを早めに伝えておきましょう。

C++ (Arduino IDE)
1// ESP32 Dahili LED Yakma / ESP32 built-in LED blink
2// Çoğu ESP32 DevKit kartında dahili LED GPIO2'dedir / On most ESP32 DevKit boards the built-in LED is on GPIO2
3int BUILTIN_LED_PIN = 2;   // Kartına göre değişebilir / May differ on your board
4
5void setup() {
6  pinMode(BUILTIN_LED_PIN, OUTPUT);   // Pini çıkış yap / Set the pin as output
7}
8
9void loop() {
10  digitalWrite(BUILTIN_LED_PIN, HIGH);   // LED'i yak / Turn the LED on
11  delay(1000);                           // 1 saniye bekle / Wait 1 second
12  digitalWrite(BUILTIN_LED_PIN, LOW);    // LED'i söndür / Turn the LED off
13  delay(1000);                           // 1 saniye bekle / Wait 1 second
14}
15

2本目のスケッチの回路は次のとおりです。GPIO5から220 Ωの抵抗の一端へ、抵抗のもう一端からLEDの長い足(アノード)へ、LEDの短い足(カソード)からGNDへつなぎます。ESP32のピンは3.3 Vを出力します。赤色LEDで約2 V下がり、残りの1.3 Vが220 Ωにかかると、約6 mAの電流が流れます。LEDがはっきり見えるには十分で、ピンにも負担をかけません。別の色のLEDを使う場合は、LED抵抗計算ツールで抵抗値を確認してください。ミニ課題では、早く終わったグループが2本のスケッチを組み合わせます。setup()で両方のピンを出力に設定し、loop()で片方をHIGHにしている間はもう片方をLOWにします。

C++ (Arduino IDE)
1// ESP32 ile LED Yakma: harici LED / ESP32 external LED blink
2// Bağlantı: GPIO5 -> 220 Ω direnç -> LED uzun bacak (+), kısa bacak (-) -> GND
3// Wiring: GPIO5 -> 220 ohm resistor -> LED long leg (+), short leg (-) -> GND
4const int LED_PIN = 5;   // Harici LED pini (kartta D5) / External LED pin (D5 on the board)
5
6void setup() {
7  pinMode(LED_PIN, OUTPUT);   // Pini çıkış yap / Set the pin as output
8}
9
10void loop() {
11  digitalWrite(LED_PIN, HIGH);   // Pin 3,3 V verir, LED yanar / Pin outputs 3.3 V, LED on
12  delay(500);                    // Yarım saniye bekle / Wait half a second
13  digitalWrite(LED_PIN, LOW);    // Pin 0 V verir, LED söner / Pin outputs 0 V, LED off
14  delay(500);                    // Yarım saniye bekle / Wait half a second
15}
16
内蔵LEDがどのボードでもGPIO2にあるとは限りません。Espressif純正のDevKitCのように、赤い電源LEDしかなく、プログラムで制御できるLEDがまったくないボードもあります。LEDが別のピンにつながっているボードもあります。テスト書き込みでLEDが点滅しない場合は、ボードのピン配置を確認してください。内蔵LEDがなければ、そのグループはそのまま外付けLEDの段階に進みます。クラスのセットを1つの型番にそろえておけば、こうした予想外のことを最初から避けられます。

ESP32がArduino Unoと違う5つの点

生徒の中には、以前Arduino Unoを使ったことがある人もいるでしょう。コードは同じArduino言語で書き、setup()とloop()もいつもの場所にありますが、ハードウェアは異なり、初回授業で起きるエラーの多くはこの違いから生まれます。以下の5つの点は、ボードを知る段階で数分あれば説明できます。もっと詳しい比較はArduinoとESP32の違いは?を参照してください。

項目Arduino UnoESP32 DevKit授業での意味
ロジック電圧5 V3.3 V。ピンは5 V非対応GPIOには絶対に5 Vをかけない。5 Vで動くモジュールは、つなぐ前に出力電圧を確認する
ピン番号D0〜D13とA0〜A5GPIO番号を使う。ボードにD5と書かれたピンはコードでは5コードの数字はボード上のGPIO番号で、端から数えた順番ではない
入力専用ピンなし。デジタルピンはすべて出力にできるGPIO34、35、36(VP)、39(VN)は入力専用で、内部プルアップ抵抗がない。GPIO6〜11はフラッシュメモリにつながっている34につないだLEDは決して点灯しない。初回授業ではGPIO2とGPIO5だけを使う
BOOTボタンとENボタンリセットボタンが1つだけ。書き込みは自動で始まるBOOT(GPIO0)は書き込みモード用、ENは再起動用「Connecting...」が長引いたらBOOTを押し続ける。コードが動いていないようならENを押す
無線通信なし2.4 GHzのWi-FiとBluetooth(ClassicとBLE)を内蔵初回授業では使わない。学校のネットワークに応じて、次回以降の授業でスマホのテザリングを使って試す

授業でよく起きる8つのトラブルと1分でできる対処法

症状考えられる原因1分でできる対処法
「ツール」>「ポート」メニューが空、またはグレーアウトしている充電専用ケーブル、またはドライバがない印を付けたデータ通信用ケーブルで試す。それでもポートがなければ、デバイスマネージャーでチップ名を確認し、ボードを先生のパソコンで試す
「Connecting...」が長引き、その後「Failed to connect to ESP32」と表示されるボードが自動で書き込みモードに入らなかったもう一度書き込み、「Connecting...」が表示されたらBOOTを押し続け、「Writing at」の行が始まったら離す
出力欄にavrdudeのエラーが出るボードがArduino Unoのまま選ばれている「ツール」>「ボード」>「esp32」>「ESP32 Dev Module」を選び、もう一度書き込む
書き込みは成功したのにLEDに変化がない間違ったポートを選んでいる(複数のボードがつながっている)ボードを抜いて「ポート」メニューから消えるポートを確かめ、挿し直してそのポートを選ぶ。パソコンのラベルと見比べる
外付けLEDがまったく点灯しないLEDが逆向き、または抵抗とLEDがブレッドボードの同じ列に挿さっていないLEDの向きを逆にする:長い足を抵抗側、短い足をGNDへ。接続が同じ列にあるか確認する
回路は正しく見えるのに、それでもLEDが点灯しないワイヤーが別のピン(D4やD34など)に挿さっているワイヤーを挿したピンの表記を読み、コードの数字と比べる。34〜39番のピンは避ける
コードは書き込んだのに内蔵LEDが点滅しないボードにプログラムで制御できるLEDがない、または別のピンにあるボードのピン配置を確認する。そのまま外付けLEDの段階に進む
LEDが点灯したままになる、またはボードが熱くなるLEDが5V/VINまたは3V3につながっている、または3V3とGNDがショートしているすぐにUSBを抜く。LEDをGPIO5につなぎ直し、ショートしているワイヤーを見つけてから挿し直す
3分ルール:あるグループが同じ問題で3分以上止まっていたら、ボードとケーブルを予備のセットと交換し、不具合のある部品は授業の後で先生が調べます。ケーブル1本の不良でグループが授業を丸ごと逃すほうが、その場で原因を探すよりも損失が大きいからです。進行状況バーが止まっているように見えても、「書き込み」をもう一度押させないでください。最初のコンパイルには時間がかかります。ポートやドライバの問題をさらに詳しく調べるには、Arduinoに書き込めないときの手順がESP32にも当てはまります。

まとめの質問と2回目の授業の予告

  1. コードの数字5は、ボード上のどのピンを指していますか?そのピンの横に「D5」と書かれているのはなぜだと思いますか?
  2. delay(1000)の代わりにdelay(200)と書いたとき、LEDはどう変わりましたか?LEDは今、1秒間に何回点滅していますか?
  3. LEDを逆向きに挿したとき、なぜ点灯しなかったのでしょうか?LEDのどちらの足を抵抗側につなぎますか?
  4. ESP32のピンは何ボルトを出力しますか?LEDやモジュールを5Vピンに直接つないではいけないのはなぜですか?

答えを見れば、2回目の授業でどの考え方を復習すべきかがわかります。2つ目の質問に2.5回と答えた生徒は、タイミングを理解しています。2回目の授業では、同じ回路にボタンを追加します。ESP32でボタンによるLED制御(押している間だけ点灯)プロジェクトでは、ボタンを押している間だけLEDが点灯し、ESP32でボタンによるLED制御(トグル)では、押すたびに状態が切り替わります。どちらも無料で、ブロックもあります。生徒は初めて入力を読み取り、ifで判断をします。3回目か4回目の授業ではWi-Fiに進めます。その授業のために、ESP32がWi-Fiにつながらないときのステータスコード表を手元に用意しておきましょう。BlueGraysのWi-Fiを使うESP32プロジェクトはプレミアム対象です。生徒をこれらのプロジェクトに進ませたい場合、一人ひとりが別々にサブスクリプションを契約する代わりに、教育者向けパッケージのコードを配る仕組みをクラス向けプレミアムコードで説明しています。

BlueGraysを授業でどう使う?

  • プロジェクトを探す:「見つける」 › 「プロジェクト」で絞り込みを使い、プラットフォームをESP32に、料金区分を無料にします。LED、ボタン、信号機、光センサー、距離センサーなど、初回の授業に向いたESP32プロジェクトはすべてロックなしで使えます。
  • 必要な部品と回路図:部品リストは個数付きで用意されています。回路図は拡大してプロジェクターに映すことも、ギャラリーに保存で保存して印刷することもできます。
  • ソースコード:コピーでコードをクリップボードにコピーできます。生徒がスマホでプロジェクトを開いた場合は、リンクをコピーでパソコンでコードを開くためのリンクが得られるので、誰も手でコードを入力する必要はありません。
  • コードを理解:まずこのコードの働きの要約、次にステップごとの解説、困ったときはのセクション、自分で試すの課題が続きます。ミニ課題を早く終えたグループにとって、そのまま使える次のステップになります。
  • ブロックで表示:無料のESP32プロジェクトにはすべてブロック表示があります。スイッチをオンにすると、コードが同じプログラムのブロックに置き換わり、タブがブロック解説になります。ブロックは読むためのもので、アプリで編集したりボードに書き込んだりはできません。ボードに送られるのは常に実際のコードです。
  • 一緒に作りましょう:部品の準備、回路の組み立て、コードの書き込み、動作とテストの順に進むガイドモードです。画面が点灯したままになるので、スマホを机に置いたままグループでステップを追えます。最後に作りましたでプロジェクトを完了にします。

初回の授業はLED1つだけに見えるかもしれませんが、その40分で生徒はコンパイル、書き込み、ピン番号、3.3 Vの上限、デバッグを一通り経験し、その後のESP32の授業はすべてこの土台の上に積み上がります。プロジェクトページの各セクションについてはプロジェクトページの使い方ガイドで詳しく説明しています。授業の前に2つのプロジェクトを一度自分で作っておきたい場合は、BlueGraysアプリでESP32の内蔵LEDを点滅を開いてください。回路図、コード、ブロック、コードを理解がすべてそろっているので、予行演習は10分もかかりません。

よくある質問

ESP32の初回授業では何を扱えばいいですか?

初回授業の目標は、全グループが自分のESP32にコードを書き込み、LEDを点灯させることです。まずボードの内蔵LED、次にブレッドボード上で220 Ωの抵抗を使った外付けLEDです。Wi-Fiやセンサーは次回以降の授業に回します。こうすれば、生徒はコンパイル、書き込み、ピン番号を一度トラブルなく経験できます。

Arduino IDEでESP32を使うには、どのボードを選べばいいですか?

ESP32 DevKitのような汎用ボードでは、Espressifのesp32パッケージをインストールし、「ツール」>「ボード」>「esp32」からESP32 Dev Moduleを選びます。Arduino ESP32 BoardsパッケージはArduino Nano ESP32用です。ボードがArduino Unoのままだと、書き込みはavrdudeのエラーで止まります。

ESP32がパソコンに認識されないのはなぜですか?

まずケーブルを交換してください。USBケーブルの多くは充電専用で、データを通しません。次に、ボード上のUSBシリアル変換チップ(CP2102、CH340、CH9102)の刻印を読み、それに合ったドライバをインストールします。Windowsでは、デバイスマネージャーの「ポート(COMとLPT)」の下に新しいCOMポートが表示されるはずです。

ESP32に書き込むとき、BOOTボタンを押す必要はありますか?

ほとんどのDevKitは自動で書き込みモードに入るので、BOOTを押す必要はありません。「Connecting...」が長引いて「Failed to connect to ESP32」と表示される場合は、書き込みをやり直し、「Connecting...」が表示されたらBOOTを押し続け、書き込みが始まったら離してください。何度も起きる場合は、書き込み速度を115200に下げます。

ESP32の内蔵LEDは何番ピンですか?

よく使われている30ピンのESP32 DevKitボードでは、青い内蔵LEDはGPIO2につながっています。ただしボードによって異なり、Espressif純正のDevKitCには電源LEDしかなく、LEDが別のピンにあるボードもあります。わからない場合は、ボードのピン配置を確認するか、ブレッドボードで外付けLEDを使ってください。

学校でArduino Unoではなく、ESP32から始めてもいいですか?

はい。コードは同じArduino言語で書き、LEDを使う最初の授業もほぼ同じです。違いは3.3 Vのロジック電圧、GPIO番号、入力専用ピン、BOOTボタンで、初回授業で数分説明すれば十分です。準備はUnoより少し時間がかかりますが、その代わり次回以降の授業ではWi-FiとBluetoothがすぐに使えます。

全プロジェクトを見る
ESP32の内蔵LEDを点滅
#106初級

ESP32の内蔵LEDを点滅

ESP32 DevKit V1に内蔵された青色LEDを点滅させます。外付け部品は不要です!ESP32を購入したら、最初に試すプロジェクトです。GPIO 2が内蔵LEDにつながっています。

4.8(29)
53
ESP32でLEDを点滅
#103初級

ESP32でLEDを点滅

ESP32のGPIO出力の基本を学びます。デジタルピンからLEDを点灯・消灯させて、点滅させます。Arduino UNOの定番のLED点滅プロジェクトのESP32版です。Arduino環境で使う基本的な点滅コマンドは同じですが、ESP32のピン配置と3.3 VのGPIO電圧レベルはArduino UNOとは異なります。

4.7(37)
99
ESP32でボタンによるLED制御(押している間だけ点灯)
#104初級

ESP32でボタンによるLED制御(押している間だけ点灯)

ボタンを押している間はLEDが点灯し、離すと消灯します。ESP32のデジタル入力ピンと内蔵プルアップ抵抗の使い方を学びます。INPUT_PULLUPモードを使うため、外付け抵抗は不要です。

4.6(36)
55
ESP32でボタンによるLED制御(トグル)
#105初級

ESP32でボタンによるLED制御(トグル)

ボタンを押すたびにLEDの状態が切り替わり、点灯中なら消灯し、消灯中なら点灯します。基本的なトグル動作です。チャタリング対策でボタンの機械的なノイズを除去し、1回の操作で1回だけ切り替わるようにします。

4.6(39)
57
ESP32の信号機
#107初級

ESP32の信号機

赤・黄・緑の3個のLEDで、実際の信号機を再現します。赤は長く、黄は短く、緑は長く点灯させ、実際の信号機に近いタイミングで動かします。GPIOを順番に制御する基本例です。

4.4(21)
44
ESP32とLDRモジュールで光の強さを読み取る
#113初級

ESP32とLDRモジュールで光の強さを読み取る

LDRモジュールの生のADC値と、暗い状態・明るい状態の基準値から計算した相対的な明るさの割合を、シリアルモニタでリアルタイムに確認します。この割合はルクスの測定値ではありません。モジュールの校正の仕組みを学べます。しきい値の決定に使うため、プロジェクト10の前に取り組むのが適しています。

4.6(36)
55
ESP32とHC-SR04で作る超音波距離計
#116中級

ESP32とHC-SR04で作る超音波距離計

HC-SR04超音波センサーは、発した音波が物体に反射して戻るまでの時間(Time of Flight)を測定して距離を計算します。このプロジェクトでは、ESP32からセンサーのTRIGピンに10マイクロ秒のパルスを送り、ECHOピンからの反射波の持続時間をpulseIn()で読み取ります。計算した距離をcm単位で16x2 I2C LCDに表示します。HC-SR04は5Vで動作するため、ECHOピンには分圧回路が必須です。分圧しないとESP32の3.3V GPIOが破損します。

4.9(28)
45
ESP32 DHT22温湿度計(LCDディスプレイ付き)
#117中級

ESP32 DHT22温湿度計(LCDディスプレイ付き)

DHT22センサーで周囲の温度と湿度を測定し、16x2 I2C LCDにリアルタイムで表示するプロジェクトです。Adafruit DHTライブラリを使い、1本の信号線を使うプロトコルでセンサーからデータを読み取ります。IoT気象観測装置やスマートホームの自動化、温室の環境監視システムの基礎となります。ESP32のGPIO 4ピンを介してDHT22と通信します。

4.8(38)
56