?>

Hard Copy World

HCW

Q&A

Home > Forum >

Q&A

질문 | ESP8266 AT커맨드 관련 질문

페이지 정보

작성자 최인홍 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일18-02-23 17:18 조회223회 댓글1건

본문

안녕하세요.
ESP8266으로 MQTT통신을 해보고싶어서 이리저리 시도해보고 있습니다.
ESP8266을 구입하고 아두이노로 작성하여 업로드하면 AT커맨드가 먹히지를 않던데요..
혹시 AT커맨드를 사용하기 위해 따로 설정하는 부분이 있을까요?
아래는 제가 업로드한 코드입니다..


#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <SoftwareSerial.h>
const char* ssid = "........";
const char* password = "......";
const char* mqtt_server = "......";
#define mqtt_user "......"
#define mqtt_password "......"

WiFiClient espClient;
PubSubClient client(espClient);
long lastMsg = 0;
char msg[50];
int value = 0;

void setup_wifi() {

  delay(10);
  // We start by connecting to a WiFi network
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  randomSeed(micros());

  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}

void callback(char* topic, byte* payload, unsigned int length) {
  Serial.print("Message arrived [");
  Serial.print(topic);
  Serial.print("] ");
  for (int i = 0; i < length; i++) {
    Serial.print((char)payload[i]);
  }
  Serial.println();
 
  if ((char)payload[0] == '1') {
  } else {
  }

}

void reconnect() {
  // Loop until we're reconnected
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection...");
    if (client.connect("test", mqtt_user, mqtt_password)) {
      Serial.println("connected");
      // Once connected, publish an announcement...
      client.publish("outTopic", "hello world");
      // ... and resubscribe
      client.subscribe("inTopic");
    } else {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");
      // Wait 5 seconds before retrying
      delay(5000);
    }
  }
}

void setup() {
  Serial.begin(115200);
  setup_wifi();
  client.setServer(mqtt_server, 1883);
  client.setCallback(callback);
}

void loop() {

  if (!client.connected()) {
    reconnect();
  }
  client.loop();

  long now = millis();
  if (now - lastMsg > 2000) {
    lastMsg = now;
    ++value;
    snprintf (msg, 75, "hello world #%ld", value);
    Serial.print("Publish message: ");
    Serial.println(msg);
    client.publish("outTopic", msg);
  }

댓글목록

최고관리자님의 댓글

최고관리자 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 작성일

AT 커맨드는 ESP8266에 기본으로 올라간 코드에 처리하는 루틴이 포함되어 있습니다. 작성하신 코드로 업데이트를 하면 기존에 있던 커맨드 처리 루틴이 지워집니다. AT 커맨드로 처리하는 대신 직접 필요한 내용들을 코드로 구현해서 사용하기 위해 아두이노로 작업을 한다 생각하면 됩니다.