วันอาทิตย์ที่ 13 ธันวาคม พ.ศ. 2552

RF TLP/RLP 433 MHz






























ยืมของเค้ามาเล่น 555 สาเหตุที่ห่างหายไปนานไม่ได้มาอัพเดทบล๊อกซักทีเพราะต้องทำโปรเจกจบครับบวกกับเอาเงินไปทำโปรเจกหมด ก็เลย ... อ่ะนะ หลังจากเหนื่อยจากการทำโปรเจกจบซึ่งไม่เสร็จสักที ปัญหามาเรื่อยๆ มันจะมาอะไรกันนักหนา เอ้าเข้าเรื่อง เห็นน้องทดลอง โมดูล RF โดยต่อ Encoder เอาแล้วมันนั่งทำทั้งวันจนสามทุ่ม ก็เลยบอกยืมมาเล่นหน่อย ได้แล้วรีบกลับห้องมาถึงก็เอาบอร์ดทดลอง ที่ทำเป็นโปรเจกมาใช้ เป็นการทดสอบไปในตัว 555 ไอ้เราก็ต่อสายตามดาต้าชีต ไม่ออกแฮะ ต่อไปต่อมา ออกแต่เป็นขยะ เออเอาเข้าไป เลยหาข้อมูลในเน็ตเค้าว่าขยะออกมาเยอะมาก ต้องเขียนส่งค่า 0x55 ก่อน ตามด้วยค่าเช็คอะไรซักอย่าง ค่อยตามด้วยข้อมูล แล้วต่อด้วย Chack Sum ไอ้เราก็ง่วงนอนแล้ว 5 ทุ่ม ก็เลยเอาโค็ด GPS ที่เขียนใว้มาแก้ ไม่ต้องมี Chack Sum หรอกเดี๋ยวไม่ได้นอน ทำไปทำมาเออ เป็นอย่างที่เค้าว่า ใช้ได้ แต่ใช้ baud=1200 มากกว่านั้น ขยะเยอะมากทั้งที่โมดูลบอกได้ถึง 4800 ผมว่าใครจะซื้อมาเล่นก็ได้อยู่แต่เอาจริงๆ จังๆให้ทำงานซักอย่างคงไม่เหมาะ แต่มันก็ขึ้นกับโปรแกรมด้วยนะครับ ผมอาจจะเขียนไม่ดีเอง เอ้ามาดูโค๊ดกันดีกว่า เดี๋ยวจะเบื่อผมซะก่อน เดี๋ยวรูปตามมานะครับ กล้องมีคนเอาไปลืมเอารูปออก

ตัวรับครับ

#include <16f877a.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use rs232(baud=1200, xmit=PIN_C6, rcv=PIN_C7,stream=GPS,errors)

#include
#include

char key_char[20];
int8 key_int=999;

void read_key(void);

void read_key(void)
{
char c=0;
char buffer[25];
char k=0;
char sentent[]="RMC";
int8 i=0,j=0,key_count=0;
do
{
while ( fgetc(GPS) != '$' );

for (k=0;k<5;k++) c =" fgetc(GPS);" i="0;i

output_toggle(PIN_D0);
}
}
}

ตัวส่งครับ

#include <16f877a.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=10000000)
#use rs232(baud=1200, xmit=PIN_C6, rcv=PIN_C7)

void main()
{
while (TRUE) {
delay_ms(1000);
printf("%x%x%x%x%x%x$RMC,99,*",0x55,0x55,0x55,0x55,0x55,0x55);
}
}


จากโค๊ดจะเห็นได้ว่าผมส่ง 555555555555$RMC,99,* ออกไป เมื่อตอนรับก็จะเช็ค $ แล้วเช็ค RMC แล้วค่อยเก็บค่า ก็จะได้ ,99, เมื่อเจอ * ก็จะเป็นการสิ้นสุดการรับ จากนั้นก็มาตัดเอาแต่ ตัวที่อยู่ใน ,xx,
ก็จะได้ค่าที่เราส่งไป หลังจานั้นก็จะเอาไปทำอะไรก็แล้วแต่การประยุกต์ครับ

กลับไปทำการบ้านก่อนครับ ช่วงนี้ใกล้สอบด้วย เหนื่อยจริงๆ ไหนจะโปรเจกอีก bye bye

4 ความคิดเห็น:

  1. ลืมบอก MCU กับ โมดูลตรงๆเลยครับ

    ตอบลบ
  2. ไม่ระบุชื่อ23 กรกฎาคม 2553 เวลา 09:00

    โค้ดรับดูไม่เข้าใจคับช่วยชี้แนะหน่อยคับ

    ตอบลบ
  3. โค๊ด มันหายไปแล้วครับ ยังไงลองดู ฟังก์ชัน void readMessage() ของ GPS ดูนะครับ เหมือนๆ กัน ครับ


    เมื่อตอนรับก็จะเช็ค $ แล้วเช็ค RMC แล้วค่อยเก็บค่า ก็จะได้ ,99, เมื่อเจอ * ก็จะเป็นการสิ้นสุดการรับ (ทดลองส่งค่า 99)

    ตอบลบ
  4. ไม่ระบุชื่อ8 มกราคม 2554 เวลา 17:34

    อยากได้โค้ดเต็มนะครับพี่ อธิบายให้ด้วยนะครับ
    ขอบพระคุณมากๆๆเลย

    ตอบลบ