안녕하세요 esp8266 제품 구매하여 아두이노 통하여 wifi를 이용해서 통신하는 작품을 만들려고하는데
소스코드 컴파일 후 업로드도 정상적으로 되지만 시리얼 모니터를 통해 정상적으로 통신되는지 확인 하려고 할 때 아무런 반응이 없어서 문의 드립니다.
#include <ESP8266WiFi.h> // ESP 8266 와이파이 라이브러리
#include <ESP8266HTTPClient.h> // HTTP 클라이언트
#include <Adafruit_NeoPixel.h> // 네오픽셀 라이브러리
#define NUMPIXELS 1 // 네오픽셀 LED 수
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, D2, NEO_GRBW + NEO_KHZ800);
String sido = "서울"; // 서울, 부산, 대구, 인천, 광주, 대전, 울산, 경기, 강원, 충북, 충남, 전북, 전남, 경북, 경남, 제주, 세종 중 입력
String key = "ZJCmzKDmAE%2F%2FlsXbDJld%2FvXZ1dRgki0%2FZOTZYDki1Di5SMg4f31e6JbAE%2F7uNILGfri4PmSgJH0cDNEUzqtqNg%3D%3D";
String url = "http://openapi.airkorea.or.kr/openapi/services/rest/ArpltnInforInqireSvc/getCtprvnMesureSidoLIst?sidoName=" + sido + "&searchCondition=HOUR&pageNo=1&numOfRows=200&ServiceKey=" + key;
float so2, co, o3, no2, pm10, pm25 = 0; // 아황산가스(이산화황), 일산화탄소, 오존, 이산화질소, 미세먼지, 초미세먼지
int score = 0;
void setup()
{
// 시리얼 세팅
Serial.begin(115200);
Serial.println();
// 네오픽셀 초기화
pixels.begin();
for (int i = 0; i < NUMPIXELS; i++) {
pixels.setPixelColor(i, 0);
}
pixels.show();
// 와이파이 접속
WiFi.begin("0000000", "00000000"); // 공유기 이름과 비밀번호
Serial.print("Connecting");
while (WiFi.status() != WL_CONNECTED) // 와이파이 접속하는 동안 "." 출력
{
delay(500);
Serial.print(".");
}
Serial.println();
Serial.print("Connected, IP address: ");
Serial.println(WiFi.localIP()); // 접속된 와이파이 주소 출력
}
void loop() {
if (WiFi.status() == WL_CONNECTED) // 와이파이가 접속되어 있는 경우
{
WiFiClient client; // 와이파이 클라이언트 객체
HTTPClient http; // HTTP 클라이언트 객체
if (http.begin(client, url)) { // HTTP
// 서버에 연결하고 HTTP 헤더 전송
int httpCode = http.GET();
// httpCode 가 음수라면 에러
if (httpCode > 0) { // 에러가 없는 경우
if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) {
String payload = http.getString(); // 받은 XML 데이터를 String에 저장
int cityIndex = payload.indexOf("영등포구");
so2 = getNumber(payload, "<so2Value>", cityIndex); // 아황산가스(이산화황)
co = getNumber(payload, "<coValue>", cityIndex); // 일산화탄소
o3 = getNumber(payload, "<o3Value>", cityIndex); // 오존
no2 = getNumber(payload, "<no2Value>", cityIndex); // 이산화질소
pm10 = getNumber(payload, "<pm10Value>", cityIndex); // 미세먼지
pm25 = getNumber(payload, "<pm25Value>", cityIndex); // 초미세먼지
}
} else {
Serial.printf("[HTTP] GET... 실패, 에러코드: %s\n", http.errorToString(httpCode).c_str());
}
http.end();
} else {
Serial.printf("[HTTP] 접속 불가\n");
}
score = getScore();
Serial.println(score);
setLEDColor(score);
delay(600000);
}
}
float getNumber(String str, String tag, int from) {
float num = -1;
int f = str.indexOf(tag, from) + tag.length();
int t = str.indexOf("<", f);
String s = str.substring(f, t);
return s.toFloat();
}
int getScore() {
int s = -1;
if (pm10 >= 151 || pm25 >= 76 || o3 >= 0.38 || no2 >= 1.1 || co >= 32 || so2 > 0.6) // 최악
s = 7;
else if (pm10 >= 101 || pm25 >= 51 || o3 >= 0.15 || no2 >= 0.2 || co >= 15 || so2 > 0.15) // 매우 나쁨
s = 6;
else if (pm10 >= 76 || pm25 >= 38 || o3 >= 0.12 || no2 >= 0.13 || co >= 12 || so2 > 0.1) // 상당히 나쁨
s = 5;
else if (pm10 >= 51 || pm25 >= 26 || o3 >= 0.09 || no2 >= 00.06 || co >= 9 || so2 > 0.05) // 나쁨
s = 4;
else if (pm10 >= 41 || pm25 >= 21 || o3 >= 0.06 || no2 >= 0.05 || co >= 5.5 || so2 > 0.04) // 보통
s = 3;
else if (pm10 >= 31 || pm25 >= 16 || o3 >= 0.03 || no2 >= 0.03 || co >= 2 || so2 > 0.02) // 양호
s = 2;
else if (pm10 >= 16 || pm25 >= 9 || o3 >= 0.02 || no2 >= 0.02 || co >= 1 || so2 > 0.01) // 좋음
s = 1;
else
s = 0;
return s;
}
void setLEDColor(int s) {
int color;
if (s == 0)
color = pixels.Color(0, 63, 255);
else if (s == 1)
color = pixels.Color(0, 127, 255);
else if (s == 2)
color = pixels.Color(0, 255, 255);
else if (s == 3)
color = pixels.Color(0, 255, 63);
else if (s == 4)
color = pixels.Color(255, 127, 0);
else if (s == 5)
color = pixels.Color(255, 63, 0);
else if (s == 6)
color = pixels.Color(255, 31, 0);
else
color = pixels.Color(255, 0, 0);
for (int i = 0; i < NUMPIXELS; i++) {
pixels.setPixelColor(i, color);
}
pixels.show();
}
위와 같은 소스코드를 입력했으며, CH341SER 설치 및 포트설정까지 완료했습니다.
위의 코드 외에 여러가지 다른 소스코드를 이용하여 wifi 통신하려고 했는데 전부 통신이 정상적으로 되지않습니다 답변 부탁드리겠습니다!