2C-ESP8266__SDK__Programming Guide__EN_v1.5 によれば、AD変換は uint16 system_adc_read(void) を呼べばいい。
このあたりのAPIの呼び方の話はすでに「ESP8266モジュール(ESP-WROOM-02)を試す その13 Deep-Sleep」に書いてある。
戻り値は、0~1Vを1024段階であらわした値のようだ。
2C-ESP8266__SDK__Programming Guide__EN_v1.5 の該当箇所の記述がよくわからない。
電源にニッケル水素電池を直列に3本つなぎ、半固定抵抗で分圧して1Vにしたものを測定してThingSpeakへ送ってみた。
グラフにしてみるとこんな感じだ。
設定がいけないのかそういう仕様なのか知らないが、データが100個しか取って来れないので上のようになったが、実際は下のようになっている。
これはAPPsのMATLAB Visualizationsで書かせたもの。
当然、ESP8266は電池を使い切って電圧が下がったところで動作を停止した。
計測の初めの頃に大きな測定値の乱れがあるが、原因は良く分からない。
ESP8266関連記事一覧へ
追記(2017/12/03)
ESP8266自身の電源の電圧を測るには別の方法がある。
ADC_MODE(ADC_VCC);
をvoid setup(){}の上あたりに書いておけば、
ESP.getVcc();
がint型の値として電源電圧を返す。
1 2 3 4 5 6 7 8 9 10 |
ADC_MODE(ADC_VCC); void setup(){ Serial.begin(74880); } void loop(){ int voltage = ESP.getVcc(); Serial.println(String(voltage)); delay(1000); } |