본문 바로가기
Hardware/MCU(Arduino,ESP8266)

ESP8266 네트워크 접속 방법 - wifi multi, softAP

by lovey25 2020. 10. 10.
반응형

ESP8266WiFiMulti.h

ESP8266 기반의 모듈, 보드를 사용할 때 와이파이 네트워크에 접속하기 위해서 보통 아래와 같은 방법을 사용합니다.

#include <ESP8266WiFi.h>        // WIFI 라이브러리

const char* ssid     = "SSID";         // 접속할 WIFI SSID
const char* password = "PASSWORD";     // 접속할 WIFI 비밀번호

void setup() {
  Serial.begin(115200);         // Start the Serial communication to send messages to the computer
  delay(10);
  Serial.println('\n');
  
  WiFi.begin(ssid, password);             // 와이파이에 접속 시도
  Serial.print("Connecting...");
  
  while (WiFi.status() != WL_CONNECTED) {	// 연결될 때까지 대기
    delay(500);
    Serial.print('.');
  }

  Serial.println('\n');
  Serial.println("Connected!");  
  Serial.print("IP address:\t");
  Serial.println(WiFi.localIP()); 		// 할당받은 IP주소를 표시
}

void loop() { }

ESP8266WiFi.h에 기본적으로 포함된 WiFi.begin() 함수를 이용해서 접속하는데요. 그런데 이런 게 하면 딱 하나의 AP에만 접속할 수 있기 때문에 접속 환경이 달라져야 한다면 펌웨어를 다시 올려줘야 하는 불편함이 있습니다.

이럴 때 여러 개의 후보 AP를 모두 등록해두고 EPS8266 모듈이 기동 할 때 AP를 검색해서 가장 신호가 센 네트워크에 알아서 접속할 수 있도록 할 수 있습니다.

"ESP8266WiFiMulti.h" 라이브러리를 같이 사용하는 예제입니다.

#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>   // 신호가 강한 AP에 골라서 접속하기 위한 라이브러리 

ESP8266WiFiMulti wifiMulti;     // ESP8266WiFiMulti 인스턴스 생성

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

  wifiMulti.addAP("ssid of AP1", "password of AP1");    // 접속하고자 하는 AP 정보
  wifiMulti.addAP("ssid of AP2", "password of AP2");
  
  Serial.println('\n');
  Serial.println("Connecting...");
  while (wifiMulti.run() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println('\n');
  Serial.println("Connected!"); 
  Serial.print("IP address:\t");      
  Serial.println(WiFi.localIP());     // 할당받은 IP주소 표시
}

void loop() { }

10, 11행에서 접속할 AP의 SSID와 비밀번호가 적혀있는데요. 여기서 후보 AP를 모두 추가해놓으면 알아서 신호 강도가 가장 좋은 네트워크에 알아서 접속하게 됩니다.

WiFiMulti를 이용해서 접속중

AP모드 사용하기

이번에는 ESP8266 모듈을 AP로 사용하는 방법입니다.

#include <ESP8266WiFi.h>      

const char *ssid = "ESP8266_AP";        // 생성할 WIFI AP의 SSID
const char *password = "passpass";   // 네트워크 비밀번호

void setup() {
  Serial.begin(115200);
  delay(10);
  Serial.println('\n');

  WiFi.softAP(ssid, password);             // AP 기동
  Serial.print("Access Point \"");
  Serial.print(ssid);
  Serial.println("\" started");

  Serial.print("IP address:\t");
  Serial.println(WiFi.softAPIP());         // ESP8266의 IP주소 표시
}

void loop() { }

3, 4행에서 정의한 SSID와 비밀번호는 다른 디바이스에서 접속할 때 필요한 정보로 사용됩니다.

 WiFi.softAP() 함수로 AP모드를 활성화 활 수 있습니다. 그리고 WiFi.softAPIP() 함수는 ESP모듈의 IP주소를 반환하는 함수인데요. 실행을 해보면 ESP8266의 기본 IP인 192.168.4.1이 할당되어 있습니다.

softAP 모드 실행중

스마트폰으로 WiFi검색을 해보면 ESP8266 모듈이 검색이 되는데요. 앞에서 설정한 비밀번호로 접근하면 연결이 잘 되는 것을 볼 수 있습니다. 네트워크 정보에서 할당받은 IP주소를 확인 가능합니다.

 

끝!

반응형

댓글