2017年3月8日水曜日

ESP-WROOM-02 でアナログリードを試してみた

概要

ESP-WROOM-02 には TOUT というピンが 1 ピンだけあり、これでアナログ情報を読み込むことができます
ただ、Arduino 化しても analogRead() 関数で読み込むことはできず system_adc_read() という関数を使って読み込むことができます
今回は光センサを使って、明るさの情報を TOUT を使って読み込んでみました

環境

配線

全体の配線はこんな感じです
wroom_analog_read_circuit.jpg

ポイントは TOUT のピンに対する入力は 1.1V の電圧以内にする必要があるということです
今回は 3.3V の電圧を 1/3 にする分圧回路を組んでいます

WROOM の 3.3V -> 10KΩ -> 光センサの片方

と接続されており、光センサのもう片方は

光センサのもう片方 -> WROOM の TOUTへ

でここから更に分岐して

光センサのもう片方 -> 10KΩ x2 の並列抵抗 -> WROOM の GND

という接続になっています
全抵抗を 10KΩに統一して、GND 側に繋がる抵抗を並列抵抗にすることで、その間にかかる抵抗を 1/3 にすることができます

アナログリードするスケッチ

配線できたらスケッチを作成しましょう
スケッチの全体は以下の通りです

extern "C" {
  #include "user_interface.h"
}

void setup() {
  Serial.begin(115200);
}

int getToutValue(){
  int res = system_adc_read();
  return res;
}

void loop() {
  int val= getToutValue();
  Serial.print("value:");
  Serial.println(val);
  delay(200);
}

短いコードなので特に説明の必要はないですが、冒頭で system_adc_read を呼び出すために C 用のライブラリ user_interface.h を include しています

TOUT の値を 200ms 間隔で読み込んでシリアルモニタに出力しているだけです

動作確認

スケッチをコンパイルして WROOM に書き込んでみましょう
書き込む前にシリアルモニタを起動しておいてください

ちゃんと配線できていれば以下のように光センサで読み込んだ値が表示されると思います
wroom_analog_read_serial.png

分解能は 10bit なので 最大で 1024 になります
明るいほど値は大きくなり、暗くなると値が小さくなります

最後に

WROOM の唯一のアナログピンを使ってセンサデータを読み込んでみました
問題なく動作はしますが、入力電圧が 1.1V なのには注意する必要がありそうです

参考サイト

0 件のコメント:

コメントを投稿