Arduino UNO与ESP8266 NODE MCU进行串口通信,UNO收集的传感器数据发送到MCU

        因为NodeMCU的模拟接口只有一个,所以使用多个传感器时没引脚可以接,这个问题困扰了我几天了,之前看别人说可以利用MEGA 2560或UNO板连接NODEMCU一起用,于是开始研究,试了好几天,一直不成功,各种各样的问题,今天终于把这个问题解决了,虽然对于大神门来说这很容易,但对于像我这样的新手来说,真的不容易,下面把我的经验介绍给大家,希望能帮助到像我一样的新手。

一、硬件准备:

        1、Arduino UNO板一块

        2、MQ_6传感器一个(其他传感器也行)

        3、ESP8266 NODEMCU板一块

        4、电源模块一个

        5、杜邦线若干条

二、硬件连线

—————————
MQ_6     UNO
VCC        +5V
GND       GND
A0           A1
—————————
UNO    NODE MCU
RX         D6
TX         D5
—————————-

三、代码部分

1、UNO端代码:先把UNO板连接电脑编译上传代码到UNO板子里。

int MQ_6;
void setup() {
  Serial.begin(9600);
  pinMode(A1,INPUT);
}

void loop() {
    char s[200];
    MQ_6 = analogRead(A1);
    sprintf(s,"{\"years\":%d}",MQ_6); //每隔1s发送一次字符数组s
    Serial.println(s);   
    delay(1000);

}

 2、NODEMCU端代码:再把电脑连接NODEMCU板,译上传代码到NODEMCU板子里。

SoftwareSerial uart1(14,12);//RX=d5,TX=d6
String UART_String="";
int MQ_6;
void setup() {
  Serial.begin(115200);
  uart1.listen();
  uart1.begin(9600);
}
void loop() {

  if(uart1.available()>0)
  {
    if(uart1.peek()!='\n')//在收到换行符前软串口接受数据并链接为字符串
    {
      UART_String+=(char)uart1.read();
    }
    else
    {
      uart1.read();
      const size_t capacity = JSON_OBJECT_SIZE(2) + 30;
      DynamicJsonDocument doc(capacity);
      deserializeJson(doc, UART_String);
      MQ_6 = doc["years"].as<int>();
      Serial.print("UART_String = ");Serial.println(UART_String);
      Serial.print("years = ");Serial.println(MQ_6);
      UART_String="";
      while (Serial.read() >= 0) {} //清除串口缓存
    }
  }
}

3、运行效果图:

 UNO板硬串口连接NODE MCU板软串口,把UNO板接收到的MQ_6传感器的数据通过JSON格式传到MCU板,然后再解析出相应数据

物联沃分享整理
物联沃-IOTWORD物联网 » Arduino UNO与ESP8266 NODE MCU进行串口通信,UNO收集的传感器数据发送到MCU

发表评论