本發(fā)明涉及RF433M頻段的遠(yuǎn)距離無(wú)線自組網(wǎng)絡(luò)及數(shù)據(jù)傳輸方法。
背景技術(shù):
現(xiàn)在自組網(wǎng)絡(luò)的數(shù)據(jù)傳輸還是僅限于近距離的數(shù)據(jù)傳輸,而且現(xiàn)有自組網(wǎng)絡(luò)的電路發(fā)射和接收功耗大,同時(shí)受自組網(wǎng)絡(luò)的節(jié)點(diǎn)本身的限制,不能實(shí)現(xiàn)遠(yuǎn)距離的數(shù)據(jù)傳輸,且在傳輸時(shí),節(jié)點(diǎn)數(shù)量少,不能無(wú)限延伸等。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的就是為了解決上述問(wèn)題,提供一種RF433M頻段的遠(yuǎn)距離無(wú)線自組網(wǎng)絡(luò)及數(shù)據(jù)傳輸方法,它解決了線形無(wú)線網(wǎng)絡(luò)的無(wú)限延伸問(wèn)題,在線形的無(wú)線傳輸中,高效、省時(shí)、低功耗的運(yùn)行。
為了實(shí)現(xiàn)上述目的,本發(fā)明采用如下技術(shù)方案:
RF433M頻段的遠(yuǎn)距離無(wú)線自組網(wǎng)絡(luò),包括由若干個(gè)通信節(jié)點(diǎn)依次串聯(lián)組成的線形網(wǎng)絡(luò);
所述通信節(jié)點(diǎn),包括:RF433M頻段的遠(yuǎn)距離無(wú)線射頻收發(fā)器,所述RF433M頻段的遠(yuǎn)距離無(wú)線射頻收發(fā)器與電源管理模塊和STM32核心處理單元連接,所述STM32核心處理單元與LED警示燈連接;
RF433M頻段的遠(yuǎn)距離無(wú)線射頻收發(fā)器,用于RF433M頻段的無(wú)線信號(hào)的發(fā)送和接收。
STM32核心處理單元,用于自身邏輯判斷,并且根據(jù)自身邏輯的判斷,完成節(jié)點(diǎn)的主機(jī)模式與分機(jī)模式的判斷、報(bào)文轉(zhuǎn)發(fā)與否的判斷,實(shí)時(shí)的啟動(dòng)和停止對(duì)LED警示燈的控制;并且通過(guò)RF433M頻段的遠(yuǎn)距離無(wú)線射頻收發(fā)器,實(shí)現(xiàn)各通信節(jié)點(diǎn)之間的通行,完成遠(yuǎn)距離組網(wǎng)。
RF433M頻段的遠(yuǎn)距離無(wú)線自組網(wǎng)絡(luò)的數(shù)據(jù)傳輸方法,包括:
步驟(1):第X個(gè)通信節(jié)點(diǎn)利用主機(jī)模式將數(shù)據(jù)廣播轉(zhuǎn)發(fā)出去,處于廣播范圍內(nèi)的所有通信節(jié)點(diǎn)都能接收到廣播數(shù)據(jù);假設(shè)廣播范圍為N個(gè)通信節(jié)點(diǎn),則下一個(gè)負(fù)責(zé)廣播數(shù)據(jù)轉(zhuǎn)發(fā)的通信節(jié)點(diǎn)為第X+N個(gè)通信節(jié)點(diǎn);
步驟(2):與步驟(1)同理,第X+N個(gè)通信節(jié)點(diǎn)利用主機(jī)模式將接收到的數(shù)據(jù)廣播轉(zhuǎn)發(fā)出去,處于廣播范圍內(nèi)的所有通信節(jié)點(diǎn)都能接收到廣播數(shù)據(jù);假設(shè)廣播范圍為N個(gè)通信節(jié)點(diǎn);則下一個(gè)負(fù)責(zé)廣播數(shù)據(jù)轉(zhuǎn)發(fā)的通信節(jié)點(diǎn)為第X+2N個(gè)通信節(jié)點(diǎn);
步驟(3):以此類(lèi)推,第X+2N個(gè)通信節(jié)點(diǎn)利用主機(jī)模式,將接收到的數(shù)據(jù)廣播轉(zhuǎn)發(fā)出去,處于廣播范圍內(nèi)的所有通信節(jié)點(diǎn)都能接收到廣播數(shù)據(jù);假設(shè)廣播范圍為N個(gè)通信節(jié)點(diǎn);則下一個(gè)負(fù)責(zé)廣播數(shù)據(jù)轉(zhuǎn)發(fā)的通信節(jié)點(diǎn)為第X+3N個(gè)通信節(jié)點(diǎn),第X+3N個(gè)通信節(jié)點(diǎn)開(kāi)啟轉(zhuǎn)發(fā)模式,將數(shù)據(jù)傳輸下去,從而實(shí)現(xiàn)無(wú)線距離的延伸。
第X個(gè)通信節(jié)點(diǎn)在發(fā)送數(shù)據(jù)后,第X個(gè)通信節(jié)點(diǎn)向第X+N個(gè)通信節(jié)點(diǎn)發(fā)出轉(zhuǎn)發(fā)命令,同時(shí)接收第X+N個(gè)通信節(jié)點(diǎn)收到轉(zhuǎn)發(fā)命令的反饋指令;
如果第X個(gè)通信節(jié)點(diǎn)沒(méi)有收到反饋指令,則表明第X+N個(gè)通信節(jié)點(diǎn)損壞,或者沒(méi)有第X+N個(gè)通信節(jié)點(diǎn);那么等待設(shè)定時(shí)間段后,第X個(gè)通信節(jié)點(diǎn)往第X+N-1個(gè)通信節(jié)點(diǎn)發(fā)出轉(zhuǎn)發(fā)命令;
如果第X個(gè)通信節(jié)點(diǎn)收到第X+N-1個(gè)通信節(jié)點(diǎn)的反饋指令,則第X個(gè)通信節(jié)點(diǎn)停止轉(zhuǎn)發(fā);否則第X個(gè)通信節(jié)點(diǎn)往第X+N-2個(gè)通信節(jié)點(diǎn)發(fā)出轉(zhuǎn)發(fā)命令;
以此類(lèi)推,直至第X個(gè)通信節(jié)點(diǎn)接收到反饋指令,第X個(gè)通信節(jié)點(diǎn)停止轉(zhuǎn)發(fā);
或者,到第X個(gè)通信節(jié)點(diǎn)往第X+1通信節(jié)點(diǎn)發(fā)出轉(zhuǎn)發(fā)命令,第X個(gè)通信節(jié)點(diǎn)也沒(méi)有收到反饋指令時(shí),第X個(gè)通信節(jié)點(diǎn)停止轉(zhuǎn)發(fā)。
每個(gè)通信節(jié)點(diǎn)內(nèi)部都進(jìn)行主分機(jī)模式檢測(cè),每個(gè)通信節(jié)點(diǎn)通過(guò)主分機(jī)模式檢測(cè)來(lái)判斷通信節(jié)點(diǎn)本身是分機(jī)模式還是主機(jī)模式;如果是主機(jī)模式,則負(fù)責(zé)將自身接收到的數(shù)據(jù)轉(zhuǎn)發(fā)給廣播范圍內(nèi)的其他通信節(jié)點(diǎn);如果是分機(jī)模式,則只負(fù)責(zé)接收數(shù)據(jù)。
每個(gè)設(shè)定時(shí)間進(jìn)一次主分機(jī)模式檢測(cè)邏輯,進(jìn)入邏輯后首先判斷計(jì)數(shù)器SetDelayTimer是否到達(dá)主分機(jī)模式判斷時(shí)間,
如果到達(dá)主分機(jī)模式判斷時(shí)間,判斷本通信節(jié)點(diǎn)為主機(jī)模式,同時(shí)清SetDelayTimer=0;置位轉(zhuǎn)發(fā)狀態(tài)TransmitMode=1;
如果未到達(dá)主分機(jī)模式判斷時(shí)間,判斷是否有接收到來(lái)自小于本通信節(jié)點(diǎn)ID的無(wú)線信息,
a、如果接收到廣播報(bào)文,則置位本通信節(jié)點(diǎn)為分機(jī)模式,同時(shí)清SetDelayTimer=0;判斷報(bào)文中的發(fā)送ID和轉(zhuǎn)發(fā)ID是否和本通信節(jié)點(diǎn)ID一致,若一致則認(rèn)為本通信節(jié)點(diǎn)為轉(zhuǎn)發(fā)通信節(jié)點(diǎn),置位轉(zhuǎn)發(fā)狀態(tài)標(biāo)志TransmitMode=1;如果不一致則退出本邏輯;
b、如果未接收到,則直接退出主分機(jī)模式檢測(cè)邏輯。
每個(gè)通信節(jié)點(diǎn)內(nèi)部都進(jìn)行轉(zhuǎn)發(fā)邏輯判斷,通過(guò)判斷轉(zhuǎn)發(fā)狀態(tài)標(biāo)志TransmitMode是否等于1來(lái)判斷是否進(jìn)入轉(zhuǎn)發(fā)模式:
如果TransmitMode==1則進(jìn)入轉(zhuǎn)發(fā)模式,首先置下一轉(zhuǎn)發(fā)通信節(jié)點(diǎn)TransmitID=X+N;第X個(gè)通信節(jié)點(diǎn)開(kāi)始轉(zhuǎn)發(fā),置位發(fā)送后等待300ms,第X個(gè)通信節(jié)點(diǎn)判斷是否能接收到由通信節(jié)點(diǎn)ID為X+N的反饋無(wú)線信號(hào),
如果能接收反饋的無(wú)線信號(hào),則表示X節(jié)點(diǎn)的通信節(jié)點(diǎn)已經(jīng)成功轉(zhuǎn)發(fā),本次發(fā)送數(shù)據(jù)終止。
如果沒(méi)有接收到TransmitID的無(wú)線信號(hào),則判斷N是否大于0;
如果N大于1,第X個(gè)通信節(jié)點(diǎn)往第X+N-1個(gè)通信節(jié)點(diǎn)發(fā)出轉(zhuǎn)發(fā)命令;,
如果第X個(gè)通信節(jié)點(diǎn)收到第X+N-1個(gè)通信節(jié)點(diǎn)的反饋指令,則第X個(gè)通信節(jié)點(diǎn)停止轉(zhuǎn)發(fā);否則第X個(gè)通信節(jié)點(diǎn)往第X+N-2個(gè)通信節(jié)點(diǎn)發(fā)出轉(zhuǎn)發(fā)命令;
以此類(lèi)推,直至第X個(gè)通信節(jié)點(diǎn)接收到反饋指令,第X個(gè)通信節(jié)點(diǎn)停止轉(zhuǎn)發(fā);
或者,到第X個(gè)通信節(jié)點(diǎn)往第X+1通信節(jié)點(diǎn)發(fā)出轉(zhuǎn)發(fā)命令,第X個(gè)通信節(jié)點(diǎn)也沒(méi)有收到反饋指令時(shí),第X個(gè)通信節(jié)點(diǎn)停止轉(zhuǎn)發(fā)。
本發(fā)明的有益效果:
1本發(fā)明解決了高速公路上無(wú)線傳輸距離組網(wǎng),如果該網(wǎng)絡(luò)擴(kuò)展,只需按照前面的編碼規(guī)則繼續(xù)編碼即可實(shí)現(xiàn),無(wú)需更改以前已有網(wǎng)絡(luò)的設(shè)置。方便靈活,并且理論上可以無(wú)線延伸。
2該組網(wǎng)方式無(wú)線發(fā)送次數(shù)少,所有的節(jié)點(diǎn)基本上全部處于接收狀態(tài),所以該組網(wǎng)方式給整個(gè)節(jié)點(diǎn)的運(yùn)行功耗起到了整體降低功耗的作用。
3該組網(wǎng)方式發(fā)送報(bào)文字節(jié)數(shù)少,整個(gè)過(guò)程中只在傳輸一條報(bào)文,報(bào)文格式簡(jiǎn)單,收發(fā)靈活。
附圖說(shuō)明
圖1為節(jié)點(diǎn)信號(hào)傳輸圖;
圖2為節(jié)點(diǎn)組成框圖;
圖3為主機(jī)模式、分機(jī)模式判斷邏輯;
圖4為節(jié)點(diǎn)信號(hào)轉(zhuǎn)發(fā)邏輯。
具體實(shí)施方式
下面結(jié)合附圖與實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明。
如圖1-4所示,
邏輯程序在中斷內(nèi)運(yùn)行,每個(gè)10ms進(jìn)一次主分機(jī)模式檢測(cè)邏輯,進(jìn)入邏輯后首先判斷計(jì)數(shù)器SetDelayTimer是否到達(dá)主分機(jī)模式判斷時(shí)間,
如果到達(dá)主分機(jī)模式判斷時(shí)間后,認(rèn)為本節(jié)點(diǎn)ID前面沒(méi)有比本節(jié)點(diǎn)ID小的節(jié)點(diǎn),判斷本機(jī)為主分機(jī)模式模式,同時(shí)清SetDelayTimer=0;置位轉(zhuǎn)發(fā)狀態(tài)TransmitMode=1;
如果未到達(dá)主分機(jī)模式判斷時(shí)間,判斷是否有接收到來(lái)自小于本機(jī)ID的無(wú)線信息,a、如果有則置位本機(jī)為分機(jī)模式,同時(shí)清SetDelayTimer=0;判斷報(bào)文中的轉(zhuǎn)發(fā)ID是否和本機(jī)ID一致,一致則認(rèn)為本機(jī)為轉(zhuǎn)發(fā)通信節(jié)點(diǎn),置位轉(zhuǎn)發(fā)狀態(tài)TransmitMode=1;如果不一致則退出本邏輯。b、如果沒(méi)有則直接退出本邏輯。
轉(zhuǎn)發(fā)邏輯,放置于主循環(huán)中,通過(guò)判斷TransmitMode是否等于1來(lái)判斷是否進(jìn)入轉(zhuǎn)發(fā)模式
如果TransmitMode==1則進(jìn)入循環(huán)模式,首先置下一轉(zhuǎn)發(fā)通信節(jié)點(diǎn)TransmitID=X+N;置位發(fā)送后等待300ms,判斷是否能接收到由通信節(jié)點(diǎn)ID為T(mén)ransmitID的無(wú)線信號(hào),
如果能接收無(wú)線信號(hào),則表示TransmitID的通信節(jié)點(diǎn)已經(jīng)成功轉(zhuǎn)發(fā),本次發(fā)送數(shù)據(jù)終止。
如果沒(méi)有接收到TransmitID的無(wú)線信號(hào),則判斷TransmitID是否大于0,
如果TransmitID大于0,繼續(xù)再循環(huán)發(fā)送,
如果TransmitID小于等于0,則退出循環(huán)發(fā)送模式。
通信節(jié)點(diǎn)X實(shí)現(xiàn)廣播轉(zhuǎn)發(fā)后,處于廣播可達(dá)范圍內(nèi)所有通信節(jié)點(diǎn)都能接收到廣播命令,如果經(jīng)過(guò)實(shí)地測(cè)試廣播N個(gè)通信節(jié)點(diǎn)范圍都能接收到無(wú)線信號(hào),那么廣播報(bào)文中下一個(gè)轉(zhuǎn)發(fā)ID設(shè)置為X+N,X---X+N中的通信節(jié)點(diǎn)接收到命令后,由于報(bào)文中的轉(zhuǎn)發(fā)通信節(jié)點(diǎn)為X+N,所有其他的通信節(jié)點(diǎn)不進(jìn)行轉(zhuǎn)發(fā),只有X+N通信節(jié)點(diǎn)轉(zhuǎn)發(fā)。X+N通信節(jié)點(diǎn)接收到命令后,開(kāi)啟轉(zhuǎn)發(fā)模式,往下一個(gè)X+2N通信節(jié)點(diǎn)轉(zhuǎn)發(fā),實(shí)現(xiàn)無(wú)線距離的延伸。
如果此時(shí)X+N通信節(jié)點(diǎn)損壞,或者說(shuō)是到達(dá)鏈條的末尾段,通信節(jié)點(diǎn)X廣播發(fā)送后通知X+N通信節(jié)點(diǎn)轉(zhuǎn)發(fā),由于沒(méi)有X+N通信節(jié)點(diǎn),所以通信節(jié)點(diǎn)X沒(méi)有收到X+N通信節(jié)點(diǎn)的命令,等待300ms后,重新往X+N-1通信節(jié)點(diǎn)發(fā)送,如果此時(shí)接收到X+N-1通信節(jié)點(diǎn)的回復(fù)則通信節(jié)點(diǎn)X停止轉(zhuǎn)發(fā),如果沒(méi)有接收到X+N-1的命令,則通信節(jié)點(diǎn)X重新往X+N-2通信節(jié)點(diǎn)發(fā)送,以此類(lèi)推,直至接收到回復(fù),或者到X+1通信節(jié)點(diǎn)也沒(méi)有回復(fù)時(shí)停止轉(zhuǎn)發(fā)。
上述雖然結(jié)合附圖對(duì)本發(fā)明的具體實(shí)施方式進(jìn)行了描述,但并非對(duì)本發(fā)明保護(hù)范圍的限制,所屬領(lǐng)域技術(shù)人員應(yīng)該明白,在本發(fā)明的技術(shù)方案的基礎(chǔ)上,本領(lǐng)域技術(shù)人員不需要付出創(chuàng)造性勞動(dòng)即可做出的各種修改或變形仍在本發(fā)明的保護(hù)范圍以?xún)?nèi)。