레이블이 임베디드인 게시물을 표시합니다. 모든 게시물 표시
레이블이 임베디드인 게시물을 표시합니다. 모든 게시물 표시

2019년 4월 26일 금요일

아두이노 우노에서 ADXL335 가속도 센서 사용하기 (Using ADXL335 accelerometer on Arduino Uno)

Original Document: https://lastminuteengineers.com/adxl335-accelerometer-arduino-tutorial/

 

가속도 센서의 동작 원리

가속도 센서의 동작원리를 이해하려면 3차원 큐브 속에 공이 들어 있는걸 상상하면 된다.



만일 이 큐브가 우주에 있어 모든것이 무게가 없는 상태라고 한다면 공은 큐브 가운데에 가만히 떠 있을 것이다. 위의 그림에서 큐브의 각 벽면이 특정 축을 나타낸다고 생각해 보자.

박스가 갑자기 왼쪽으로 가속도 1g의 가속도로 가속되어 움직이면 공은 큐브의 X 벽에 부딛히게 될 것이다. 공이 벽X를 때리는 힘을 측정한다면 X축에 1G의 출력값을 얻을 수 있다.



만일 큐브를 지표면으로 가져온다면 공은 벽 Z로 떨어질것이고 벽Z에 1G의 힘을 가할 것이다.




이 경우 큐브는 움직이지 않았지만 그래도 Z축으로 1G의 값을 얻었다. 이는 중력 가속도가 1G의 힘으로 공을 아래로 당기고 있기 때문이다.

* 가속도 센서는 기울어짐 측정 어플리케이션에서 정적 가속도(static acceleration) 뿐 아니고 모션, 쇼크, 진동에 의한 동적 가속도(dynamic acceleration)도 측정한다.

MEMS 가속도 센서의 동작 원리

MEMS(Micro Electro Mechanical Systems) 가속도 센서는 실리콘 웨이퍼 위에 매주 작은 기계가공된 구조(micro-machined structure)로 이루어져 있다.



이 구조는 폴리실리콘 스프링에 매달려 있다. 특정 축에 가속도가 가해지면 이 구조가 편향될 수 있게 해 준다.

편향으로 인해 고정된 플레이트와 매달려 있는 구조 사이의 정전용량(capacitance)이 바뀌게 된다. 이 정전용량의 변화는 축에 가해진 가속도에 비례한다.

센서는 정전용량의 변화를 처리해 아날로그 출력전압으로 변환한다.

ADXL335 가속도 센서의 하드웨어

모듈의 핵심은 아날로그 디바이스에서 나온 소형, 저전력, 저잡음의 3축 MEMS 가속도 센서인 ADXL335이다. 이 센서는 +-3g 범위 내의 값을 측정할 수 있다. 기울기 감지 어플리케이션에서 중력가속도로 인한 정적 가속도 뿐 아니고 모션, 쇼크, 진동에 의한 동적 가속도도 측정할 수 있다.



이 센서는 1.8~3.6V DC에서 동작하고 약 350uA의 전류를 소비한다. 하지만 모듈에 3.3V 레귤레이터가 들어있기 때문에 아두이노같이 5V를 사용하는 마이크로 컴트롤러에서 사용하는데도 문제가 없다.

빵판에서도 사용하기 쉽게 ADXL335의 모든 핀이 2.54mm 피치의 6핀 헤더로 연결되어 있다. 여기에는 X, Y, Z 3축의 아날로그 출력, 2개의 전원핀, 셀프테스트 핀이 들어 있다.

아날로그 출력은 ratiometic한데 이건 즉 0g는 3.3V 공급 전압의 중간(1.65V)을 출력하고, -3g는 0V, 3g는 3.3V를 출력하고 그 사이 값은 정확하게 비례한 전압이 출력된다.

다음은 ADXL335 가속도 센서 IC의 풀 스펙이다.



더 상세한 내용은 데이터쉬트를 참조하면 된다.


ADXL335 가속도 센서 핀아웃




아두이노 우노와 연결

연결은 매우 쉽다. Vcc핀은 우노의 5V핀에, GND핀은 우노의 그라운드 핀에 연결해 준다. 그리고 X, Y, Z 출력은 각각 우노의 A0, A1, A2에 연결해 주면 된다.

정확한 결과를 위해 아두이노 우노의 아날로그 레퍼런스 (AREF) 전압을 변경해 줄 필요가 있다. 여기서는 우노의 3.3V 핀을 우노의 AREF핀에 연결(아래 그림에서 빨간색 점선 부분)해 주면 된다.

  

예제 코드


const int xInput = A0;
const int yInput = A1;
const int zInput = A2;

// initialize minimum and maximum Raw Ranges for each axis
int RawMin = 0;
int RawMax = 1023;

// Take multiple samples to reduce noise
const int sampleSize = 10;

void setup() 
{
 analogReference(EXTERNAL);
 Serial.begin(115200);
}

void loop() 
{
 //Read raw values
 int xRaw = ReadAxis(xInput);
 int yRaw = ReadAxis(yInput);
 int zRaw = ReadAxis(zInput);

 // Convert raw values to 'milli-Gs"
 long xScaled = map(xRaw, RawMin, RawMax, -3000, 3000);
 long yScaled = map(yRaw, RawMin, RawMax, -3000, 3000);
 long zScaled = map(zRaw, RawMin, RawMax, -3000, 3000);

 // re-scale to fractional Gs
 float xAccel = xScaled / 1000.0;
 float yAccel = yScaled / 1000.0;
 float zAccel = zScaled / 1000.0;

 Serial.print("X, Y, Z  :: ");
 Serial.print(xRaw);
 Serial.print(", ");
 Serial.print(yRaw);
 Serial.print(", ");
 Serial.print(zRaw);
 Serial.print(" :: ");
 Serial.print(xAccel,0);
 Serial.print("G, ");
 Serial.print(yAccel,0);
 Serial.print("G, ");
 Serial.print(zAccel,0);
 Serial.println("G");

 delay(200);
}

// Take samples and return the average
int ReadAxis(int axisPin)
{
 long reading = 0;
 analogRead(axisPin);
 delay(1);
 for (int i = 0; i < sampleSize; i++)
 {
 reading += analogRead(axisPin);
 }
 return reading/sampleSize;
}

위의 코드에서는 가장 먼저 센서의 X,Y, Z 출력이 아두이노 우노의 어느 아날로그 입력에 연결되어 있는가를 선언해 준다.

다음은 아날로그입력의 최소/최대값을 지정해 준다. 아두이노 우노의 경우 10-bit ADC를 사용하므로 0~3.3V의 전압은 0~1023 사이의 값으로 변환된다.

sampleSize 변수는 더 정확한 결과를 얻기 위해 각 출력값에 몇개의 샘플값을 사용하는지를 지정한다.

* 주의 
analogReference(EXTERNAL)을 호출하는걸 빼먹으면 내부적으로 생성된 reference 전압과 AREF핀을 쇼트시키게 되므로 아두이노 우노를 망가트릴 수도 있으므로 가장 먼저 호출하는걸 잊어먹으면 안된다.

analogReference(EXTERNAL);
Serial.begin(115200);

loop() 함수에서 매 200ms마다 아날로그 출력값을 읽는다. analogRead() 함수 대신 ReadAxis() 함수를사용한다. 이 함수에서는 10개의 ADC 변환값을 읽어 평균값을 리턴해준다.

// Read raw values
int xRaw = ReadAxis(xInput);
int yRaw = ReadAxis(yInput);
int zRaw = ReadAxis(zInput);

ADXL335 출력을 가속도로 변환하기

센서의 아날로그 출력값을 실제 가속도로 변환해 줘야 한다. 여기서는 아두이노에 기본으로 들어 있는 map() 함수를 사용한다. map(xRaw, RawMin, RawMax, -3000, 3000); 를 호출하면 RawMin(0)은 -3000으로, RawMax(1023)는 3000으로, 0~1023 사이 값은 -3000~3000 사이에 비례하는 값으로 변환된다.

* 여기서 -3000, 3000은 임의의 값이 아니다. 이 값은 센서에서 측정된 실제 중력 가속도(1/1000 G 단위)를 나타낸다. 

  • 센서의 X축이 0V를 출력하면 (xRaw=0) map() 함수는 -3000을 리턴할 것이고 이는 즉 -3G를 나타낸다
  • 센서의 X축이 3.3V를 출력하면 (xRaw=1023) map() 함수는 3000을 리턴할 것이고 이는 즉 3G를 나타낸다.
  • 센서의 X축이 1.65V를 출력하면 (xRaw=511) map() 함수는 0을 리턴할 것이고 이는 즉 0G (가속도가 없음)을 나타낸다.

아래 그림은 모듈을 각각 다른 방향으로 놓았을 때 가속도 센서의 출력값을 보여준다.


ADXL335 셀프 테스트

ADXL335는 최종 어플리케이션에서 센서의 동작을 확인하기 위한 셀프테스트 기능을 가지고 있다.



모듈에 있는 ST(self-test)핀으로 이 기능을 제어한다.

ST핀이 3.3V에 연결되어 있으면 내부적으로 가속도계에 정전력이 가해진다. 이로 인해 사용자는 가속도 센서가 정상적으로 동작하는지 확인할 수 있다.

이로 인한 출력의 변화는 다음과 같다.

  • X축으로 -1.08g (-325mV)
  • Y축으로 +1.08g (+325mV)
  • Z축으로 +1.83g (+550mV)

정상동작시 ST핀은 오픈시켜 놓거나 GND에 연결해주면 된다.


















ㅇ

2016년 9월 22일 목요일

WS2812와 APA102의 차이 비교 (Comparison between WS2812 and APA102)

개별 칼라를 제어할 수 있는 LED strip으로 가장 많이 쓰이는 것이 WS2812B(Adafruit에서는 NeoPixel 이라는 제품명으로 판매)이다. 전원라인(+5V, GND)을 제외하면 단 한개의 신호선으로 수백개의 LED를 제어할 수 있어 매우 편리하다.




하지만 별도의 클럭신호 선 없이 한개의 신호선으로 데이터를 전송하다 보니 타이밍에 매우 민감하다. 아두이노용 WS2812 라이브러리(Adafruit_NeoPixel 등) 소스를 열어 본 사람들은 알겠지만 데이터를 전송하는 부분 코드는 타이밍을 정밀하게 맞춰주기 위해 전송중에는 인터럽트도 disable시켜 놓고 어셈블리 코드로 하드코딩 되어 있다.



최대 800KHz의 속도로 데이터를 전송하는데 만일 128개의 LED를 구동한다고 하면 한번 색을 변경하는데 약 4ms 정도의 시간이 걸리게 된다. 즉 이 시간동안은 프로세서가 다른 작업은 커녕 심지어 인터럽트도 안 걸리고 LED에 데이터를 보내야만 한다.
이는 특히 라즈베리 파이같이 OS를 사용하는 경우 매우 치명적이다. 물론 라즈베리 파이에서도 WS2812를 사용할 수 있게 DMA를 사용해 데이터를 전송하는 라이브러리가 나와 있긴 하지만 이런 라이브러리는 portability가 거의 없다. 즉 라이브러리를 가져다 다른데 포팅하는것이 매우 힘들다.

그래서 이런 문제를 해결한 비슷한 종류의 LED가 몇 종류 나와 있다. 그 중 하나가 APA102이다.




우선 WS2812와 가장 큰 차이점은 전원선(+5V, GND)외에 두개의 신호선(Data, Clk)이 있다는 것이다. (WS2812는 1개의 신호선(Data)만 있음)








그래서 SPI 버스의 MOSI, SCK 에 Data, Clk를 연결해서 SPI 방식으로 데이터를 보내주면 된다. 실제 데이터 전송은 SPI가 담당하기 때문에 프로세서가 데이터를 전송하는 동안 기다릴 필요도 없고 타이밍을 신경 쓸 필요도 없기 때문에 라이브러리 코드도 훨씬 간단해진다.

데이터 전송도 SPI 클럭 기준으로 이루어지기 때문에 16MHz의 속도로도 충분히 전송이 가능하다. (WS2812에 비해 20배 이상의 속도) 그래서 POV같이 LED 색이 빠른 속도로 바뀌어야 하는 경우 WS2812는 전환속도가 느려 적합하지 않지만 APA102는 충분히 빠르게 색을 바꿔줄 수 있다.

라즈베리 파이에서도 DMA를 사용하지 않아도 충분하기 때문에 순전히 파이선으로 만든 라이브러리도 있다.

https://github.com/tinue/APA102_Pi







2016년 7월 21일 목요일

Firmata를 사용해 라즈베리 파이에서 아두이노 제어하기 (Controlling Arduino from Raspberry Py using Firmata)


아두이노와 라즈베리 파이를 시리얼 포트롤 통해 연결하면 firmata를 사용해 라즈베리 파이에서 아두이노의 핀들을 제어할 수 있다. 아두이노와 라즈베리 파이를 시리얼 포트로 연결하는 방법은 이전 포스트(라즈베리 파이와 아두이노를 시리얼 포트로 연결하는 방법들 )를 참고하면 된다.

먼저 아두이노를 설정 해 준다.

Firmata를 사용해 라즈베리 파이에서 아두이노를 제어하려면 아두이노에도 firmata 소프트웨어가 설치되어 있어야 한다.

메뉴의 File -> Examples -> Firmata 에서 StandardFirmata를 오픈해 자신이 사용하는 아두이노에 업로드 해 주면 된다.

다음은 라즈베리 파이에 pyfirmata를 설치해야 한다.

터미널 창에서 아래의 명령을 입력해 주면 된다. 기존에 이미 pip와 pyserial이 설치되어 있다면 첫번째 줄은 건너 뛰어도 된다.

$ sudo apt-get install python-pip python-serial
$ sudo pip install pyfirmata

이제 아두이노를 USB케이블을 사용해 라즈베리 파이에 연결해 주면 /dev 디렉토리에 ttyUSB0 디바이스가 만들어진다. 이 디바이스 이름을 알고 있어야 한다.

만일 라즈베리 파이에 허브를 연결한 다음 여러대의 아두이노를 연결해 주면 각각 /dev/ttyUSB0, /dev/ttyUSB1, /dev/ttyUSB2, .... 식으로 이름이 부여된다.

이제 실제로 라즈베리 파이와 아두이노를 firmata를 사용해 연결해 준다.

$ python
Python 2.7.3 (default, Mar 18 2014, 05:13:23)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from pyfirmata import Arduino, util

>>> board = Arduino('/dev/ttyUSB0')
>>>

위와 같이 에러가 없이 진행되었다면 연결이 성공한 것이다.

이제 아두이노의 디지털 포트는 board.digital[] 리스트를 사용해 제어할 수 있다.

즉 13번핀의 LED를 on/off하고 싶으면 다음과 같이 하면 된다.

>>> board.digital[13].write(1)
>>> board.digital[13].write(0)
>>>

핀의 상태를 읽을 때는 다음과 같다.

>>> print board.digital[3].read()
 0
>>>

그런데 핀을 반복적으로 사용해야 하는 경우 매번 board.digital[...] 이렇게 쓰는건 귀찮다. 그 대신 board.get_pin() 함수를 사용해 핀의 reference를 얻어 올 수 있다. 함수의 파라미터 부분에 "[a|d]:[pin#]:[i:o:p:s]" 형태의 스트링을 넘겨줘야 하는데 파라미터는 3개의섹션으로 되어 있고 각 섹션은 콜론(':')으로 구분한다.

첫번째 섹션은 핀이 아날로그(a)인지 디지털(d)인지를 지정한다. 두번째 섹션은 사용할 핀 번호가 된다. 즉 아두이노 우노의 경우 아날로그면 0~5, 디지털이면 0~13 사이의 값이 올 수 있다. 세번째 섹션은 핀 모드를 설정한다. 'i'면 입력, 'o'면 출력, 'p'면 PWM, 's'면 서보가 된다.

이 함수의 리턴값을 변수에 넣어 추후 read, write에 사용하면 된다.

>>> pin13 = board.get_pin('d:13:o')
>>> pin13.write(1)
>>>
>>> pin2 = board.get_pin('d:2:i')
>>> pin2.read()
0
>>>

아날로그 핀에서 값을 읽을 때는 먼저 analog value reporting을 활성화 시켜줘야만 한다. 하지만 그렇게 하면 아두이노가 라즈베리 파이에게 지속적으로 값을 보내게 된다. 라즈베리 파이에서 값을 계속 읽어내지 않으면 시리얼 통신을 막아버려 스크립트가 정상적으로 동작하지 못하게 만들어 버린다. 그러므로 정상적으로 값을 읽기 위해서는 iterator 스레드를 사용하는 것이 유용하다.

>>> it = util.Iterator(board)
>>> it.start()
>>> board.analog[0].enable_reporting()
>>> board.analog[0].read()
>>> it.start()
>>>

아날로그 값 리포팅을 멈추게 하려면 disable_reporting() 메소드를 호출하면 된다.






2014년 10월 11일 토요일

mbed 시작하기

http://www.mbed.org 사이트에 접속


우측 상단의 Developer Site 를 클릭


 우측 상단의 Login or signup을 클릭


Signup 을 선택해서 어카운트를 생성



로그인 한 후 우측 상단의 Compiler를 클릭


자신이 가지고 있는 디바이스를 선택해야 함. 우측 상단의 'No device selected'를 클릭


'Add a device' 를 클릭


mbed 호환 플랫폼 목록이 나오고 이 중에 자신이 가지고 있는 보드를 선택


보드를 선택하면 브라우저에 해당 보드에 대한 자세한 설명이 나옴. 'Add to your mbed Compiler'를 클릭


플랫폼이 추가되었음. 추가한 플랫폼을 선택하고 'Select Platform'을 클릭



우측 상단에서 방금 선택한 플랫폼 이름을 볼 수 있음. 좌측 상단의 'New'를 클릭


새 프로젝트 생성을 위한 윈도우가 열림. 'OK'를 클릭


'main.cpp'를 클릭하면 우측에 소스코드가 나타남


'Compile' 버튼을 클릭해서 프로그램을 컴파일


에러 없이 컴파일이 정상적으로 끝나면 실행 가능한 바이너리 파일이 자동으로 다운로드 됨. 파일 이름은 [프로그램 이름]+'_'+[플랫폼 이름]+'.bin'이 됨. 여기서 프로그램 이름이 'mbed_blinky'이고 플랫폼이 'LPC1768'이므로 파일 이름이 'mbed_blinky_LPC1768.bin'임

보드를 PC에 연결하면 보드는 외장하드로 인식됨


다운로드 된 바이너리 파일을 드래그해서 외장하드로 복사함. 복사가 완료되면 보드의 RESET 버튼을 눌러주면 바이너리 파일이 보드의 플래쉬에 기록되고 나서 바로 실행됨













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> 명령에서 보이는 네트웍들중에 하나에 연결시켜 주면 된다.

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