微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ESP8266 和 Arduino UNO

如何解决ESP8266 和 Arduino UNO

我遇到了一个奇怪的问题。我正在提供我的代码,但我相信问题出在接线上,我将在稍后解释。 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,这就是设置:wiring pic

解决方法

好的,我刚刚设法解决了这个问题。我不得不像这样将引脚更改为 0 和 1:

SoftwareSerial s(0,1);

但是,此引脚也用于与您的计算机通信,导致该引脚被占用时,arduino ide 无法将代码上传到我们的 arduino。简单的解决方案是上传代码然后连接NodeMcu ESP8266。希望这对某人有所帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。