아두이노 코딩-89: 아두이노 이더넷(Ethernet) 웹서버 코딩에 의한 LED ON OFF

codingart(66)
Published in
#kr
Words
323
Reading
2 min
Listen
Play
8y

아두이노 보드에 설치된 가변 저항의 전압 값을 아날로그 핀에서 읽어 이더넷 네트워킹에 의해 웹에 출력이 가능하였다. 다음 단계로는 웹서버 코딩에 의해 웹에 ON OFF 버튼을 제공하여 클릭하므로써 아두이노 디지털 핀에 설치된 LED를 ON OFF 시켜보자.

noname01.png

헤더 영역의 코드 내용은 비교적 간단하다. SPI.h 와 Ethernet.h 라이브러리가 필요하다. 아울러 mac[] 번호가 입력되는데 실제 코딩에서 전혀 사용되지 않는다. 인터넷에 올라온 많은 정보들을 체크해 보면 DNS, gateway, submask 넘버링 과젖ㅇ들이 포함되어 있는데 아두이노 이더넷을 가자고 방화벽이 설치된 자신의 근무지에서 코드를 실행해봤자 전혀 성공할 수가 없다. 해킹 대비를 위하여 가상ip 즉 사설ip 가 붙을 수 없도록 조치가 다 되어 있기 때문이다. 즉 인터넷에서 잘못된 오픈 소스를 다운받아 사용하면 실패 확률이 120% 임에 유의하자.

noname02.png

그밖에 가상ip도 arduino.cc 예제 사이트에 보이는 192.168.1.177을 사용하면 시간 낭비이다. 왜냐하면 안되니까. 필자의 경험에 의하면 NodeMCU/WeMos 보드 사용 시에 보았던 눈에 익은 가상ip 즉 192.168.0.3 과 192.168.0.11 사례이다.

이더넷 쉴드의 W5100 칩은 NodeMCU/WeMos 보드에 채용된 ESP8266WiFi 12E 칩과 비교해서 발열이 엄청 많아 사용 효율이 대단히 떨어지며 아울러 웹서버 코딩을 위한 request를 보낼 때 ESP8266WiFi 12E 칩이 클라이언트 입력 버퍼 처리를 위해 문자열 즉 String을 직접 사용하는 반면에 W5100 칩은 문자로 수신하기때문에 문자를 더하기 작업을 하여 문자열로 완성시켜야 한다. 즉 한 줄의 추가 명령이 필요하며 문자열 완성을 위한 if 제어문이 추가로 필요하다.

noname03.png

입력 버퍼의 정보를 문자열로 처리하게 되면 .indexOf(“⚫◾▴”) 명령을 사용하여 입력 버퍼 정보 속에 “⚫◾▴” 정보 포함 여부를 조사할 수 있다. “⚫◾▴”정보는 당연히 /LED=ON 또는 /LED OFF 와 같은 내용이 된다.

noname04.png

아두이노에서 LED를 ON 또는 OFF 한 후에 이 LED 의 상태를 거꾸로 웹에 출력해 줄 필요가 있다. 즉 눈으로 볼 수 없는 원격지에서 예를 들면 옆방에서도 LED ON OFF 명령을 보내고 그 실행 여부를 확인할 필요가 있다.

다음의 동영상을 관찰해 보자. 아주 소형 LED를 사용하였는데 LED 구경이 큰 경우 전류 부족으로 LED ON OFF를 볼 수 없었다. 즉 W5100칩이 발열이 심한 것으로 보아 아두이노 소요 전력의 대부분을 빨아먹는 흡협귀 같은 칩인 듯 하며 초소형 LED 정도 ON OFF 할 수 있는 전력을 배분해 주는듯하다.

코드는 HTML 태그문제로 게제가 어려우니 아래의 사이트에서 참조하기 바람.

http://blog.daum.net/ejleep1/612

//Webserver_ethernet_LED_ON_OF_01

아두이노 코딩-89: 아두이노 이더넷(Ethernet) 웹서버 코딩에 의한 LED ON OFF | Ecency