[아두이노#554] ESP32에 GET/POST웹서버로 LED제어 및 온습도센서값 측정 해보기!(녹칸다ESP32#4)
프로그래밍/ESP32와 아두이노 2023. 4. 13. 22:55
https://youtube.com/live/1IiIDkkQUFg
[아두이노#554] ESP32에 GET/POST웹서버로 LED제어 및 온습도센서값 측정 해보기!(녹칸다ESP32#4)
녹칸다의 ESP32시리즈이다!
제목 그대로 과거의 녹칸다는 IoT보드로 ESP8266보드만 활용했다!
ESP32에 대한 수요도 늘어나는것 같고 제일 중요한 것은 지금의 녹칸다가 ESP32보드가 필요하게 되었다!
ESP8266으로 만들어진 예제들을 ESP32버전으로 바꾸는게 주요 주제라고 할 수 있다!
그와 동시에 약간의 설명도 첨가해서 이것저것 예제를 만들어보도록 하자!
(ESP8266과 ESP32의 차이점을 강조해서 진행해보도록함!)
(근데 거의 80~90%는 거기서 거기인듯!)
이번편은 기존 녹칸다가 ESP8266으로 만들어두었던 웹서버 예제를 ESP32버전으로 바꾸는 작업을 진행해보도록 한다!(사실 헤더파일만 교체하면 바로 작동된다)
일단 ESP32를 인터넷에 연결시켜야하기 때문에 어떻게 하면 연결되는지 예시를 만들어보도록 하자!
ESP32에서 제공하는 아주 기본예시는 GET방식과 POST방식의 서버를 각각 제공한다! 어떤 원리로 활용할 수 있는지 함께 알아보도록 하자!
(참고자료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 ESP8266버전의 기본 웹서버#132)
https://bota.tistory.com/1365
(참고자료7 SP8266에서 LED제어하기#133)
https://bota.tistory.com/1366
(참고자료8 ESP8266에서 온습도값출력하기#140)
https://bota.tistory.com/1374
(참고자료9 고정IP사용하기) https://bota.tistory.com/1834
IPAddress ip (192, 168, 0, 15); //내가 원하는 IP
IPAddress gateway (192, 168, 0, 1);
IPAddress subnet (255, 255, 255, 0);
WiFi.config (ip, gateway, subnet); //내가 원하는 설정 반영
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
(깨알지식)
1.ESP32는 3가지 모드가 있다! STA모드, AP모드, STA+AP모드가 있고 STA모드일때 WiFi공유기에 접속할 수 있는 장치가된다. AP모드는 ESP32가 마치 인터넷공유기로 동작할때를 말한다! 스마트폰과 PC가 ESP32에 WiFi로 접속할 수 있다!(1:1로 통신할 수 있다)! 특별하지 않으면 STA모드를 초반에는 사용한다!
2.ESP32가 인터넷 공유기와 접속할때 공유기가 동적으로 발급하는 IP주소를 받는방법과 내가 ESP32에 설정했으면 하는 고정적인 IP주소를 발급받는 방법 2가지가 있다!
3.특별하지 않으면 웹서버의 기본 포트는 80번이다!
4.웹브라우저는 html문장을 해석해서 보여주는 뷰어이다! 그러므로 서버가 클라이언트에게 html스크립트를 전송하면 웹브라우저에서 보여진다!
5.기본적으로 esp32가 클라이언트쪽으로 보내는 데이터는 한글이 깨져서 출력된다! 그 이유는 ESP32는 한글을 utf8로 인코딩하고 웹브라우저의 기본옵션은 그것이 아니기 때문에 그렇다! eps32가 html문장을 클라이언트에게 전송할때 나의 한글 인코딩은 ~~~입니다 라고 알려주면 웹브라우저가 그대로 작동한다!
6.아두이노에 String변수에 값을 대입할때 여러줄로 값을 대입할 수 있지만 한줄 끝에 \기호가 붙어야하고 내부에 쌍따움표(")가 있으면 안된다!
7.웹서버와 웹클라이언트간의 통신 프로토콜이 HTTP이고 HTTP프로토콜은 커넥션을 유지하는 방식이 아니라 서로 주고받을것 완료되면 연결이 자동해제되는 방식이다! 그러므로 웹서버는 여러개의 클라이언트이 접속을 별다른 조치없이 가능하다!
(예제)
1.ESP32를 인터넷 공유기에 연결하되 동적으로 IP주소를 발급받는 예시를 만드시오!
2.(예제1번에서) 내가 원하는 IP주소를 신청해서 발급받는 예시를 보이시오!
3.ESP32를 웹서버로 구동하고 웹브라우저를 통해서 LED 1개를 15번핀에 연결해서 GET방식으로 제어하는 예시를 보이시오!
4.POST방식으로 작동하는 웹서버를 구현하고 웹브라우저에서 0또는 1을 textbox에 입력하면 led가 제어되도록 하시오!
5.(예제4를 참고해서) LED 3개를 15번, 2번, 4번에 연결해서 POST방식으로 제어하는 예제를 구현하시오!
6.(예제5에서) textbox를 radio버튼으로 교체해서 예제를 구현하시오!
7.(예제3번을 기반으로)ESP32에 온습도센서(DHT-11)을 15번핀에 연결하고 측정값을 웹브라우저에 출력하시오!
8.(녹칸다의아두이노140편예제를) ESP32버전으로 만들어서 온습도값을 chart.js를 이용해서 멋있게 출력하기!