คือผมกำลังทำโปรเจคซึ่งจะให้ตัว ESP8266 เข้าไปอ่านค่า Register ของเครื่อง Power Meter ผ่าน Modbus RTU แต่มันไม่สามารถเข้าไปอ่านได้ครับ ผมใช้ไลบรารี่ SoftwareSerial ครับซึ่งจะมีอุปกรณ์ดังนี้
1. ESP8266
2. MAX3485
3. Power Meter (EINet LT) เป็นการติดต่อสื่อสารแบบ RS485 ครับ
****ช่วยดูให้หน่อยครับว่าผมต่อสายและเขียนโค้ดถูกมั้ยครับ
การต่อสายดังนี้นะครับ
ESP8266 MAX3485 Power Meter (EINet LT)
D1 -----------------> RDX D-/B -------------> B
D2 -----------------> TDX D+/A ------------> A
GND ---------------> GND GND
3.3V ---------------> VCC
ส่วนตรงนี้เป็นโค้ดนะครับ
#include <ModbusMaster.h>
#include <SoftwareSerial.h>
#define EINet 1 // Slave Address (Default)
#define RX 5 // Pin D1(GPIO5)
#define TX 4 // Pin D2(GPIO4)
ModbusMaster node;
SoftwareSerial mySerial(RX, TX, 256);
void setup()
{
Serial.begin(9600);
mySerial.begin(9600);
node.begin(EINet, Serial);
bool state = true;
void loop()
{
uint8_t j, result;
uint16_t data[2];
result = node.readHoldingRegisters(4001, 2);
if (result == node.ku8MBSuccess)
{
for (j = 0; j < 2; j++)
{
data[j] = node.getResponseBuffer(j);
Serial.println(data[j]);
}
} else {
Serial.println("Retry!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
}
delay(500);
}
ปล. ผมคิดว่าอาจจะมีปัญหาที่ตัวไลบรารี่ SoftwareSerial หรือเปล่าไม่แน่ใจครับ ขอให้อาจารย์ทุกท่านช่วยผมหน่อยครับผม ขอบคุณครับ
ที่ร้านยังไม่ข้อมูลของเครื่อง Power Meter
เบื้องต้นแนะนำลองดูในคอร์สสอน Arduino ESP8266 ที่หน้าเว็บด้านบนซ้าย จะมีแนะนำการใช้งาน SoftwareSerial ลองทดสอบที่จุดนี้ก่อนได้ครับ