안녕하세요
Wemos D1 R1으로 공공데이터를 가져와 봅시다.
공공데이터 내용과 설정은 아래 링크를 참고해주세요
https://ruminz.tistory.com/147
Wemos D1 R1은 ESP8266이 내장돼 있어
인터넷 연결이 가능합니다.
위 사진처럼 연결을 해주세요
아두이노 IDE를 실행합니다.
툴 -> 보드 -> esp8266 -> LOLIN D1 R1으로 설정하신 후 '
업로드 속도를 115200으로 맞춰주세요
여기서 com은 Wemos D1 R1이 연결된 포트로 설정해주세요
그다음 아래와 같이 코드를 입력해주세요
#include <ESP8266WiFi.h> // ESP 8266 와이파이 라이브러리
#include <ESP8266HTTPClient.h> // HTTP 클라이언트
#ifndef STASSID
#define STASSID "본인의 공유기 아이디"
#define STAPSK "본인의 공유기 비밀번호"
#endif
const char *ssid =STASSID;
const char *password = STAPSK;
String url ="http://apis.data.go.kr/3740000/suwonEvChrstn/getdatalist?serviceKey= 본인의 인증키&type=json&sortKey=chrstnType&filterKey=chrstnType&filterValues=DC%EC%BD%A4%EB%B3%B4&numOfRows=10&pageNo=0";
String payload = "";
void setup()
{
// 시리얼 세팅
Serial.begin(115200);
Serial.println();
WiFi.mode(WIFI_STA);
// 와이파이 접속
WiFi.begin(ssid,password); // 공유기 이름과 비밀번호
Serial.print("Connecting");
while (WiFi.status() != WL_CONNECTED) // 와이파이 접속하는 동안 "." 출력
{
delay(500);
Serial.print(".");
}
Serial.println();
if (WiFi.status() == WL_CONNECTED) // 와이파이가 접속되어 있는 경우
{
WiFiClient client; // 와이파이 클라이언트 객체
HTTPClient http; // HTTP 클라이언트 객체
if (http.begin(client, url)) { // HTTP
// 서버에 연결하고 HTTP 헤더 전송
int httpCode = http.GET();
// httpCode 가 음수라면 에러
if (httpCode > 0) { // 에러가 없는 경우
if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) {
payload = http.getString(); // 받은 Json 데이터를 String에 저장
Serial.println(payload);
} else {
Serial.printf("[HTTP] GET... 실패, 에러코드: %s\n", http.errorToString(httpCode).c_str());
}
http.end();
} else {
Serial.printf("[HTTP] 접속 불가\n");
}
Serial.println(payload);
}
}
}
void loop() {
}
여기서 주의할점은 본인의 공유기 아이디 그리고 본인의 공유기 비밀번호
그다음 본인의 공공데이터 인증키를 입력해주세요
코드를 간략히 살펴보자면
먼저 ESP8266를 와이파이랑 HTTP에 연결하기 위해
ESP8266WiFi.h랑 ESP8266HTTPClient.h를 선언해주었습니다.
그다음
ssid, password의 자신의 공유기 아이디랑 비밀번호를 입력한 다음
url에 공공데이터 url을 입력해줍니다.
또 그 공공데이터를 payload에 저장해 줍시다.
그다음 시리얼 속도를 115200으로 설정해주시고
WiFi_STA모드로 설정한다음
접속을 해줍시다.
와이파이 클라이언트 객체 Client를 만들어주고
httpClient http 객체를 만들어 줍시다.
그다음 Client객체를 url에 연결해준다음
http헤더를 전송합니다.
또한 그걸 아까전 선언해준 payload에 저장한 다음
출력합니다.
업로드를 해줍시다.
그리고 시리얼 모니터를 켜줍시다.
만약 아무것도 안뜬다음
Wemos D1 R1의 리셋 버튼을 눌러주세요
보드에 잘보시면 둥근 검은색 버튼이 있을 겁니다.
그러면 다음과 같이 공공데이터가 JSON 형태로 오는 걸 확인할 수 있습니다.
'Coding > Arduino' 카테고리의 다른 글
아두이노로 ESP32 CAM 다루기 (0) | 2022.06.28 |
---|---|
아두이노 Esp8266 시리즈 esp01로 와이파이 연결하기 (0) | 2022.06.27 |
아두이노 블루투스HC-06 휴대폰으로 제어하기 (0) | 2022.06.25 |
아두이노 가변저항에 대해 알아보자 (0) | 2022.06.24 |
아두이노 우노 메모리 구조 (0) | 2022.06.20 |