요즘 사물인터넷(IoT) 시대를 맞이해서 무선 Connectivity 기술에 대한 수요가 굉장히 높습니다.

Bluetooth low energy, Ant+, Zigbee, NFC 등등 많은 근거리 무선 통신이 사물인터넷에 적용되고 있는데

그중에서 사람들이 스마트폰에서 가장 빈번하게 사용되고 있는 와이파이는 사물인터넷에 적용하기가 까다롭습니다.

왜냐하면 사물인터넷에는 대부분 마이크로프로세서(MCU) 이용해서 제품을 만드는데 여기에 와이파이를

쓸려고 하면 드라이버를 비롯해서 이더넷 관련 스택같은 것들을 올려야해서 쉽지 않습니다.

그래서 대부분 리눅스가 돌아가는 싱글 컴퓨터 보드가 아니면 쉽지 않은 것이 와이파이 입니다.


그래서 나온것이 TI에서 나온 CC3000이라는 모듈입니다. 

http://processors.wiki.ti.com/index.php/CC3000

이 모듈은 이러한 이더넷 관련 스택들을 모두 내장해서 MCU에서도 무선랜을 사용할 수 있는 길을 열어주었습니다.

CC3000_block.gif

위의 블럭다이어그램을 보시면 네트워크 프로세서와 무선 트랜시버, 전원 블럭, 호스트 통신 모듈을 모두 내장했습니다.


호스트 프로세서, 즉 마이크로프로세서는 CC3000과 SPI를 통해서 연결되고 제어를 위한 GPIO 2개만 있으면

무선 인터넷을 AVR, STM32와 같은 인기있는 마이크로프로세서와 연결할 수 있게 됩니다.


자세한 연결 방법은 위에서 아래 TI 제품 소개 링크를 참조하시면 됩니다.

http://www.ti.com/product/cc3000


이렇게 하드웨어 연결이 되면 펌웨어는 아래와 같이 호스트 드라이버 포팅만 하면 됩니다.

저는 STM32F4로 해봤는데 SPI 설정과 CC3000에서 IRQ부분만 EXTI(외부 인터럽트)처리만 잘 연결해주니

와이파이로 UDP, TCP 통신이 가능했습니다.

http://processors.wiki.ti.com/index.php/CC3000_Host_Driver_Porting_Guide


그리고 이렇게 만든 오픈소스 보드들도 외국에는 많이 등장하기 시작했고 아두이노 쉴드로도 출시가 되었습니다.

이중에서 spark.io라는 제품은 node.js를 이용해서 웹개발환경까지 클라우드로 구현했고 여기서 코딩한 펌웨어를

CC3000을 이용해 와이파이로 stm32 보드에 다운로드까지 합니다. 물론 아두이노 환경과도 호환됩니다.

요즘 트랜드가 node.js와 같은 자바스크립트를 활용해서 웹개발환경을 만드는 곳이 많은것 같은데 아래 tessel프로젝트도 비슷합니다.

https://www.spark.io/

http://www.adafruit.com/product/1491

https://tessel.io/