在集中式水表抄表應(yīng)用中,一種合理的通訊方案是采用BLE本地1拖7采集,再通過NB遠(yuǎn)傳,具體是1個(gè)水井中裝有8只水表,其中7只水表裝E95透?jìng)鲝臋C(jī)模塊,剩下1只水表裝E92主從一體模塊+NB模塊,7只從機(jī)水表將數(shù)據(jù)匯總到這1只主機(jī)水表,主機(jī)水表再通過NB上傳至基站+后臺(tái)。
具體從機(jī)水表1天傳n次數(shù)據(jù)給主機(jī),通信由從機(jī)發(fā)起,從機(jī)1次上報(bào)的數(shù)據(jù)量是35bytes左右,主機(jī)回復(fù)的數(shù)據(jù)量也是35bytes左右,主從機(jī)間是雙向通信。1個(gè)回合中,從機(jī)可能會(huì)有多次數(shù)據(jù)上報(bào)。
主機(jī)上電開始掃描周圍從機(jī),當(dāng)掃到全部7個(gè)從機(jī)后,主從1V1連接上,主機(jī)發(fā)送抄表指令,從機(jī)進(jìn)行第1次數(shù)據(jù)上報(bào),主機(jī)收到后下發(fā)第1個(gè)回復(fù)包,從機(jī)收到后發(fā)起第2次上報(bào)......,直到從機(jī)數(shù)據(jù)全部上報(bào)完畢。再去連第2個(gè)從機(jī),依次類推。待主跟7個(gè)從機(jī)全部通信一輪完畢后,主機(jī)斷開連接。
注:客戶選擇主機(jī)跟7個(gè)從機(jī)保持長(zhǎng)連接,即7個(gè)連接同時(shí)存在,原因是客戶后臺(tái)可能隨時(shí)會(huì)有數(shù)據(jù)下發(fā),所以從機(jī)要隨時(shí)待命。
如果客戶沒有后臺(tái)數(shù)據(jù)隨時(shí)下發(fā)這個(gè)需求,可以采用主機(jī)跟1號(hào)從機(jī)1V1連接、通信完,斷開連接,再去連接2號(hào)從機(jī),依次類推。這種方式的好處是主機(jī)只維護(hù)1個(gè)連接,數(shù)據(jù)處理能力會(huì)更強(qiáng)。
經(jīng)溝通,客戶的痛點(diǎn)是:
●主機(jī)要盡快掃描到從機(jī)廣播。
●7個(gè)從機(jī)必須全部掃描到。
描述
01
1主7從通信流程細(xì)化
主機(jī):上電初始化,主要包含設(shè)置連接參數(shù)、掃描參數(shù)——開啟掃描(必須要掃描到全部7個(gè)從機(jī))——停止掃描——對(duì)1號(hào)從機(jī)發(fā)起連接——使能notify——發(fā)送抄表命令——收數(shù)據(jù),直到數(shù)據(jù)全部上報(bào)完畢——對(duì)2號(hào)從機(jī)發(fā)起連接——依次類推,跟全部7個(gè)從機(jī)連接上,并通信完畢——主動(dòng)斷開連接。
從機(jī):上電初始化,主要包含設(shè)置廣播參數(shù)——進(jìn)入廣播態(tài)——收到主機(jī)抄表命令后上報(bào)數(shù)據(jù),直到數(shù)據(jù)全部上報(bào)完畢——保持連接狀態(tài)——主機(jī)斷開連接后,保持廣播態(tài)。
02
參數(shù)設(shè)置
主、從機(jī)相關(guān)參數(shù)設(shè)置,如下所示:
1、E95從機(jī)
出于降低功耗考慮,廣播間隔選擇2s。
2、E92主機(jī)
設(shè)置掃描參數(shù)
向上滑動(dòng)閱覽
0x01,0xFC,0x34,0x2F,0x00, 0x64,0x00, 0x5A, 0x01, 0x01, 0x07, 0x80, 0x32 ,0x64,0x00, 0x28,0x00 ,0x00, 0x01//設(shè)置掃描參數(shù)
0x64,0x00=100*625us=62500us=62.5ms,掃描間隔。//因?yàn)閺臋C(jī)廣播間隔是2s,比較大,為了盡快掃描到從機(jī),主機(jī)掃描間隔設(shè)置的小一些,比如說采用默認(rèn)值62.5ms。
0x5A=90%,scan duty占空比。//也是為了盡快掃描到從機(jī),占空比設(shè)置的大一些,比如90%,即一個(gè)掃描間隔里,掃描窗口開90%,剩下10%時(shí)間處理其他事件。
0x01=主動(dòng)掃描。//推薦設(shè)置成主動(dòng)掃描,可獲取掃描響應(yīng)。
0x01=1M phy。
0x07=掃描37、38、39信道。
0x80=-128dbm,rssi閾值。
0x32=每次掃描可緩存最大設(shè)備數(shù),50個(gè)
0x64,0x00=100*100ms=10 000ms=10s,一次掃描持續(xù)的最長(zhǎng)時(shí)間10s。//因?yàn)閺V播間隔是2s,建議采用默認(rèn)值10s,102=5,即給主機(jī)留了5個(gè)廣播包時(shí)間,來掃描到從機(jī)。
0x28,0x00=40ms. //改參數(shù)指定空閑時(shí)間。
0x00=不允許重復(fù)上報(bào)。
0x01 =連續(xù)掃描。
設(shè)置連接參數(shù)
向上滑動(dòng)閱覽
0x01,0xFC,0x36,0x0F,0x00, 0xA0,0x00, 0x32, 0x01 ,0x18,0x01 ,0x64,0x00, 0x64,0x00 ,0x00,0x00 ,0xB0,0x04//設(shè)置連接參數(shù)
0x00 A0=160*625us=100 000us=100ms//推薦使用默認(rèn)值100ms,此處掃描間隔,跟ID=0x34指令中的掃描間隔含義是一樣的,區(qū)別是使用場(chǎng)景不同,比如說主機(jī)保持1V7連接,突然與1個(gè)從機(jī)的連接斷開了,那么主機(jī)就直接用0x36指令發(fā)起連接。
0x32=50%,掃描占空比。//此處的掃描占空比不能設(shè)置的太大,一般采用默認(rèn)值50%,因?yàn)樵O(shè)置的太大,那么一個(gè)掃描間隔中,主機(jī)幾乎都處于掃描態(tài),那么它就沒空處理連接事件了,可能會(huì)導(dǎo)致連接斷開。
0x01=PHY 1M.
0x18,0x01=280*100ms=28000ms=28s,連接失敗檢測(cè)超時(shí)。//指MCU給主機(jī)發(fā)送0x36指令后,一旦≥28s連接還未建立成功,那么主機(jī)會(huì)吐出連接建立失敗的log。
0x64,0x00=100ms,最小連接間隔。//連接間隔可以根據(jù)自己應(yīng)用層數(shù)據(jù)量來決定,注意如果客戶想設(shè)置成某個(gè)值,那么建議主、從機(jī)的最小、最大連接間隔都設(shè)置成這個(gè)值。
0x64,0x00=100ms,最大連接間隔。//同上。
0x00,0x00=0s,從機(jī)潛伏次數(shù)。
0xB0,0x04=1200*10ms=12000ms=12s,初始連接丟失監(jiān)測(cè)超時(shí)時(shí)間。//如果客戶采用長(zhǎng)連接,為了保證連接的穩(wěn)定性,必須設(shè)置成≥12s(經(jīng)驗(yàn)值)。
-
通信
+關(guān)注
關(guān)注
18文章
5950瀏覽量
135787 -
BLE
+關(guān)注
關(guān)注
12文章
648瀏覽量
59295
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論