본문 바로가기
Coding/Arduino

아두이노 Wemos D1 R1 공공데이터 가져오기

by 루민즈 2022. 6. 27.
반응형

안녕하세요 

Wemos D1 R1으로 공공데이터를 가져와 봅시다. 

공공데이터 내용과 설정은 아래 링크를 참고해주세요 

https://ruminz.tistory.com/147

 

안드로이드 Volley 공공데이터 가져오기 (1) - 공공데이터 설정

안녕하세요 안드로이드 앱 개발할 때 공공데이터를 써야 될 때가 있습니다. 이때 Volley라는 라이브러리를 사용하면 편리하게 공공데이터를 가져올 수가 있습니다. Volley 라이브러리는 웹 요청과

ruminz.tistory.com

 

Wemos D1 R1은 ESP8266이 내장돼 있어 

인터넷 연결이 가능합니다. 

 

Wemos D1 R1

위 사진처럼 연결을 해주세요 

아두이노 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 형태로 오는 걸 확인할 수 있습니다. 

 

 


Post

다음글 무직자 대출 알아보기 >