top of page
블로그: Blog2

코인 Ticker 만들기 #8 Wifi Scan 예제 설명

최종 수정일: 2020년 1월 22일

이번 강좌에서는 이전 강좌에서 실행해 보았던 Wifi Scan 예제에 대해서 소스를 설명드리도록 하겠습니다.

#include "ESP8266WiFi.h"

이 부분은 Wemos D1 mini 에서 Wifi 기능을 사용하기 위한 헤더정보가 들어있는


ESP8266WiFi.h 라는 파일을 참조한다는 얘기인데요


참고로 헤더 파일에는 소스 내에서 사용되어지고 있는 함수나 변수 등에 대한 내용이 기술되어있습니다.


이 헤더 파일을 include 함으로써 소스내에서는 함수나 변수를 구현하지 않아도


사용가능하게 되는것입니다.

void setup() {

Serial.begin(115200)

이 부분은 Wemos D1 mini 가 시리얼 통신을 사용하도록 설정하는 함수입니다.


보통 115200 부분에 통신속도를 넣게 되어있는데요.


1초에 몇 비트의 속도로 통신을 하느냐에 대한 설정을 해주게 됩니다.


1초당 115200 비트의 속도로 Wemos D1 mini 와 PC 가 시리얼 통신을 하도록 설정했다고 보시면 됩니다.

WiFi.mode(WIFI_STA);

이 부분은 WiFi 모드를 설정하는 부분인데요.


WiFi 모듈들은 아래와 같은 3가지 모드를 제공합니다.


1. WIFI_STA (Station mode, Stand-alone mode)

- WiFi에 접속해서 IP를 할당받고, HTTP 통신을 사용하는 모드입니다.


2. WIFI_AP

- WiFi 를 사용할 수 있는 기기들이 Wemos D1 mini에 접속할 수 있도록 해주는 모드로

스마트 폰이나 PC에서 Wemos D1 mini 에 접속해서 HTTP 통신을 사용할 수 있도록

허브 역할을 해주게 됩니다.


보통 Wemos D1 mini 가 접속할 WiFi를 선택해 줄수 있도록 설정할때 사용합니다.

다음 강좌에서 설명드리겠습니다.


3. WIFI_STA + WIFI_AP

- 앞의 두 가지 모드를 동시에 수행하는 모드입니다.

WiFi.disconnect();

이 부분은 연결되어 있던 WiFi를 끊어주는 역할을 합니다.

delay(100);

WiFi disconnect 를 위해 약 0.1 초의 텀을 두도록 합니다.

Serial.println("Setup done");

시리얼 모니터로 setup 이 끝났다고 출력해 줍니다.

void loop() {

Serial.println("scan start");

다음으로 반복되는 부분인데요


시리얼 모니터로 Wifi Scan 이 시작됨을 출력해 줍니다.

int n = WiFi.scanNetworks();

WiFi 를 스캔하여 총 몇개의 Wifi 신호가 잡히는지 n 이라는 변수에 담아놓습니다.

Serial.println("scan done");

시리얼 모니터로 Wifi Scan 이 완료되었다고 출력해 줍니다.

if (n == 0) {

Serial.println("no networks found");

}

만약 Wifi 를 스캔하여 Wifi 신호가 잡히지 않은경우


n 변수에 0이 담아지게 되는데


이때는 시리얼 모니터로 네트웍을 찾을수 없다고 출력해 줍니다.

else {

Serial.print(n);

Serial.println(" networks found");

그렇지 않고 Wifi 신호가 잡힌것이 있으면


총 몇개의 신호가 잡혔는지 시리얼 모니터로 출력해 줍니다.

for (int i = 0; i < n; ++i) {

// Print SSID and RSSI for each network found

Serial.print(i + 1);

Serial.print(": ");

Serial.print(WiFi.SSID(i));

Serial.print(" (");

Serial.print(WiFi.RSSI(i));

Serial.print(")");

Serial.println((WiFi.encryptionType(i) == ENC_TYPE_NONE) ? " " : "*");

delay(10);

}

이 부분은 Wifi 신호가 잡힌 갯수만큼 반복(for) 하게 되는데요.


신호가 잡힌 Wifi 의 정보를 시리얼 모니터를 통해 출력해 줍니다.


WiFi.SSID(i) 부분을 통해 현재 신호가 잡힌 WiFi 신호의 SSID 정보를 시리얼 모니터로 출력해 줍니다.


WiFi.encryptionType(i) 부분은 암호가 걸려있는 Wifi 의 경우 * 를 표시하도록 해주는 부분입니다.

delay(5000);

마지막으로 5초의 시간동안 텀을 두고 다음 Wifi Scan 을 준비합니다.


이상으로 간단히 소스를 설명드렸습니다.


다음 강좌에서는 OLED 사용법에 대해서 설명드리도록 하겠습니다.


감사합니다.

 
 
 

Comments


Join our mailing list

Never miss an update

뉴스레터 구독하기

최신 업데이트를 받아보세요!

대한민국 경기도 수원시 장안구 연무동 21 유천프라자 가동 508호

  • facebook
  • twitter
  • linkedin

©2018 by 윈드마켓. Proudly created with Wix.com

bottom of page