아두이노프로세싱 프로그래밍

아두이노 NodeMCU ESP8266WiFi 웹서버 예제:아날로그 입력 데이터 생성 및 전송

coding art 2017. 1. 12. 17:25
728x90



 웹서버 예제 II 에서는 단순하게 아두이노 NodeMCULEDON OFF하는 디지털 제어 문제를 다루었다. 이번에는 그림에서처럼 NodeMCU3V3GND에 가변저항의 양단을 연결하고 가변저항의 중앙 입력 단을 NodeMCU의 아날로그 입력단 A0에 연결하여 3.3V 범위의 전압 값을 정수 값 0에서 1023로 변환하여 클라이언트에 전송하는 예제를 다루어 보기로 하자.


이 실험에서는 9k옴의 범위를 가지는 가변 저항을 사용하였다. 이보다 적은 값을 가지는 1k2k옴 정도의 범위를 가져도 문제는 없다.

앞 블로그에서 지적했듯이 아두이노 NodeMCU의 유일한 아날로그 입력 단 A0의 위치를 파악하여 배선하도록 한다.


 

이 예제는 앞서의 Web Server:II 예제 프로그램에서 간단한 부분적인 수정으로 쉽게 완성할 수 있다.

다음의 설명에 따라서 Web Server:II 예제 프로그램을 수정하도록 하자.

 

//Match the request 부분에서 request.indexOf(“/LED=ON”) != -1) 에서 단순하게 캐릭터 출력을 "/on"으로 바꾼다. 동시에 그 하단에 있던 ( “/LED=OFF“ != -1)를 포함하는 if 구문은 불필요하므로 제거한다.

 

아울러 //Return the response 부분에서 아날로그 입력 클라이언트 출력 부분을 추가한다.

A0 포트에서 가변 저항에 걸린 전압을 읽고 0.5(delay(500);) 간격의 시간 지연을 주어 10회 출력한다.

10회 출력이 끝나면 Data Refresh 버튼이 나타나며 버튼을 누르면 아두이노 NodeMCU 웹서버가 반응하여 다시 10회에 걸쳐 가변저항으로부터 입력 받은 데이터를 전송 줄 바꿈 하면서 출력하게 된다. 필요하다면 전압 값이 변동되도록 가변 저항을 돌려 보도록 하자.

 

Data Refresh 버튼을 누르게 되면 url 창의 IP주소 후미에 /on이 추가됨을 확인할 필요가 있다.

   


WebServer_acrowifi_analogoutput_01


 

// Match the request

    

int value = LOW;

if (request.indexOf("/on") != -1) {

digitalWrite(ledPin, LOW);

value = HIGH;

}

 

// Return the response

client.println("HTTP/1.1 200 OK");

client.println("Content-Type: text/html");

client.println(""); // do not forget this one

client.println("<!DOCTYPE HTML>");

client.println("<html>");

    

//아나로그 입력 클라이언트 출력

for(int i=0;i<10;i++){

// 아나로그입력 생성(0-1023):1023=3.3V

int val = analogRead(A0);

client.print(i);

client.print(" : Analog output = ");

client.println(val);

client.println("<br><br>");

delay(500);

}

//

 

client.println("<br><br>");

client.println("<a href=\"/on\"\"><button>Data Refresh </button></a>");

client.println("</html>");

 

delay(1);

Serial.println("Client disonnected");

Serial.println("");

 

}

  


가변 저항을 서서히 돌리면 스마트 폰 화면에서 변동되는 아날로그 값들이 출력됨을 알 수 있다.

url 주소창에서 /on 이 출력되었음에 유의하고 하단에 Data Refresh 라는 버튼을 다시 누르면 시리얼 모니터의 반응과 함께 갱신된 데이터 출력을 볼 수 있다.