본문 바로가기

메이커 자료/NodeMCU

NodeMCU ( 3 / 4 ) : WiFi 연결, 스캔하기

안녕하세요~ 지난 글에서는 NodeMCU에 LED와 푸시버튼을 연결해보는 방법에 대해 알아보았습니다.

2019/07/17 - [메이커 자료/NodeMCU] - NodeMCU ( 2 / 4 ) : LED, 푸시버튼 연결하기

이번 글에서는 NodeMCU의 핵심인 NodeMCU의 WiFi 네트워크 연결에 대해 알아보겠습니다.

 

글 순서는 다음과 같습니다.

1. NodeMCU의 소개

2. 아두이노 IDE에서 NodeMCU 환경 설정하기

3. NodeMCU - LED / 푸시버튼 연결하기

4. NodeMCU - WiFi 네트워크에 연결하기

5. NodeMCU 주변 WiFi 스캔하기

6. NodeMCU 네트워크로 LED원격 조정하기

 

4. NodeMCU - WiFi 네트워크에 연결하기

이번 예제에서는 NodeMCU를 WiFi에 연결하고 시리얼 모니터로 확인해보겠습니다.

그에 앞서 ESP8266WiFi라는 라이브러리를 받아야 합니다.

라이브러리 관리 말고도 .ZIP파일로 라이브러리가 존재하면 라이브러리를 추가할 수 있다
이곳에서 라이브러리를 다운받을 수 있다
이 라이브러리를 설치하면 된다. 저는 이미 설치가 되어있으므로 INSTALLED라 표시된다.

 

다운을 받았으면 라이브러리가 설치되어있는지 확인합시다.

라이브러리 포함하기에서 이렇게 라이브러리를 클릭하며 자동으로 헤드가 include된다.

그럼 이제 코드를 확인하겠습니다.

#include <ESP8266WiFi.h>

const char* ssid = "WiFi 이름";
const char* password = "비밀번호";

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  delay(100);

  Serial.println();
  Serial.print("CONNECTING TO ");
  Serial.println(ssid);

  WiFi.begin(ssid, password); // 와이파이 이름과 비밀번호를 통해 WIFI연결을 시작하겠다 // WL_CONNECTED라는 값을 돌려준다

  while(WiFi.status() != WL_CONNECTED){ // 네트워크의 연결 상태, 8개의 리턴값 / STATUS와 WL_CONNECTED 값이 같은지를 통해 제대로 연결이 되있는지를 확인할 수 있다
    delay(500);
    Serial.print(".");
    
  }
  Serial.println();
  Serial.println("Wifi connected!");

  
}

void loop() {
 

  }

<선언부>

#include  <ESP8266WiFi.h>

const char* ssid = "WiFi 이름"; 
const char* password = "비밀번호";

이렇게 있습니다.

 

#include<>는 사용할 라이브러리를 추가하는 것

그 아래는 ssid, password라는 전역 변수에 선언하는 것입니다.

 

<setup부분>

  Serial.begin(115200);  // 시리얼 모니터를 시작하라
  delay(100);               // 0.1초 딜레이
  Serial.println();             // println 줄 바꿔서 출력하라 --> println() : 줄 바꿔서 다음을 출력하라
  Serial.print("CONNECTING TO ");  
  Serial.println(ssid);        // CONNECTING TO 와이파이 이름을 출력

 

  WiFi.begin(ssid, password);

 // 와이파이 이름과 비밀번호를 통해 WIFI연결을 시작하겠다  
// WL_CONNECTED라는 값을 돌려준다, 8개의 리턴 값 

  while(WiFi.status() != WL_CONNECTED){  
    delay(500);  
    Serial.print(".");  
  }

// 와이파이의 상태와 WL_CONNECTED값을 비교해서 와이파이가 연결이 돼있는지를 확인한다 
//연결이 되지 않아 while문이 실행되면 0.5초마다 . 을 출력하라 
//와이파이가 연결되면 while문을 실행하지 말고 다음을 진행하라

 
  Serial.println(); 
  Serial.println("Wifi connected!");

 

자 이러면 완성되었습니다. 따로 NodeMCU와 연결해야 되는 것도 없으므로 NodeMCU랑 컴퓨터를 연결해서 바로 업로드하시면 됩니다.

와이파이 이름은 Test


5. NodeMCU - 주변 WiFi 스캔하기

말 그대로 주변에 어떠한 WiFi가 있는지 검색하고 그 WiFi에 비밀번호가 걸려있는가를 시리얼 모니터에 출력해 보겠습니다.

사용할 예제는 ' 예제 - ESP8266WiFi - WiFiScan '입니다

#include "ESP8266WiFi.h"

void setup() {
  Serial.begin(115200);

  // Set WiFi to station mode and disconnect from an AP if it was previously connected
  WiFi.mode(WIFI_STA);
  WiFi.disconnect();
  delay(100);

  Serial.println("Setup done");
}

void loop() {
  Serial.println("scan start");

  // WiFi.scanNetworks will return the number of networks found
  int n = WiFi.scanNetworks();
  Serial.println("scan done");
  if (n == 0)
    Serial.println("no networks found");
  else
  {
    Serial.print(n);
    Serial.println(" networks found");
    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);
    }
  }
  Serial.println("");

  // Wait a bit before scanning again
  delay(5000);
}

<선언부> 
ESP8266.h를 선언합니다

 

<setup 부분>

Serial.begin(115200)으로 시리얼통신을 시작합니다 
WiFi.mode(WIFI_STA) : WIFI모드를 WIFI_STA로 설정한다. 
WiFi.disconnect(): 혹시 모를 연결되어있는 와이파이의 연결을 끊는다. 
delay(100): 0.1초 딜레이

 

<loop 부분>

Serial.println("scan start");  

int n = WiFi.scanNetworks();  
   // WiFi.scanNetworks는 주위 네트워크를 검색해서 확인한 네트워크의 수를 알려준다.  
   //이것을 int형 변수 n에 적용시켜라


  Serial.println("scan done"); 

  if (n == 0) 
    Serial.println("no networks found"); 
      //만약 스캔되는 WiFi가 없으면 no networks found를 출력한다. 

  else 
  { 
    Serial.print(n); 
    Serial.println(" networks found"); 
    for (int i = 0; i < n; ++i) 
  { 
      Serial.print(i + 1);  
         //i는 0부터 시작하므로 +1 / 1번을 첫 번째 시작하기 위해서 

      Serial.print(": "); 
      Serial.print(WiFi.SSID(i));  
         // 검색한 WiFi의 SSID ( 와이파이 이름)을 출력하라 

      Serial.print(" ("); 
      Serial.print(WiFi.RSSI(i));  
         // 검색한 WiFi의 RSSI ( 와이파이 신호 세기)를 출력하라 

      Serial.print(")"); 
      Serial.println((WiFi.encryptionType(i) == ENC_TYPE_NONE)?" ":"*");  
           // WiFi의 비밀번호가 걸려있으면 *  아니면 공백을 출력하라 

      delay(10); 
    }
  } 
  Serial.println(""); 

  delay(5000);

 

이거 또한 NodeMCU에 따로 연결할 센서는 없습니다. 컴퓨터에 연결하여 업로드하면 됩니다.

 

오늘은 NodeMCU와 WIFI를 연결하고 주변의 WIFI를 확인해 보는 예제를 해보았습니다.

다음 글에서는 NodeMCU의 네트워크 연결을 통해 LED를 원격 조정해보는 예제를 해보겠습니다.

사업자 정보 표시
메이크잇나우 | 김건욱 | (우 : 13487) 경기도 성남시 분당구 대왕판교로645번길 12 (경기창조경제혁신센터) 9층 | 사업자 등록번호 : 646-35-00394 | TEL : 070-8887-0703 | Mail : kgu0724@makeitnow.kr | 통신판매신고번호 : 2018-성남분당-0517호 | 사이버몰의 이용약관 바로가기