레이블이 mBed board인 게시물을 표시합니다. 모든 게시물 표시
레이블이 mBed board인 게시물을 표시합니다. 모든 게시물 표시

2010년 12월 8일 수요일

임베디드 무선랜 모듈 Wiz 610wi (Embedded Wireless LAN module Wiz 610wi)

임베디드 시스템에 무선 인터페이스를 추가하려고 할 때 블루투스나 Zigbee같은 경우는 저렴한 가격에 다양한 모듈을 구할 수 있어 쉽게 추가할 수 있는데 비해 무선랜의 경우는 가격도 비싸고 그나마도 쉽게 구할 수 없어 임베디드 시스템에 추가하기가 쉽지 않다.

하지만 국내 회사인 Wiznet에서 다양한 종류의 임베디드 통신 모듈(Ethernet module, Ethernet-to-serial, WLAN module)을 출시하여 대부분의 필요한 모듈을 쉽게 찾을 수 있다. 그래서 얼마전에 Wiznet에서 임베디드 DIY를 활성화하기 위해 무료로 제공해 준 Wiz 610wi 무선랜 모듈을 mbed 보드에 붙여 테스트를 진행해 보았다.



802.11b/g를 지원하는 모듈로 Serial I/F와 MII I/F를 제공해 주기 때문에 임베디드 보드에 시리얼로 연결하거나 이더넷 포트에 다른 PC들을 연결해 무선 AP나 Gateway로 동작할 수도 있는 다기능 무선랜 모듈이다.

상세 사양은 다음과 같다.

Detailed Technical Specification


610wi는 3가지 동작 모드를 가지고 있다.


이 중 여기서는 mbed 모듈을 무선랜에 연결하는게 목적이기 때문에 client mode를 사용할 것이다.

모듈의 Factory Default 설정은 다음과 같다.


핀 배치는 다음과 같다.


두개의 커넥터(J19, J20)가 있지만 J19(36핀)으로만 신호선이 나오고 J20(20핀)은 단지 보드 고정을 위해 있을 뿐 신호선은 연결되어 있지 않다.

모듈 소형화를 위해 어쩔 수 없는 선택이긴 해도 DIY를 하는 사람들에게 치명적인 단점이 하나 있는데 커넥터의 피치가 일반적으로 많이 사용하는 100mil(2.54mm)이 아닌 50mil(1.27mm)라는 것이다. 직접 전용 PCB를 뜨지 않는 한 만능기판에 실장하기도 힘들고 1.27피치의 커넥터나 만능기판은 구하기도 힘들고 가격도 비싸다.
가능하면 J19, J20 모두 신호선으로 사용하는 대신 100mil(2.54mm) 피치의 커넥터를 사용했으면 더 좋았을거라고 생각한다.

하지만 땜질을 하다 보니 1.27피치가 2.0피치보다는 훨씬 더 좋다는걸 알게 되었다.

 Pin No.
Name
I/O
Description
 Pin No.
Name
I/O
Description
 1 CTS I UART:CTS 2 RTS O UART:RTS
 3 -   4 HW_trig I HW Trigger
 5 GPIO7 I/O Reserved 6 GPIO5 I/O Reserved
 7
 SOUT O UART:Tx 8 SIN I UART:Rx
 9 DC_IN  3.3V 10 DC_IN  3.3V
 11 GND   12 GND  
 13 RxERR I MII Rx Data Error
 14 COL I MII Collision
 15 /W_LEDO
 Wireless LED
 16 MDC I SMI CLK
 17 /RESET I RESET 18 MDIO I/O SMI I/O Data
 19 GND   20 GND  
 21 RXC I MII Rx CLK
 22 RXDV I MII Rx Data Valid
 23 RXD2 I MII Rx Data 24 RXD0 I MII Rx Data
 25 RXD1 I MII Rx Data 26 RXD1 I MII Rx Data
 27 GND   28 GND  
 29 TXC O MII Tx CLK
 30 TXEN O MII Tx Enable
 31 TDX3 O MII Tx Data
 32 TDX2 O MII Tx Data
 33 TDX0 O MII Tx Data 34 TDX1 O MII Tx Data
 35 GND   36 CRS I Carrier Sense

* 모든 신호레벨은 3.3V
* RESET은 최소 1.2usec이상 L로 유지해 줘야 함. 3초 이상 L로 유지되면 factory reset 됨
* HW Trigger가 L면 serial command mode로 들어가고 H면 serial command mode에서 빠져나옴

이 중 시리얼 포트를 통해 연결하는 경우 SIN, SOUT, DC_IN, GND, HW_Trig, /RESET만 있으면 된다.

일반적으로 사용하는 2.54 피치의 만능기판에 직접 연결할 수가 없기 때문에 디바이스마트에서 1.27피치의 만능기판을 구입하여 시리얼 인터페이스를 위해 필요한 핀만 연결해 주었다.


6핀만 연결하여 2.54피치의 핀헤더로 연결하여 mbed 보드와 커넉터로 연결할 생각이다.
보드 제작이 끝나고 나면 방향에 맞게 모듈을 꼽아주면 된다.




전원이 들어온걸 눈으로 쉽게 확인할 수 있도록 녹색의 LED를, 무선랜에 연결된 상태를 확인할 수 있도록 노란색의 LED를 보드에 실장해 주었다.


이 상태에서 보드에 전원을 공급하면 factory default로 설정되어 있는 Access Point 모드로 동작하게 되기 때문에 PC에서 확인해 보면 SSID가 WLANAP인 무선랜이 보이게 된다.

* 무선랜 모듈에 흐르는 전류가 크기 때문에 (최대 450mA) 충분한 전류를 흘려줄 수 있는 전원소스를 사용하여야 한다.


모듈의 IP주소는 192.168.1.254니까 WLANAP에 연결한 다음 컴퓨터의 IP를 수동으로 192.168.1.x 로 맞춰주고 브라우져에서 192.168.1.254로 접속하면 된다.
그럼 아이디와 암호를 물어보는데 디폴트는 admin/admin이다.


이 중 시리얼 포트의 상세 설정은 다음과 같다.


목적대로 사용하기 위해서는 먼저 Wireless settings에서 동작모드를 client mode로 변경해 줘야 한다.


Client 모드로 변경한 다음 client 모드의 설정을 변경하기 위해 'Setup' 버튼을 눌러주었다.


'Setup' 버튼을 누르면 설정 변경을 위해 잠시 기다려야 한다.


문제는 설정이 변경되면 디바이스 타입이 AP에서 무선랜 클라이언트 디바이스가 되기 때문에 무선 네트웍이 사라져서 아래와 같이 홈페이지를 억세스 할 수 없게 된다.


이 시점부터는 시리얼 케이블을 연결해서 설정을 변경해 주어야 한다.


디폴트 설정대로 38400 bps로 속도를 설정하고 시리얼 터미널을 연결하면 위와 같이 명령을 입력할 수 있게 된다. 명령어에 대한 상세한 설명은 메뉴얼을 참고하면 된다.

설정을 끝내고 <DI> 명령에서 보이는 네트웍들중에 하나에 연결시켜 주면 된다.

실제 설정 명령어들과 테스트 결과는 다음 포스트에 올리도록 하겠다.

2010년 6월 16일 수요일

mbed에 블루투스 모듈 연결 (Bluetooth interface for mbed)

mbed 에 블루투스를 추가해 보았다.
이번에 사용한 모듈은 myBleutooth-EX (27,100원) 라는 것으로 디바이스마트에서 구입하였다.
SPP를 지원하고 별다른 설정 없이 매우 쉽게 사용할 수 있다. 단 모듈에 연결하는 시리얼의 통신속도가 고정되어 있어 구입할 때 자신이 사용할 속도에 맞춰 구입해야 한다. 여기서는 모듈을 구입하러 갔을 때 38.4K밖에 재고가 없어 선택의 여지가 없었다.
 

CTS/RTS를 사용해서 플로우 컨트롤을 할 수도 있지만 그건 옵션이고 위의 5개 핀(Vcc, GND, TxD, RxD, RST)만 연결해주면 된다.



mbed 모듈로 자체적으로 USB시리얼을 지원하고 그 이외에 추가 시리얼포트를 가지고 있기 때문에 사용하기 매우 편리하다.


둘 다 2.54 피치의 핀헤더이기 때문에 만능기판에 와이어로 간단하게 연결해 주었다.


mbed 보드에서 USB 시리얼 <-> 블루투스 모듈에 연결된 시리얼 포트간에 서로 입력받은 데이터를 상대방에게 포워딩 해 주는 간단한 예제 프로그램을 만들어주면 바로 동작을 테스트 해 볼 수 있다.

#include "mbed.h"

Serial pc(USBTX, USBRX);
Serial bt(p28, p27);

int main() {
    char buf[256];
   
    bt.baud(38400);
   
    while(1) {
        if (pc.readable()) {
            bt.putc(pc.getc());
        }
   
        if (bt.readable()) {
            pc.putc(bt.getc());
        }
    }
}


mbed.org에서 IDE로 가서 위의 소스코드를 입력한다.


입력이 끝나면 Compile 버튼을 눌러 프로젝트를 빌드한다.

성공적으로 빌드가 끝나면 위와 같이 바이너리 파일이 생성되고 바로 컴퓨터로 다운받게 된다.

바이너리 파일의 이름을 지정하고 저장해주면 된다.


파일을 저장한 다음 mbed 보드를 USB포트에 연결하면 컴퓨터에 MBED라는 USB플래쉬 디스크가 만들어진다. 방금 다운한 바이너리 파일을 이 디스크에 복사해주면 된다. 복사가 끝나고 mbed 보드의 RESET 버튼을 눌러주면 가장 최근에 복사된 바이너리 파일이 mbed보드의 NXP 프로세서 프로그램 플래쉬로 복사되고 바로 실행된다. (별도의 플래쉬 라이팅 프로그램이 필요없어 매우 편리하다.)

단 테스트를 하기 전에 mbed보드에 전원을 연결하고 테스트 컴퓨터와 myBluetooth-EX 모듈간에 페어링을 해 줘야 한다. 컴퓨터와 디바이스간 페어링은 처음에 한번만 해 주면 이후에는 다시 할 필요가 없다. 아래는 맥에서 페어링 하는 예제이다.




테스팅 하는 구성은 다음과 같다.

컴퓨터에서 2개의 시리얼 터미널 프로그램을 실행시킨다.

첫번째 터미널은 블루투스 모듈과 SPP로 연결시킨다. 위에서 블루투스 모듈과 페어링 되면서 가상 시리얼 포트가 생성되었기 때문에 터미널 설정의 포트에 보면 myBluetooth-EX 가상포트가 보인다.


설정을 마치고 Connect 버튼을 눌러주면 블루투스 모듈과 커넥션을 만들기 위한 잠깐의 딜레이 후에 연결된걸 볼 수 있다.

두번째 터미널은 USB 시리얼 포트를 통해 mbed와 연결해 준다. mbed가 USB로 연결되면 usb serial 포트가 보이게 된다. 참고로 mbed의 USB 시리얼포트의 디폴트 통신속도는 9600 bps이다.

연결된 상태의 동작 예제이다. 위의 화면에서 왼쪽 터미널은 블루투스로 연결되었고 오른쪽은 USB 시리얼로 연결되었다. 각각 왼쪽 터미널에서 'bbb'를 눌렀고 오른쪽 터미널에서 'aaa'를 눌렀을 때 화면이다. 각각 상대방 쪽으로 데이터가 제대로 전송된 걸 확인할 수 있다.

다음번엔 Wiznet의 지원을 받아 임베디드 WLAN 모듈인 WIZ610wi를 연동시켜 보도록 하겠다.