-1

私は奇妙な問題を抱えています。コードを提供していますが、問題は配線にあると思います。これについてはすぐに説明します。ESP8266 コード:

#include <SoftwareSerial.h>
SoftwareSerial s(12,14);
#include <ArduinoJson.h>
 
void setup() {
s.begin(9600);
Serial.begin(9600);
}
 
void loop() {
 StaticJsonBuffer<1000> jsonBuffer;
 JsonObject& root = jsonBuffer.createObject();
  root["data1"] = 100;
  root["data2"] = 200;
 Serial.println(s.available());
if(s.available()>0)
{
 root.printTo(s);
}
delay(1000);
}

Arduino UNO コード:

#include <SoftwareSerial.h>
#include <ArduinoJson.h>
SoftwareSerial s(5,6);
 


void setup() {
  // Initialize Serial port
  Serial.begin(9600);
  s.begin(9600);
  //while (!Serial) continue;
  Serial.println("START");
 
}
 
void loop() {
 StaticJsonBuffer<1000> jsonBuffer;
  JsonObject& root = jsonBuffer.parseObject(s);
  if (root == JsonObject::invalid()){
    Serial.println("JSON invalid");
    Serial.println(s.available());
    return;
  }
  Serial.println("JSON received and parsed");
  Serial.print("Data 1: ");
  int data1=root["data1"];
  Serial.println(data1);
  Serial.print("Data 2: ");
  int data2=root["data2"];
  Serial.println(data2);

  delay(1000);
 
}

そのため、Arduino Uno のシリアル モニター (arduino と esp8266 の両方を接続した後) は、s.available() = 0 と表示されます。したがって、JSON を受信して​​いません。奇妙なことに、Arduino のピンからケーブルを取り出し、それらを TX および RX ピンに挿入してから、ピン 5 および 6 に戻すと、すべてが機能します。arduino や ESP のプラグを抜いて、それらを再び問題に差し込むと、s.availalbe() = 0 が繰り返されます (ケーブルを取り出して元に戻すという奇妙な操作を行うまで)。配線に関して、私が理解していないことがあると思います。それら(espとuno)を共通のGNDに接続しようとしましたが、それでも機能しません。ここで私が見逃している可能性のあるアイデアはありますか? ありがとう

PS、それがセットアップです:配線写真

4

1 に答える 1

-1

さて、問題を解決することができました。次のように、ピンを 0 と 1 に変更する必要がありました。

SoftwareSerial s(0,1);

ただし、このピンはコンピューターとの通信にも使用されるため、このピンが占有されている間は arduino ide がコードを arduino にアップロードできません。簡単な解決策は、コードをアップロードして、後で NodeMcu ESP8266 を接続することでした。これが誰かに役立つことを願っています。

于 2021-01-12T17:29:34.837 に答える