전자 장치와 모듈 간의 무선 통신 은 사물 인터넷 세계에서 '적합'하기 위해 매우 중요합니다. HTTP 프로토콜과 HTML 언어로 인해 웹을 통해 전 세계 어디에서나 데이터를 전송할 수 있습니다. Arduino와 함께 Wi-Fi 를 사용하는 일부 프로젝트를 이미 다루었으며 시작하기를 살펴 보았습니다.
- Arduino 및 ESP8266 WiFi 모듈을 사용하여 이메일 보내기
- Arduino를 사용한 WiFi 제어 로봇
- Arduino 및 Wi-Fi를 사용하여 RGB LED 제어
이제이 튜토리얼에서는 Arduino 및 Wi-Fi 모듈을 사용하여 웹에 데이터를 전송 하는 프로그램을 빌드 합니다. 이를 위해 먼저 글로벌 또는 로컬 서버의 IP 주소가 필요합니다. 여기서는 간편하고 데모 목적으로 로컬 서버를 사용합니다.
필요한 구성 요소:
- Arduino UNO
- ESP8266 Wi-Fi 모듈
- USB 케이블
- 전선 연결
- 노트북
- 전원 공급
Wi-Fi 모듈 ESP8266:
회로 연결:
“아두 이노에서 웹으로 데이터 게시”를 위한 회로도 는 아래와 같습니다. 우리는 주로 Arduino 및 ESP8266 Wi-Fi 모듈이 필요 합니다. ESP8266의 Vcc 및 GND 핀은 3.3V에 직접 연결되고 Arduino 및 CH_PD의 GND도 3.3V에 연결됩니다. ESP8266의 Tx 및 Rx 핀은 Arduino의 핀 2 및 3에 직접 연결됩니다. 소프트웨어 직렬 라이브러리는 Arduino의 핀 2 및 3에서 직렬 통신을 허용하는 데 사용됩니다. 우리는 이미 Arduino에 대한 ESP8266 Wi-Fi 모듈의 인터페이스에 대해 자세히 다루었습니다.
여기에서 소프트웨어 직렬 라이브러리를 사용하여 핀 2와 3에서 직렬 통신을 허용하고 각각 Rx 및 Tx로 만들었습니다. 기본적으로 Arduino의 핀 0과 1은 직렬 통신에 사용되지만 SoftwareSerial 라이브러리를 사용하면 Arduino의 다른 디지털 핀에서 직렬 통신을 허용 할 수 있습니다.
참고: 직렬 모니터에서 ESP8266의 응답을 보려면 Arduino IDE의 직렬 모니터를여십시오.
작동 설명:
먼저 네트워크 연결을 위해 Wi-Fi 모듈을 Wi-Fi 라우터에 연결해야합니다. 그런 다음 로컬 서버를 구성하고 데이터를 웹으로 보내고 마지막으로 연결을 닫습니다. 이 프로세스와 명령은 아래 단계에서 설명되었습니다.
1. 먼저 AT 명령 을 전송하여 Wi-Fi 모듈을 테스트해야 합니다. 그러면 OK가 포함 된 응답이 되돌아갑니다.
2. 그런 다음 AT + CWMODE = mode_id 명령을 사용하여 모드를 선택해야합니다. Mode id = 3을 사용했습니다. 모드 ID:
1 = 스테이션 모드 (클라이언트)
2 = AP 모드 (호스트)
3 = AP + 스테이션 모드 (예, ESP8266에는 듀얼 모드가 있습니다!)
3. 이제 ESP8266이 기본적으로 이전에 사용 가능한 Wi-Fi 네트워크와 자동으로 연결되므로 AT + CWQAP 명령을 사용하여 이전에 연결된 Wi-Fi 네트워크에서 Wi-Fi 모듈을 분리해야 합니다.
4. 그 후 사용자는 AT + RST 명령으로 모듈을 리셋 할 수 있습니다. 이 단계는 선택 사항입니다.
5. 이제 주어진 명령을 사용하여 ESP8266을 Wi-Fi 라우터에 연결해야합니다.
6. 이제 주어진 명령을 사용하여 IP 주소를 얻습니다.
IP 주소를 반환합니다.
7. 이제 AT + CIPMUX = 1 (다중 연결의 경우 1, 단일 연결의 경우 0)을 사용하여 다중 모드를 활성화합니다.
8. 이제 AT + CIPSERVER = 1, port_no (포트는 80 일 수 있음) 를 사용하여 ESP8266을 서버로 구성합니다. 이제 Wi-Fi가 준비되었습니다. 여기서 '1'은 서버를 생성하고 '0'은 서버를 삭제하는 데 사용됩니다.
9. 이제 주어진 명령을 사용하여 사용자는 로컬 생성 서버로 데이터를 보낼 수 있습니다.
Id = ID 번호 전송 연결 수
길이 = 데이터의 최대 길이는 2kb입니다.
10. 서버에 ID와 Length를 보낸 후 다음과 같은 데이터를 보내야합니다. Serial.println (“[email protected]”);
11. 데이터를 보낸 후 주어진 명령으로 연결을 닫아야합니다.
이제 데이터가 로컬 서버로 전송되었습니다.
12. 이제 웹 브라우저의 주소 표시 줄에 IP 주소를 입력하고 Enter 키를 누릅니다. 이제 사용자는 웹 페이지에서 전송 된 데이터를 볼 수 있습니다.
전체 프로세스는 아래 비디오를 확인하십시오.
프로그래밍 단계:
1. PIN 2 및 3에서 직렬 통신을 허용하는 SoftwareSerial Library를 포함하고 일부 변수 및 문자열을 선언합니다.
#포함
2. 그 후 원하는 작업을 수행하기위한 몇 가지 기능을 정의해야합니다.
에서 설정 () 함수, 우리는 ESP8266위한 붙박이 UART 시리얼 통신을 초기화 client.begin (9600); 9600의 전송 속도로.
void setup () {Serial.begin (9600); client.begin (9600); wifi_init (); Serial.println ("시스템 준비.."); }
3. wifi_init () 함수에서 재설정, 모드 설정, 라우터에 연결, 연결 구성 등과 같은 명령을 전송하여 wifi 모듈을 초기화합니다. 이러한 명령은 위에서 설명 부분에서 설명했습니다.
void wifi_init () {connect_wifi ("AT", 100); connect_wifi ("AT + CWMODE = 3", 100); connect_wifi ("AT + CWQAP", 100); connect_wifi ("AT + RST", 5000);…………………
4. connect_wifi () 함수에서 ESP8266에 명령 데이터를 보내고 ESP8266 Wi-Fi 모듈에서 응답을 읽습니다.
void connect_wifi (String cmd, int t) {int temp = 0, i = 0; while (1) {Serial.println (cmd);…………………
5. sendwebdata () 함수는 로컬 서버 또는 웹 페이지로 데이터를 보내는 데 사용됩니다.
void sendwebdata (String webPage) {int ii = 0; while (1) {unsigned int l = webPage.length (); Serial.print ("AT + CIPSEND = 0,"); client.print ("AT + CIPSEND = 0,");…………………
6. void send () 함수는 데이터 문자열을 sendwebdata () 함수 로 보내는 데 사용됩니다. 웹 페이지로 추가로 전송됩니다.
void Send () {웹 페이지 = "
Circuit Digest에 오신 것을 환영합니다
"; sendwebdata (웹 페이지); 웹 페이지 = 이름; 웹 페이지 + = dat;…………………7. get_ip () 함수는 로컬에서 생성 한 서버의 IP 주소를 가져 오는 데 사용됩니다.
8. void loop () 함수에서 사용자에게 페이지 새로 고침 지시를 보내고 서버가 연결되어 있지 않은지 확인합니다. 사용자가 웹 페이지를 새로 고침하거나 요청하면 데이터가 자동으로 동일한 IP 주소로 전송됩니다.
무효 루프 () {k = 0; Serial.println ("페이지를 새로 고침하세요"); while (k <1000)………………
실내 온도 및 습도, 시계 시간, GPS 좌표, 심박수 등과 같은이 프로세스를 사용하여 Arduino에서 웹 페이지로 모든 데이터를 표시 할 수 있습니다.