• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Esp8622 / SoftSerial.Find не получается прочитать нужные данные

Dark

New member
Имеем:

-Ардуино нано (китайский аналог)

-wi fi модуль esp8622-подключается к ардуине через SoftSerial

Общая задумка-ардуина должна получать через модуль esp8622 данные с локального сервера-дергать текстовый файл c содержанием предположим test01 или test02 , в зависимости от значений будут дергаться нужные пины ардуины.

Что было сделано-сначала через АТ команды пробовал-сильно муторно. Но как вариант да. Пока не очень понравилось.
Потом нашел библиотеку
https://github.com/anakod/ESP8266pro

Вот пример с их библиотеки:
Код:
// This software distributed under the terms of the MIT license
// (c) Skurydin Alexey, 2014
//
// Before beginning of work:
// 1. Update ESP8266 firmware to lastest version before using this library (at least AT v0.20)
// 2. Verify, what WiFi module UART works on 9600 speed (also you can choose different speed,
//    but don't forget about software serial limitations)
// 3. Increase _SS_MAX_RX_BUFF in Arduino SoftwareSerial.h to prevent data loss (because by
//    default, Arduino has very small buffers for software and hardware serials). I recommend
//    size of 256 bytes for that.
//
// This example discover how you can send HTTP requests/download remote pages
//

#include <SoftwareSerial.h>
#include <ESP8266pro.h>
#include <ESP8266proClient.h>

SoftwareSerial espSerial(9, 10); // RX, TX

ESP8266pro wifi(espSerial, Serial); // Serial, DebugSerial

const char* ssid = "YouWiFi";
const char* password = "youpasswordhere";

void setup()
{
  espSerial.begin(9600);
  Serial.begin(9600);
 
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }
  Serial.println("Starting");
 
  // Initialize ESP
  wifi.begin(eODM_None); // Disable all debug messages
 
  // Connect to WiFi network
  // In future ESP should automatically reconnect
  // to this network, if requried
  do
  {
    if (!wifi.stationConnect(ssid, password))
      delay(3000);
  } while (wifi.stationIP() == NULL_IP);
 
  Serial.print("ESP IP: ");
  Serial.println(wifi.stationIP());
}

void loop()
{
  // Send request
  ESP8266proClient con(wifi, printResponse);
  con.connectTcp("192.168.0.2", 80);
  con.send("GET /test.txt HTTP/1.0\r\nHost: Esp8622\r\n\r\n");
  con.waitResponse();
  con.close();
 
  delay(5000);
}

// Optional method to process remote response
void printResponse(ESP8266proConnection* connection,
          char* buffer, int length, boolean completed)
{
  Serial.print(buffer);
}
Соответственно настраиваю под себя, все работает, в монитор последовательного порта сыпятся ответы от сервера, и там есть эти нужные мне строчки. Но вот не догоню, как их получить.

Почему то
Код:
 if(Serial.find("tes01")){

  
    digitalWrite(2, HIGH);
    digitalWrite(3, LOW);
    digitalWrite(4, LOW);
    digitalWrite(5, LOW);
  }
не срабатывает. Это условие ставил после con.waitResponse();
Простая задача, но не пойму, данные в порт не знаю, в каком виде приходят , дебегера нет в среде ардуины, как то стопорнулся я... Куда копать?

Отказаться от ардуины нет возможности, так как в ESP8622-01 , именно такая у меня, нет достаточного кол-ва портов для меня, покупать другую версию нет времени/денег.
Многие ругаются на такую связку, но что имеем , то имеем.
 

Vitaly

Member
есть вариант не избавлясь от ардуины, перейти в есп на ардуино иде для есп
вся работа с wifi и сетью останется в ардуино есп, а сериал обмен можно будет сделать более контролируемым своими силами
 

Dark

New member
Ну вообщем то это все по сути одно и тоже примерно-использовать ли IDe или библиотеку.
 

Vitaly

Member
примерно одно, но при всех проблемах со стабильностью у ардуино есп библиотек, оно получилось намного живее чем с АТ прошивкой

лично в моем случае конечно
да и отлаживать вышло проще, работу с веб более продвинутую и прочее
 

Dark

New member
Я вчера пытался ее поставить, но не запустилось из за каких то ошибок с синхронизацией с модулем ,хотя explorer нормально все подключился и отдавал ат команды.
 
Сверху Снизу