Software serial Arduino vs NodeMCU
Hardware Connection
// Arduino UNO 9 8// | |
// | |
// NodeMCU 14(D6) 12(D5)
Software serial เป็นไลบลารีตัวนึงที่มีประโยชน์ และนำไปใช้บ่อยมาก เกี่ยวกับงานที่ต้องใช้ Uart TTL มากกว่า 1 ช่อง
โดยทั่วหากนำไลบลารี SoftwareSerial.h มาใช้เลยมันก็ง่าย แต่มันจะมีปัญหาในส่วนที่ ใช้กับ MCU คนละตัวกัน และ NodeMCU ไม่สามารถใช้ไลบลารีร่วมกับ UNO ได้นั้นเอง
แก้ปัญหา ดังนี้
// MCU Library inculed
// Arduino UNO AltSoftSerial AltSoftSerial.h
// NodeMCU espsoftwareserial SoftwareSerial.h
สาเหตุที่ Arduino UNO ต้องใช้ไลบลารี AltSoftSerial เนื่องด้วยหากติดตั้งไบลารี SoftwareSerial.h ของ UNO จะชนกับไลบลารีของ NodeMCU นั้นเอง
จากการทดสอบ board rate NodeMCU รับได้เพียงแค่ 9600 เท่านั้น
<<===Arduino UNO========================>>
#include <AltSoftSerial.h>
AltSoftSerial altSerial;
// Board Serial1 TX AltSoftSerial RX
// ----- ---------- ----------------
// Arduino UNO 9 8
void setup() {
Serial.begin(9600);
Serial.println("AltSoftSerial Test Begin");
altSerial.begin(9600);
altSerial.println("Hello World");
}
void loop() {
String content;
if (altSerial.available()) {
content = altSerial.readStringUntil('\r');
Serial.print(content);
}
altSerial.println("Hello World");
delay(500);
}
<<======================================>>
<<===NodeMCU ===========================>>
#include <SoftwareSerial.h>
//SoftwareSerial swSer(14, 12, false, 256); //Rx Tx
SoftwareSerial swSer(D5, D6, false, 256); //Rx Tx
// Board Serial TX Serial RX
// ----- ---------- -----------
// NodeMCU 14(D6) 12(D5)
void setup() {
Serial.begin(9600);
swSer.begin(9600);
Serial.println("\nSoftware serial test started");
for (char ch = ' '; ch <= 'z'; ch++) {
swSer.write(ch);
}
swSer.println("");
}
void loop() {
String content;
while (swSer.available() > 0) {
content = swSer.readStringUntil('\r');
Serial.print(content);
}
// swSer.println("Hello World");
// delay(1000);
}
<<======================================>>
ไม่มีความคิดเห็น:
แสดงความคิดเห็น