반응형

https://youtube.com/live/9l6Hmw1T1Zg

[아두이노#557] ESP32와 HTTP프로토콜로 기상청, 공공데이터포털, C#윈폼의 OPENAPI서비스 활용해보기!(녹칸다ESP32#7)

녹칸다의 ESP32시리즈이다!
제목 그대로 과거의 녹칸다는 IoT보드로 ESP8266보드만 활용했다!
ESP32에 대한 수요도 늘어나는것 같고 제일 중요한 것은 지금의 녹칸다가 ESP32보드가 필요하게 되었다!
ESP8266으로 만들어진 예제들을 ESP32버전으로 바꾸는게 주요 주제라고 할 수 있다!
그와 동시에 약간의 설명도 첨가해서 이것저것 예제를 만들어보도록 하자!
(ESP8266과 ESP32의 차이점을 강조해서 진행해보도록함!)
(근데 거의 80~90%는 거기서 거기인듯!)


이번편은 ESP32보드로 HTTP프로토콜을 이용해서 웹서버에게 request를 해보도록 한다!
esp32보드가 웹클라이언트가 되어보는 것이다!(초반에 웹서버로 구동하는 것은 완료함)

대표적으로 구현할 수 있는 예제가 대한민국 기상청에서 날씨정보를 받아오는 것이다!
과거 녹칸다가 ESP8266버전으로 만들어둔 예제를 ESP32에서 구동가능하도록 해보자!
(기본적인 원리는 설명하고)

그리고 공공데이터 포털에서 제공하는 OPENAPI서비스 중 마음에드는것을 하나 골라서 적용해보도록하자!

ESP32시리즈 전반부에 ILI9341 LCD를 활용하려다가 뭔가 문제가 있어서 잘안되었는데 해결방안을 가지고 왔다!
웹서버에서 제공하는 정보를 ILI9341에 출력해보도록 하자!
그리고 ESP32에 SD카드 리더모듈을 연결해서 SD카드에 담겨있는 한글폰트를 읽어와서 LCD에 한글로 출력해보는 예제로 구동해보도록 하자!
(ESP8266예제가 ESP32에서 바로 구동되지 않는것을 확인했다)

마지막으로 ESP8266과 C#윈폼사이의 HTTP통신 예제를 ESP32버전으로 구동시켜보도록 하자!
이것저것 할수있는거 다해보기~~~!

 

(참고자료1 ESP32핀맵)
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/hw-reference/esp32/user-guide-devkitm-1.html
(참고자료2 INPUT_PULLUP가능핀)
불가능 34,35,2,36,39
가능 32, 33,25,26,14,27,12,13,22,23,19,21,5,18,16,17,4,15
(참고자료3 ESP32의 I2C핀)
SDA : 21
SCL : 22
(참고자료4 ESP32의 SPI핀)
SCK : 18
MOSI : 23
MISO : 19
CS : 5
(참고자료5 ESP32의 Serial핀)
RX : 16
TX : 17

(참고자료6 기상청 날씨정보 RSS 가져오기#175)
https://bota.tistory.com/1414
(참고자료7 공공데이터 포털/한국환경공단/전국미세먼지농도#198)
https://bota.tistory.com/1439
(참고자료8 ILI9341에 한글 출력하기#170)
https://bota.tistory.com/1408
(참고자료9 C#윈폼 HttpListener#143)
https://bota.tistory.com/1609


(깨알지식)
1.기상청 서버에 url를 전송할때 host주소와 request는 아래와같다!
호스트주소 : http://www.kma.go.kr
request : /wid/queryDFSRSS.jsp?zone=4215061500
2.ESP32가 기상청 서버로 request를 했다고해서 즉시 response가 오는 것은 아니다! 서버에 따라서 약간의 지연시간이 발생할 수 있다!
3.ILI9341에 RESET핀은 ESP32보드의 15번핀에 반드시 연결되어야한다!(일단 왜 그런지는 모르는 상태)
4.ILI9341에 한글을 출력하기 위한 한글폰트를 SD카드리더에 아래 링크에 있는 파일을 압축을 풀어서 업로드함
https://bota.tistory.com/1408
5.ESP8266에서 LCD에 한글을 출력하던 예제와 ESP32는 약간 다를수있다 그 이유는 ESP32의 SD카드 내장 라이브러리가 ESP8266과 약간 다르기때문에 그러하다!
6.공공데이터포털을 이용하기 위해서는 회원가입을 해야하고 내가 원하는 API서비스를 사용하기 위한 허가를 신청하고 허락받아야한다! 그러나 공짜이다!
7.무제한적으로 서버에 요청을 보낼수는 없고 일정횟수 제한량이 정해져있다!(API서비스 마다 다르다)
8.OPENAPI서비스를 받기위한 KEY값을 발급받아야한다!
9.API키값은 영어대문자와 소문자, 특수문자와 숫자가 복잡하게 섞여서 아주 길게 만들어지는(랜덤하게) 비밀번호 같은것이다! 그리고 이 key는 다른사람에게 공유되면 안된다!
10.녹칸다가 C#윈폼으로 구현한 HttpListener예제를 구동하려면 일단 방화벽에 인바운드규칙에 60000번포트를 허용하는것으로 설정해야함!
11.(10)번 항목을 잘 모르겠으면 명령프롬프트(CMD)를 관리자권한으로 연다음에 아래 명령어를 입력한다!
netsh advfirewall firewall add rule name= "Open Port 60000" dir=in action=allow protocol=TCP localport=60000
12.최종적으로 녹칸다가 만들어둔 exe파일을 관리자권한으로 실행하면 구동가능함!

(관련라이브러리)
1.ESP32에 ILI9341을 연결하고 adafruit의 gfx와 ili9341라이브러리를 설치해야한다!

(예제)
1.녹칸다의 아두이노 175편에 나오는 기상청 RSS예제중 시리얼모니터에 출력하는 예제를 ESP32버전으로 구현하시오!

557-1(ESP32로기상청에날씨요청하기).txt
0.00MB

2.ESP32에 ILI9341을 연결하고 그래픽테스트 예제를 구동시키시오!

557-2(ESP32에ILI9341테스트하기).txt
0.01MB

3.ESP32에 ILI9341과 SD카드리더를 연결하고 한글출력하는 예시를 구동하시오!

557-3(ESP32에ILI9341을연결하고한글출력하기).txt
0.01MB

4.기상청에서 가져온 날씨정보를 ILI9341에 한글로 결과를 출력하시오!(175-5예제를ESP32로 교체)

557-4(기상청날씨정보를한글로LCD출력하기).txt
0.01MB

5.공공데이터포털에서 한국환경공단 공기질조회 OPENAPI서비스를 ESP32로 받아와서 한글로 LCD에 출력는 예제를 구현하시오!

557-5(공공데이터포털).txt
0.01MB

6.녹칸다의 C#윈폼에서 만든 HTTPLISTENER예제에서 가상의 온습도값을 ESP32가 업로드하는 예시를 구현하시오!

example143-2.zip
0.04MB
557-6(http리스너1번).txt
0.00MB

7.C#윈폼으로 구현한 웹서버에서 ESP32쪽으로 뭔가 데이터를 전송하는 예시를 구현하시오!

example143-3.zip
0.04MB
557-7(http리스터2).txt
0.00MB

반응형
Posted by 덕력킹
,