ここまでノンプログラミング(ノンコーディング)を貫いてきた我が家のスマートホームですが、いよいよネタ切れかもしれません。実現したいことが出来るスマートホーム対応の安価なガジェット・アプリが見つかりません。特にトリガー側の不充実ぶりは激しいなと思っています。
そこで今回はWi-Fi接続可能で安価なESP32モジュールを使って、1個用意しておけば便利な(スマートホームの)汎用トリガーになるガジェット実現を目標として、『不本意ながら😋』多少のコーディングも含めてチャレンジしてみたいと思います。
このテの話でありがちな「こういうガジェットって便利そうなんだけど、そもそも(プログラムを書き込む)PCにはどーやって繋ぐんだよ?その設定は?」という(分かっているヒトには何でもない話なんですが、私のような分からないヒトには最もハードルの高い)ところが分かるように書くつもりです。
購入したESP32モジュールボード はコレです。『ESP32』とはCPUを含むモジュール(IC)の名称です。
VKLSVAN ESP32 ESP-32S NodeMCUマイクロUSBデュアルコア開発ボードモジュール 2.4GHz ワイヤレスWiFi + Bluetoothデュアルモード ESP-WROOM-32モジュール内臓 マイクロコントローラ - Amazon |
購入時に送られてきたのはボード本体のみです。取扱説明書も回路図も同梱されていません。ある意味想定内ですが😅(本品に限らず、このテの格安品を思い通りに使いこなすにはひと工夫、ひと手間が必要ですよね)、アナログハード屋にとってはここからが艱難辛苦の始まりです😋。
いろいろ調べてみるとこのボードは『DOIT ESP32 DEVKIT
V1』と言うのが正式(?)な名称のようです(ボード背面の表示やAmazonの商品レビューを参考にググりました)。
ピン配も回路図もAmazonの商品ページにある画像とは異なります(全く異なる訳ではありません。似て非なる図面です)。正しいピン配はこちらのようです。
"Getting Started with the ESP32 Development Board"より |
また、このボードは使い勝手に多少クセかあるようなのですが、そこらへんは以下に紹介します。
■ESP32モジュールボードを使ってみる ー その1:『PCのセットアップ(Lチカまで)』編(DOIT ESP32 DEVKIT V1使用)
今回は『ボードとPCを接続するセットアップをして、サンプルプラグラム(Lチカ)を書き込むまで』のまとめになります。
●使用するPCアプリ
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』 を選択、インストールします。
以上でボードの設定は完了です。
・通信用デバイスドライバーのインストール
上記のボードの設定だけでは、残念ながらまだボードとPCの通信はできません😅。
ここでは、ボードに搭載されているUSB-シリアル変換IC用のデバイスドライバーをPCにインストールする方法を紹介します。デバイスドライバーは、ボード(厳密には変換IC)をPCの仮想
COM ポートに設定するためのもので、Arduino
IDEからボードを認識させるために必要なものです。
ここで言う変換ICはESP32モジュールとは関係なくボードによって異なっているので、本来であれば回路図でICの品番を確認しなくてはなりません。なのですが、前記した通りこのボードの商品ページの回路図はあいまいなので困ってしまいましたが、ボードに実装されているICの印刷を目視で確認したらその回路図通りでCP2102で間違いないようです。
【参考】Amazon商品ページより |
このCP2102のデバイスドライバーはこちらからダウンロードできます。
デバイスドライバーをPCにインストールして、ボードをPCに接続したらPC(Windows)のコントロールパネルのデバイスマネージャーでポートの確認をします。
『ポート(COMとLPT)』に『Silicon Labs CP210x USB to UART Bridge
(COMx)』(今回は"COM4")との表示があればOKです。
(すみません、この設定をしなくてはならない理由が私にはよく分からないのですが、ネットで調べたらこのような記述があって、結果としてこの設定で私はうまくいっています。)
以上でArduino IDEの設定は全て完了です。
●PCからESP32ボードへのプログラムの書き込み
ここからはPCとボードの接続の確認とプログラムの書き込み方法の紹介です。
・PCとESP32ボードの接続確認
(すみません、この表示された内容の意味は分かりません😅。(恐らく各種の初期化の内容を吐き出しているのだと思います。))
※ボードにプログラムを書き込むと初期のファームウェアは上書きされてしまいます。シリアルモニタの画面が上記のようになるのは購入直後(プログラム書き込み前)だけです。ご注意ください。
- 【参考】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チカ) |
※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ではプログラムのことを『スケッチ』と言います)。
『ボードへの書き込みが完了しました』と表示されればスケッチ(プログラム)の書き込みは完了です。
書き込み完了と同時に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_setup – スイッチサイエンス(ATコマンド関連)