Данные не отправляются между Arduino uno и NodeMcu esp8266 все время - PullRequest
1 голос
/ 12 марта 2020

Я отправляю данные из Arduino UNO R3 на узел Mcu esp8266. В этом случае иногда данные отправляются должным образом, но иногда данные не передаются через arduino или не передаются через nodemcu esp8266. Также индикатор tx не мигает после загрузки кода в Arduiono.

enter code here

Код загружен в Arduino:

#include <SoftwareSerial.h>
#include <ArduinoJson.h>
SoftwareSerial s(10,11);
SoftwareSerial h(10,11);
int i=0;
void setup() {
  // put your setup code here, to run once:
s.begin(9600);
Serial.begin(9600);
}
int f1=0;
int f2=0;
String st="sy";
void loop() {
  f1=f1+1;
  f2=f2+2;
  // put your main code here, to run repeatedly:
StaticJsonBuffer <1000> bf;
StaticJsonBuffer <1000> rec;
 JsonObject& root=bf.createObject();
 JsonObject& receives=rec.parseObject(h);
 if (receives==JsonObject::invalid())
 {
  Serial.println("no data from nodemcu");
  root["data3"]="no data from nide";
  }
  else
  {
    root["data3"] = receives["data3"];
    //st = (const char*)receive["data3"];
  }
root["data1"]=f1;
root["data2"]=f2;
//root["data3"]=st;
if(s.available()>0)
{
  root.printTo(s);
  Serial.println("send");
}
else
{
  Serial.println("NOt Available");}
//i=i+1;
//s.write(i);
delay(1000);
}

1 Ответ

0 голосов
/ 12 марта 2020

В вашем коде есть две причины, которые я могу заметить при первом взгляде:
1 Никогда не используйте задержку в серверных клиентских приложениях. Задержка останавливает обработку и запрещает связь. Подробнее о том, как не смотреть на blinkwithoutdelay, встроенный в Example в Arduino IDE.
2. Вы используете Arduino JSON: эта библиотека является абсолютным избыточным для 99% приложений, для которых она используется. Не поймите меня неправильно - библиотека libt предлагает фантастические c функции, но если это не нужно, это можно расценивать как хлам.
Я написал свое собственное простое JSON кодирование / декодирование (~ 250 строк кода) для быстродействующего приложения, использующего Arduino в качестве «генератора сигналов» и ESP8266 / ESP32 в качестве веб-сервера. Связь между Arduino и ESP очень важна по времени, и до сих пор она работает без проблем год,

...