Навчальні конструктори та DIY електроніка

ESP8266 + Arduino: пример скетча

2016-02-12

В скетче мы подключаемся к Wi-Fi сети посредством модуля ESP8266, плата Arduino отправляет HTTP запрос "GET /" веб-серверу и выводит текст полученной страницы в UART.

#include <SoftwareSerial.h>
SoftwareSerial wifiSerial(2, 3); // RX, TX 

void setup() {
  wifiSerial.begin(9600);  
  wifiSerial.setTimeout(5000);
  Serial.begin(9600);

  wifiCmd("AT+RST", 1000, "Ready"); //сообщение о готовности
  
  boolean connected = false;//подключение к сети
  for(int i=0; i<5; i++) {
    if(connectWiFi()) {
      connected = true;
      break;
    }
  }
  while (!connected);
  delay(5000);

  //устанавливаем режим соединения SINGLE
  wifiCmd("AT+CIPMUX=0", 1000, "OK");
}
void loop() {
  wifiRqst();
  while(1) {
    wifiSerial.listen();
    if(wifiSerial.available()){
      Serial.print((char)wifiSerial.read());
    }
    
    if(Serial.available()){
      wifiSerial.print((char)Serial.read());
    } 
  }
}

boolean connectWiFi() {
  wifiCmd("AT+CWMODE=1",1000,"OK");
  wifiCmd("AT+CWJAP=\"Network\",\"Password\"",2000,"OK");
  return true;
}

boolean  wifiCmd(char cmd[], int timeout, char answer[]) {
  Serial.print(cmd);
  Serial.println();
  wifiSerial.print(cmd);
  wifiSerial.println();
  delay(timeout);
  if(wifiSerial.find(answer)) {
    Serial.println(answer);
    return true;
  } else {
    Serial.print("errCmd:|");
    Serial.print(answer);
    Serial.println("|");
    return false;
  }
}

boolean  wifiRqst() {
  wifiCmd("AT+CIPSTART=\"TCP\",\"192.168.0.115\",80",1000,"OK");
  if(wifiSerial.find("Error"))
    return false;
  char cmd[] = "GET / HTTP/1.0\r\n\r\n";
  Serial.print("AT+CIPSEND=");
  Serial.println(sizeof(cmd));
  wifiSerial.print("AT+CIPSEND=");
  wifiSerial.println(sizeof(cmd));
  delay(1000);
  if(wifiSerial.find(">")) {
    Serial.print(">");
  } else {
    wifiSerial.println("AT+CIPCLOSE");
    delay(1000);
    return false;
  }
  wifiSerial.println(cmd);
  delay(2000);
  //wifiSerial.find("+IPD");
  while (wifiSerial.available()) {
    /*char c = wifiSerial.read();
    Serial.write(c);*/
    Serial.write(wifiSerial.read());
  }
  return true;
}


Автор: hobbytech


Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *


© HobbyTech 2016