• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Сервер-Телефон

sER

New member
Здравствуйте мастера. Прочитал ужасно много информации, аж голова идёт кругом.

AT+CWMODE=2 //AP
AT+RST //Перезапуск модуля
AT+CWSAP="Test","123456",9,4 //Установить параметры для режима AP
//AT+CIFSR //Отобразить IP адрес, который получили от AP
//AT+CWLIF //Отобразить IP адреса подключенных клиентов
Это я выполнил один раз.

AT+CIPMODE=0 //Установить сквозной режим (обычный режим)
AT+CIPMUX=1 //Режим множественных подключений
AT+CIPSERVER=1,88 //Запустить сервер
AT+CIPSTO=5 //Установить таймаут сервера

Далее мне необходимо организовать следующее
При получении сервером
+IPD,0,467;GET /?id1=true&id2=false HTTP/1.1
Если id1=true То
AT+CIPSEND=0,6
>Horoho


Код:
void loop() {
if ( espSerial.available() ){
Serial.write(espSerial.read() );
char id1 = strstr(espSerial.available(),"id1=") + 4;
if (id1="true"){
AT+CIPSEND=0,6
>Horoho
}

if ( Serial.available() )
 espSerial.write( Serial.read() );
}
}
Помогите с кодом. И подскажите, правильность AT команд
 

sER

New member
Код:
#include <SoftwareSerial.h>
// ESP TX - 10 (Arduino SoftwareSerial RX)
// ESP RX - 11 (Arduino SoftwareSerial TX)
SoftwareSerial espSerial(10, 11);

#define BUFFER_SIZE 128
char buffer[BUFFER_SIZE];

void setup() {
  espSerial.begin(115200);
  Serial.begin(115200);
}
/*void loop() {
  if ( espSerial.available() )
    Serial.write( espSerial.read() );
  if ( Serial.available() )
    espSerial.write( Serial.read() );
}*/
//AT+RESTORE
//AT+CWMODE=2
//AT+RST
//AT+CWSAP="ESP756190","21030826",1,4
//AT+CIFSR
//AT+CWLIF

//AT+CIPMODE=0
//AT+CIPMUX=1
//AT+CIPSERVER=1,88
//AT+CIPSTO=5
//


void loop()
{
/* if ( espSerial.available() )
    Serial.write( espSerial.read() );
  if ( Serial.available() )
    espSerial.write( Serial.read() );*/

 
int ch_id, packet_len;
char *pb; 
espSerial.readBytesUntil('\n', buffer, BUFFER_SIZE);
  if(strncmp(buffer, "+IPD,", 5)==0)
  {
Serial.println(buffer);
pb = buffer+5;
      while(*pb!=':') pb++;
      pb++;
   if((strncmp(pb, "GET /?id=true", 13) == 0) )
       {
Serial.println("Horoho");
  }
      if((strncmp(pb, "GET /?id=false", 14) == 0) )
       {
Serial.println("Ploho");
  }
  
    }
  }
Без имени-2.jpg
Почему так много мусора?
 

sER

New member
Код:
#include <SoftwareSerial.h>
SoftwareSerial espSerial(10, 11);
#define BUFFER_SIZE 256
char buffer[BUFFER_SIZE];

void setup() {
  espSerial.begin(115200);
  Serial.begin(9600);
espSerial.println("AT+RST");
Serial.println("1");
delay(2000);
espSerial.println("AT+CWMODE=1");
Serial.println("2");
delay(1000);
espSerial.println("AT+RST");
Serial.println("3");
delay(3000);
espSerial.println("AT+CSYSWDTENABLE");
Serial.println("4");
delay(1000);
espSerial.println("AT+CWJAP=\"Internet\",\"40061991\"");
Serial.println("5");
delay(6000);
espSerial.println("AT+CIPMODE=0");
Serial.println("6");
delay(1000);
espSerial.println("AT+CIPMUX=1");
Serial.println("7");
delay(1000);
espSerial.println("AT+CIPSERVER=1,88");
Serial.println("8");
delay(1000);
espSerial.println("AT+CIPSTO=2");
Serial.println("9");
delay(1000);
espSerial.println("AT+CIFSR");
Serial.println("10");
delay(1000);
}

void loop()
{
int ch_id, packet_len;
char *pb; 
espSerial.readBytesUntil('\n', buffer, BUFFER_SIZE);
 
if(strncmp(buffer, "+IPD,", 5)==0)
  {
   sscanf(buffer+5, "%d,%d", &ch_id, &packet_len);
   if (packet_len > 0)
    {
      pb = buffer+5;
      while(*pb!=':') pb++;
      pb++;
     if((strncmp(pb, "GET / ", 6) == 0) || (strncmp(pb, "GET /?", 6) == 0))
       {
        otvet_klienty(ch_id);
        Serial.println(buffer);
       }     
    }
  }

}
void otvet_klienty(int ch_id)
{
  String Header;
  Header =  "HTTP/1.1 200 OK\r\n";
  Header += "Content-Type: text/html\r\n";
  Header += "Connection: close\r\n"; 
 
  String Content;
Content = "<!DOCTYPE html>";
Content += "<html><head><meta charset=\"utf-8\"><meta http-equiv=\"Cache-Control\" content=\"no-cache\"><title>Stranica</title></head><body>";
Content += "<h1>Privet</h1></body></html>";

  Header += "Content-Length: ";
  Header += (int)(Content.length());
  Header += "\r\n\r\n";
 
   espSerial.print("AT+CIPSEND="); // ответ клиенту
espSerial.print(ch_id);
espSerial.print(",");
   espSerial.println(Header.length()+Content.length());
delay(100);

// if(espSerial.find(">"))
   // {
       espSerial.print(Header);
      espSerial.print(Content);
    delay(110);
    //}
}
Работает нестабильно, часто зависает. Окажите помощь, что я не так сделал?
Если делаю проверку

if(espSerial.find(">"))
{
espSerial.print(Header);
espSerial.print(Content);
delay(110);
}
Не выводит страницу
 

shuraf

Member
Ходишь по граблям пройденными всеми. С АТ работать тяжело и почти безнадёжно. По возможности переходит на IDE
 

Refalkof

New member
Помогите! Что в коде не так с client.read? Не отображает получение данные.
Код:
#include <SPI.h>
#include <Ethernet.h>
#include <OneWire.h>
#include <DallasTemperature.h>

OneWire oneWire(15);
DallasTemperature ds(&oneWire);
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

EthernetClient client;
char server[] = "-----";
int buff = 0;
const int led = 7;

void setup()
{
Ethernet.begin(mac);
ds.begin();
pinMode(led, OUTPUT);
digitalWrite(led, LOW);
}

void loop()
{

ds.requestTemperatures();

if (client.connect(server, 80))
{

client.print( "GET /add.php?");
client.print("temperature=");
client.print( ds.getTempCByIndex(0) );
client.print("&");
client.print("&");
client.print("temperature1=");
client.print( ds.getTempCByIndex(1) );
client.println( " HTTP/1.1");
client.print("Host: ");
client.println(server);
client.println("Connection: close");
client.println();
client.println();

delay(200);

while (client.available())
{
char c = client.read();
if ( c=='1')
{
buff=1;
}
if ( c=='0')
{
buff=0;
}
}
client.stop();
client.flush();
delay(100);
}
else
{
client.stop();
delay(1000);
client.connect(server, 80);
}

if ( buff==1)
{
digitalWrite (led, HIGH);
}
if ( buff==0)
{
digitalWrite(led, LOW);
}
delay(500);
}
 
Последнее редактирование:
Сверху Снизу