基于ARM7的藍(lán)牙接入點(diǎn)的設(shè)計(jì)與應(yīng)用
在設(shè)計(jì)中,使用了藍(lán)牙模塊的 UART口和微處理器 AT91R40008的串口 1相連,通過(guò)藍(lán)牙模塊向工業(yè)現(xiàn)場(chǎng)的無(wú)線設(shè)備發(fā)送和接收數(shù)據(jù),在由 cpu,經(jīng)工業(yè)以太網(wǎng)將數(shù)據(jù)傳送到上位機(jī)中,實(shí)現(xiàn)上位機(jī)對(duì)藍(lán)牙設(shè)備的訪問(wèn)與監(jiān)控。
3.1.4 網(wǎng)絡(luò)通信接口在設(shè)計(jì)中采用采用網(wǎng)絡(luò)接口將藍(lán)牙接入點(diǎn)接入工業(yè)以太網(wǎng),數(shù)據(jù)由以太網(wǎng)傳遞到上位機(jī)中,實(shí)現(xiàn)工業(yè)現(xiàn)場(chǎng)的無(wú)線設(shè)備和上位機(jī)的通信。網(wǎng)絡(luò)隔離器采用的是 HR61H50L,網(wǎng)卡芯片使用的是 AX88796。
AX88796是臺(tái)灣 Asix公司推出的 80186系列以及 MC68K系列等多種 CPU總線類(lèi)型。 AX88796執(zhí)行基于 IEEE802.3/IEEE802.3u 局域網(wǎng)標(biāo)準(zhǔn)的 10Mb/s和100Mb/s以太網(wǎng)控制功能,并提供IEEE802.3u兼容的媒質(zhì)無(wú)關(guān)接口 MII(Media Independent Interface),用以支持在其它媒質(zhì)上的應(yīng)用。 AX88796的地址總線 SA[9:0]與數(shù)據(jù)總線 SD[15:0]分別與 CPU的地址/數(shù)據(jù)總線相連。 CPU通過(guò) I/O讀寫(xiě) RJ45接口,或者經(jīng)過(guò) MII接口送至外部的物理層芯片。SEEPROM接口可以用來(lái)連接串行 EEPROM。EEPROM可用于存儲(chǔ) MAC地址,供 AX88796每次初始化時(shí)讀取。
3.1.5 電源部分
電源采用的是以太網(wǎng)供電設(shè)備,該設(shè)備采用符合 802.3受電設(shè)備標(biāo)準(zhǔn),輸出標(biāo)準(zhǔn)的 +24V,經(jīng)過(guò) LM2576-5、 AS1117-1.8和 AS1117-3.3電源芯片,電平轉(zhuǎn)換后,輸出藍(lán)牙接入點(diǎn)上的 cpu、存儲(chǔ)器、網(wǎng)卡芯片和藍(lán)牙模塊上所需的 1.8V和 3.3V電源。
3.1.6 串口通信
串口通信使用的是 MAX3232芯片。這里使用串口通信接口主要是為了調(diào)試藍(lán)牙模塊、 cpu和上位機(jī)之間的通信,及測(cè)試其通信性能。
3.2 軟件部分
在軟件設(shè)計(jì)部分,主要介紹一下藍(lán)牙模塊的通信原理。首先,初始化藍(lán)牙模塊,直到初始化成功。接著對(duì)通信模塊的各個(gè)端口進(jìn)行定義。AT91R40008有 32位的 I/O口,設(shè)計(jì)時(shí)結(jié)合實(shí)際中的情況,考慮具體所用的端口,結(jié)合其他通信模塊定義這些端口。定義通信模塊端口完成以后,立即與現(xiàn)場(chǎng)無(wú)線設(shè)備進(jìn)行連接。隨后,藍(lán)牙接入點(diǎn)開(kāi)始搜索現(xiàn)場(chǎng)設(shè)備,并對(duì)現(xiàn)場(chǎng)設(shè)備進(jìn)行讀寫(xiě),接收藍(lán)牙指令并更新。其藍(lán)牙模塊的通信流程圖如圖 3。
藍(lán)牙接入點(diǎn)向本地子網(wǎng)廣播自己的設(shè)備聲明,并接收其他設(shè)備的設(shè)備聲明。初始化完后 5秒鐘內(nèi)用來(lái)搜尋子網(wǎng)中的鄰居設(shè)備,搜尋完成后,開(kāi)始建立鄰居表,并把鄰居表內(nèi)的其他從設(shè)備加入到無(wú)線調(diào)度列表中。網(wǎng)絡(luò)組建完成后,接入點(diǎn)按照確定性調(diào)度算法輪詢(xún)從設(shè)備。并把藍(lán)牙數(shù)據(jù)報(bào)文轉(zhuǎn)換成工業(yè)以太網(wǎng)的報(bào)文,放入工業(yè)
以太網(wǎng)的調(diào)度器中。設(shè)備聲明報(bào)文:
typedef struct _zgb_pkt_ann {
} zgb_pkt_ann;
信息分發(fā)報(bào)文:
typedef struct _zgb_distribute { INT8U devdesp[16]; INT8U mdata[16];
} zgb_distribute;
令牌:
typedef struct _zgb_pass_token { INT8U ans;INT8U res[3]; /⁄設(shè)備描述, 字符串 //主 or從? 0主設(shè)備; 1 從設(shè)備 //設(shè)備狀態(tài): 0設(shè)備未組態(tài) , 自由發(fā)包; //1設(shè)備已組態(tài) , 獲取令牌才能發(fā)包 /⁄保留字段
/⁄設(shè)備描述, 字符串 /⁄信息分發(fā)的內(nèi)容
//確認(rèn)? 0不確認(rèn) ; 1確認(rèn) /⁄保留信息
} zgb_pass_token;
藍(lán)牙接入點(diǎn)在工業(yè)現(xiàn)場(chǎng)中的應(yīng)用
在設(shè)計(jì)中,將工業(yè)以太網(wǎng)的有線網(wǎng)絡(luò)與工業(yè)現(xiàn)場(chǎng)的無(wú)線設(shè)備之間建立連接,如圖 4。工業(yè)現(xiàn)場(chǎng)的無(wú)線設(shè)備通過(guò)一個(gè)藍(lán)牙專(zhuān)用的傳輸協(xié)議將數(shù)據(jù)傳輸?shù)剿{(lán)牙接入點(diǎn)。數(shù)據(jù)經(jīng)過(guò)轉(zhuǎn)換,成為工業(yè)以太網(wǎng)能夠識(shí)別和支持的格式,并傳輸?shù)焦I(yè)以太網(wǎng)中的一個(gè)發(fā)出指令請(qǐng)求的設(shè)備中。上位機(jī)同時(shí)可以通過(guò)以太網(wǎng)對(duì)數(shù)據(jù)進(jìn)行監(jiān)控。工業(yè)現(xiàn)場(chǎng)的無(wú)線設(shè)備還可以同時(shí)與一個(gè)帶有藍(lán)牙模塊的手持設(shè)備和一個(gè)藍(lán)牙接入點(diǎn)進(jìn)行連接,對(duì)數(shù)據(jù)進(jìn)行訪問(wèn)和采集。
5 小結(jié)
在搭建完整個(gè)系統(tǒng),并對(duì)藍(lán)牙的通信性能進(jìn)行檢測(cè)的過(guò)程中發(fā)現(xiàn),藍(lán)牙模塊由于采用的是信息無(wú)線傳輸方式,所以在傳輸過(guò)程中干擾較大,傳輸距離也較短。工業(yè)現(xiàn)場(chǎng)設(shè)備安裝的環(huán)境往往比較惡劣,怎樣使藍(lán)牙設(shè)備擁有更好的穩(wěn)定性、更低的功耗、更廣的工作范圍,這些對(duì)硬件設(shè)計(jì)和軟件優(yōu)化提出了更高的要求。
評(píng)論