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

Arduino与NodeMcu的串行通信

如何解决Arduino与NodeMcu的串行通信

我希望通过usb电缆通过Arduino mega的键盘接收输入,然后通过串行通信(TX-RX)将其发送到nodemcu,以便可以将其发送到服务器(从nodemcu的wifi模块)。

我试图为Arduino和NodeMCu编写代码,有人可以帮助我更正它们吗


Arduino超级代码

#include <SoftwareSerial.h>
SoftwareSerial trans(19,18);

String scr ="";
String User = "";
String Request = "";
String Roomid = "";
String Email = "";

void setup() {
  Serial.begin(115200);
  trans.begin(115200);
}

void loop() {
  Serial.println("Enter your User ID.");
  while (Serial.available() == 0) {}
  User = Serial.readString(); //Reading the Input string from Serial port.
  Serial.println("Enter your Request.");

  while (Serial.available() == 0) {}
  Request = Serial.readString();
  Serial.println("Enter your Roomid.");

  while (Serial.available() == 0) {}
  Roomid = Serial.readString();
  Serial.println("Enter your Email.");

  while (Serial.available() == 0) {}
  Email = Serial.readString();
  Serial.println("-------------------------"); //Showing the details
  Serial.println("YOUR User ID:" + User);
  Serial.println("YOUR Request ID:" + Request);
  Serial.println("YOUR Room id:" + Roomid);
  Serial.println("YOUR EMAIL:" + Email);
  Serial.println("Thanks You...");
  Serial.println("");
  scr = User+Request+Roomid+Email;
  
  trans.write(scr);
  while (Serial.available() == 0) {}
}

NodeMcu代码

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266HTTPClient.h>
#include<SoftwareSerial.h> //Included SoftwareSerial Library

const char* ssid="SLT-4566";
const char* password="1234";
int data;
const char *host = "0.0.0.0"; //Your pc or server (database) IP,example : 192.168.0.0,if you are a windows os user,open cmd,then type ipconfig then look at IPv4 Address.

void setup() {
  // put your setup code here,to run once:
  pinMode(2,OUTPUT);

  delay(1000);
  Serial.begin(115200);
  WiFi.mode(WIFI_OFF);        //Prevents reconnection issue (taking too long to connect)
  delay(1000);
  WiFi.mode(WIFI_STA);        //This line hides the viewing of ESP as wifi hotspot
  
  WiFi.begin(ssid,password); //Connect to your WiFi router
  Serial.println("");

  Serial.print("Connecting");
  // Wait for connection
  while (WiFi.status() != WL_CONNECTED) {
    delay(250);
    Serial.print(".");
    delay(250);
  }

  //If connection successful show IP address in serial monitor
  Serial.println("");
  Serial.println("Connected to Network/ssid");
  Serial.print(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());  //IP address assigned to your ESP
}

void loop() {
  // put your main code here,to run repeatedly:
  data = Serial.read();
  Serial.println(data);
}

解决方法

并非Mega和Mega 2560上的所有引脚都支持更改中断,因此只有以下引脚可用于RX:10、11、12、13、14、15、50、51、52、53,A8(62) ,A9(63),A10(64),A11(65),A12(66),A13(67),A14(68),A15(69),所以这是第一个问题。

serial.read()命令仅读取一个字符,也可以在此处测试serial.readString()。

但是, 我不知道,为什么需要兆与NodeMCU串行通信。

希望我能帮上忙! 祝你好运!

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