[ arduino ] wifi모듈(ESP8266) 연결 및 펌웨어 업데이트(9600port 사용)
페이지 정보
작성자 웹지기 댓글 1건 조회 8,336회 작성일 21-01-25 09:58본문
wifi모듈(ESP8266) 연결 및 펌웨어 업데이트( - 9600port 사용을 위해서 업데이트가 필요함)
스케치에서 업로드를 하는데 0 / 1( Rx / Tx )을 빼고 업로드 빈파일을 업로드해서 활성화
활성화시 툴 > 시리얼포트를 선택해준다.
활성화 후 0 / 1 을 다시 꼽아준다.
파일/폴더의 경로는 한글이 있으면 안된다.
ESP8266_flasher_V00170901_00_Cloud Update Ready > esp8266_flasher.exe 실행
bin 클릭해서 : ai-thinker-0.9.5.2-9600.bin > download 클릭
정상적으로 읽어지면 되고 안되면 3.3v를 뺏다가 꼽아준다.
download가 99% 까지 되면 , Leaving.... 이 뜸
스케치에서 시리얼 모니터를 클릭 >> 하단 Both NL & CR 로 수정후
창에 AT를 클릭해서 OK가 뜨는 지 확인
다시 창에
AT+CWMODE?
:: +CWMODE:2 라고 ok뜨면 정상
AT+CWMODE=1
OK
AT+CWJAP :: 와이파이 신호가 잡힌다.
다음
AT+CWJAP="SSID", "PASSWORD"
SSID와 PASSWORD를 채워서 wifi 접속을 할 수 있게 해준다.
코드를 스케치에 넣어준다.
ssid password server_ip port등변경하고
전송하고 싶은 데이터 부분도 변경
아두이노의 시리얼모니터 >
#include <SoftwareSerial.h>
// 모바일 HostSpot의 ID와 패스워드 (변경할 부분)
const String SSID = "hodoo";
const String PASSWORD = "12345678";
// 서버주소와 포트 (변경할 부분)
const String SERVER_IP = "wik.iptime.org";
const String SERVER_PORT = "8090";
// AT 명령 저장
String cmd = "";
// 전송 데이터 저장
String sendData = "";
// WiFi 접속 실패 여부
boolean FAIL_8266 = false;
// TX, RX
SoftwareSerial esp(3, 2);
void setup() {
Serial.println("Start module connection");
do {
Serial.begin(9600);
esp.begin(9600);
// ESP8266 모듈 재시작
esp.println("AT+RST");
delay(1000);
// 만약 재시작되었다면
if (esp.find("ready")) {
Serial.println("Module ready");
// ESP8266 모듈의 모드를 듀얼모드로 설정 (클라이언트)
esp.println("AT+CWMODE=1");
delay(2000);
// AP에 접속되면
if (cwJoinAP()) {
Serial.println("AP successful");
FAIL_8266 = false;
delay(5000);
Serial.println("Start buffer initialization");
while (esp.available() > 0) {
char a = esp.read();
Serial.write(a);
}
Serial.println();
Serial.println("Buffer initialization terminated");
} else {
Serial.println("AP connection failure");
delay(500);
FAIL_8266 = true;
}
} else {
Serial.println("Module connection failure");
delay(500);
FAIL_8266 = true;
}
} while (FAIL_8266);
Serial.println("Module connection complete");
}
boolean a = true;
String message = "";
void loop() {
message = "responsedata";
if (a) {
sendDataToServer(message);
}
}
void sendDataToServer(String data) {
Serial.println("Start the data transfer part");
cmd = "AT+CIPSTART=\"TCP\",\"" + SERVER_IP + "\"," + SERVER_PORT + "\r\n";
Serial.println("Attempt to connect to server");
esp.println(cmd);
// 웹 서버에 접속되면
if (esp.find("OK")) {
Serial.println("Server connection successful");
} else {
Serial.println("Server connection failed");
}
// 서버로 GET 메시지 전송
cmd = "GET /iot/pi01/power/";
cmd += data;
cmd += "\r\nConnection: close\r\n\r\n";
Serial.println(cmd);
esp.print("AT+CIPSEND=");
esp.println(cmd.length());
if (esp.find("OK")) {
Serial.println("Ready to send to server");
} else {
Serial.println("Failed to prepare to send to server");
}
esp.println(cmd);
//데이터 전송이 완료되면
if (esp.find("OK")) {
Serial.println("Data transfer successful");
Serial.println();
delay(5000);
Serial.println("Attempt to receive data");
while (esp.available()) {
Serial.write(esp.read());
}
Serial.println();
Serial.println("End Receiving Data");
} else {
Serial.println("Data transfer failed");
sendDataToServer(data);
}
delay(10000);
}
boolean cwJoinAP() {
String cmd = "AT+CWJAP=\"" + SSID + "\",\"" + PASSWORD + "\"";
esp.println(cmd);
if (esp.find("OK")) {
return true;
} else {
return false;
}
}
eclipse 를 이용해서 서버를 만들준다.
Dynamic Web Project를 만들어서 톰켓 연결
jsp 파일을 하나 만들고, body에 아래 코드 입력
<%
String a = request.getParameter("a");
System.out.println(a);
%>
크롬에서 http://localhost:8081/프로젝트 폴더/jsp파일?a=123 으로 웹페이지 콘솔창에 찍히는지 확인
첨부파일
- 9600.zip (161.7K) 0회 다운로드 | DATE : 2021-01-25 09:58:25
- ESP8266_flasher_V00170901_00_Cloud Update Ready.zip (8.6M) 0회 다운로드 | DATE : 2021-01-25 09:58:25
댓글목록
웹지기님의 댓글
웹지기 작성일
라이브러리 추가 방법(zip파일로 된 라이브러리-압축을 풀지않고 그대로 사용)
스케치 > 라이브러리포함하기 > zip라이브러리 추가 > 확인
맨위에
#include <ArduinoJson.h>
DynamicJsonBuffer jsonBuffer; //loop 부분에 두줄 추가
JosnObject&root = jsonBuffer.parseObject(data);