에듀이노-코딩교육 전문 쇼핑몰 에듀이노-코딩교육 전문 쇼핑몰

학교, 공공기관이라면 후불결제하세요!

 
현재 위치
  1. 게시판
  2. 묻고답하기

묻고답하기

상품 게시판 상세
제목 esp8266 wifi 통신문제
작성자 양창모 (ip:)
  • 작성일 2019-05-16
  • 추천 추천하기
  • 조회수 193

안녕하세요 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 통신하려고 했는데 전부 통신이 정상적으로 되지않습니다  답변 부탁드리겠습니다!
평점 0점
첨부파일
비밀번호 삭제하려면 비밀번호를 입력하세요.
댓글 수정

비밀번호 :

수정 취소

/ byte

비밀번호 : 확인 취소

댓글 입력

댓글달기이름 :비밀번호 : 관리자답변보기

확인

/ byte

왼쪽의 문자를 공백없이 입력하세요.(대소문자구분)

에게만 댓글 작성 권한이 있습니다.

댓글 입력

댓글달기이름 :비밀번호 :

확인

/ byte

왼쪽의 문자를 공백없이 입력하세요.(대소문자구분)

에게만 댓글 작성 권한이 있습니다.

«
»