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를 모두 추가해놓으면 알아서 신호 강도가 가장 좋은 네트워크에 알아서 접속하게 됩니다.
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이 할당되어 있습니다.
스마트폰으로 WiFi검색을 해보면 ESP8266 모듈이 검색이 되는데요. 앞에서 설정한 비밀번호로 접근하면 연결이 잘 되는 것을 볼 수 있습니다. 네트워크 정보에서 할당받은 IP주소를 확인 가능합니다.
끝!
'Hardware > MCU(Arduino,ESP8266)' 카테고리의 다른 글
ESP8266, NTP로 인터넷 시간 동기화 (feat. UDP, NTP 패킷 구조) (0) | 2020.10.20 |
---|---|
ESP8266, mDNS 사용법 (윈도, 안드로이드는 아직 미지원) (0) | 2020.10.11 |
ESP8266-12 + DHT22, 웹에서 온도 습도 확인하기 2.0 (6) | 2020.10.09 |
ESP8266-12 + DHT22, 웹에서 온도 습도 확인하기 (0) | 2020.10.08 |
댓글