開発環境の準備、WiFiの接続まで、出来たところでいきなりAD変換に行ってみたいと思います。
ESP8266でのAD変換(概要)
ESP8266にはTOUTピンがあり、コレがAD変換できる唯一のピンのようです。
このピンは仕様書を読む限り、「電源電圧の測定」もしくは、「外部の適当な電圧の測定」が行える様です。
(英語に自信が無いので、間違っていたらゴメンなさい)
今回は、「外部の適当な電圧」の測定をやってみます。
注意点が一つあります!
TOUTピンを使ったAD変換は、0v~1Vの範囲で10bitの分解能を持って計測する事ができるとのこと
1V以上の電圧を入れると壊れるのかは試していませんが、電圧の計算ご注意下さい。
あと、今の所AD変換はArduinoっぽく使えないので、プログラムの所よく読んで下さい。
簡単な回路図
しょぼいですが、手書きの回路図です。抵抗で3.3Vの電源電圧を分圧しているだけですが・・
プログラム
本来は、Arduinoっぽく、アナログリードと書きたいところですが今の時点では、アナログリードは実装されていない様子で上手く動きませんでした。
そこで、色々調べたら次のコードを使うと上手く動きました。
extern "C" {
#include "user_interface.h"
}
プログラムの始めESPのヘッダーファイルを読み込んでいる所に上記の記述を追加します。
system_adc_read()
そして、AD変換をするのはこの関数で出来るらしいです。
前回のWiFiのプログラムに書き足すと下記になります。
#include <ESP8266WiFi.h>
extern "C" {
#include "user_interface.h"
}
char toSSID[] = "XXXXXXX";
char ssidPASSWD[] = "YYYYYYYYYY";
void setup() {
//デバッグ用にシリアルを開く
Serial.begin(115200);
Serial.println("PG start");
//WiFiに繋がったらLEDを点灯させるので、そのピンをOUTPUTに設定して、LOWに。
pinMode(5, OUTPUT);
digitalWrite(5, LOW);
//WiFiクライアントモード設定
WiFi.mode(WIFI_STA);
//WiFiを繋ぐ前に、WiFi状態をシリアルに出力
WiFi.printDiag(Serial);
//WiFiの設定を入れる。IPは、デフォルトがDHCPのようで、IPが共有されるときはWiFiのアクセス情報だけでOK
WiFi.begin(toSSID, ssidPASSWD);
// 固定IPではネットワークステータスが上手く動かないので、今は使えなさそう。本家にバグ登録はされているらしい。
// WiFi.config(ip, gateway, subnet);
//接続が確立するまで、・・・を表示
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
//WiFi.printDiag(Serial);
}
//ここに来たら、接続完了している。
//改行して繋がったことをシリアルで伝える。
Serial.println("");
Serial.println("WiFi connected");
//WiFiの状態を表示
WiFi.printDiag(Serial);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
// 無線LAN接続OK LED点灯
digitalWrite(5, HIGH);
}
void loop() {
//unsigned int 型の入れ物を用意
uint ADC_Value = 0;
//AD変換実行
ADC_Value = system_adc_read();
//計測結果をシリアルに書き出す。0-1024の値
Serial.println("=======ANALOG " + String(ADC_Value) + "ANALOG ");
if (WiFi.status() != WL_CONNECTED) {
// コネクション確立済み以外のステータスなので
// 無線LAN接続NG LED消灯
digitalWrite(5, LOW);
} else {
//コネクションOKなので、点灯
digitalWrite(5, HIGH );
}
delay(500);
}
このプログラムを実行すると、こんな感じにシリアルにAD変換した値が流れてきます。
電源の電圧を測るコマンドは何か調べられていませんが、分かったらこの記事に書き足したいと思います。
次にやろうと思っている事
ESP8266の真骨頂?! ディープスリープモードへ突入する仕方、復帰するやり方
です。お楽しみに~
またハマりどころを、下記に順次まとめています。あわせてこちらもご覧下さい。(随時更新中なので、ストックしてもらえれば更新時に通知させてもらいます)
http://qiita.com/azusa9/items/fe20794aa858a73fd97b