รับค่า Sensor จาก RS232 to TTL ค่าไม่ขึ้น (มือใหม่ครับเพิ่งหัดเล่น)

คือ ผมต้องการให้ ESP32 Node MCU รับค่าจาก Sensor วัดเสียง ผ่านทาง RS232 แล้วนำค่าไปแสดงที่จออีกที่ครับ

สิ่งที่ผมเจอคือ ไม่ได้ค่าเลยครับ

เลยสงสัยว่า ต้องใช้ตัวแปลง เพิ่มหรือป่าวครับ

#include <HardwareSerial.h>

int Get_data_esp2;

bool Read_Sensor2_val1 = false;

bool Read_Sensor3_val1 = false;

bool Read_Sensor4_val1 = false;

bool Read_Sensor5_val1 = false;

int _Sensor2_val1; // ค่าที่อ่านได้

int _Sensor3_val1; // ค่าที่อ่านได้

int _Sensor4_val1; // ค่าที่อ่านได้

int _Sensor5_val1; // ค่าที่อ่านได้

void setup() {

  // initialize serial:

  Serial.begin(115200);

  Serial2.begin(115200,SERIAL_8N1, 16, 17);

}

void loop() {

Get_data_esp2 = Serial2.read();

Serial.println(String("กำลังอ่านข้อมูล => ") + Get_data_esp2);

if (Get_data_esp2 == 1){

  _Sensor3_val1 = Serial2.read();

  Serial.println("อ่านเซ็นเซอร์ตัวที่2");

  Read_Sensor2_val1 = true;

  delay(200);

 }

  if (Get_data_esp2 == -1){

  _Sensor3_val1 = Serial2.read();

  Serial.println("อ่านเซ็นเซอร์ตัวที่3");

  Read_Sensor3_val1 = true;

  delay(200);

 }

 if (Get_data_esp2 == 0){

  _Sensor4_val1 = Serial2.read();

  Serial.println("อ่านเซ็นเซอร์ตัวที่4");

  Read_Sensor4_val1 = true;

  delay(200);
 }

if (Get_data_esp2 == 255){

  _Sensor5_val1 = Serial2.read();

  Serial.println("อ่านเซ็นเซอร์ตัวที่5");

  Read_Sensor5_val1 = true;

  delay(200);

 }
 
 Serial.println(String("ค่าจากเซ็นเซอร์ตัวที่2  => ") + _Sensor2_val1);

 Serial.println(String("ค่าจากเซ็นเซอร์ตัวที่3  => ") + _Sensor3_val1);

 Serial.println(String("ค่าจากเซ็นเซอร์ตัวที่4  => ") + _Sensor4_val1);

 Serial.println(String("ค่าจากเซ็นเซอร์ตัวที่3  => ") + _Sensor5_val1);

delay(2000);

}

เหมือนโค้ตจะไม่ครบ กับภาพ ลงรายละเอียดใหม่หน่อยครับ

ครับผม ต้องขออภัยด้วยครับ

ผมแก้ไข รายละเอียดcode ใหม่แล้วครับ และได้ลงรูปที่ wiring sensor กับ esp32 Node MCU เพิ่มครับ

1 Likes

จากโค้ดเหมือนจะติดตอนส่งค่าออกครับ ไม่มั่นใจ ลองรันโค้ดนี้ดูได้ไหมครับ
#include <HardwareSerial.h>

int Get_data_esp2;

bool Read_Sensor2_val1 = false;
bool Read_Sensor3_val1 = false;
bool Read_Sensor4_val1 = false;
bool Read_Sensor5_val1 = false;

int _Sensor2_val1; // ค่าที่อ่านได้
int _Sensor3_val1; // ค่าที่อ่านได้
int _Sensor4_val1; // ค่าที่อ่านได้
int _Sensor5_val1; // ค่าที่อ่านได้

void setup() {
  // initialize serial:
  Serial.begin(115200);
  Serial2.begin(115200,SERIAL_8N1, 16, 17);
}

void loop() {
  // Read and process all available bytes from Serial2 buffer
  while (Serial2.available()) {
    Get_data_esp2 = Serial2.read();
    Serial.println(String("กำลังอ่านข้อมูล => ") + Get_data_esp2);
  
    if (Get_data_esp2 == 1){
      _Sensor2_val1 = Serial2.read();
      Serial.println("อ่านเซ็นเซอร์ตัวที่2");
      Read_Sensor2_val1 = true;
    } else if (Get_data_esp2 == -1){
      _Sensor3_val1 = Serial2.read();
      Serial.println("อ่านเซ็นเซอร์ตัวที่3");
      Read_Sensor3_val1 = true;
    } else if (Get_data_esp2 == 0){
      _Sensor4_val1 = Serial2.read();
      Serial.println("อ่านเซ็นเซอร์ตัวที่4");
      Read_Sensor4_val1 = true;
    } else if (Get_data_esp2 == 255){
      _Sensor5_val1 = Serial2.read();
      Serial.println("อ่านเซ็นเซอร์ตัวที่5");
      Read_Sensor5_val1 = true;
    }
  }
  
  // Print sensor values
  Serial.println(String("ค่าจากเซ็นเซอร์ตัวที่2  => ") + _Sensor2_val1);
  Serial.println(String("ค่าจากเซ็นเซอร์ตัวที่3  => ") + _Sensor3_val1);
  Serial.println(String("ค่าจากเซ็นเซอร์ตัวที่4  => ") + _Sensor4_val1);
  Serial.println(String("ค่าจากเซ็นเซอร์ตัวที่5  => ") + _Sensor5_val1);
  
  delay(2000);
}

จะลองนำ code ไป run ดูครับ ขอบคุณครับ

จาก code ที่ลองนำไป run ดู เหมือนจะไม่ได้ค่าจาก Serial2.available() ใน Loop While ครับ

หรือจะต้องหาตัวแปลง ผิดประเภทครับ

ผมว่าน่าจะเป็นที่ต่อขาสัญญาณ sensor กับ บอร์ดหรือเปล่า I2C, SPI, UART หรือ ลองเสียบเเค่ sensor ตัวเดียว เเล้วลอง print ค่าออกมาดูก่อนก็ได้ครับ อาจจะลองไล่ debug ทีละจุด