ESP32-DevKitC
「ESP32-DevKitC」を使ってタッチ機能を使ってみたいです。 今回はArduinoIDEで使える様にボードマネージャーの追加とタッチ機能の実験をしてみました!(^^)!
1.ESP32とは
ESP32シリーズは Wi-FiとBluetoothを内蔵する低コスト、低消費電力なSoCのマイクロコントローラです。TensilicaのXtensa LX6マイクロプロセッサを採用しデュアルコアとシングルコア版のバリエーションがあります。ESP32は上海に拠点を置くEspressif Systemsが開発をしTSMCの40nm工程で製造されています。
1.1 「製品」の概要
今回使用する「ESP32-DevKitC」の特徴として、「ESP32-WROOM-32D」と言うマイコン プラス、USB-シリアル変換・マイコンリセット回路及び、USBからの給電を可能にするDCDCコンバータを備えています。なので、ArduinoIDEにボード情報を書き込んでおけばUSBケーブル一本で実験可能と言う便利なキットです。
※間違えて「ESP-WROOM-32 2-line breakout」版(周辺回路なし)を安いからと買ってしまいました。ブレッドボード上に周辺回路を準備し(かさばる)、スケッチのアップロード時には手動でリセット(接触が不安定で割と書き込み失敗する)し・・・。結局「ESP32-DevKitC」に買い直しました(;'∀')
1.2 「製品」の仕様
「ESP32-DevKitC」の仕様を表1に「ESP-WROOM-32」の仕様を表2に示します。
項目 | 内容 |
電源 | 5V(PCからのバスパワー給電: マイクロUSB-Bメス) |
シリアル⇔USB変換チップ | CP2102(Silicon Laboratories) |
LDO | NCP1117(5V⇒3.3V、1A) |
ピンの仕様 | 2×19、2.54mmピッチ、1000mil(25.4mm) |
その他 | TXD0、RXD0、IO13、IO15を除くすべてのGPIOが利用可 |
項目 | 内容 |
WiFi | 802.11 b/g/n |
Bluetooth | v4.2 |
デュアルコア | Tensilica LX6 |
SRAM | 520KB |
電源電圧 | 2.2V~3.6V |
静電容量タッチインターフェース | x10 |
32kHzオシレータ | x1 |
GPIO | x21 |
UART | x3 |
SPI | x2 |
I2S | x2 |
ADC | x16 |
DAC | x2 |
I2C | x2 |
SDIO | マスター/スレーブ |
工事設計認証(技適)番号 | 211-161007 |
1.3 「ESP-WROOM-32」のピンアウト図
「ESP-WROOM-32」のPinout図を図2に示します。
図2:「ESP-WROOM-32」のPinout図
2.インストール
ArduinoIDEで「ESP-WROOM-32」にスケッチ(プログラム)をアップロード可能にするため、2.1~2.8 の手順でArduinoIDEにボード情報を書き込みます。
2.1 環境設定を開く
ArduinoIDEを開き、図3の様に「ファイル」→「環境設定」をクリックします。
図3:ArduinoIDE
図4:環境設定
2.3 ボードマネージャーのURLを追加する
図4操作で図5画面が開きます。
既にボードマネージャーのURLが登録されている場合は、下記の様に先のURL末尾に「;」を付け、続けて「https://dl.espressif.com/dl/package_esp32_index.json」を入力し「OK」をクリックします。
ボードマネーシャーの登録が初回の場合は「https://dl.espressif.com/dl/package_esp32_index.json」のみ入力し「OK」をクリックします。
https://***_index.json; https://dl.espressif.com/dl/package_esp32_index.json
図5:追加のボードマネージャーのURL
2.4 環境設定を確定
環境設定画面に戻り、「OK」をクリックし設定を確定します。
図6:OKをクリック
2.5 メニュー
図7の通り、ArduinoIDEメニューから「ツール」→「ボード」→「ボードマネージャー」を選択しクリックします。
図7:メニュー選択
2.6 ボードマネージャー
図8の画面上部Textbox中に「esp32」と入力すると「esp32」のボードパッケージが見つかります。
画面右「インストール」ボタンを押し、青字で「INSTALLED」と表示された後、閉じるを押して終了します。
図8:ボードマネージャーでインストール
2.7 ボードを選択
「ESP32-DevKitC」のボード選択は「ESP32 Dev Module」です。
図9の通り「ツール」→「ボード」→「ESP32 Dev Module」の順にボードを選択します。
図9:ボード選択
2.8 シリアルポートを選択
「ESP32-DevKitC」をUSBケーブルでPCに接続します。
ドライバーが正常にインストールされていれば、PCがUSB機器として自動認識し、シリアルポート番号が振られます。
私の場合は「COM4」でした。図10の通り「ツール」→「シリアルポート」→「COM*」の順にシリアルポートを選択します。
以上でスケッチ(プログラム)を書き込む準備完了です(^^)/
図10:シリアルポート選択
3.実験!
実際に「ESP32-DevKitC」にジャンプワイヤーを接続してタッチ機能を試してみました!
3.1 接続
実際に繋げた状態を図11に示します。
図2 Pinout図よりTouch0はGPIO4ピンなので、そこにジャンプワイヤーを挿しただけです。
図11:ブレッドボード接続状態
3.2 プログラム
サンプルコードとして「ESP32-DevKitC」に書き込むプログラムを図12に示します。
内容としては、100ms間隔(+処理1ms?)でGPIO4ピンの静電容量変化を測定し、測定結果をシリアルモニタに出力します。
void setup(){ Serial.begin(115200); while (!Serial) {} } void loop() { Serial.println(touchRead(T0));//GPIO4にジャンパー線接続 delay(100); }
図12:プログラム例
3.3 実験!
図11の「ESP32-DevKitC」に図12のプログラムを書き込み、実行した結果を図13に示します。
〇ジャンプワイヤーの金属部を触る
1~8
〇ジャンプワイヤーの被覆部を触る
47~58
〇ジャンプワイヤーを触らない
64~71
4.まとめ!
タッチ前後で、十分タッチ検出可能な差が出ました!
金属部に直接触れずとも、ジャンプワイヤーの被覆程度であれば感知するようですので、今度膜厚の条件を振って実験してみようかと思います(^^)/
励みになりますのでよければクリック下さい(^o^)/