코인 Ticker 만들기 #13.Station 모드
- 윈드마켓
- 2019년 1월 23일
- 2분 분량
이번 강좌에서는 Station 모드에 대해서 배워보도록 하겠습니다.
Station 모드는 Wemos D1 mini 를 하나의 단말기기(PC나 스마트폰 등)로 사용하여
공유기의 Wifi SSID 에 접속하여 인터넷에 접근하는 방식이라고 이해하시면 되겠습니다.
샘플 소스를 통해 알아보도록 하겠습니다.
1. 아두이노 IDE 에서 아래 메뉴를 순서대로 실행합니다.
- 메뉴 / 예제 / ESP8266Wifi / HTTPRequest
2. 이 예제는 공유기의 SSID 에 접속한 후
GitHub API 사이트에 접속하여 GET 방식으로 결과를 받아 처리하는 예제입니다.
3. 소스를 컴파일 하고 Wemos D1 mini 에 업로드 합니다.
4. 시리얼 모니터를 통해 아래 결과가 확인되면 정상 입니다.

5. 소스에 대해서 주석으로 설명을 달아놓았습니다.
// HTTP Request 릉 위한 헤더파일을 참조합니다.
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
// 공유기의 SSID 접속정보를 설정합니다.
// 각자 공유기의 SSID 와 비밀번호를 확인하여 설정합니다.
const char* ssid = "........";
const char* password = "........";
// host 정보를 세팅합니다.
// GitHub 의 API 주소와 포트 입니다.
const char* host = "api.github.com";
const int httpsPort = 443;
// 복호화 키로 소스 그대로 사용합니다.
const char* fingerprint = "35 85 74 EF 67 35 A7 CE 40 69 50 F3 C0 F6 80 CF 80 3B 2E 19";
void setup() {
Serial.begin(115200);
Serial.println();
Serial.print("connecting to ");
Serial.println(ssid);
WiFi.mode(WIFI_STA); // Station 모드로 설정합니다.
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) { // Wifi가 접속될때까지 대기합니다.
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
WiFiClientSecure client; // WiFiClientSecure class 를 통해 연결객체를 생성합니다.
Serial.print("connecting to ");
Serial.println(host);
// GitHub API 서버에 접속을 시도합니다.
if (!client.connect(host, httpsPort)) {
Serial.println("connection failed");
return;
}
// 암호화 키가 일치하는지 확인합니다.
if (client.verify(fingerprint, host)) {
Serial.println("certificate matches");
} else {
Serial.println("certificate doesn't match");
}
// Request 하위 주소를 설정합니다.
String url = "/repos/esp8266/Arduino/commits/master/status";
Serial.print("requesting URL: ");
Serial.println(url);
// GET 방식으로 Request 주소에 접속합니다.
client.print(String("GET ") + url + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"User-Agent: BuildFailureDetectorESP8266\r\n" +
"Connection: close\r\n\r\n");
Serial.println("request sent");
// Request 주소에 접속이 되면
// 헤더 정보를 읽어옵니다.
while (client.connected()) {
String line = client.readStringUntil('\n');
if (line == "\r") {
Serial.println("headers received");
break;
}
}
// 개행문자 전까지 데이터 정보를 읽어옵니다.
String line = client.readStringUntil('\n');
// 데이터 정보가 success 인경우와 그렇지 않은경우에 대해서 결과를 시리얼로 출력합니다
if (line.startsWith("{\"state\":\"success\"")) {
Serial.println("esp8266/Arduino CI successfull!");
} else {
Serial.println("esp8266/Arduino CI has failed");
}
Serial.println("reply was:");
Serial.println("==========");
Serial.println(line);
Serial.println("==========");
Serial.println("closing connection");
}
void loop() {
}
이상으로 Station 모드에 대해서 배워보았습니다.
감사합니다.
Comentários