關於RS232與無線模組問題 |
答題得分者是:暗黑破壞神
|
h741234
一般會員 發表:5 回覆:3 積分:1 註冊:2007-08-16 發送簡訊給我 |
|
aki
版主 發表:30 回覆:696 積分:755 註冊:2004-01-15 發送簡訊給我 |
|
aki
版主 發表:30 回覆:696 積分:755 註冊:2004-01-15 發送簡訊給我 |
以前的 post (1)
========================= 發信人: FreeZ 標 題: Re: 89C51 與 RF 發射模組的問題.... 發信站: Free Tech (Mon May 21 05:20:09 2001) 61-216-128-201.hinet-ip.hinet.net 轉信站: Maxwell!bbs.ee.ntu!news.ntu!ctu-gate!news.nctu!netnews.hinet.net!news > ※ 引述《yigong@giga.net.tw (yigong)》之銘言: > 我想請問 如果我用 89C51 的 txd 的串列傳輸 > 送出一各 8 bit 的串列訊號 如後 > 給 RF 的發射模組 (TG-11 303Mhz) 發射出去 > 然後 在 接收模組上 接到 RS232 送給PC > 然後 用 VB MSCOMM 顯示出來 > 但市不知道為什麼 接收的訊後 都一直不對 會亂跳 > 如果不接發射模組 8051 直接接到 RS232 > 一切正常 想請問 這是什麼原因... > 我們老師不讓我們用 編解碼 IC HT12E 空中最好不要直接用 UART , 因為裡面的訊號中會有太長的定態, 也就是在資料中, 常常會有連 續的 0 , 或連續的 1. 在連續的期間, 只要有一丁點的干擾, 你的資料就完蛋了! 有空可以參考一下各種軟碟機的低階 讀寫原理, 若你要用那些的編碼最好! 有一個 PCM 的飛機遙控器, 就是用 APPLE ][ 軟碟的編碼方式... 若你要直接用 UART, 最好編碼後, 使之沒有連續的 1 (或 0) , 再用. 傳送資料時, 定態不要超 過三個 bit 的時間. 所以你可能要把一個 byte 的資料, 拆成兩 byte, 編碼插一些 bit 後, 再來送. 對方接到後, 再 組合回來. 同步碼, 前導碼....等等控制碼, 用資料編碼沒有用到的, 這樣接收的程式比較好寫. 當然, 無線通訊中, 由於失誤率遠大於有線, 故一定要有檢查碼 (有線幾乎都有在核對, 更何況是無 線呢? ) ; 以便讓收方要求重送, 還是丟棄. 另外 51 會干擾接收模組. 可的話, 用頻譜儀看一下在接收頻率附近的那幾根諧波, 有沒有很大根, 有沒有命中接收頻率. 注意 RF 模組的頻寬, 以便規化適合的鮑率. ~~~~~~ 很精闢的見解,一針見血,佩服,這位仁兄所說得情形與敝人先行實驗的結果完全吻合,實為值得參考 的文章,好好研究個中道理,就會明白問題來源,編碼與通訊協定是重要的考慮與必要的措施.. Good luck.... -- Free Tech (Win32Asm, Electronics..) http://freetech.hypermart.net/ Updated: May-9, 2001 / 20:15 以前的 post (2) ========================= Re:使用無線模組(類似tg11)與rs232連接,做無線單向的資料傳輸遇到的問題 > >TG11 模組..基本上是用來傳送簡單的命令而已..類似機車的遙控發動器... >加上編解碼 IC,可以傳送的距離非常遠..我有測試過..可達到 50 幾公尺..再遠沒測過了.. > >至於你說的這個架構.. >基本上我也是有嘗試過... >只不過我的架構是... >PC->RS-232->HIN232(電壓準位轉換)->無線發射模組 ~~ 無線接收模組->8051 的 RS-232 埠 >但是..可以傳送的距離很短..二~三公尺左右.. > >因此..基本上你的架構應該是可行的.. >只是有些地方可能你可以嘗試一下... >我傳送資料時..大概每秒要傳送 30 幾筆左右...每筆大約 10Byte 左右.. >8051 才能穩定的接收到資料... >我的 Baud Rate = 4800 bps...8N1... >給你參考...希望對你有幫助...^^ > >另外..你可以到 Google 用 "RWS-434" 關鍵字應該可以查到很多資料.. >還有..元智大學也有相關的文件.. >http://designer.mech.yzu.edu.tw/article/articles/technical/(2001-08-30) >無線電收發模組電路製作介紹.htm > > 你可能要嘗試著將傳送資料的"頻率"提高... 例如..每秒傳送字串"123456789"...30-40次... 也就是說..每隔 30mS 左右..就將字串"123456789"傳送過去... 這樣可以提高資料傳送時的穩定度... 另外..二個模組不要擺太遠..一開始最好離近一點...模組需要加上天線..會比較好.. 嗯..是的..接收端會一直接收到雜訊..若要排除接收到雜訊..則可以自定接收的格式... 例如..若你要傳送"ABC"這三個字元過去...則你的格式可能可以類似寫成這樣子... $ABCk@ $-->表示前導符號... ABC-->表示欲傳送的資料.. k-->表示檢查碼..Check Sum @-->表示結束符號... 程式可以寫成... 當接收到的字元..是 '$' 時.. 則開始接收資料..並同時儲入 Buffer.. 一直接收到..結束字元 '@' 出現...或資料長度大於某個值..才結束接收.. 當字串接收完成後, 再比對 Check Sum 與傳送的資料是否符合.. 若符合..則表示資料接收正確... 給你參考..希望有幫助..^^ 呵呵~~~看來有人碰到跟我一樣的問題喔~~我之前有做一個題目,其中也是需要無線傳輸, 於是我用的架構跟你們討論的一樣(因為這是最方便的),但是我發現,這需要將傳送的包率 達到 115200 才能夠比較容易接收到,而且為了增加傳輸的可信度,使用了 handshake boardbast packet 的 Protocol,因為我這是一個 server 對很多的 client 做控制, 但都是使用一樣的頻率,所以我是用 TDM 方式來做,但還是不穩,有時不到 1 秒就可以控制 有時要等一分鐘?!@@a....這種通訊系統實在是太爛了....當下我也找不出方法可以解決就畢業了.... 但是現在我知道問題所在了 原因是 "0","1" 分別要用不同的狀態來表示,不能直接把 "O" 當成電位 0V 送給模組, 這樣會變成接收段無法判斷現在是什麼狀態,這麼說好了,如果是送 1 出來的話還沒什麼錯誤, 但 RS232 是 狀態0 就是 0電位,這時接收端就會接收到雜訊,運氣好的話若雜訊是在 TTL 的 0準位以下,就收到 0,但雜訊一個過大,就變成 1 了,那這時就會出錯 所以很不幸的...不能直接送 RS232 訊號給模組....所以別偷懶了~~~自己寫個 protocol 來傳吧, 我建議可以遵循紅外線的傳送方式來送,因為 PT2262 這個無線遙控器 IC 就是用這樣的方式來傳, 大家可以去 GOOGLE 找這個 SPEC.裡面有 PROTOCOL 的詳細解說或是使用 Manchester 編碼 也是可以的~~不管是用什麼方法,反正原則就是千萬不要用電位 0 來代表有意義的資料 送到無線模組~~說完了>_<|| |
h741234
一般會員 發表:5 回覆:3 積分:1 註冊:2007-08-16 發送簡訊給我 |
|
暗黑破壞神
版主 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
http://www.cpu.com.tw/kh/comp/nport/nport1.html
http://www.up-tech.com.tw/netframework/showgoodsingle.php?_op=?secID:59&_netPath=../project http://www.up-tech.com.tw/netframework/showgoodsingle.php?_op=?secID:31&_netPath=../mall 有呀。有一堆人做好了。還都做成商品了。你可以上 google 找一下。 以上是查詢結果的範例。 ===================引 用 h741234 文 章=================== 有沒有有人已經寫成的電路圖與VB程式碼 你這樣說好像我還要再學SPEC一樣 |
h741234
一般會員 發表:5 回覆:3 積分:1 註冊:2007-08-16 發送簡訊給我 |
|
aki
版主 發表:30 回覆:696 積分:755 註冊:2004-01-15 發送簡訊給我 |
|
暗黑破壞神
版主 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |