ESPr Developer 32で従来のESPr Developer用GROVEシールドを使うときのポイントメモです。主にピン配置で苦労しましたが、乗り越え、またGroveシールドが使えるようになりました!
経緯
ハンダ付けが苦手な私にもスイッチサイエンスさんのESPr Developer 32が発売されたことにより追い風が吹いてきました。
しかも、従来のスイッチサイエンス製の拡張基盤が使える!
大好きなESPr Developer用GROVEシールドも使えるんじゃないかということで、発売初日に購入しました!
ピンを付ける
私の場合はスイッチサイエンス製の拡張基盤が使えればよいので、10口のピンソケットでよいのでハンダ付けしました。
マスキングテープで固定して。
板に貼り付けて。
なんとかハンダ付け対応完了。
ただでさえハンダスキルが低い中、なかなか雑な仕上がりです。 とりあえず動けばよいのです!
ひとまずLEDチカチカさせて通電テスト
ということで、ESP32(ESP-WROOM-32)でLチカ (WindowsでArduino IDE使用) などを参考に環境を整えてLEDを光らせてみます!
void setup() { pinMode(12, OUTPUT); Serial.begin(115200); Serial.println("LED TEST"); } void loop() { digitalWrite(12, HIGH); Serial.println("LED ON"); delay(250); digitalWrite(12, LOW); Serial.println("LED OFF"); delay(250); }
いずれ、ESPr Developer用GROVEシールドのD12で動かすのでこれでやってみます。
無事LEDを光らせてみました。うれしい。
判定できる範囲のピンをLEDを光らせて通電確認して無事動いている模様。TXD0・EXD0あたりは分からないけど、とりあえずよいでしょう!
いざESPr Developer用GROVEシールドをつけてみる→動かない
さて、いざESPr Developer用GROVEシールドをつけてみます。
ですが、うんともすんとも言わない・・・。D14、I2C、A0も同様。
これはもしかして、GROVEシールドはダメなやつ?
ハンダ付けがダメ?いやいや、単体で見てみたら動いてたし、違う気がする。
ここで気づいたピン配置の違い
スイッチサイエンス製の拡張基盤が使えると言っても、もしかしたら、いろいろ違いがあるかもしれないということで、ESP8266のESPr Developerと今回のESP32のESPr Developer 32の基板を見てみました。
おお、、、なるほど。明らかに違います。以前のIO14やIO12の部分がIO25やIO26に入れ替わってますね。ということは先ほどのD12を狙うコードはESPr Developer 32ではちょっと下にずれたピンが動作してしまってGroveシールドに伝わっていません。
ということで、こうやって見比べながらD12、D14、A0、I2Cを動かしてみました。
D14でGrove LEDを光らせる
従来IO14を見ていたD14は、ESPr Developer 32の場合ではIO25です。
void setup() { pinMode(25, OUTPUT); Serial.begin(115200); Serial.println("LED TEST"); } void loop() { digitalWrite(25, HIGH); Serial.println("LED ON"); delay(250); digitalWrite(25, LOW); Serial.println("LED OFF"); delay(250); }
D14でLEDを光らせるには上記のように書きます。
こちらで無事光りました!
D12でGrove ボタン
つづいて、D12でGrove ボタンいきます。
従来IO12を見ていたD12は、ESPr Developer 32の場合ではIO26です。
// 旧D12 = 現26pin int pushButton = 26; void setup() { pinMode(pushButton, INPUT); Serial.begin(115200); Serial.println("DigitalRead TEST"); } void loop() { int buttonState = digitalRead(pushButton); Serial.println(buttonState); delay(1000); }
D12でGrove ボタンの値を取得するには上記のように書きます。
無事取得できました!
A0でGrove ジョイスティック
A0でGrove ジョイスティックいってみましょう。
従来A0を見ていたTOUTという特殊なピンでした。ESPr Developer 32の場合ではIO4になっていました。以前特殊なピンでしたがうまくいくものでしょうか?
int sensorPin = 4; int sensorValue = 0; void setup() { pinMode(sensorPin, INPUT); Serial.begin(115200); Serial.println("Analog TEST"); } void loop() { // read the value from the sensor: sensorValue = analogRead(sensorPin); Serial.print("sensorValue : "); Serial.println(sensorValue); delay(sensorValue); delay(1000); }
ひとまず、analogReadを当ててみます。
無事値が取得できました!ただ、本来ジョイスティック無操作時に50%で512を指し示す値が416のような?このあたりは引き続き文献を追ってみましょう。
I2Cでデジタル光センサー
では一番難しそうなI2C。ここはデジタル光センサーでいってみましょう。
I2Cはかなりハマりました。従来I2Cを行っていたピンはIO4とIO5だったようです。ESPr Developer 32の場合ではIO19とIO21ですが、どう指定しようか悩んでいたところ、以下文献に助けられました。
ESP32 (ESP-WROOM-32)でi2C通信 – とっくんラボ
beginの引数にSDA、SCLの順にピンの番号を入れることで出来ます。
とのことで、Wire.beginで明示的に指定できるようです。SDAとSCLがどちらかわからなかったので、上手く値が取れる方で指定しました。
#include <Wire.h> #include <Digital_Light_TSL2561.h> void setup() { // 明示的にI2Cの対象ピン指定する int SDA = 19; int SCL = 21; Wire.begin(SDA, SCL); Serial.begin(115200); TSL2561.init(); } void loop() { Serial.print("The Light value is: "); Serial.println(TSL2561.readVisibleLux()); delay(1000); }
このようになりました。実行してみると無事に値が取れました!
よかった
ということで、以前のESP8266のESPr Developerでの制作で重宝していたESPr Developer用GROVEシールドが、ピン指定をしっかりすればESPr Developer 32でも利用できることがわかりました。よかった!
ESPr Developer 32はWi-FiもBluetoothも扱うことができるので、センサーの無線化や遠隔でアクチュエーターを動かすときに、様々なアプローチが期待できそうなので楽しみです。
それでは、よきESPr Developer 32 & Grove & IoT Lifeを!