ESP32モジュールボードを使ってみる ー その1:『PCのセットアップ(Lチカまで)』編(DOIT ESP32 DEVKIT V1使用)

📅

ここまでノンプログラミング(ノンコーディング)を貫いてきた我が家のスマートホームですが、いよいよネタ切れかもしれません。実現したいことが出来るスマートホーム対応の安価なガジェット・アプリが見つかりません。特にトリガー側の不充実ぶりは激しいなと思っています。

そこで今回はWi-Fi接続可能で安価なESP32モジュールを使って、1個用意しておけば便利な(スマートホームの)汎用トリガーになるガジェット実現を目標として、『不本意ながら😋』多少のコーディングも含めてチャレンジしてみたいと思います。


このテの話でありがちな「こういうガジェットって便利そうなんだけど、そもそも(プログラムを書き込む)PCにはどーやって繋ぐんだよ?その設定は?」という(分かっているヒトには何でもない話なんですが、私のような分からないヒトには最もハードルの高い)ところが分かるように書くつもりです。


購入したESP32モジュールボード はコレです。『ESP32』とはCPUを含むモジュール(IC)の名称です。

VKLSVAN ESP32 ESP-32S NodeMCUマイクロUSBデュアルコア開発ボードモジュール 2.4GHz ワイヤレスWiFi + Bluetoothデュアルモード ESP-WROOM-32モジュール内臓 マイクロコントローラ - Amazon


なにより安い(2021.04.06現在¥798)!そしてESP32モジュール(銀色の大きいIC)には技適マークが付いているので日本国内でも安心して使えそうです。
技適マーク


購入時に送られてきたのはボード本体のみです。取扱説明書も回路図も同梱されていません。ある意味想定内ですが😅(本品に限らず、このテの格安品を思い通りに使いこなすにはひと工夫、ひと手間が必要ですよね)、アナログハード屋にとってはここからが艱難辛苦の始まりです😋。

いろいろ調べてみるとこのボードは『DOIT ESP32 DEVKIT V1』と言うのが正式(?)な名称のようです(ボード背面の表示やAmazonの商品レビューを参考にググりました)。
ピン配も回路図もAmazonの商品ページにある画像とは異なります(全く異なる訳ではありません。似て非なる図面です)。正しいピン配はこちらのようです。

"Getting Started with the ESP32 Development Board"より

また、このボードは使い勝手に多少クセかあるようなのですが、そこらへんは以下に紹介します。


■ESP32ボード(DOIT ESP32 DEVKIT V1)を使う準備をする(Lチカまで)


今回は『ボードとPCを接続するセットアップをして、サンプルプラグラム(Lチカ)を書き込むまで』のまとめになります。

●使用するPCアプリ

  • Arduino IDE
Arduino IDE

PC用の無料アプリです。PCとESPモジュールボード・Arduinoボード等を接続しプログラムを書き込む為の統合環境です。


●PCアプリ『Arduino IDE』のセットアップ

このアプリはインストールしただけでは使えません😅。最初にボードの選択等の各種開発環境のセットアップをしないと、ボードと通信することもプログラムを書き込むこともできないのです。まずその方法を紹介します。


・使用するボードの選択・設定

先ず使用するボード『DOIT ESP32 DEVKIT V1』をライブラリから選択して設定します。

なのですが、Arduinoの純正品ではないDOIT ESP32 DEVKIT V1はArduino IDEの標準ライブラリには用意されていません。外部からライブラリをインストール(インポート)する必要があります。

以下はライブラリのインストールからボードの設定までの手順です。

Arduino IDEの 『ファイル』メニュー > 『環境設定』の『追加のボードマネージャーのURL』にESP32用コアライブラリ『https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json』を指定してください(既に他のURLがある場合は、半角のカンマで区切ってください)。

次に『ツール』メニュー > 『ボード』 >『ボードマネージャ』を選択します。

開いた『ボードマネージャ』画面で『esp32』 を選択、インストールします。

esp32のインストールが完了したら、『ツール』メニュー > 『ボード』 >『ESP32 Arduino』で『DOIT ESP32 DEVKIT V1』を選択します。

以上でボードの設定は完了です。


・通信用デバイスドライバーのインストール

上記のボードの設定だけでは、残念ながらまだボードとPCの通信はできません😅。
ここでは、ボードに搭載されているUSB-シリアル変換IC用のデバイスドライバーをPCにインストールする方法を紹介します。デバイスドライバーは、ボード(厳密には変換IC)をPCの仮想 COM ポートに設定するためのもので、Arduino IDEからボードを認識させるために必要なものです。

ここで言う変換ICはESP32モジュールとは関係なくボードによって異なっているので、本来であれば回路図でICの品番を確認しなくてはなりません。なのですが、前記した通りこのボードの商品ページの回路図はあいまいなので困ってしまいましたが、ボードに実装されているICの印刷を目視で確認したらその回路図通りでCP2102で間違いないようです。
【参考】Amazon商品ページより
(ボードをPCにUSBで接続すると、(以下のデバイスドライバーをインストールする前でも)PCはCP2102として認識していました。)

このCP2102のデバイスドライバーはこちらからダウンロードできます。

デバイスドライバーをPCにインストールして、ボードをPCに接続したらPC(Windows)のコントロールパネルのデバイスマネージャーでポートの確認をします。
『ポート(COMとLPT)』に『Silicon Labs CP210x USB to UART Bridge (COMx)』(今回は"COM4")との表示があればOKです。

次にArduino IDEの ツール > シリアルポート で、上記のデバイスマネージャーで確認した COMx(今回は”COM4”)を指定します。

次に、右上の虫眼鏡アイコンをクリックしてシリアルモニタを開き、『改行』を『CRおよびLF』に、『速度』を『115200 bps』に設定します。
(すみません、この設定をしなくてはならない理由が私にはよく分からないのですが、ネットで調べたらこのような記述があって、結果としてこの設定で私はうまくいっています。)

以上でArduino IDEの設定は全て完了です。


●PCからESP32ボードへのプログラムの書き込み

ここからはPCとボードの接続の確認とプログラムの書き込み方法の紹介です。


・PCとESP32ボードの接続確認

上記のシリアルモニタを開いた状態(PCとボードはUSBで接続した状態)で。ボードの『ENボタン(リセットボタン)』を押下します。

ENボタン押下と同時にシリアルモニタ画面にごそごそといろいろ出てくればPCとESP32ボードの接続はOKです。
(すみません、この表示された内容の意味は分かりません😅。(恐らく各種の初期化の内容を吐き出しているのだと思います。))
ボードにプログラムを書き込むと初期のファームウェアは上書きされてしまいます。シリアルモニタの画面が上記のようになるのは購入直後(プログラム書き込み前)だけです。ご注意ください。


- 【参考】ATコマンドについて

ーーこの項目は読み飛ばしてOKですーー

いろいろ調べてみると初期状態のESPモジュールは、ATコマンドというのが使えるそうです(ATコマンドとは、モデムやターミナルアダプタの制御に使われるコマンド体系とのことです)。
そこでプログラムを書き込む前の初期状態で、このATコマンドを使ってPCとボードの通信確認にトライしました。

なのですが、このESP32ボードにPCからATコマンドを送信しても無反応でした(このボード(ESP32)の前にトライしたボード(ESP8266)ではATコマンドを使って通信ができたのですが)。仕方がないのでATコマンドでの通信確認は諦めてサンプルプログラムの書き込みに進むことにしました。
(調べを進めるとESP32モジュールの初期状態にはATコマンドとは別のファームウェアが実装されているようです。)


・サンプルプログラム(Lチカ)の書き込み・動作確認

さて、いよいよプログラムの書き込みでにトライです。
ボードの動作確認用のサンプルプログラムとして『Lチカ』をボードに書き込むことにします。
(『Lチカ』とはArduino業界(😅?)でボードを最初に動かす時に試す『LEDを点滅させる』事だそうです。)


- 回路の作成

ESP32ボードのIOポート23(D23)とGNDの間にLEDと電流制限抵抗(100Ω)を接続します。
回路図(Lチカ)

実装例(Lチカ)

Arduinoの出力は3.3V、LED(赤)のVFは2V程度なので、LEDに流れる電流は(3.3V - 2V)÷100Ω = 13mAとなります(ちょっと流し過ぎですかね😅。まあ実験用だからいいでしょう😋。)。
※LEDは極性(方向性)があるので、ご注意ください。


- プログラムの書き込み

ここまでできたら後は簡単です😅。以下のサンプルプログラムをArduino IDEからボードに書き込むだけです。

ーーーサンプルプラグラム(Lチカ)ーーー
 (" // ... "の部分(黄色)はコメントです。)
void setup()
  pinMode(23, OUTPUT);      // ポート23を出力端子として設定
}

void loop()
  digitalWrite(23, HIGH);   // LEDを点灯
  delay(1000);              // 1秒ウェイト
  digitalWrite(23, LOW);    // LEDを消灯
  delay(1000);              // 1秒ウェイト
}
ーーーサンプルプラグラム [おわり]ーーー

【参考】
プログラミング言語はC言語風です。
" setup() "というのはプログラム実行時に最初に一度だけ実行される内容で、" loop() "というのがその後も繰り返し行われる(メインのプログラムのような)もの、だそうです。
上記プログラムは①IOポート23を出力端子に設定して、②そのポート23の出力を1秒毎にON/OFFを繰り返す、という内容です。


PCとESP32ボードをUSBケーブルで接続し、上記のサンプルプラグラムをArduino IDEのスケッチ画面にコピペします(Arduino IDEではプログラムのことを『スケッチ』と言います)。
コピペ後、画面左上の『矢印(➡)アイコン(ボードへの書き込み)』をクリックします。

するとスケッチ(プログラム)の保存を促されます(ここはキャンセルしてもその後の書き込みは問題なく進みます)。今回はサンプルプラグラムなのでキャンセルしても良いと思います。

スケッチの保存の選択後にスケッチ(プログラム)のコンパイルが始まります。

続いてボードへの書き込みが行われます。

『ボードへの書き込みが完了しました』と表示されればスケッチ(プログラム)の書き込みは完了です。
(『ボードへの書き込み(➡)』アイコンをクリックしてからここまで1分かからないと思います。)

書き込み完了と同時にLEDが1秒間隔で点滅を始める筈です😋。


・【参考】ボード『DOIT ESP32 DEVKIT V1』のクセについて

おまけ情報的な話ですが。
いろいろ調べてみると(今回はこのフレーズが多いですね😅)、この『DOIT ESP32 DEVKIT V1』というボードはプロブラムを書き込む時にいろいろとクセがあるようで、
  • プログラムを書き込む時にはボードのBOOTボタンを押さなくてはならない
  • または(?)、ENスイッチとGNDの間に0.1uFのコンデンサを実装しなくてはならない
等が必要なようなのです。

なのですが、私の場合、上記のようなことは何もせずにプログラムの書き込みに成功しています(^^)。

ボードを良く見ると下のようにENスイッチのところにコンデンサが(購入時から)実装されていました。余計な手間は省けるようになっているようです。\(^o^)/

ボード自体も改良されているようですね😄。


これで、(個人的には一番ハードルの高い)ボードへのプログラムの書き込みまでが成功しました!\(^o^)/
ここまでくれば勝ったようなものだ!と勝手に思っていますが(個人の感想です)、次は『スイッチ(接点)入力の認識』と『Wi-Fiへの接続』にトライしてみます。

-----
【2021.4.17追記】
-----


●参照サイト

Getting Started with the ESP32 Development Board(ピン配、Lチカ用スケッチ等)

ESP32、ESP-WROOM-32搭載製品の設定とプログラム書き込み方法(ライブラリ関連)

esp32_setup – スイッチサイエンス(ATコマンド関連)

Arduino 日本語リファレンス





0 件のコメント: