一種基于MSP430和nRF401的家用射頻無(wú)線(xiàn)自動(dòng)抄表系統設計
下層模塊收到上層模塊發(fā)來(lái)的抄表命令,首先檢查地址。如果地址不符,說(shuō)明命令是發(fā)給其它模塊的,則丟棄命令,繼續等待。數據正常接收完畢后,模塊按照與儀表的協(xié)議檢驗數據,數據出現錯誤,則重新向儀表發(fā)送命令,如果正確則向上層發(fā)送數據,之后重新進(jìn)入等待狀態(tài)。
MSP430F123只有一個(gè)串口,而上下兩層的模塊需要兩個(gè)串口。第二個(gè)串口由定時(shí)器A的捕獲/比較功能實(shí)現。發(fā)送特性的實(shí)現采用比較功能將數據從輸出單元的引腳移出的方法,波特率用比較數據及中斷來(lái)獲得。接收特性的實(shí)現采用捕獲/比較功能將引腳數據經(jīng)SCCIx位移入內存。
3.2 無(wú)線(xiàn)通訊協(xié)議
本系統是一個(gè)簡(jiǎn)單的點(diǎn)對多點(diǎn)通訊,所以通訊協(xié)議分為三層即可。第一層為物理層,由nRF401模塊硬件實(shí)現;第二層為數據鏈路層;第三層為應用層。
數據鏈路層的功能是提供可靠的無(wú)線(xiàn)數據傳輸。發(fā)送數據時(shí),將應用層發(fā)來(lái)的比較長(cháng)的數據幀拆分為短的數據幀,并加上包頭和校驗和,重新打包后發(fā)送出去。接收數據時(shí),將接收到的數據解包并重新組合成完整的長(cháng)數據,移交給應用層。
數據鏈路層的數據幀格式為:
每幀包括兩個(gè)字節的起始幀頭,一個(gè)字節的地址,一個(gè)字節的幀類(lèi)型,一個(gè)字節的幀編號,十個(gè)字節的數據和兩個(gè)字節的校驗和。無(wú)線(xiàn)通訊容易受到干擾,一次發(fā)送的數據越長(cháng),受干擾的可能性越大。所以應該把比較長(cháng)的數據分成小的數據包分別發(fā)送。本系統每個(gè)數據包的有效數據長(cháng)度為十個(gè)字節,原始數據不足時(shí)用0補足。
因為nRF401是高靈敏度的,在沒(méi)有進(jìn)行數據傳輸時(shí),它的數據輸出腳會(huì )有雜波輸出,這些雜波會(huì )被MCU的串口接收并處理。nRF401的ANT1和ANT2引腳是接收時(shí)低噪聲接收放大器LNA的輸入,以及發(fā)送時(shí)發(fā)射功率放大器PA的輸出。連接nRF401的天線(xiàn)可以以差分方式連接到nRF401,一個(gè)50Ω的單端天線(xiàn)也可以通過(guò)一個(gè)差分轉換匹配網(wǎng)絡(luò )連接到nRF401。四個(gè)字節的0xCC加一個(gè)字節的0xF0就可以確保在有效數據幀到達前雙方通訊實(shí)現同步。為了區分干擾雜波與有效數據,需要數據幀加上幀頭。因為干擾雜波基本是隨機的,如果使用一個(gè)字節的幀頭,則可能無(wú)法區分干擾和有效數據。因此本系統協(xié)議使用兩個(gè)字節的幀頭,為兩個(gè)0x55。0x55加上起始位和停止位,實(shí)際發(fā)送的是0101010101,雜波產(chǎn)生連續兩個(gè)0x55的概率很小很小,可以確保有效數據的確認。數據幀的類(lèi)型包括抄表命令、正常返回數據、出錯要求重發(fā)、儀表異常信號、正確接收確認等,用一個(gè)字節來(lái)標示以便接收方分類(lèi)處理。因為將較長(cháng)的數據分成短的數據幀發(fā)送,所以每幀需要一個(gè)編號,以便接收方檢查是否丟幀。在十個(gè)字節的數據之后是校驗和,使用16位crc校驗,檢驗數據傳輸的正確性。接收方同樣計算crc后與校驗和比較,如果不同,即為傳輸中出現錯誤。接收方記下錯誤幀的編號,待全部數據發(fā)送完畢后,將錯誤編號返回,要求發(fā)送方重新發(fā)送這些幀。如果全部數據正常接收,則發(fā)回正確接收確認。
下層模塊的應用層的功能是使儀表抄取與無(wú)線(xiàn)通訊相結合。對于不同的水表、電表或煤氣表,可能有不同的抄取協(xié)議或抄取方法。應用層接收數據鏈路層發(fā)來(lái)的抄表命令,完成對儀表的抄取,并將數據打包發(fā)給數據鏈路層。上層模塊的應用層負責與中心的鏈接。將中心發(fā)來(lái)的數據校驗處理后轉發(fā)給數據鏈路層,將數據鏈路層發(fā)來(lái)的抄表結果打包處理后發(fā)給中心。
因為協(xié)議是分層的,相鄰層之間的聯(lián)系只是調用發(fā)送接收函數,因此實(shí)現了各層是獨立的。更換儀表或更換無(wú)線(xiàn)傳輸模塊所需做的改動(dòng)都不會(huì )影響其它層,提高了系統的靈活性。
4 系統的低功耗設計
系統中MSP430在等待時(shí)處于LPM1狀態(tài)。在此狀態(tài)下,Vcc=3V時(shí)工作電流低于50μA。系統中的485芯片使用MAXIM公司的MAX3485,在關(guān)斷模式下,所需電流小于1μA。系統低功耗設計的重點(diǎn)是nRF401的控制。當它處于接收狀態(tài)時(shí),工作電流為10mA左右,如果始終處于接收狀態(tài),整個(gè)系統的功耗就會(huì )過(guò)大,電池的電量將會(huì )很快耗盡。所以應盡量使nRF401處于休眠狀態(tài)。但是休眠狀態(tài)中的nRF401是無(wú)法收到數據的。為了解決這個(gè)矛盾,可使nRF401間歇性地工作在接收狀態(tài)。nRF401從休眠到接收狀態(tài)的轉換時(shí)間為3ms,所以處于接收狀態(tài)的時(shí)間不能少于3ms;因為nRF401處于接收狀態(tài),并且空中無(wú)有效信號時(shí),會(huì )有雜波干擾,所以正常喚醒至少需要收到兩個(gè)字節的喚醒碼。因為本系統使用9600的波特率,發(fā)送兩個(gè)字節,加起始位與停止位共20bit。所以接收時(shí)間為2.08ms。為了確保能夠喚醒,應再適當延長(cháng)。本系統使用8ms。處于休眠的時(shí)間因儀表抄送反映速度的要求而定。如儀表反映時(shí)間要求不嚴格,可加長(cháng)處于休眠的時(shí)間,以便進(jìn)一步降低功耗。本系統使用的周期為1s。上層模塊抄表需要喚醒下層模塊時(shí),首先發(fā)送喚醒碼,時(shí)長(cháng)需要超過(guò)一個(gè)周期以確保喚醒,如圖7所示。本系統使用0xFF作為喚醒碼,即主機連續發(fā)送0xFF,從機收到連續兩個(gè)0xFF后即保持接收狀態(tài)而不進(jìn)入休眠,此時(shí)計時(shí)器開(kāi)始工作。如此設定之后,nRF401的平均工作電流可降至250μA以下。下層模塊的nRF401工作在此狀態(tài)下,整個(gè)模塊的平均工作電流在300μA以下,按使用兩節5號AA電池計算,可以使用半年以上。上層模塊由于是主機,所有的無(wú)線(xiàn)傳輸都由它發(fā)起,所以等待時(shí)nRF401可一直工作在休眠狀態(tài),整個(gè)模塊的平均工作電流在100μA以下,兩節電池可以使用一年半以上。
小區自動(dòng)抄表系統是未來(lái)發(fā)展的必然趨勢,而對于已經(jīng)建成的住宅小區的家庭內自動(dòng)抄表系統的改造,無(wú)線(xiàn)自動(dòng)抄表系統具有使用方便、靈活、無(wú)需重新布線(xiàn)的優(yōu)點(diǎn),并且價(jià)格適中。家庭內部的三表可以統一抄送。此外,本系統略加改進(jìn)也可以應用于報警與安全系統和家庭自動(dòng)化控制遙控裝置等。
評論