單片機的多機無線簡訊通訊系統設計

來源:互聯網
上載者:User
單片機的多機無線簡訊通訊系統設計
[日期:2008-11-25] 來源:單片機與嵌入式系統應用  作者:漳州師範學院 周錦榮 周小方 李志雄 郭海燕 白炳良 [字型: ]

 

現代通訊技術的迅速發展使得許多應用領域都採用無線通訊方式進行資料轉送。編解碼晶片PT2262、PT2272組成的電路,由於具有體積小、功耗低、功能強、成本低等特點,廣泛應用於各類的無線遙控器、無線通報器以及玩具等其他小型電器裝置。但是,這種電路極少用在多個位元組資料的通訊方面,具有一定的局限性。本文主要介紹利用433 MHz高頻發射模組和接收模組來製作多機無線ASCII碼格式的簡訊通訊。該通訊方式是在433MHz高頻發射模組和接收模組的基礎上自己定義無線傳輸協議,實現任意兩機之間的多個位元組資料通訊。


1 硬體系統設計

    本系統主要由PICl6F877A單片機構成控制系統,周圍4個模組分別是:按鍵輸入模組、顯示輸出模組、接收模組和發射模組。系統整體結構框圖1所示。

1.1 主機電路的設計
    由於系統涉及的程式量比較大,所以要求Flash程式儲存空間的儲存量不能太小;對發射和接收的簡訊進行儲存,要用到EEPROM資料存放區器模組,EEPROM資料存放區器儲存的內容掉電時不會丟失;接收解碼需要脈寬的捕捉和比較功能,要用到捕捉/比較/脈寬調製CCP模組;發射、接收以及時鐘均要用到獨立的定時器,所要求的定時器的個數不少於3個。基於設計需要,採用Microchip公司的PICl6F877A晶片作為系統的主控制器。該電路主要由主控晶片、晶體振蕩電路和線上模擬介面組成,2所示。設計中使用MCLR、RB6、RB7三個介面作為線上模擬介面。

1.2 發射和接收電路的設計
   
採用433 MHz高頻發射和接收模組。433 MHz的高頻發射電路在控制腳為高電平時起振並發射等幅高頻訊號,當控制腳為低電平時停止振蕩。因此,可以用控制腳對高頻電路完成幅度鍵控(ASK調製),相當於調製度為100%的調幅。當接收模組接收到433 MHz的等幅高頻訊號時,訊號腳就輸出高電平,否則輸出低電平。所以接收訊號腳的高低電平變化會與發射控制腳的高低電平變化相對應。多個接收模組可以同時接收到同一個發射模組發射的訊號,可以實現一機發送,多機同時接收。圖3所示電路是高頻433 MHz載波的發射和接收模組。433 MHz的高頻發射電路在控制腳B5為高平時,三級管T1導通,T2射級接地起振並發射等幅高頻433 MHz的訊號;當控制腳B5為低電平時,就停止振蕩。因此,可以用控制腳B5對高頻電路完成幅度鍵控(ASK調製),相當於調製度為100%的調幅。當接收模組接收到433 MHz的等幅高頻訊號時,訊號腳就輸出高電平到C2口,若未收到433 MHz的等幅高頻訊號則輸出低電平。所以接收訊號腳的高低電平變化會與發射控制腳的高低電平變化相對應。例如給B5引腳輸入圖4所示的波形,那麼在接收模組的C2引腳上也將出現同樣的波形。注意,B5和C2的控制訊號分別由主控晶片PICl6F877A的RB5和RC2發出。

   

1.3 液晶外圍控制電路的設計
   
採用諾基亞3310 LCD顯示模組。該LCD為84×48點陣的液晶屏,一屏可顯示4×7個(12×12點陣)漢字,或6×14個(6×8點陣)英文、數字、標點符號等字元。該液晶顯示器輕薄短小、低功耗電量,常用於手機顯示。液晶外圍電路5所示。

    本設計中,諾基亞33lO LCD用3 V的電壓供電。其中,1引腳是電源腳,6引腳接地線,2引腳為SCLK,3引腳為SDIN。4引腳為資料/地址選擇端,分別給4引腳高低電平,可以控制單片機對諾基亞3310 LCD寫資料或者寫命令。5引腳為使能端,低電平有效。8引腳為複位端,低電平有效。11引腳接背光燈電源的正級,12引腳接背光燈電源的控制級。9、10引腳為諾基亞3310 LCD內建的喇叭,此喇叭用單片機來控制的聲音效果並不理想,所以改用直流內建振蕩蜂鳴器。為了避免蜂鳴器和背燈光工作時對液晶電源造成影響,蜂鳴器和背燈光由5 V的電源來供電,與液晶電源分開。

2 軟體系統設計    
    本系統在主程式中運用模組化結構,使得各個模組之間關係清晰明了。複位分為兩個部分,以區分上電複位與非上電複位,上電複位執行上電複位初始化程式;運用散轉結構,再根據重要資料3比2表決,實現無擾動重入;所有控制量(開關量)和接收資料集中處理,提高了處理效率;特殊功能寄存器冗餘重設,使整個系統更穩定地工作。主程式總流程6所示。

3 通訊模組功能及演算法
   
本無線通訊協議模仿OSI分層模型分為以下3層,各層之間相互獨立,靈活性好,適應性強。
    (1)物理層
    物理層處於最低層,其任務是傳送和接收位元流。物理層關心的問題是:如何表示“1”和“O”;如何排除幹擾;傳輸是否在兩個方向上同時進行等。本設計中使用433 MHz高頻發射模組和接收模組作為無線通訊橋樑,固定的頻率限制了資料轉送在同一時刻只能在一個方向上進行,所以兩個方向上的資料轉送要在交替發生的情況下才能完成。
    (2)資料連結層
    資料連結層使用由物理層提供的服務,並通過添加錯誤處理機制將簡單的資料鏈路改造成可靠的資料鏈路,再提供給應用程式層。資料連結層以碼字為單位傳輸資料,每一碼字包括資料和必要的校正資訊。在此自訂為無線傳輸協議(Wireless Transmission Protocol,WTP)。
    (3)應用程式層
    應用程式層處於最高層,它為應用進程提供了存取點,直接為使用者的應用進程提供服務。在此自訂為簡訊通訊協定(Message Communication Protocol,MCP)。
3.1 定時器T2中斷模組
   
中斷處理採用片內CCPI中斷捕捉方式,對外部介面引腳CCP上輸入的脈衝訊號上升沿或下降沿進行即時捕捉檢測。藉助於這個強大的邊沿捕捉功能,很容易對訊號的高電平時間進行檢測,從而實現對WTP解讀功能。中斷服務程式流程7所示。

    在解讀WTP過程中只要判斷出同步碼,就對這一碼字進行初始化,把脈衝個數計數器清O;然後每捕捉到一個高電平,脈衝個數計數器就加1並儲存記錄該脈衝。捕捉到一個高電平後,若高電平時間寬度為409.6~819.2μs,就認為是窄脈衝;高電平時間寬度為819.2~1 228.8μs,就認為是寬脈衝;若高電平時間寬度小於409.6μs或大於1 228.8μs,則認為該脈衝為幹擾訊號,當低電平時間寬度大於819.2μs時也認為是幹擾訊號。收到幹擾訊號後將脈衝個數計數器清0,並把正在接收的碼字丟棄處理。當接收到25個脈衝後對前面16個脈衝進行處理,若每個位碼不是由一個窄脈衝和一個寬脈衝組成的,就認為接收正常。接收正常後,通過一個接收到資料的標誌位反饋到MCP(簡訊通訊協定)上處理,通訊協定會根據該標誌位到接收緩衝中取剛剛接收到的數值。
    一個位元組的資料波形8所示。根據無線傳輸協議定義,發送的一個完整的碼字由資料碼、校正碼、同步碼組成(圖中用虛線隔開這3個部分)。資料碼和校正碼都用寬度不同的脈衝來表示,2個窄脈衝表示“0”,2個寬脈衝表示“1”。每組字碼之間有同步碼隔開,同步碼用一個窄脈衝和一個比較寬的低電平表示。一個字碼由8位元據碼、4位校正碼和1個窄脈衝組成。若每個位碼用2個脈衝來代表,則一個碼字就是由25個脈衝組成。無線傳輸協議定義窄脈衝時間寬度為739.2μs,寬脈衝時間寬度為1 156.8μs,而脈衝之間的低電平時間統一為331.2μs,同步碼的低電平時間寬度為5 ms。
    圖8表示發送~個十六進位數“57H”,ASCII碼的“57H”表示字元“W”。圖中前16個脈衝表示“57H”的資料碼,二進位表示為“B01010111”;中間8個脈衝表示校正碼,在該協議中校正碼固定定義為半個位元組的“AH”,二進位表示為“B1010”;同步碼則為一個時間寬度為739.2μS的窄脈衝和一個時間寬度為5 ms的低電平。

    該協議中從以下幾個方面來提高抗幹擾能力:
    ①每個碼字由25個脈衝組成;
    ②每個位碼用2個脈衝來表示;
    ③校正碼用“B1010”(“O”、“1”間隔)來排除幹擾;
    ④若資料碼大於7FH,則作為無效資料處理。
3.2 傳送簡訊模組
   
這個模組實現MCP功能,編輯簡訊採用ASCII碼格式,簡訊內容取值範圍為ASCII碼的20H~7AH,ASCII碼內容可以參照ASCII碼錶。7CH~7FH作為特殊功能碼來處理。簡訊內容格式要求為3個字元的“名字+內容”。例如:要給名為LZX的通訊器發簡訊,可寫成“LZX:……”。應用程式層的簡訊通訊協定要求發送機傳送簡訊順序是:
    ①傳送簡訊開始碼(即7FH);
    ②傳送簡訊的頭3個字元(即接收者的名字);
    ③等待接收者的簡訊開始應答訊號(即7DH);
    ④收到應答訊號後開始傳送簡訊內容;
    ⑤簡訊內容發完後發簡訊結束碼(即7EH);
    ⑥等待接收者的簡訊結束應答訊號(即7CH)。
    由於是無線發送與接收,有時會接收不到訊號,所以當沒有收到簡訊開始應答訊號時就從第一步再開始執行。若執行8次依舊沒有收到應答訊號,就得出“無此人發送失敗”的結果。若沒有收到簡訊結束應答訊號,就得出“發送中止失敗”的結果,否則就顯示“對方已收到”。
    因為無線發射的特點,第一組字碼非常容易受零電平幹擾,往往會產生誤碼,所以剛開始發射的簡訊開始碼一般要發2~3次。9所示,發送了5個碼字的資料:7FH,7FH,57H,44H,58H(分別為開始碼、開始碼、W、D、X,其中“WDX"’為萬能名)。然後,等待接收者的簡訊開始應答訊號再發簡訊內容。

3.3 接收簡訊模組
   
在這個模組中實現對MCP解讀功能。根據MCP,在解讀中只要判斷出接收到簡訊開始碼,就將收簡訊的標誌位置1,並開始設定一個通訊逾時值,然後繼續接收下3個字元再與本身名字或萬能名比較。應用程式層的簡訊通訊協定要求接收機接收簡訊順序是:
    ①一旦接收到簡訊開始碼就進入接收簡訊;
    ②接收3個字元後與本身名或萬能名比較,若同名就反饋應答訊號,否則返回到①;
    ③繼續接收簡訊內容;
    ④接收到結束碼後反饋應答訊號,若沒收到結束碼且通訊逾時則返回到①。
    在任何狀態收到簡訊的結束碼後,都會在液晶顯示屏的第一行顯示“receive a mess”,並以聲、光形式提示收到簡訊,由使用者手動查閱新的簡訊。
3. 4編輯簡訊模組
   
這個模組實現對簡訊的編輯,類似於手機編輯簡訊的模式;有單字刪除鍵、快速刪除鍵、全部清除鍵、標點符號鍵、輸入狀態大小寫字母或數位切換鍵,簡訊尾部可顯示光線標。因為受液晶螢幕所限,規定一條簡訊內容長度為70個字元,編輯時限制字數為67個字元,發送時軟體上自動在簡訊尾部添加本機名並發送。液晶螢幕第一行顯示正在編輯狀態、現在的時間和大小寫輸入狀態。在該模組中,主要是要定位好顯示和編輯指標,然後對各個按鍵做處理。

結 語
    本文闡述的設計方法集編碼和解碼技術、通訊協定技術、抗幹擾技術、編輯簡訊技術、液晶點陣顯示技術於一體。實現任意兩機之間可以互發70個ASCII碼字元的簡訊,可以像普通手機一樣編輯簡訊,機子可以由使用者命名以區別其他機子,實現一機對一機的通訊,也可以用萬能名(“WDX”)實現一機對多機的通訊。可以儲存一條發送出去的簡訊,也可以儲存一條剛接收到的簡訊和舊的簡訊。整個系統人機互動介面友好,類似於普通手機系統,有操作提示,易於操作。本設計中採用分層的協議可以很容易地把無線通訊模組用其他效能更好的無線模組替換。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.