아두이노 ESP8266WiFi NodeMCU 보드를 웹서버로 활용하여 LED를 on OFF하는 제어는 사물인터넷에 입문하기 위한 핵심 코딩으로 알려져 있다. 하지만 사물인터넷 제어에 반드시 on OFF 와 같이 간단한 경우만 있는 것은 아닐 것이다. 이미 LED on OFF 코딩과 관련된 응용 예제들이 블로그에 많이 제시되었으며 그 중에서도 Blinking 예제를 빌트인 LED를 대상으로 추가하도록 하자.
아두이노 NodeMCU 보드에서 빌트인 LED는 GPIO 2번 핀 또는 그냥 2번 핀으로 설정되어 있다. 한편 데이터 핀 번호 방식으로는 D4 가 2번 핀에 해당한다.
Blinking 모드를 추가하기 위해서 프로그램을 새로 작성하기 보다는 on OFF 버전 프로그램을 필요한 부분만큼 수정하기로 한다.
수정에 사용된 프로그램은 다음의 블로그를 참조하기 바란다.
ESP8266WiFi NodeMCU 모듈사용 Web Server 예제:II
http://blog.daum.net/ejleep1/302
NodeMCU 빌트인 LED 즉 2번 핀 또는 GPIO 2 번 핀의 배선구조는 보드에서 항상 3.3V가 걸린 상태에서 하단 부분에 LOW 상태 또는 HIGH 상태를 digitalWrite() 명령에 의해 설정하게 되어 있다. 즉 빌트인 LED를 on시키기 위해서는
digitalWrite(ledPin, LOW); 명령 실행과 함께 웹 브라우저 출력에서는 on을 출력해야 하므로 value = HIGH; 로 설정해야 하는 것이다.
코딩 초보자 입장에서 LED를 on 시켜야 함에도 불구하고 digitalWrite() 명령에서 왜 LOW를 출력해야 하는 이유를 반드시 이해할 필요가 있다.
스마트폰 웹브라우저에서 request가 들어오면 loop()문에서 request.indexOf(“/LED=ON⦁⦁⦁”)에 의해 입력 버퍼를 체크하여 –1 이면 수신 데이터가 없으므로 if 문을 건너뛰어 다음 명령을 수행하게 된다. 반면에 –1 이 아니라면 if문을 실행한다. 즉 digitalWrite(ledPin, LOW); 명령 실행과 함께 웹 브라우저 출력에서는 on을 출력해야 하므로 value = HIGH; 로 설정해야 하는 것이다.
반면에 LED=OFF request가 들어오면 loop()문에서 request.indexOf(“/LED=OFF⦁⦁⦁”)가 –1 이 아니라면 if문을 실행한다. 즉 digitalWrite(ledPin, HIGH); 명령 실행과 LED는 OFF되고 함께 웹 브라우저 출력에서는 OFF를 출력해야 하므로 value = LOW; 로 설정해야 하는 것이다.
그 다음 LED=BLINK request가 들어오면 LED=ON 이나 LED=OFF 외에 별도의 if 문이 필요하게 된다. if문의 위치는 LED=OFF 바로 다음이 아니라 LED의 상태 값 즉 value가 HIGH 인지 LOW 인지 상태를 출력하는 부분이 적절하다.
그 이유는 Blinking 상태에서는 on OFF 가 빠른 속도로 반복되기 때문에 vaule 값을 HIGH 나 LOW 로 설정하는 것은 아무 의미가 없으며 퉁쳐서 BLINK로 표현하는 것이 적절하다. BLINK횟수는 20회 시간 지연 0.05초 총 2초로 설정하였다. 단 BLINK 시작 이전에 LED가 on 상태면 LED OFF를 먼저 시작해야 하며 반대로 LED가 OFF 상태면 LED on을 먼저 시작해야 하므로 for loop 내부에 if 문과 else 문을 두었다. 반면에 LED=BLINK 조건이 아니라면 else 문에 의해 value 값이 HIGH 인지 LOW 인지 따져 출력하게 될 것이다.
BLINK 예제를 추가하기 위하여 웹서버 코드의 수정이 성공적으로 이루어졌으며 수정된 프로그램의 동작 여부를 확인해 볼 수 있도록 첨부된 동영상을 참조하기 바란다.
앞으로 아두이노 무선 와이파이 보드를 사물인터넷 망에 적용하기 위해서는 물론 한 대의 보드에 여러 가지 제어 기능을 담을 수 있어야 하겠지만 핵심은 많은 댓 수의 무선와이파이 보드를 웹브라우저로 코딩하여 관리할 수 있어야 할 것이다. 그러한 측면에서 보면 이번에 제시된 예제는 아두이노 무선와이파이 코딩의 마지막이 아니라 아주 초보적인 시작점에 불과하다는 점을 블로그 독자 분들은 알아차렸을 것이다.
'아두이노프로세싱 프로그래밍' 카테고리의 다른 글
아두이노 무선 와이파이 코딩의 확장: 웹브라저 버튼 입력과 문자 입력 방식 혼용 (0) | 2017.04.19 |
---|---|
아두이노 무선 와이파이 코딩의 확장: 웹브라저 버튼 입력에서 문자 입력 방식으로 (0) | 2017.04.17 |
HTML/자바스크립트 계산기 프로그램 예제 (0) | 2017.04.15 |
초보자를 위한 조도센서 LED ON OFF에서 저항 값 변동 프로세싱에 의한 그래픽 관찰 (0) | 2017.04.12 |
아두이노 초보자를 위한 “아두이노 코딩에 의한 조도센서 저항값 변동에 따른 LED ON OFF” (0) | 2017.04.10 |