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

Помогите "подружить ESP и Arduino

Bod.Petr

New member
Здравствуйте, вопрос следующий. ESP соединена с arduino по RX-TX. На ESP команды приходят через mqtt сервер с телефона, все прекрасно работает, но мне не хватает его мощности, решил подключить к ардуино, так вот, команды на ардуино, вроде как приходят, в порту они отображаются, но почему то он их не исполняет, мб чего не так делаю?
P.S. -127.00 на скрине это показания температуры(датчик не подключен.Безымянный.png
 

Юрий Ботов

Moderator
Команда форума
Тут уже недавно было когда человек шлет на Serial а на другой плате ждет с Serial ответа, причем оба Serial-a подключены через usb/serial к компьютеру...
 

CodeNameHawk

Moderator
Команда форума
но почему то он их не исполняет, мб чего не так делаю?
Строка вроде обрамляется ""
Код:
if (val == "test => led1")
В сериал данные поступают по одному байту ( символу), в том числе помехи и т.д.

Обозначьте начало и конец передачи передачи "своим" символом. например как в JSON "{" и "}"
Логика работы такова, сравниваете принятый символ с "{" , если есть считываете все до символа "}" и только тогда обработка.
 
Последнее редактирование:

CodeNameHawk

Moderator
Команда форума
Вот кусок из рабочего проекта
Код:
  if (Serial.available() > 0)
  { //если есть доступные данные
    // считываем байт
    odczyt = Serial.read();
    if (odczyt == '{') //szukamy poczatek linii
    {
      i = 0; //na poczatek buffera
      odczyt_buf[i] = odczyt;
      i = i + 1;
      posylka_full = false;
      start_time = millis();
      do
      {
        if (Serial.available() > 0)
        {
          odczyt = Serial.read();
          odczyt_buf[i] = odczyt;
          i = i + 1;
          if (i >= buf_max)
          {
            posylka_full = false;
            break;
          }
          if (odczyt == '}')
          {
            posylka_full = true;
            odczyt_buf[i + 1] = 0;
            break;
          }
        }
        now_time = millis();
        if ((now_time - start_time) > 5000)
        {
          posylka_full = false;
          break;
        }
      }
      while (1);
      if (posylka_full == true)
      { //otrzymali pelna posylke, rozlozyc do peremennych
        //        Serial.println();
        //        Serial.println("Cala posylka");
        //        Serial.println(i);
        for (int cykl = 0; cykl < i; cykl++)
        {
          Serial.print(odczyt_buf[cykl]);
        }

        JsonObject& root = jsonBuffer.parseObject(odczyt_buf);
 

Bod.Petr

New member
Вот кусок из рабочего проекта
Код:
  if (Serial.available() > 0)
  { //если есть доступные данные
    // считываем байт
    odczyt = Serial.read();
    if (odczyt == '{') //szukamy poczatek linii
    {
      i = 0; //na poczatek buffera
      odczyt_buf[i] = odczyt;
      i = i + 1;
      posylka_full = false;
      start_time = millis();
      do
      {
        if (Serial.available() > 0)
        {
          odczyt = Serial.read();
          odczyt_buf[i] = odczyt;
          i = i + 1;
          if (i >= buf_max)
          {
            posylka_full = false;
            break;
          }
          if (odczyt == '}')
          {
            posylka_full = true;
            odczyt_buf[i + 1] = 0;
            break;
          }
        }
        now_time = millis();
        if ((now_time - start_time) > 5000)
        {
          posylka_full = false;
          break;
        }
      }
      while (1);
      if (posylka_full == true)
      { //otrzymali pelna posylke, rozlozyc do peremennych
        //        Serial.println();
        //        Serial.println("Cala posylka");
        //        Serial.println(i);
        for (int cykl = 0; cykl < i; cykl++)
        {
          Serial.print(odczyt_buf[cykl]);
        }

        JsonObject& root = jsonBuffer.parseObject(odczyt_buf);
спасибо, буду разбираться) но походу, туповат я)):D:D:D
 
Сверху Снизу