:::: MENU ::::
Posts tagged with: wi-fi

SmartConfig – WiFi provisioning

유선 네트워크인 이더넷은 랜선을 연결하면 DHCP로 자동으로 IP가 부여된다. 하지만 WiFi에서는 AP의 이름 및 패스워드를 알고 AP에 접속을 해야지 IP를 얻을 수 있다. 이 과정이 WiFi provisoning인데, 스마트폰이나 PC와 달리 IoT 디바이스는 UI가 없는 경우가 많아서 AP의 이름이나 패스워드를 다른 방법으로 입력을 해야한다. 이때 주로 스마트폰을 사용을 하는데, 쉽게 말하면 스마트 폰을 이용해서 이 정보를 전달을 한다. 보통 디바이스를 softAP 모드로 놓고 이 디바이스에 스마트폰이 연결를 한후 UDP, TCP로 이 정보를 전달을 하는데, 이 방법외에 다음과 같은 방법이 있다.

SamrtConfig

ESP8266, ESP32에서 사용하는 WiFi 설정프로그램은 TI사의 CC3000에서 사용했던 SmartConfig를 사용한다. 단말은 SmartConfig 모드(packet sniffing mode)에 있고 스마트 폰에서 SSID, PW를 암호화해서 UDP broadcasting한다. 단말은 이 패킷을 받아서 SSID에 접속을 하고 IP를 부여 받는다.

WPS (WiFi Protected Setup)

WPS 버튼을 눌러서 기기를 세팅하는 방법. SSID, PW를 모르고 있어도 설정이 가능.

Local AP

서두에 설명한대로 softAP로 동작을 하고 웹 또는 TCP, UDP로 SSID, PW를 전달하는 방식.

참고


MAC OSX에서 Wireshark를 사용한 무선랜 데이터 캡쳐

Wireshark wiki에 monitor mode에 대한 설명이 나온다. 그런데 airport를 사용하는 내용이라서 별 의미가 없다. Wireshark에서 무선랜 데이터를 캡쳐하려면 monitor mode를 enable해야 하는데, 이 옵션은 윈도우즈를 오른쪽으로 많이 드래그를 해야 옵션을 찾을 수 있다. 그리고 link-layer를 802.11로 변경은 그냥 프로그램을 재실행하면 된다.


Wi-Fi, Bluetooth가 스마트홈의 주요 프로토롤로 사용될 전망

10년전만 해도 홈네트워크를 구축하려면 Zigbee, Z-Wave를 사용했지만 앞으로는 WI-Fi나 Bluetooth가 Zigbee를 대체할 수 있을 것으로 기대된다. 그 이유는 Wi-Fi의 경우 상대적으로 전력 소모가 많아서 단말에 쓰이기 어려웠는데, Wi-Fi HaLow(IEEE802.11ah) 덕분에 low power, long range를 지원하게 됐다. 그리고 Bluetooth도 1:1 연결에서 벗어나 mesh network를 지원한다니 기존 스마트 홈시장의 판도가 바뀔 예정이다.

관련기사:The Verge 이미지 출처:The Verge

[My Insight] 스마트 홈에서의 주도권을 하나의 기기나 인터페이스가 장악할 것으로 기대되지 않기때문에 이 시장을 바라보는 회사들은 모두 기기간의 호환성 및 에코시스템을 구축해야만 한다. 이러한 에코시스템을 구축할때 이미 스마트폰에 탑재된 프로토콜을 사용하면 추가적인 기기가 필요하지 않고 사용자도 쉽게 접근이 가능하다. 하지만 ZigBee의 경우 IP기반이 아니기 때문에 필립스 Hue의 경우처럼 Zigbee 프로토콜을 IP로 변환해주는 게이트웨이(Hue Bridge)가 필요하다. 따라서 이미 스마트폰에 탑재되어 있는 Bluetooth나 Wi-Fi가 Zigbee를 대체하면 Zigbee는 그 영역이 줄어들 수 밖에 없을 것이다.


Arduino Yún 뒷 이야기

Arduino Yun

Arduino YUN은 Artheros의 AR9331칩셋을 사용하는 모듈을 이용해서 만든 무선랜 보드이다. 물론 이 모듈에는 리눅스가 돌아간다. 전통적으로 무선랜 칩셋업체들은 무선랜 장비를 개발할 만한 업체에게 선별적으로 자신들의 무선랜 레퍼런스 보드의 회로도나 관련 자료들을 NDA를 맺고 공개한다. 이것은 자료를 완전히 오픈했을때 기술지원이 감당이 되지 않아서 이기도 하다. Arduino Yun은 dog hunter라는 업체로 부터 공급을 받아서 제품화한 것인데 모듈 내부의 회로도는 공개가 되지 않고 인터페이스만 공개가 되어 있다.   http://arduino.cc/en/uploads/Main/arduino-Yun-schematic.pdf

Arduino 또는 dog hunter에서 Artheros랑 NDA를 맺고 모든 자료를 받았을 것인데, 오픈할 수 없는 상황이다. 하지만 Arduino포럼에는 회로도를 오픈하라는 것…재미있는 것은 처음 이슈를 제기한 사람 [squonk42]이 TL-WR703N을 리버스 엔지니어링 한 사람이라는… 물론 OSHW의 원칙에 따르면 일부만 오픈해도 상관이 없다. 하지만 그동안의 Arduino의 명성에 좋지않은 이슈라는 것.

참고: http://hackaday.com/2015/02/24/is-the-arduino-yun-open-hardware/


Wi-Fi Direct, ad hoc, Bluetooth 4.0 비교

Wi-Fi Direct

Wi-Fi Direct가 무엇인지를 알기쉽게 나타내는 동영상

그럼 Wi-Fi Direct와 기존 ad-hoc은 어떻게 다른가?

Wi-Fi Direct is not the same as ad-hoc networking: The most significant difference between traditional ad-hoc wireless networking (traditional peer-to-peer networking) and Wi-Fi Direct is security. In Windows ad-hoc networks, the highest level of security supported is WEP in mixed client environments (Windows 7 will support WPA2 provided all adapters support it, as well). Wi-Fi Direct, as mentioned, supports WPA2. Another difference, Wi-Fi Direct devices can also simultaneously connect to existing wireless networks. More granular control and better discovery of devices also differentiate Wi-Fi Direct from ad-hoc networking

출처: http://www.pcmag.com/article2/0,2817,2371413,00.asp

Bluetooth Smart (BLE 4.0)

참고로 요즘 Bluetooth Smart라고 불리는 Bluetooth 4.0 (Low Energy Technology)에 대한 간단한 스펙은…

  • 속도: 25Mbps
  • 거리: 200 feet
  • 암호와: AES-128

TI의 SimpleLink Wi-Fi CC3000

TI가 기존의 오픈 소스 무선랜 솔루션이 외에 새로이 SimpleLink 라는 Wi-Fi 솔루션을 릴리즈 했다. EETimes 기사
이 기사에 따르면 잔디깍기, 그릇 세척기, 알람시스템, 홈시큐리티, 혈압 모니터 등의 가전, 홈네트워크 및 헬스케어 디바이스에 쉽게 Wi-Fi를 추가할 수 있다고 한다. 심지어 우산에 장착해서 기상시스템에 연결해서 비가 올것으로 예상이 되면 LED를 켜는 내용의 소개도 있다.

마케팅 매니저인 Kurtz에 의하면

“We realized that it was unreasonable to expect them to start running Linux and change to a high performance applications processor, so knowing the potential of the Internet of Things market, we rolled up our sleeves and rearchitected our existing Wi-Fi solution to make it suitable for any product – regardless of the architecture,” he said, adding that SimpleLink offered customers a “blueprint to connect even the simplest devices to the Internet.”

기존의 임베디스 Wi-Fi 솔루션을 가지고 있던 업체들과 동일한 얘기이다. 즉 Gainspan이나 Redpine Signals의 솔루션과 바로 경쟁이 될듯하다.
아래 동영상을 보면 상당히 쉬운 솔루션으로 소개를 하고 있으며, IoT(Internet of Things)의 시대가 바로 얼마남지 않은듯 하다.

Features



  • Wi-Fi 802.11 b/g

  • Best-in-class Link Budget

  • TX Power: +20dBm

  • RX Sensitivity: -89dBm

  • Embedded software including all drivers, stack, and supplicant

  • Low code size (Flash and RAM) required for MCU

  • Certified and production-ready modules

  • Complete platform solution including API guide, sample applications, Support Community (Wiki and Forum), User and porting guides

Benefits



  • Universal IP connectivity enabled anywhere

  • Enables low memory, low cost, low power MCU systems

  • Longer range advantage vs. competition

  • Proven Wi-Fi RF and interoperability

  • Implement Wi-Fi quickly without previous Wi-Fi or RF experience

  • Reduce development timeline and cost with CC3000 implementation and support infrastructure

  • Simple certification process, reusing module RF certification

  • Smaller board space for compact layouts


위 블럭다이아그램에 보듯이 Host MCU와는 SPI로 통신을 한다. SPI clock은 최대 26Mhz까지..
CC3000을 self-contained wireless processor라고 표현을 하는데, 이 말은 Wi-Fi를 위해 대부분의 처리는 CC3000에서 하므로 Host 시스템에서는 별로 할 것이 없다는 얘기이다.
정말 그런가? 이건 뒤에서 더 살펴보기로 하고…

제공되는 개발 플랫폼은
MSP430 기반의 보드 4종
CC3000 + MSP430 FRAM, CC3000 + MSP-EXP430F5529, CC3000 + MSP-EXP430F5438, CC3000 + MSP-EXP430FG4618
Cortex-M3기반 1종 CC3000 + Stellaris Cortex-M3,
Cortex-M4기반 1종 CC3000 + Stellaris Cortex-M4 이 있다.
모듈도 제공을 하는데 현재 LS Research사의 TiWi-SL이 있고 Murata에서 TypeVK를 출시 예정이다.

얼마나 쉽길래 SimpleLink 일까?
하드웨어적으로는 위 블럭 다이아그램처럼 간단히 SPI, IRQ, 전원정도만 연결을 하면 된다. 하지만 CC3000을 제어하기 위해서는 Host MCU에 SPI 드라이버를 포팅해야 한다. 이것도 이미 MCU에 대해 일반적인 지식이 있으면 어렵지 않다.

Host Driver Porting Guide
관련 자료 : http://processors.wiki.ti.com/index.php/CC3000_Host_Driver_Porting_Guide
MSP430을 쓰면 별도의 포팅 가이드 없이 제공해 주는 것을 쓰면 되겠지만 그렇지 않은 경우에는 위 가이드를 참고해서 같은 수준의 SPI 드라이버를 포팅한다.

Host Programming Guide



위 두 그림을 보면 TI에서 제공하는 s/w가 어떤 식으로 구성이 되는 지 알 수 있다. 위 두 그림은 같은 내용의 그림인데, 윗쪽의 그림을 보면 각 API가 command로 동작을 하고 event 기반임을 알 수 있다. 결국 SPI인터페이스 위에 HCI(Host Controlled Interface 의 약자)레이어가 있고, 4개의 API로 모듈화를 시켜놓았다.
각각의 모듈의 기능은 다음과 같다.



  • WLAN APIs, which interact with the underlying entity that is responsible for 802.11 protocol implementation

  • Network stacks APIs, which interact with the embedded network stack. These APIs comply with the well-known Berkeley socket APIs and are easy to use.

  • Embedded network application APIs, which interact with the embedded networking application delivered as a complementary part of the on-chip content. These include basic networking applications that the user can leverage (for example, ping utility and DNS).

  • Nonvolatile memory (NVMEM) APIs, which configure the external CC3000 device EEPROM, where most of the configuration is store.


코드를 보니 사실 NVMEM API는 configuration을 위한 독립적인 API이고, 나머지는 WLAN, SOCKET, NETAPP API는 서로 관련이 있는 API들인데, NETAPP API는 arp, ping, DHCP 및 IP 설정등을 담당하고, SOCKET API는 기본적인 TCP 함수들 send, recv, bind 등의 함수를 제공한다. WLAN API의 경우는 wlan 연결 설정 및 connect, close 등의 함수를 제공한다.
따라서 결론적으로 위의 코드들이 host MCU에 다 올라가야 한다는 얘기이다. -_-;;

임베디드시스템에 Wi-Fi를 추가하기 위해 어려운 점은 다음과 같다.
-. Linux와 같은 OS를 포팅해야 한다. 기존 시스템을 OS 기반의 시스템으로 전분 바꿔야 할지도…
-. RF에 대한 지식 부족. 전문가가 아니면 쉽게 손대기 힘들다. 따라서 모듈을 쓰는 경우가 많다.
-. 인증에 대한 비용 및 시간.
-. Wi-Fi 솔루션의 비용. 배보다 배꼽이 더 커질 수 있다.

SimpleLink가 많은 부분을 커버하고 있긴 하지만, AT command 기반의 seiral to Wi-Fi 모듈보다는 Host쪽에 코드를 포팅하는 작업은 그리 만만치 않아보인다.

보다 자세한 자료는 TI의 Wiki 페이지에서…http://processors.wiki.ti.com/index.php/CC3000_Wi-Fi_for_MCU


WIZFi210을 SPI로 제어하자

H/W 연결
WIZFi210은 SPI slave로 동작을 하고 MCU의 SPI는 master로 동작을 한다.
다음 그림과 같이 H/W 연결을 하는데, 테스트에 사용된 MCU는 W5200E01-M3에 있는 STM32F103C8을 사용하였다.
SPI signal외에 WIZFi210의 GPIO19핀(Host wake up signal: High Active)의 연결이 필요하며, WIZFi210의 H/W reset을 위해 전원을 control하기 위해 GPIO가 하나 더 필요하다.


이외에 GPIO29번은 <데이터/커맨드 모드간의 변경>에 사용되며 GPIO21번은 <공장초기화> <Limited AP 모드> 등의 개발 및 운용을 위한 다양한 용도를 위해 사용된다. 따라서, 예외적인 경우를 제외하고는 반드시 고려되는 것이 좋다. 또한 펌웨어를 업그레이드 하기 위해서는, 37번 핀을 pull up/pull down 하기 하여, Program/Run Mode를 전환하여 시리얼을 통해 펌웨어 파일을 전송할 수 있는 하드웨어적인 구성이 꼭 필요하다. 

SPI 스펙
WIZFi210에서 지원하는 SPI 스펙은 다음과 같다.
-. SPI Mode 0 지원 (CPOL = 0 and CPHASE = 0)
-. Only 8 bit SPI data word size is supported
-. SPI Clock Rate is 200 KHZ 



주의 할 점: 매 바이트 전송 마다 Chip Select 신호 SSPI_CS는 반드시 HIGH를 유지해야 한다.

SPI Data handling
SPI 데이터는 byte stuffing작업을 거치며, Control Escape code로 0xFB를 사용한다. 따라서 아래 표와 같은 패턴의 데이터를 받으면 이것을 0xFB로 시작하는 2 바이트로 인코딩을 한다. 2 바이트로 인코딩된 데이터를 원래의 패턴으로 변환을 하려면, 0xFB를 제거하고 0x20으로 XOR 연산을 하면 된다.


























 Pattern  Encoded as  Description
 0xFD  0xFB 0xDD  SPI_XON
 0xFA  0xFB 0xDA  SPI_XOFF
 0xFB  0xFB 0xDB  Control ESCAPE
 0xF5  0xFB 0xD5  SPI_IDLE
 0xF3  0xFB 0xD3  SPI link ready indication

WIZFi210은 idle 한 상태일 때 주기적으로 IDLE code인 0xF5를 전송하며, SPI slave와의 동기를 위해 초기 리셋 이후에는 Host에서도 IDLE Code인 0xF5를 전송해야 한다.


예제 코드


cfile6.uf.1902E4384ECCCA69172C3E.zip


예제 코드는 STM32F103의 SPI2를 사용하고, Chip Select로 PB12, PB10을 Host wakeup 신호로, H/W 리셋을 위해 PB11을 사용한다. Host wakeup 신호는 MCU의 인터럽트에 연결이 되어있으며 Wi-Fi 설정이 끝난 후에 enable이 되도록 되어 있다.

만약 H/W 리셋을 하지 않을 경우는 WIZFi210이 데이터 모드인지 커멘드 모드인지 판단을 하기 위해 AT 커맨드를 전송을 하고 일정 시간 이내에 커맨드에 대한 응답이 없으면 데이터모드로 판단을 하고, 커맨드 모드 진입을 위해 “+++”을 전송한다.
Host Wakeup 신호가 HIGH이면 WIZFi210에서 보낼 데이터가 있다는 의미이므로 SPI로 이 데이터를 읽어야 한다.

다음은 Static IP 192.168.88.123으로 설정을 하고, TCP server 192.168.88.228:5000에 접속을 하는 시나리오이다. 이때 AP의 SSID는 WIZ_RED이고 WPA 패스워드는 wiznet0123456 이다.


H/W reset or checking data mode or command mode
Send IDLE character for Synchronization
Check Host wakeup signal and read data
AT+WD
AT+WAUTO=0,WIZ_RED
AT+WAUTH=0
AT+WWPA= wiznet0123456
AT+NDHCP=0
AT+NSET=192.168.88.123,255.255.255.0,192.168.88.1
AT+NAUTO=1,1,,5000
AT+XDUM=1
ATA


[스크랩] Wi-Fi, Ethernet, HomePlug GP 지원하는 홈 에너지 솔루션

프리스케일은 Wi-Fi, 이더넷 및 HomePlug Green PHY (HomePlug GP) 표준을 통해 Smart Energy Profile 2.0을 사용하는 홈에너지 관리 솔루션을 선보이기 위해 퀄컴 아테로스와 협력한다고 발표했다. HomePlug GP는 스마트 그리드 및 스마트 에너지 어플리케이션을 위한 사양으로, 고객들의 비용, 커버리지 및 성능 요구를 기반으로 한다.


홈 에너지 관리 시스템은 유틸리티 업체들에게 이점이 있다. 이들이 에너지 소비를 절감하기 위해 스마트 그리드 내에서 수요 반응 시스템을 활용하기 때문이다. 이는 고객들에게 관련된 실질적인 데이터를 제공해, 에너지 사용을 모니터하고 제어하기 위한 기회를 제공한다. 이 시스템은 저전력 와이파이 옵션과 파워라인 통신 옵션을 보여준다.



미터, 자동차 및 어플라이언스를 제조하는 사업뿐만 아니라 유틸리티 업체들이 HomePlug GP를 견인하고 있다. 이 시스템은 댁 내 어플라이언스 전기 소비를 모니터하고 제어하는 프리스케일의 Home Energy Manager 레퍼런스 설계를 포함하고 있다. 또한 Smart Energy 2.0 Profile의 Ubilogix 구현으로 퀄컴 아테로스 PL-14 HPGP 보드를 통해 통신할 수 있다.



Freescale Tower System 개발 플랫폼은 MCU 기반 설계용 Wi-Fi SiP(system-in-package)인 퀄컴 아테로스의 AR4100를 통합하고 있다. AR4100은 에너지 사용을 줄이면서 장거리 전송을 가능케 한다. TWR-WIFI-AR4100은 Tower System을 위한 주변 기기 모듈로, AR4100이 Kinetis 및 Coldfire 프로세서 선택 시 타워 설계에 추가될 수 있게 해준다. 이 패키지는 AR4100 설계를 구현하기 위해 필요한 모든 소프트웨어와 함께 제공된다.



프리스케일은 스마트 그리드 및 스마트 미터링 인프라와 홈 및 빌딩 네트워크를 위한 스마트 에너지 솔루션을 제공한다고 말했다. 이 솔루션 어플리케이션은 스마트 미터, 홈 에너지 관리자, 네트워크 스마트 게이트웨이, 집 내부 및 외부 통신 솔루션, 데이터 집중 장치, 재생 가능한 에너지 솔루션 및 전기 자동차 공급 장비를 포함한다.



홈 에너지 관리 시스템은 네트워크 스마트 게이트 웨이, 통합 고속 와이파이 라우터 및 에너지 관리, 자동화 및 보안을 제공하는 HAN(home area network)으로 구성된다. 또한, 스마트 미터 및 홈 시스템을 위한 비용 효율적인 원격 모니터를 제공하기 위해 HAN을 탑재한 홈 내부 에너지 디스플레이 미터 모니터를 갖추고 있다.
– 출처: 전자엔지니어


퀄컴 아데로스 AR4100

퀄컴이 아데로스를 인수했죠.
들리는 얘기로는 아데로스의 분위기는 더 좋아졌고, 퀄컴의 connectivity 부분이 아데로스와 합쳐져서 더 켜졌다고 합니다.

암튼 AR4100은 11n을 지원하지만 1T1R (SISO)로 low power, low cost, low end를 타겟으로 하고 있습니다.

인터페이스도 SPI를 제공해서 low end MCU에서도 사용이 가능하게 되어 있는데, 현재 지원되는 개발 환경은 주로 Freescale솔루션에 적용이 가능합니다.

Currently Supported Development Environment
• Freescale Tower Development Platform
• ColdFire MCF52259 or Kinetis MCU with greater then 128K NVM
• Freescale MQX™ version 3.6.2
• Freescale CodeWarrior® tool suite v7.2 for the ColdFire 52259 processor
• IAR Embedded Workbench® v6.10 for the Kinetis MCUs

cfile25.uf.1331BD3B4E0C3CB5027F2E.pdf


와이파이 혼신 최소화 가이드라인


방통위에서 배포한 와이파이 혼신 최소화 가이드라인입니다.

cfile7.uf.1336CF454D3EAB19275D41.hwp



【 2.4㎓ 와이파이 채널 설명 】
  ○ 와이파이 채널은 5MHz 단위 13개 채널로 구성
  ○ 혼신을 최소화 하기 위해 채널 간섭이 적은 채널(1, 5, 9, 13) 사용 권장
   – 인접 채널 사용 시 채널간섭으로 인한 AP간 혼신유발
     2 번 채널 사용시 : 인접한 1, 5번 채널간섭
     7 번 채널 사용시 : 인접한 5, 9번 채널간섭
    2 번 채널 사용시 : 인접한 9, 13번 채널 간섭

따라서 무선랜 공유기 설치 시에 무선랜용 채널(1~13) 중 전파간섭이 적은 채널(1, 5 ,9 ,13) 중에서 1개를 선택 하여 사용할 것을 권장합니다.