ESP32=ESP8266のデカい版ってことでいいのかしら
またちょっとやりたいことができて、部品ストックからESP32 Developer Boardを引張り出しました。
結構前にスイッチサイエンスから買ったものです。
「ESP-WROOM32」と書いてあります。
ESP32は、何度か記事に書いているEPS8266(ESPr)のデカいヤツという感じです。
違いは
・Wifiに加えてBluetoothも搭載
・ピンの数が多い(Developer Boardの場合)
・消費電力が多い
といったところでしょうか。多分。
あと今回、ESP8266じゃなくてEPS32を選んだのはアナログ入力(ADC)の違いからです。
EPS8266のアナログ入力は0〜1Vの範囲です。
電源電圧が3.3Vなのでセンサの出力が0〜1Vになるような回路が必要です。面倒くさい。
一方、ESP32は0〜3.3Vのアナログ入力を受け付けるので電圧変換の必要がありません。
そういえば以前、充電できなくて困ったM5StickCもEPS32ボードの一種でした。
-
M5StickCの内蔵バッテリーが充電されない問題 → 解決
コンパクトで多機能なマイコンM5StickCを買いましたが、内蔵バッテリーに充電されないという問題がおきてしまいました
続きを見る
ESP32のボードライブラリをインストール
ESP32 Developer Boardを使うのは久しぶりです。
M5StickC用に設定してありましたが、どうもちょっと設定が古かったようです。
あらためてボードマネージャーの設定を確認したので備忘録も兼ねて記録しておきます。
arduinoでは標準以外のボードを使用するときはボードコアライブラリを追加します。
追加するには環境設定の「追加のボードマネージャーのURL」にライブラリのURLを設定します。
ボードコアライブラリを探すとespressif社のgithubのアドレスがでてきました。
espressif/arduino-esp32(github)
READ.meの目次にある「Installation Instructions」をクリック
さらに「Instruction for Board Manager」をクリックするとインストール方法が出てきます。
「Stable release link: 」(安定版)にあるアドレスをコピーします。
買った時と今ではこのURLが変わっていました。どこかに転載されたURLを使わずに、githubを見に行ったほうがいいですね。
arduino IDEを起動。arduinoメニューの「preference」を選択
環境設定で「追加のボードマネージャーのURL」をクリック
ウインドウに先ほどコピーしたURLをペーストします。
すでに他のボードのURLが設定されている場合は、改行してペーストします。
以前使ったときに設定した古いURLは削除しておきました。
OKをクリック
arduino IDEを再起動
ツールメニューの「ボード」「ボードマネージャー」を選択
検索フィールドで「EPS32」を検索
最新バージョンを選択して「インストール」をクリック。これでボードライブラリが入ります。
ツールメニューの「ボード」で「ESP32 Dev Module」を選択。これで使えるようになります。
シリアルモニタで動作確認
動作確認はLチカと行きたいところですが、確かこの開発ボードに標準で載っているLEDはGPIOと繋がっていなかった気がします。
というわけで地味にシリアルモニタでの動作確認をしました。
スケッチは以下のような簡単なものです。
3秒ごとにシリアルモニタに対して"Hello world!"とカウントアップする数値を送ります。
シリアルモニタの速度を「115200bps」にしておきます。
void setup() { Serial.begin(115200); } int a = 0; void loop() { Serial.println("Hello World." + String(a)); delay(3000); a++; }
無事に動きました。
UBSシリアルが問題なくつながる!
私のばあい、ESP8266やM5StickCを使う時にはいつもシリアルポートが認識されない問題になやまされますが、驚いたことにESP32 Dev Moduleのシリアルポートは安定して繋がります。
抜き差ししてもちゃんと認識してくれるので再起動とか不要です。すばらしい。
とか喜んでるうちに認識されなくなったりするかもしれませんが、とりあえず素晴らしい。
-
いろんなarduinoとMacbook Proでシリアルポートの相性を調べてみた
arduinoをMacBookProに繋いだとき、シリアルポートとして認識されたりされなかったりするので、いろいろなarduinoで試してみました
続きを見る
-
EPS8266がarduino IDEのシリアルポートに出て来なくなった
ESP8266がMacで認識されなくなったので、色々と情報を集めながら解決しようとして経緯です
続きを見る
やっぱりLチカしたい
シリアルモニタで動作は確認できましたがやっぱりLEDを光らせたいです。
ただ点けるのもなぁという感じで、ボタン入力があったらLEDを点けるようにしました。
これには昔、テスト用に作った8chのLED&スイッチモジュールを使いました。
基板にLED+抵抗とタクトスイッチを8個並べてQIコネクタを付けたものです。
LEDやタクトスイッチを使った実験がさくっとできて便利です。
スケッチは以下の通りです。
arduino IDE付属のスケッチ例「Button」を改変しました。
・シリアルモニタにもボタンの状態を出力
・ボタンの状態が変わった時だけ出力ピンの状態も変更
・ボタンを押した時にLEDが点くようにif文の動作を逆にした
・入力ピンに内蔵プルアップ抵抗を設定(pinMode(buttonPin, INPUT_PULLUP);)
const int buttonPin = 2; const int ledPin = 5; int buttonState = 0; void setup() { pinMode(ledPin, OUTPUT); pinMode(buttonPin, INPUT_PULLUP); Serial.begin(115200); delay(1000); } void loop() { if (buttonState != digitalRead(buttonPin)) { buttonState = digitalRead(buttonPin); Serial.println("Buton State Changed:" + String(buttonState)); if (buttonState == HIGH) { digitalWrite(ledPin, LOW); } else { digitalWrite(ledPin, HIGH); } } }
私の場合はタクトスイッチをジャンパワイヤ経由でESP32に繋いでいるので、この入力ピンのプルアップ設定をしていないとノイズで誤動作しまくります。
スイッチやケーブルに手を近づけるとシリアルモニタの表示がめまぐるしく変化し、やっぱりノイズ対策は大事だなーと実感します。
スイッチをブレットボード上に配置した場合はプルアップがなくても大丈夫かもしれません。
そんなこんなで動くようになったのでセンサを繋いでいきたいと思います。