조금 뒷 기술이지만 ESP8266에서 AD 변환하는 방법

개발 환경 준비 , 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 프로그램에 적어보면 다음과 같습니다.

QiitaWiFi02
#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의 진골정? ! 딥 슬립 모드에 돌입하는 방법, 복귀하는 방법
입니다. 기대하세요~

또한 빠져나갈 곳을 아래에 순차적으로 정리하고 있습니다. 아울러 이쪽도 봐 주세요. (수시로 갱신중이므로, 재고해 주시면 갱신시에 통지 받습니다)
ぃ tp // 코 m / 아즈사 9 / ms / 후 20794 아 858 아 73fd97b

좋은 웹페이지 즐겨찾기