การส่งและรับ ข้อมูล ผ่าน Rx Tx ด้วย ESP32

การต่อใช้งาน

ตัวอ่าน

#include <HardwareSerial.h>
String a;

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

void loop() {
  

  Serial.println(String("Trst => ") + Serial2.read());
  delay(200);

  
}

ตัวส่งค่า

#include <HardwareSerial.h>
//HardwareSerial Serial2(2);             //Needed since this is an ESP32
int a = 55;
void setup() {
  Serial.begin(115200);
  Serial2.begin(9600, SERIAL_8N1, 16, 17);

}

void loop() {  
 
     //if (Serial2.readString()){

   

     //if(Serial2.readString()== "Question1"){ //มีการถามคำถาม Question1 ส่งข้อมูลตัวแปร a ออกไป

      //Serial.print(a);

     //}
     
     //}
     Serial2.write(a);
     delay(200);
  
}

output ที่ตัวอ่าน


รูปแบบที่ 2

ตัวรับ

#include <HardwareSerial.h>

int a;

void setup() {

  // initialize serial:

  Serial.begin(115200);

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

}

void loop() {

a = Serial2.read();

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

 if (a == 123){

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

  delay(200);

 }

  
  

}

ตัวส่ง

#include <HardwareSerial.h>
//HardwareSerial Serial2(2);             //Needed since this is an ESP32
int Sensor1_val1 = 123; //รหัส อ่าน
int _Sensor1_val1 = 50; // ค่าที่อ่านได้





void setup() {
  Serial.begin(115200);
  Serial2.begin(9600, SERIAL_8N1, 16, 17);

}

void loop() {  
 

     Serial2.write(Sensor1_val1);
     Serial2.write(_Sensor1_val1);
     delay(200);
  
}

output จากตัวรับ

อ่านค่า ได้ไม่เกิน 255

ตัวส่งเต็ม

#include <HardwareSerial.h>

//HardwareSerial Serial2(2);             //Needed since this is an ESP32

int Sensor3_val1 = 123; //รหัส อ่าน

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

int Sensor3_val2 = 223; //รหัส อ่าน

int _Sensor3_val2 = 40; // ค่าที่อ่านได้

int Sensor4_val1 = 245; //รหัส อ่าน

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

int Sensor4_val2 = 255; //รหัส อ่าน

int _Sensor4_val2 = 20; // ค่าที่อ่านได้

bool Read_Sensor3_val1 = false;

bool Read_Sensor3_val2 = false;

bool Read_Sensor4_val1 = false;

bool Read_Sensor4_val2 = false;

void setup() {

  Serial.begin(115200);

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

}

void loop() {  

 

    if(Read_Sensor3_val1 == false){

       Serial2.write(Sensor3_val1);

       Serial2.write(_Sensor3_val1);

       Serial.println("Send_Sensor3_val1");

       delay(200);

       Read_Sensor3_val1 = Serial2.read();

    }

    if((Read_Sensor3_val2 == false) && (Read_Sensor3_val1 == true)){

       Serial2.write(Sensor3_val2);

       Serial2.write(_Sensor3_val2);

       Serial.println("Send_Sensor3_val2");

       delay(200);

       Read_Sensor3_val2 = Serial2.read();

    }

    if((Read_Sensor4_val1 == false) && (Read_Sensor3_val2 == true)){

       Serial2.write(Sensor4_val1);

       Serial2.write(_Sensor4_val1);

       Serial.println("Send_Sensor4_val1");

       delay(200);

       Read_Sensor4_val1 = Serial2.read();

    }

    if((Read_Sensor4_val2 == false) && (Read_Sensor4_val1 == true)){

       Serial2.write(Sensor4_val2);

       Serial2.write(_Sensor4_val2);

       Serial.println("Send_Sensor4_val2");

       delay(200);

       Read_Sensor4_val2 = Serial2.read();

    }

       Read_Sensor3_val1 = false;

       Read_Sensor3_val2 = false;

       Read_Sensor4_val1 = false;

       Read_Sensor4_val2 = false;

       

}

ตัวรับ

#include <HardwareSerial.h>

int Get_data_esp2;

bool Read_Sensor3_val1 = false;

bool Read_Sensor3_val2 = false;

bool Read_Sensor4_val1 = false;

bool Read_Sensor4_val2 = false;

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

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

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

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

void setup() {

  // initialize serial:

  Serial.begin(115200);

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

}

void loop() {

Get_data_esp2 = Serial2.read();

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

  if (Get_data_esp2 == 123){

  _Sensor3_val1 = Serial2.read();

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

  Read_Sensor3_val1 = true;

  Serial2.write(Read_Sensor3_val1);

  delay(200);

 }

  if (Get_data_esp2 == 223){

  _Sensor3_val2 = Serial2.read();

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

  Read_Sensor3_val2 = true;

  Serial2.write(Read_Sensor3_val2);

  delay(200);

 }

 if (Get_data_esp2 == 245){

  _Sensor4_val1 = Serial2.read();

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

  Read_Sensor4_val1 = true;

  Serial2.write(Read_Sensor4_val1);

  delay(200);

 }

if (Get_data_esp2 == 255){

  _Sensor4_val2 = Serial2.read();

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

  Read_Sensor4_val2 = true;

  Serial2.write(Read_Sensor4_val2);

  delay(200);

 }

 

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

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

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

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

delay(2000);

  
  

}

output

พี่ครับโค๊ดของพี่ แบบนี้เลยครับที่ผมตามหา มันเป็นประโยชน์มากเลยครับ ขอบคุณมากเลยนะครับพี่

1 Likes

จัดไปคร้าาาพ

ถ้าตัวส่งเป็น arduino unor3 ตัวรับเป็น ESP32 ต้องต่อขา tx rx เเบบไหนครับ

ถ้าใช้เป็น arduino uno กับ ESP32 โดยทั้งคู่ต้องเป็นทั้งตัวส่งและตัวรับ ควรต่อ tx rx แบบไหนครับ

โค้ต URT ฝั่ง Arduino

void setup() {
  Serial.begin(9600);
}
void loop() {
  Serial.println("Hello eleceasy.com");
  delay(1500);
}

โค้ต URT ฝั่ง ESP32

#define RX2pin 16
#define TX2pin 17
void setup() {
  Serial.begin(115200);
  Serial2.begin(9600, SERIAL_8N1, RX2pin, TX2pin);
}
void loop() {
    Serial.println("Message Received: ");
    Serial.println(Serial2.readString());
}


ในกรณีที่ arduino Serial.print temp เเละ temp1 เเล้วต้องการให้ esp32 อ่านค่า temp เเละ temp1 ต้องเเก้ไขโค๊ดส่วนไหนครับ

void setup() {
  Serial.begin(9600);
}
void loop() {
  Serial.println(temp);
  delay(1500);
Serial.println(temp1);
  delay(1500);
}
1 Likes

ครับตอนนี้ผมเหลือโค๊ดฝั่งของ esp32 เพื่อให้อ่านค่า temp เเละ temp1 จาก arduino

ทำตามตัวอย่างเลยครับ

1 Likes


ถ้า esp32 อ่านค่า temp เเละ temp1 เเล้ว นำค่าของ temp เปิด ไฟหลอที่ 1 , temp1 เปิดไฟหลอดที่ 2 ต้องเเก้ไขเพิ่มเติมในส่วนของโค๊ด esp32 ยังไงครับ

ผมยังไม่เห็นการใส่เงื่อนไขในส่วนนี้ เราเรียนพื้นฐาน การเขียนมาบ้างรึป่าวครับ

พอเรียนมาบ้างเเล้วครับ ตอนนี้ที่ผมกำลังทำอยู่คือ ถ้าต้องการนำค่า temperature ที่ esp32 อ่านได้ออกควบคุมหลอดไฟ ผมต้องเขียนโค๊ดเพิ่มในส่วน ของesp32 ยังไงครับ

ลองใช้ที่เรียนมาใส่ดูสิครับ ว่าเป็นยังไงผมจะช่วยตรวจดูให้ ที่เห็นอยู่นี้คือโค้ตที่ยังไม่ได้ทำอะไรเลยครับ

ขอวิธีการส่งข้อมูลระหว่างบอร์ด ESP32 ไปบอร์ด ESP32-cam พร้อมโค้ดตัวอย่างหน่อยครับ

ใช้โค้ตในกระทู้นี้ก็ได้

ในโค้ดจำเป็นต้องระบุรหัสที่อ่านมั้ยคะ หากต้องการต่อกับเซนเซอร์หลายๆตัวแล้วให้วัดค่าออกมาพร้อมๆกันค่ะ

ถ้าไม่ระบุรหัสเราก็ไม่รู้สิครับว่ารับค่าของตัวไหนมา