从arduino uno向nodemcu发送一个整数值

从arduino uno向nodemcu发送一个整数值,c,json,arduino,mqtt,esp8266,C,Json,Arduino,Mqtt,Esp8266,我想将Arduino UNO从传感器读取的一个变量发送到NodeMCU,这样它就可以将其作为json发送到MQTT服务器 我尝试过在web上看到的多种代码实现,但是当我在控制台上观看我为SoftwareSerial设置的波特率时,它只会给我随机字符串 联合国办事处代码: #包括 #包括 软件串行toNode(2,3);//(接收、发送) int传感器引脚=A0; int值; 无效设置(){ Serial.begin(9600); toNode.begin(115200); pinMode(9,输

我想将Arduino UNO从传感器读取的一个变量发送到NodeMCU,这样它就可以将其作为json发送到MQTT服务器

我尝试过在web上看到的多种代码实现,但是当我在控制台上观看我为SoftwareSerial设置的波特率时,它只会给我随机字符串

联合国办事处代码:

#包括
#包括
软件串行toNode(2,3);//(接收、发送)
int传感器引脚=A0;
int值;
无效设置(){
Serial.begin(9600);
toNode.begin(115200);
pinMode(9,输出);
pinMode(10,输出);
pinMode(8,输出);
}
void循环(){
传感器值=模拟读数(传感器引脚);
Serial.println(“模拟值:”);
Serial.println(传感器值);

如果(sensorValue300&&sensorValue300不支持115200波特率。您可能可以获得57600,但最好尝试9600或更少。

哦,您将无法使用softserial来使用115200。请将波特率降低到9600或更少,然后重试。由于您使用的是println,它应发送整数的文本表示形式,以便如果我尝试使用9600,它会在其原始值上发送整数吗?您的数据损坏问题是因为Bitbang过程没有将输出保持在正确的值中,以便输入理解它。(如果使用错误的数据速率,您会看到类似的问题。)由于处理器无法在读取数据的时间内完成其正常工作,因此位被扭曲。(问题可能在发送方、接收方或两者上,因为两端都使用softwareserial)
#include <SoftwareSerial.h>
#include <String.h>
SoftwareSerial toNode(2,3); // (Rx, Tx)

int sensorPin = A0;
int sensorValue;

void setup() {
 Serial.begin(9600);
 toNode.begin(115200);

 pinMode(9, OUTPUT);
 pinMode(10, OUTPUT);
 pinMode(8, OUTPUT);
}

void loop() {

 sensorValue = analogRead(sensorPin); 
 Serial.println("Analog Value : ");
 Serial.println(sensorValue);

 if (sensorValue<300) {
 digitalWrite(10, HIGH);
 digitalWrite(9, LOW);
 digitalWrite(8, LOW);
 parseJson(sensorValue);
 }
 else if(sensorValue>300 && sensorValue<450){
 digitalWrite(9, HIGH);
 digitalWrite(8, LOW);
 digitalWrite(10, LOW);
 parseJson(sensorValue);
 }
 else if(sensorValue < 300)
 {
 digitalWrite(8, HIGH);
 digitalWrite(9, LOW);
 digitalWrite(10, LOW);
 parseJson(sensorValue);
 }

 delay(1000); 
}

void parseJson(int criticidade) {
   String njs;
   njs = String(criticidade);
   toNode.println(njs);
}
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <SoftwareSerial.h>
#include <String.h>
SoftwareSerial fromUno(D5,D6); // (Rx, Tx)

char* ssid = "B";
char* password =  "A";
const char* mqttServer = "Z";
const int mqttPort = 1;
const char* mqttUser = "Y";
const char* mqttPassword = "X;

WiFiClient espClient;
PubSubClient client(espClient);

void setup() {

  Serial.begin(9600);
  fromUno.begin(115200);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.println("Connecting to WiFi..");
  }

  Serial.println("Connected to the WiFi network");

  client.setServer(mqttServer, mqttPort);

  while (!client.connected()) {
    Serial.println("Connecting to MQTT...");

    if (client.connect("ESP32Client", mqttUser, mqttPassword )) {

      Serial.println("connected");

    } else {

      Serial.print("failed with state ");
      Serial.print(client.state());
      delay(2000);

    }
  }
}

void loop() {
   char json[100];
   json[0] = fromUno.read();
   String json2 = "{\"planta\":{\"umidade\":200,\"criticidade\":1}}";

  Serial.println("Sending message to MQTT topic..");

  if (client.publish("test", json2) == true) {
    Serial.println("Success sending message");
  } else {
    Serial.println("Error sending message");
  }

  client.loop();
  Serial.println("-------------");

  delay(10000);
}