아두이노 나노 HTTP 요청 웹 클라이언트
아두이노 나노는 웹 서버에 HTTP 요청을 보내는 웹 클라이언트로 작동할 수 있습니다. 이 웹 서버는 웹사이트, 웹 API, REST API 또는 웹 서비스일 수 있습니다...
이 튜토리얼은 여러분이 아두이노 나노를 사용하여 HTTP 요청 - 웹 클라이언트를 제어하는 방법을 지시합니다. 자세히 말하자면, 우리는 다음을 학습할 것입니다:
- 웹 클라이언트와 웹 서버의 기본 원리
- HTTP 요청 (GET 및 POST) 만드는 방법
- 웹 서버(웹사이트, WEB API 또는 REST API)에 데이터 전송하는 방법
- 아두이노 나노 코드:
- 아두이노 나노/메가 + 이더넷 쉴드 2를 사용하여 HTTP GET/POST 요청 만들기
- 아두이노 나노/메가 + 이더넷 쉴드 2를 사용하여 HTTP GET 요청을 만들고 데이터 전송하기
- 아두이노 나노/메가 + 이더넷 쉴드 2를 사용하여 HTTP POST 요청을 만들고 데이터 전송하기
- HTTP 요청 헤더
- (선택 사항) HTTP 요청 본문
- 웹 주소(URL)
- 요청 유형(POST 또는 GET)
- 웹 서버가 사용 중인 HTTP 포트(일반적으로 웹 서버는 HTTP에 80 포트를 사용)
- (선택) 웹 서버에 보낼 데이터(쿼리 문자열). 이 튜토리얼에서는 웹 서버에 온도와 습도를 ?temperature={t-value}&humidity={h-value} 형식으로 보낸다고 가정합니다.
- HTTP GET 요청
- 데이터는 쿼리 문자열 형식으로만 전송할 수 있습니다.
- 데이터는 경로 이름에 첨부됩니다.
- HTTP POST 요청
- 데이터는 쿼리 문자열 형식뿐만 아니라 Json, XML, 이미지 등 기타 다른 형식으로도 전송할 수 있습니다.
- 데이터는 HTTP 요청 본문에 있습니다.
- HTTP 요청 생성
- 요청 전송
- 쿼리 스트링을 구성하십시오.
- HTTP 요청을 생성하십시오.
- 요청을 전송하십시오.
- Ethernet Shield 2의 경우, 아두이노 나노 코드를 수정해야 합니다. 자세한 내용은 아두이노 나노 이더넷 실드 2에서 정적 IP 주소 사용하기를 참조하세요.
그리고 핀 구성. 다른 WiFi 또는 Ethernet Shields/Boards의 프로그래밍 코드는 유사합니다. 유일한 차이점은 라이브러리와 핀 설정에 있습니다.
준비물
1 | × | Arduino Nano | Amazon | |
1 | × | USB A to Mini-B USB cable | 쿠팡 | Amazon | |
1 | × | Arduino Nano Ethernet Shield 2 | Amazon | |
1 | × | Ethernet Cable | 쿠팡 | Amazon | |
1 | × | (추천) 9V Power Adapter for Arduino Nano | Amazon | |
1 | × | (추천) Screw Terminal Expansion Board for Arduino Nano | 쿠팡 | Amazon | |
1 | × | (추천) Breakout Expansion Board for Arduino Nano | Amazon | |
1 | × | (추천) Power Splitter For Arduino Nano | Amazon |
웹 클라이언트와 웹 서버의 기본 지식
당신이 PC나 스마트폰에 웹 주소를 입력하면, 당신의 장치에 있는 웹 브라우저가 나머지를 처리합니다. 웹 브라우저는 웹 서버에 HTTP 요청을 하고, 서버로부터 HTTP 응답을 받은 다음, 화면에 웹 페이지를 표시합니다. 여러분은 무슨 일이 뒤에서 일어나고 있는지 모를 수도 있습니다.
이 튜토리얼에서는 Arduino Nano가 웹 클라이언트처럼 작동하도록 설정하고 PC나 스마트폰이 수행하는 것과 유사한 작업을 수행하도록 할 것입니다.
웹 주소 (URL)
URL은 두 가지 구성 요소로 이루어져 있습니다: 호스트명과 경로명. 호스트명은 웹 서버의 IP 주소로 대체될 수 있습니다. 예를 들어: example.com/test
HTTP GET 요청에서 쿼리 문자열을 URL에 포함시킬 수 있습니다. 예를 들어: example.com/test?temperature=20&humidity=70.
쿼리 문자열
쿼리 문자열은 웹 클라이언트에서 웹 서버로 데이터를 전송하기 위해 HTTP 요청에 포함된 일련의 이름-값 쌍으로 구성됩니다.
이름과 값은 "=" 기호로 나누어집니다. 이름-값 쌍은 "&" 기호로 분리됩니다.
온도 = 26. 습도 = 70. 상태 = 2.
HTTP 요청
The HTTP request consists of:
HTTP 요청은 다음으로 구성됩니다:
HTTP 요청 헤더와 HTTP 요청 본문은 캐리지 리턴 문자(ASCII 13, 또는 '\r')와 개행 문자(ASCII 10, 또는 '\n')의 두 세트에 의해 구분됩니다.
사용할 수 있는 다양한 요청 방법이 있습니다. 가장 인기 있는 두 가지는 GET과 POST입니다.
일반적으로 우리는 웹 서버에서 데이터를 검색하고자 할 때 GET 방식을 사용하고, 원할 때 웹 서버에 데이터를 보내고자 할 때 POST 방식을 사용합니다. 그럼에도 불구하고, GET은 웹 서버로부터 데이터를 얻거나 웹 서버에 데이터를 전송하는 데 모두 사용될 수 있습니다.
선행 조건
우리는 파악해야 합니다:
웹 주소(URL)은 호스트이름과 경로이름 으로 나뉩니다.
HTTP 요청하는 방법
그리고 헤더들.
요청 메소드, HTTP 포트, 호스트 이름, 경로 이름, 쿼리 스트링 및 코드와 관련된 헤더를 선언하세요.
각 방패의 전체 코드는 마지막 부분에서 제시될 것입니다.
웹 클라이언트 객체를 생성하세요.
Arduino Nano Ethernet Shield 2 | EthernetClient client; |
Arduino Nano WiFi | WiFiClient client; |
웹 서버에 연결을 설정하십시오.
서버에 연결되면 HTTP 요청을 보내세요.
웹 서버에서 응답 데이터를 가져옵니다.
웹 서버로 데이터를 보내는 방법
HTTP 요청에 데이터를 포함할 수 있습니다. 데이터의 형식은 HTTP 요청 메서드에 따라 달라집니다:
코드를 변경하여 HTTP 요청을 보내야 합니다.
HTTP 요청에서 데이터를 보내는 코드를 수정하세요.
HTTP GET: 경로 이름에 쿼리 문자열을 추가하세요.
HTTP POST: HTTP 본문에 쿼리 문자열을 전송합니다.
웹 서버에서 응답 데이터를 검색하십시오.
HTTP 요청을 만들기 위한 완전한 아두이노 나노 코드
이것은 HTTP GET 및 POST 요청을 만들기 위한 전체 아두이노 나노 코드입니다.
아두이노 나노 이더넷 쉴드 2를 이용한 HTTP GET/POST 요청
데이터를 가진 HTTP GET 요청을 만들기 위한 완전한 아두이노 나노 코드
아두이노 나노 이더넷 쉴드 2를 사용하여 데이터를 포함한 HTTP GET 요청하기
아두이노 나노로 HTTP POST 요청과 데이터 생성을 위한 완성된 코드
아두이노 나노 이더넷 쉴드 2를 사용하여 데이터가 포함된 HTTP POST 요청을 아두이노 나노로 보내기
※ NOTE THAT:
이 튜토리얼에서는 동적 IP 주소(DHCP를 통해)를 사용했습니다.
정적 IP 주소를 사용하고 싶다면:
WARNING
이 튜토리얼은 개발 중입니다.