概要
ESP-WROOM-02 には TOUT というピンが 1 ピンだけあり、これでアナログ情報を読み込むことができます
ただ、Arduino 化しても analogRead()
関数で読み込むことはできず system_adc_read()
という関数を使って読み込むことができます
今回は光センサを使って、明るさの情報を TOUT を使って読み込んでみました
環境
- ESP-WROOM-02開発ボード
- Mac OS X 10.11.3
- Arduino IDE 1.6.7
- Arduino core for ESP8266 2.1.0
配線
全体の配線はこんな感じです
ポイントは 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 に書き込んでみましょう
書き込む前にシリアルモニタを起動しておいてください
ちゃんと配線できていれば以下のように光センサで読み込んだ値が表示されると思います
分解能は 10bit なので 最大で 1024 になります
明るいほど値は大きくなり、暗くなると値が小さくなります
最後に
WROOM の唯一のアナログピンを使ってセンサデータを読み込んでみました
問題なく動作はしますが、入力電圧が 1.1V なのには注意する必要がありそうです
0 件のコメント:
コメントを投稿