티스토리 뷰

Arduino

[Arduino] Wiznet WiFi Shield

생각많은 소심남 2013. 7. 11. 00:07

한 일년전인가.. 아는 까페에서 Wifi 모듈을 공동 구매한다고 해서 혹해서 구입했다. 그러고 나서 1년동안 어떻게 쓰는지 몰라서 사용도 못하고 구석에 처박혀있었는데 모처럼 다뤄볼 좋은 기회가 있어서 접해본다. 생김새는 이렇게 생겼다.



이렇게 아두이노 위에 올려서 사용하는 것을 적층형 쉴드라고 한다. 이건 Wifi를 사용할 수 있는 모듈이 포함되어 있는 형태이므로 적층형 Wifi 쉴드라고 표현하면 적당한거 같다. 1년 전에 공동 구매는 아트로봇에서 했던 거 같은데 지금 아트로봇에서는 sparkfun에서 만든 공식 Wifi 모듈만 판매하는 것 같고, 가격은 참 비싸다 13만원...

아무튼 wifi를 선택하는 이유 자체는 곧바로 웹에 접근할 수 있다는 장점때문이다. 그렇게 되면 웹에서 모바일이나 PC로 바로 뿌려줄 수 있기에 중간에 통신 수단을 거칠 필요가 없는것이다. 사실 애초에는 블루투스 통신을 생각했었다. 어차피 이 모듈과 모바일이 항상 근거리에 있다고 생각하고 아두이노에서 모바일로 뿌려주면 모바일이 웹으로 전송하는 구조를 택하게 하는 것이다. 그래서 일종의 ad-hoc network를 구축하는 것이었다. 그런데 아마 블루투스를 써본 사람은 알겠지만 블루투스 기능을 쓰는 동안 배터리 소모가 좀 있다. 그래서 직접적으로 넘겨주면 그런데 이점이 있지 않을까 생각한다. 

 참고로 이때 구매시 안테나도 같이 구매했었다. 



아마 안테나가 있고 없고의 차이는 조금 될 거 같은데 정상적으로 돌아가는지 여부가 중요했기 때문에 안테나는 정확하게 테스트 하지 않았다. 


이 모듈은 현재도 제조사인 Wiznet에서 계속 펌웨어와 라이브러리를 업데이트 중이며, 해당 포럼도 있어서 개발자와의 대화가 이뤄지기도 한다.



뭐 아무튼 아두이노에 wifi를 붙여놓으면 정말로 다양한 작업들을 할 수 있다. 일단 wifi를 다는 순간부터 아두이노는 클라이언트가 될 수도 있고, 서버가 될 수도 있기 때문에 데이터를 사용자에게 실시간으로 전송할 수도 있고, 혹은 받은 데이터를 토대로 또다른 결과물을 출력할 수 있다. 그래서 이에 대한 예제들이 몇가지 제공되는데 그중에서도 가장 기본적은 Basic Test에 대해서 잠깐 소개해보고자 한다.

 일단 BasicTest의 목적은 아두이노가 서버에 접속해서 서버가 보내는 데이터를 시리얼모니터창에 출력하는 것이다. 일단 여기까지 진행하면 그 모듈에 LED를 붙이던 LCD를 붙여서 메세지도 출력할 수 있을 것이다. 그래서 기본적인 예제에 현재 PC의 네트워크 환경을 설정해주고 올려주면 다음과 같이 동작하게 된다. 

 참고로 socket을 이용해서 확인해야 정확히 서버에 접속해서 메세지를 받았다는 것을 확인할 수 있으므로 socket test program을 하나 구해서 특정 포트와 현재 PC에 대해 설정한 후 Listener 모드로 놔뒀다.



이 상태에서 아두이노의 시리얼 모니터 창을 열면 자동으로 접속하게 된다.



올린 프로그램 내에서는 c키를 입력했을 때 접속하고 d키를 입력했을 때 연결 해제하는 구조로 되어 있다. 이 때 시리얼창으로 c키를 send 해주면 연결이 된다. 동시에 앞에서 틀어놓은 test Program에서도 접속했다는 메세지가 출력된다.


이렇게 아두이노는 192.168.0.12 라는 새로운 ip를 서버로부터 할당받았다. 이제 서버에서 message를 send 하면 그대로 출력된다. 몇가지 test 구문을 넣어봤다.



보다시피 키보드에 매핑되어있는 문자들을 제외하고는 이상하게 출력되는 것을 알 수 있다. 물론 이런 부분은 개선해야 될 부분이다. 


참고로 포럼에 따르면 공개 AP 접속에 대한 메카니즘이 없어서 그 부분에 대한 개선이 진행중이라고 한다. 그래서 아마 그부분만 진행된다면 조금더 활용도가 넓어지지 않을까 하는 기대를 해보고 있다..

댓글