코인 Ticker 만들기 #8 Wifi Scan 예제 설명
- 윈드마켓
- 2019년 1월 22일
- 2분 분량
최종 수정일: 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