Пользует ли кто WiFi-модули ESP8266 ? Поделитесь впечатлениями.

MaksMS
Offline
Зарегистрирован: 11.03.2013

Вот уже испробовано http://geektimes.ru/post/242366/

buka
buka аватар
Offline
Зарегистрирован: 07.06.2012

https://github.com/Karang/Ardunet  порт arduino.

MaksMS
Offline
Зарегистрирован: 11.03.2013

Прикольно, но имеются куча недоделок и ошибки судя по коду.. Вообще я бы для переопределения функций использовал бы #define 

Araris
Offline
Зарегистрирован: 09.11.2012

Продолжаю получать удовольствие от дивайсов, делюсь впечатлениями:

1. Отлично работают с пятивольтовыми логическими уровнями, гонял сутками, проблем нет.

2. Весьма чувствительны на прием, уровень передаваемого сигнала достаточно высок. Две Ардуины с подключенными ESP принесены на выходные домой и включены в самых дальних углах квартиры. С подключением к роутеру проблем нет, 100% пакетов передаются и принимаются (обмен делаю через UDP на 192.168.0.255, на работе даже 192.168.255.255, бродкастит без проблем).

3. Нетребовательны к качеству питания, пробовал с несколькими китайскими нонейм зарядными устройствами (естественно, через преобразователь 5В-3,3В), проблем нет.

MaksMS
Offline
Зарегистрирован: 11.03.2013

Стоит уточнить с каким видом esp проводили тесты. esp-01 ?? Все же есть отличие, например варианты с керамической антенной более дальнобойнее,чем с антенной из дорожки.

Araris
Offline
Зарегистрирован: 09.11.2012

Уточняю, ESP-01, как раз сомнения насчет антенны были.

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

Заказал себе пару ESP8266 Esp-08 - там, судя по картинке, GPIO побольше.

KVadik
KVadik аватар
Offline
Зарегистрирован: 15.06.2014

Andrey_Y_Ostanovsky пишет:

Заказал себе пару ESP8266 Esp-08 - там, судя по картинке, GPIO побольше.

так у неё антенны нет, лучше уж ESP-07

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

KVadik пишет:

так у неё антенны нет, лучше уж ESP-07

Возможно, приедет - посмотрим. В любом случае, на какое-то расстояние работать - должна, а 100 метров мне точно пока не требуется. :)

NEGr
Offline
Зарегистрирован: 12.05.2014

Добрый всем вечер.

Решил перевести свои устройства с NRF24 на ESP8266 версии ESP-07.

Пришли сегодня из Китая. Попробывал подключить их как ESP-01( питание и ch_pd на 3.3 v, gnd на gnd, rx на tx, tx на rx). В качестве arduino используется pro micro. 

Перепробывал многие скетчи и готовые библиотеки, но реакции ноль. не из серил порта ни из терминала реакции на AT комманды нет. 

Может кто уже пробывал с ними работать? Может есть какие-то отличия в подключении от версии ESP-01? На сайте esp8266.ru находил упоминания о том, что нужно еще и GPIO некотрые подключать, но пока не пробывал. Перспективы модуля впечетляют, хотелось бы ими воспользоваться.

Можно попробывать и без arduino, но очень не охото переписывать скетчи на порядка 20 различных устройчтв. Это только в перспективе))

 

 

MaksMS
Offline
Зарегистрирован: 11.03.2013

GPIO15 ещё на минус надо

NEGr
Offline
Зарегистрирован: 12.05.2014

MaksMS пишет:

GPIO15 ещё на минус надо

Спасибо. Попробую.

MaksMS
Offline
Зарегистрирован: 11.03.2013

Кстати, может кому-то и хватит перепрошитого ESP8266 без ардуино, например такой вариант. В ближайшее время будет опубликована прошивка с кучей возможностей. Подключение лсд экрана. 2 датчиков дхт22,ds18b20, bmp180 - все настраивается в веб морде.

NEGr
Offline
Зарегистрирован: 12.05.2014

MaksMS пишет:

GPIO15 ещё на минус надо

кстати еще вопрос на тему подключения. попадалась информация что питание на пин ch_pd нужно подавать после подачи питания на модуль. Даже в одной билиотеке этому пину был присвоен отдельный пин на arduino(ну и собственно к нему и был подключен) и на него, как раз, и подавался HIGH  при подключении. В вашем варианте подключения ch_pd замыкается на 3.3 v?

Может подскажите где об этом можно почитать?

MaksMS
Offline
Зарегистрирован: 11.03.2013

CH_PD - это отключения питания пин, я его использую как ресет для перевода модуля в режим прошивки.

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

MaksMS пишет:

Кстати, может кому-то и хватит перепрошитого ESP8266 без ардуино, например такой вариант. В ближайшее время будет опубликована прошивка с кучей возможностей. Подключение лсд экрана. 2 датчиков дхт22,ds18b20, bmp180 - все настраивается в веб морде.

Это очень заманчивая прошивка, только мне не хотелось бы завязываться на внешний сайт. Кроме того, там, по слухам, с датчиком DS18B20 пока не все гладко в районе нуля и минусовых температур.

Кстати, в статье хорошо бы сразу указать номиналы резисторов подтяжки для CH_PD и GPIO15.

axill
Offline
Зарегистрирован: 05.09.2011

MaksMS пишет:

Кстати, может кому-то и хватит перепрошитого ESP8266 без ардуино, например такой вариант. В ближайшее время будет опубликована прошивка с кучей возможностей. Подключение лсд экрана. 2 датчиков дхт22,ds18b20, bmp180 - все настраивается в веб морде.

интересно!

NE_XT
NE_XT аватар
Offline
Зарегистрирован: 22.05.2012
MaksMs, можете ли к своей прошивке прикрутить такой дисплей SSD1306 (0.96" I2C IIC SPI Serial 128X64),
также просьба делать прошивку одним файлом. 
Я с удовольствием потестирую, хотя  остановился на NodeMCU, скоро это фантастика будет.
MaksMS
Offline
Зарегистрирован: 11.03.2013

Andrey_Y_Ostanovsky пишет:

Это очень заманчивая прошивка, только мне не хотелось бы завязываться на внешний сайт. Кроме того, там, по слухам, с датчиком DS18B20 пока не все гладко в районе нуля и минусовых температур.

Кстати, в статье хорошо бы сразу указать номиналы резисторов подтяжки для CH_PD и GPIO15.

На внешний сайт можно и не завязыватся, в последней прошивке опция отправки данных на narodmon отключаема.

Всмысле, какие могут быть проблемы с DS18B20 и отрицательными температурами ? Этот датчик работает с ними и соотвественно с любым м/к в том числе и ESP8266..

CH_PD и GPIO15 можно напрямую садить на плюс и минус соотвественно..

NE_XT пишет:

MaksMs, можете ли к своей прошивке прикрутить такой дисплей SSD1306 (0.96" I2C IIC SPI Serial 128X64),
также просьба делать прошивку одним файлом. 
Я с удовольствием потестирую, хотя  остановился на NodeMCU, скоро это фантастика будет.

Прикрутить можно, при наличии примера реализации на другом м/к и желательно наличии такого экрана.

Сегодня планирую опубликовать новую прошивку.

NEGr
Offline
Зарегистрирован: 12.05.2014

NEGr пишет:

MaksMS пишет:

GPIO15 ещё на минус надо

Спасибо. Попробую.

Попробывал. Реакции на AT команды как не было так и нет. Правда в списке wifi сетей появилась новая сеть.

Т.е. модуль работает в режиме сервера. Есть еще какие-нибудь сооброжения по этому поводу?

MaksMS
Offline
Зарегистрирован: 11.03.2013

Ну если сеть появилась, значит модуль работает, и тут проблема уже в подключении UART-USB переходника, может RX TX перепутаны ? Или ещё какие проблемы с переходником..

NEGr
Offline
Зарегистрирован: 12.05.2014

С ТХ и RX все нормально-перепроверил. Я подключаю модуль к arduino pro micro, а все примеры в сети с arduino uno. Может здесь есть какие-то тонкости. У этих плат 2 сериал порта Serial(для USB) и Serial1(ТХ и RX).

MaksMS
Offline
Зарегистрирован: 11.03.2013

А что требуется-то ? Если поотправлять АТ команды с компа, то надо напрямую к UART-USB переходнику подключатся.

NEGr
Offline
Зарегистрирован: 12.05.2014

да для начала просто потыркать его AT командами. потом уже заливать скетчи.

Я на youtube видел ролик(русский) с подключением модуля к arduine(правда uno и модуль был версии esp-01). В нем команды отправлялись прямо в serial и ответы собственно выводились туда.

видимо с leonardo(pro micro) так не получится.

в таком случае, так понимаю, подключится к существующей сети можно только через скетч.

Нарыл в нете библиотеку ESP8266_TCP.

пробую ее тестовый пример с подключением к сети:

/*
 *
 *	Once connect to target Access Point
 *
 */

#include <ESP8266_TCP.h>

// ESP8266 Class
ESP8266_TCP wifi;

// Target Access Point
#define ssid         "Smart"
#define pass         "12345678"

// Connect this pin to CH_PD pin on ESP8266
#define PIN_RESET    6

void setup()
{
  delay(3000);
  
  // We use Serial1 to interface with ESP8266 
  // and use Serial to debugging
  Serial.begin(9600);
  Serial1.begin(115200);
  wifi.begin(&Serial1, &Serial, PIN_RESET);
  
  /* If your board has only 1 serial port
   * or you didn't need to debugging, try this.
   *
   * Serial.begin(115200);
   * wifi.begin(&Serial, PIN_RESET);
   *
   */
  
  // Check that ESP8266 is available
  if(wifi.test()) 
  {
    // Connect to Access Point
    wifi.connectAccessPoint(ssid, pass);
  } 
  else 
  {
	// ESP8266 isn't available
    Serial.println("Check module connection and restart to try again..."); 
  }
}

void loop()
{

}

но устройства не видно в списках устройств роутера.

Если не сложно можите скинуть какой-нибудь скетч с конектом к сети.

MaksMS
Offline
Зарегистрирован: 11.03.2013

Не держал в руках leonardo, по там да, похоже так не получится.. Я вообще мало мучал модуль с ардуинкой..

 

buka
buka аватар
Offline
Зарегистрирован: 07.06.2012

Поставте прямую передачю из порта в порт и посмотрите в терменале что выдается.

NEGr
Offline
Зарегистрирован: 12.05.2014

buka пишет:

Поставте прямую передачю из порта в порт и посмотрите в терменале что выдается.

Можно поподробнее что вы имеете в виду - не допонял. из Serial в Serial1?

buka
buka аватар
Offline
Зарегистрирован: 07.06.2012

Да, и обратно. Сперва проверте работу замкнув RX и TX. 

NEGr
Offline
Зарегистрирован: 12.05.2014

buka пишет:

Да, и обратно. Сперва проверте работу замкнув RX и TX. 

Попробовал вот такой скетч(как раз оба порта задействованы), повесив пин CH_PD модуля на 6 пин платы:

#define SSID "SmartHome"
#define PASS "12345678"
#define DST_IP "192.168.0.10"

String content = "";
char character;

int hardReset = 6;
boolean connected=false;

void setup(){
  pinMode(hardReset, OUTPUT);

  Serial.begin(9600);
  Serial.setTimeout(5000);

  Serial1.begin(115200);
  Serial1.setTimeout(5000);

  digitalWrite(hardReset, LOW);
  delay(100);
  digitalWrite(hardReset, HIGH);
  delay(5000);

  /*if(Serial1.find("Ready"))
    Serial.println("Module is ready");
  else
  {
    Serial.println("Module have no response.");
    while(1);
  }*/

  for(int i=0;i<5;i++)
  {
    if(connectWiFi())
    {
      connected = true;
      break;
    }
  }
  if (!connected){
    while(1);
  }
  delay(5000);
  Serial1.println("AT+CIPMUX=0");
}

void loop(){
  String cmd = "AT+CIPSTART=\"TCP\",\"";
  cmd += DST_IP;
  cmd += "\",4444";
  Serial1.println(cmd);
  Serial.println(cmd);
  if(Serial1.find("Error")) return;
  //cmd = "GET / HTTP/1.0\r\n\r\n";
  cmd = "HELLO";
  Serial1.print("AT+CIPSEND=");
  Serial1.println(cmd.length());
  if(Serial1.find(">"))
  {
    Serial.print(">");
  }
  else
  {
    Serial1.println("AT+CIPCLOSE");
    Serial.println("connect timeout");
    delay(1000);
    return;
  }
  Serial1.print(cmd);
  delay(2000);
  //Serial1.find("+IPD");
  while (Serial1.available())
  {
    char c = Serial1.read();
    Serial.write(c);
    if(c=='\r') Serial.print('\n');
  }
  Serial.println("====");
  delay(1000);
}

boolean connectWiFi()
{
  Serial1.println("AT+CWMODE=1");
  String cmd="AT+CWJAP=\"";
  cmd+=SSID;
  cmd+="\",\"";
  cmd+=PASS;
  cmd+="\"";
  Serial.print("Connecting to ");
  Serial.println(SSID);
  Serial1.println(cmd);
  delay(2000);
  if(Serial1.find("OK"))
  {
    Serial.println("OK, Connected to WiFi.");

    Serial1.println("AT+CIFSR");
    Serial1.flush();
    delay(1000);
    while(Serial1.available()) {
      character = Serial1.read();
      if(character=='.' || character>='0' && character<='9')
        content.concat(character);
    }
    if(content != ""){
      Serial.print("IP Address of ESP8266: ");
      Serial.println(content);
    }

    return true;
  }
  else
  {
    Serial.println("Can not connect to the WiFi.");
    return false;
  }
}

В итоге 5 неудачных попыток соединиться. Т.е. плата вообще ничего не находит в Serial1.

Получается дело не в модуле а в особенностях leonardo.

Кто-нибудь пробывал подключать этот wifi модуль (любой версии) к arduino leonardo???

 

Araris
Offline
Зарегистрирован: 09.11.2012

Я, возможно, невнимательно читал посты, но все же спрошу, а Serial1.begin(57600) и Serial1.begin(9600) пробовали ?

MaksMS
Offline
Зарегистрирован: 11.03.2013

Araris пишет:

Я, возможно, невнимательно читал посты, но все же спрошу, а Serial1.begin(57600) и Serial1.begin(9600) пробовали ?

Да,кстати, модули с новой прошивкой идут уже на установленной по умолчанию скорости 9600 !

buka
buka аватар
Offline
Зарегистрирован: 07.06.2012

В примерах есть MultiSerialMega. загрузите его и посмотрите что выдает в терминале после перезагрузки модуля. Пробуйте разные скорости.

buka
buka аватар
Offline
Зарегистрирован: 07.06.2012

Да там что угодно может быть. у меня один на 115200 выдавал китайские краказябры на остальных вообще мусор. что там была за прошивка фиг его знает. После перепрошивки все заработало.

NEGr
Offline
Зарегистрирован: 12.05.2014

Araris пишет:

Я, возможно, невнимательно читал посты, но все же спрошу, а Serial1.begin(57600) и Serial1.begin(9600) пробовали ?

int i=0;
char buffer[100];
void setup() 
{
    Serial1.begin(9600);
    Serial.begin(9600);
}
void loop() 
{
    if (Serial1.available()>0)
    {
        while( Serial1.available()) 
        {
            buffer[i++] = Serial1.read();
        }
        buffer[i++]='\0';
        Serial.println(buffer);
    }
    else 
    {  
        Serial1.print("AT");
        delay(3000);
    }
}

на скорости 9600 возвращает тоже AT

на скорости 57600 возврящает à

на скорости 115200 ничего не возвращает

Видимо действительно модули с новой прошивкой идут уже на установленной по умолчанию скорости 9600 !

т.е. uart мост между модулем и платой работает. Но почему плата не реагирует никак на AT команды.

Есть у кого еще какие-нибудь мысли на этот счет???

 

 

MaksMS
Offline
Зарегистрирован: 11.03.2013

А если консоли поставить тычку символы окончания строки ?

NEGr
Offline
Зарегистрирован: 12.05.2014

MaksMS пишет:

А если консоли поставить тычку символы окончания строки ?

это как -  что-то я не понял?)

MaksMS
Offline
Зарегистрирован: 11.03.2013

Ну например у терминала ардуино иде есть внизу выбор символов окончания строки..

buka
buka аватар
Offline
Зарегистрирован: 07.06.2012

Залейте этот код и пробуйте вводить команды в терминале.

void setup() {
  // initialize both serial ports:
  Serial.begin(9600);
  Serial1.begin(9600);
}

void loop() {
  // read from port 1, send to port 0:
  if (Serial1.available()) {
    int inByte = Serial1.read();
    Serial.write(inByte);
  }

  // read from port 0, send to port 1:
  if (Serial.available()) {
    int inByte = Serial.read();
    Serial1.write(inByte);
  }
}

 

NEGr
Offline
Зарегистрирован: 12.05.2014

еще раз попробывал скетч

#define SSID "SmartHome"
#define PASS "12345678"
#define DST_IP "192.168.0.10"

String content = "";
char character;

int hardReset = 6;
boolean connected=false;

void setup(){
  pinMode(hardReset, OUTPUT);

  Serial.begin(9600);
  Serial.setTimeout(5000);

  Serial1.begin(9600);
  Serial1.setTimeout(5000);

  digitalWrite(hardReset, LOW);
  delay(100);
  digitalWrite(hardReset, HIGH);
  delay(5000);

  /*if(Serial1.find("Ready"))
    Serial.println("Module is ready");
  else
  {
    Serial.println("Module have no response.");
    while(1);
  }*/

  for(int i=0;i<5;i++)
  {
    if(connectWiFi())
    {
      connected = true;
      break;
    }
  }
  if (!connected){
    while(1);
  }
  delay(5000);
  Serial1.println("AT+CIPMUX=0");
}

void loop(){
  String cmd = "AT+CIPSTART=\"TCP\",\"";
  cmd += DST_IP;
  cmd += "\",4444";
  Serial1.println(cmd);
  Serial.println(cmd);
  if(Serial1.find("Error")) return;
  //cmd = "GET / HTTP/1.0\r\n\r\n";
  cmd = "HELLO";
  Serial1.print("AT+CIPSEND=");
  Serial1.println(cmd.length());
  if(Serial1.find(">"))
  {
    Serial.print(">");
  }
  else
  {
    Serial1.println("AT+CIPCLOSE");
    Serial.println("connect timeout");
    delay(1000);
    return;
  }
  Serial1.print(cmd);
  delay(2000);
  //Serial1.find("+IPD");
  while (Serial1.available())
  {
    char c = Serial1.read();
    Serial.write(c);
    if(c=='\r') Serial.print('\n');
  }
  Serial.println("====");
  delay(1000);
}

boolean connectWiFi()
{
  Serial1.println("AT+CWMODE=1");
  String cmd="AT+CWJAP=\"";
  cmd+=SSID;
  cmd+="\",\"";
  cmd+=PASS;
  cmd+="\"";
  Serial.print("Connecting to ");
  Serial.println(SSID);
  Serial1.println(cmd);
  delay(2000);
  if(Serial1.find("OK"))
  {
    Serial.println("OK, Connected to WiFi.");

    Serial1.println("AT+CIFSR");
    Serial1.flush();
    delay(1000);
    while(Serial1.available()) {
      character = Serial1.read();
      if(character=='.' || character>='0' && character<='9')
        content.concat(character);
    }
    if(content != ""){
      Serial.print("IP Address of ESP8266: ");
      Serial.println(content);
    }

    return true;
  }
  else
  {
    Serial.println("Can not connect to the WiFi.");
    return false;
  }
}

только теперь скорость выставил для serial1 9600.

Модуль пусть не спервой попытки подключился к сети.

В DHCP таблице устройств он отразился с именем *.

Теперь интересно понять почему модуль не отвечает на команду AT в предыдущем скетче.

NEGr
Offline
Зарегистрирован: 12.05.2014

предылущий мой скетч тоже заработал.

после того как я в начале добавил условие на пин платы ch_pd. а именно:

int i=0;
char buffer[100];
int hardReset = 6;
void setup()
{
    pinMode(hardReset, OUTPUT);
    Serial1.begin(9600);
    Serial.begin(9600);
    digitalWrite(hardReset, LOW);
    delay(100);
    digitalWrite(hardReset, HIGH);
    delay(5000);
}
void loop()
{
    if (Serial1.available()>0)
    {
        while( Serial1.available())
        {
            buffer[i++] = Serial1.read();
        }
        buffer[i++]='\0';
        Serial.println(buffer);
    }
    else
    {  
        Serial1.print("AT");
        delay(3000);
    }
}

т.е. получается чтобы модуль корректно работал, необходимо на этот пин в начале подать LOW а затем HIGH(сделать hardreset).

NEGr
Offline
Зарегистрирован: 12.05.2014

Все заработало. Всем спасибо кто помог решении проблемы. Отдельное спасибо MaksMS за: "GPIO15 ещё на минус надо"

Теперь буду пробовать отсылать и принимать данные.

Araris
Offline
Зарегистрирован: 09.11.2012

У меня в работающих скетчах не ESPSerial.print("AT");, а  ESPSerial.println("AT");

А вот еще вариант скетча для "игр" с терминалом:



#include <SoftwareSerial.h>

#define ESP8266_RX          7    //
#define ESP8266_TX          8    //

SoftwareSerial ESPSerial(ESP8266_RX,ESP8266_TX); // RX, TX

void setup()
{
ESPSerial.begin(9600);
ESPSerial.setTimeout(2000);
Serial.begin(9600);
Serial.println("ESP8266 Monitor");
ESPSerial.println("AT+RST");
}

void loop()
{
while ( Serial.available() )    { ESPSerial.write(Serial.read()); }
while ( ESPSerial.available() ) { Serial.write(ESPSerial.read()); }
}

 

buka
buka аватар
Offline
Зарегистрирован: 07.06.2012

Это если прошивка на 9600 работает. Softserial на 115200 не тянет вроде.

Araris
Offline
Зарегистрирован: 09.11.2012

Нет, не тянет. В большинстве случаев максимум 19200.

Sirocco
Offline
Зарегистрирован: 28.09.2013

Пришли несколько разных. Стоковая прошивка 0018000902, скорость по дефолту 9600.

Sirocco
Offline
Зарегистрирован: 28.09.2013

Чёт не пойму. Со стоковой прошивкой можно в качестве модуля WiFi с ардуино использовать? Как сделать, чтоб отправив GET запрос с параметром на адрес модуля в Serial ардуино прошла команда?

Или со стоковой не прокатит, нужно что-то ставить?

Araris
Offline
Зарегистрирован: 09.11.2012

Sirocco пишет:

Как сделать, чтоб отправив GET запрос с параметром на адрес модуля в Serial ардуино прошла команда?

Прошивка вполне подойдет. Поднимите веб-сервер, принимайте запросы, выполняйте команды. Например, так: https://gist.github.com/prasertsakd/5c5deb80e37344250cc1

Sirocco
Offline
Зарегистрирован: 28.09.2013

Araris пишет:

 Поднимите веб-сервер, принимайте запросы, выполняйте команды. 

А веб сервер со стандартной прошивкой как поднять на этой железке?

Araris
Offline
Зарегистрирован: 09.11.2012

Сервер поднимается на Ардуине в данном случае. Можно поднять и на железяке, но это сложнее будет. Данная выше ссылка на готовый скетч с сервером ничего не прояснила ? Можно нагуглить еще немало подобных решений..

NEGr
Offline
Зарегистрирован: 12.05.2014

Araris пишет:

Sirocco пишет:

Как сделать, чтоб отправив GET запрос с параметром на адрес модуля в Serial ардуино прошла команда?

Прошивка вполне подойдет. Поднимите веб-сервер, принимайте запросы, выполняйте команды. Например, так: https://gist.github.com/prasertsakd/5c5deb80e37344250cc1

Вопрос наверно очень похожий но все же.

Имеется web-сервер apache+mysql+php. Имеется несколько arduino с этими wifi модулями и другими датчиками/ устройствами. Wifi сеть построена на базе роутера. Часть с отправкой данных на web-сервер с arduin по wifi отработана. Кому интересно вот код:

#include <dht.h>

#define SSID "SmartHome" //имя сети
#define PASS "12345678" //пароль
#define DST_IP "192.168.0.10" //ip web сервера
const String id="t02"; // id устройства
#define DHTPIN 2 // номер пина, к которому подключен датчик температуры
#define DHTTYPE DHT22 // тип датчика температуры DHT 22 (AM2302)
DHT dht(DHTPIN, DHTTYPE);//инициализация датчика
static unsigned long time_fade;
String ip = "";  //переменная для хранения ip устройства
char character;

int hardReset = 6; // пин arduino? на котором весит ch_pd
boolean connected=false;

void setup()
{
  dht.begin();
  pinMode(hardReset, OUTPUT);

  Serial.begin(9600);
  Serial.setTimeout(5000);

  Serial1.begin(9600);
  Serial1.setTimeout(5000);

  digitalWrite(hardReset, LOW);
  delay(100);
  digitalWrite(hardReset, HIGH);
  delay(5000);

  for(int i=0;i<5;i++)
  {
    if(connectWiFi())
    {
      connected = true;
      break;
    }
  }
  if (!connected){
    while(1);
  }
  delay(5000);
  Serial1.println("AT+CIPMUX=0");
}

void loop()
{
    /*имитация сбора показаний*/
    if(millis()>time_fade)
    {
        String h = floatToString(dht.readHumidity(),2);
        String t = floatToString(dht.readTemperature(),2);
    String val = t+"_"+h;     
        if(sendMSG(id,val,false))
        {
            Serial.println("SEND: YES");
        }
        else
        {
            Serial.println("SEND: NO");
        }      
        time_fade=millis()+10000;
    }  
}
/*функция отправки сообщения web-серверу*/
boolean sendMSG(String modul_id,String value,boolean startMSG)
{   
    String msg= "GET /ajax/arduino_read.php?act=";
    if(startMSG)
    {  
        msg+="new_w&id=";
    }
    else
    {
        msg+="s_t_h&id=";      
    }
    msg+= modul_id;
    msg+= "&val=";
    msg+= value;
    msg+= " HTTP/1.1\r\nHost: ";
    msg+= DST_IP;
    msg+=  ":80\r\n\r\n";
 
    Serial1.print("AT+CIPSEND=");
    Serial1.println(msg.length());
    Serial.println("Senting MSG");
    if (Serial1.find(">"))
    {
        Serial.print("MSG text: ");
        Serial.println(msg);
        Serial1.print(msg);
        Serial1.flush();
    }
    
    if(Serial1.find("SEND OK"))
    {
        return true;
    }
    else
    {
        return false;
    }
}
/*функция конекта к wifi сети*/
boolean connectWiFi()
{
    Serial1.println("AT+CWMODE=1");
    String cmd="AT+CWJAP=\"";
    cmd+=SSID;
    cmd+="\",\"";
    cmd+=PASS;
    cmd+="\"";
    Serial.print("Connecting to ");
    Serial.println(SSID);
    Serial1.println(cmd);
    delay(2000);
    if(Serial1.find("OK"))
    {
        Serial.println("OK, Connected to WiFi.");
        Serial1.println("AT+CIFSR");
        Serial1.flush();
        delay(1000);
        while(Serial1.available())
        {
            character = Serial1.read();
            if(character=='.' || character>='0' && character<='9')
                ip.concat(character);
        }
        if(ip != "")
        {
            Serial.print("IP Address of ESP8266: ");
            Serial.println(ip);
        }
        ///включаем режим приема/передачи
        Serial1.println("AT+CIPMODE=0");
        String cmd = "AT+CIPSTART=\"TCP\",\"";
        cmd += DST_IP;
        cmd += "\",80";
        Serial1.println(cmd);
        Serial.print("Connecting to WebServer ");
        Serial.println(DST_IP);
        Serial1.flush();
        delay(1000);
        if(Serial1.find("OK"))
        {
            Serial.print("OK, Connected to WebServer ");
            Serial.println(DST_IP);
            String msg=  "temp_";
            msg+=  ip;
            //отправляем информацию об устройстве при его старте
            if(sendMSG(id,msg,true))
            {
                Serial.println("Startup info was send");
                return true;
            }
            else
            {
                Serial.println("Startup info was not send");
                return false;   
            }
            delay(1000);
        }
        else
        {
            Serial.print("Can not connect to WebServer ");
            Serial.println(DST_IP);
            return false;      
        }  
    }
    else
    {
        Serial.println("Can not connect to the WiFi.");
        return false;
    }
}

String floatToString(float value, byte precision)
{
  int intVal = int(value);
  unsigned int frac;
  if(intVal >= 0)
  {
    frac = (value - intVal) * precision;
  }
  else
  {
    frac = (intVal - value) * precision;
  }
  return String(intVal) + "." + String(frac);
}

Вопрос в том как можно отработать обратную связь: делать запрос из php устройсту, чтобы то запустило какой-то набор действий на arduino? Или это только путем поднятия web-сервера на arduino?