目的
懸賞であたったのでgrove のセンサをいろいろ持っていて使いたいが、
ESP32のシールドなんか持ってないので(そもそもあるのか?)、
直接ESP32に配線してgroveユニットを使用することにした
光センサの接続 (Light-Sensor-v1.2)
今回使用する光センサがアナログ出力なので、
アナログ入力ができるらしいADCと書かれている端子に接続する(今回はADC0)
ちなみに、ESP32のADコンバーターは12bitらしい
赤:電源 3.3 V
黒:グラウンド GND
黄色:信号出力 ADC0
https://www.seeedstudio.com/Grove-Light-Sensor-v1.2-p-2727.html
ピン配置は以下の画像やサイトを参考にした
<参考:スイッチサイエンス>
https://trac.switch-science.com/wiki/esp32_tips
プログラム
grove の starter kit 用のコードを参考に温度取得をシリアルモニタで監視できるように書き換え
シリアルのセットアップを書き忘れて動かなくてびっくりした
https://github.com/Seeed-Studio/Sketchbook_Starter_Kit_for_Arduino/blob/master/Grove_Light_Sensor/Grove_Light_Sensor.ino
uint64_t chipid;
void setup() {
Serial.begin(115200);
}
const int pinLight = A0;
void loop()
{
int sensorValue = analogRead(pinLight); //the light sensor is attached to analog 0
Serial.printf("Light Strength = %d\n",sensorValue);
delay(2000);
}
シリアルモニタで明るさを読み取ることができるようになった
昼間の窓際で2350程度、スマホのライトを直接当てても2360程度にしか上がらなかった
電源電圧を 3.3V から 5V にすると、
暗いときは0、通常が2000程度、明るい(スマホのライト照射)時は4095となった
ADコンバーターが12ビットと考えると妥当な値である
電源電圧が3.3ボルトのときは、センサ側の出力が足りてなく、明るさ上限値が低かったと思われる
#まとめ
アナログ入力の読み取りができた
I2CとかSPIの接続も比較的簡単にできそうで Arduino の便利さに感激