รบกวนดู Code ให้หน่อยครับ การติดต่อระหว่าง Arduino โดยใช้ XBee ทำไม Serial Monitor ไม่แสดงค่า

- รบกวนดู Code ให้หน่อยครับ การติดต่อระหว่าง Arduino โดยใช้ XBee ทำไม Serial Monitor ไม่แสดงค่า

---------------------------------------------------------------------------------------------------------------------------------------
1) Arduino XBee Cordinator AT ( ส่งค่าไปยัง Routor AT และ รับค่ามาแสดงที่ Serial Monitor )

include <SoftwareSerial.h>
#define RxD 2
#define TxD 3
SoftwareSerial mySerial(RxD, TxD); // RX, TX
char incoming;
char incoming_2;

void setup() {
  Serial.begin(9600);
  pinMode(RxD, INPUT);
  pinMode(TxD, OUTPUT);
  mySerial.begin(9600);
}

void loop() {
  if (Serial.available()) {
    char incoming_2  = Serial.read();
    mySerial.write(incoming_2);
  }
  else if (mySerial.available()) {
    char incoming  = mySerial.read();
    Serial.println(incoming);
  }
}

---------------------------------------------------------------------------------------------------------------------------
2) Arduino Routor AT ( วัดอุณหภูมิ , รับค่าจาก Cordinator ,ควบคุมRelay, ส่งค่าอุณหภูมิกลับไปยัง Cordinator )

#include <OneWire.h>

#include <SoftwareSerial.h>
#define RxD 2
#define TxD 3
SoftwareSerial mySerial(RxD,TxD); // RX, TX

int DS18S20_Pin = 4; //DS18S20 Signal pin on digital 4
#define Relay_fan_1 5  
#define Relay_fan_2 6
#define Relay_fan_3 7  
#define Relay_fan_4 8
char incoming;

//Temperature chip i/o
OneWire ds(DS18S20_Pin); // on digital pin 4

void setup(void) {
Serial.begin(9600);
pinMode(Relay_fan_1, OUTPUT);
pinMode(Relay_fan_2, OUTPUT);
pinMode(Relay_fan_3, OUTPUT);
pinMode(Relay_fan_4, OUTPUT);

pinMode(RxD, INPUT);
pinMode(TxD, OUTPUT);
mySerial.begin(9600);
}

void loop(void) {
float temperature = getTemp();
  if (mySerial.available())  {
        incoming  = mySerial.read();
        switch(incoming) {
            case 't' :  mySerial.println(temperature);break;
            case 'a' :  digitalWrite(Relay_fan_1,HIGH);break;
            case 'b' :  digitalWrite(Relay_fan_2,HIGH); break;
            case 'c' :  digitalWrite(Relay_fan_3,HIGH);break;
            case 'd' :  digitalWrite(Relay_fan_4,HIGH);break;
            case 'v' :  digitalWrite(Relay_fan_1,LOW);break;
            case 'w' :  digitalWrite(Relay_fan_2,LOW); break;
            case 'y' :  digitalWrite(Relay_fan_3,LOW);break;
            case 'z' :  digitalWrite(Relay_fan_4,LOW);break;    
        }
    }
}
// ยังมีอีก แต่ยาว เป็น Code ของ DS18S20
-----------------------------------------------------------------------------------------------------------
- ผม ทดลองส่งค่า จาก Cordinator ผ่าน XCTU ( ควบคุมRelayได้ , รับค่าอุณหภูมิได้ )
- แต่เมื่อลองส่งข้อมูลผ่าน Serial Monitor ( ควบคุมRelayได้ , ไม่มีค่าอุณหภูมิแสดง )

- ผมเลยสงสัยว่า เป็นเพราะ Code ส่วนนี้หรือเปล่า

else if (mySerial.available()) {                              //เมื่อมีข้อมูล ส่งมาจาก XBee
    char incoming  = mySerial.read();                    //อ่านข้อมูล ที่ส่งมากจาก XBee เก็บไว้ใน ตัวแปร incoming
    Serial.println(incoming);                                  //แสดงค่า incoming ผ่าน Serial Monitor
  }
----------------------------------------------------------------------------------------------------------
- หรือต้องเปลี่ยน จาก mySerial.println เป็น mySerial.write
         case 't' :  mySerial.println(temperature);break;

------------------------------------------------------------------------------------------------------------
- ผมอ่าน Textbook เค้าใช้ RX = pin0 , TX = pin1 แล้วใช้ Serial เลย
ผมใช้ SoftwareSerial.h มันดูง่ายกว่า
ผมเอาต้นแบบมาจาก เวปนี้http://thaieasyelec.com/article-wiki/embedded-electronics-application/learning-xbee-with-xbee-series-2-starter-kit.html
----------------------------------------------------------------------------------------------------------
- รบกวนด้วยครับ ขอบคุณครับ
คำตอบที่ได้รับเลือกจากเจ้าของกระทู้
ความคิดเห็นที่ 1
ใจเย็นๆเจ้าค่ะ ทำทีละส่วนให้มันใช้งานได้ทีละท่อน แล้วค่อยเอามาประกอบกัน

1. ทำ Arduino ให้ต่อกับ serial port ให้ได้ก่อน อันนี้ง่ายที่สุด
2. ทำ Arduino ให้อ่านค่าอุณหภูมิ แล้วส่งออก serial port
3. ทำ XBee ให้ใช้ได้
4. ทำ XBee เชื่อมต่อกับ Arduino อีกตัวให้ได้

แล้วเอาทั้งหมดมาประกอบกัน
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่