朱慶華+景妮琴+?,?/p>
摘要:該文面向LoRa的物聯網平臺,將平臺分解為用戶節點終端、LoRa網關、LoRa服務器、管理平臺四個模塊。其中,傳感器和傳輸節點之間通過串口通信傳輸數據,節點接收數據之后通過LoRa調制方式發送給網關,服務器為所用設備公司提供的遠程服務器,在PC端編寫數據讀取窗口讀取服務器上接收的網關數據。最后對LoRa物聯網平臺進行了功能測試和性能測試。
關鍵詞:物聯網;LoRa;短距離通信
中圖分類號:TP393 文獻標識碼:A 文章編號:1009-3044(2018)01-0075-03
1 概述
1.1 技術的提出
2013年8月,Semtech公司向業界發布了一種新型的,基于1GHz以下的超長距低功耗數據傳輸技術(簡稱LoRa)的芯片。其接受靈敏度達到了驚人的-148dbm,LoRa是由升特公司(Semtech)發布的一種專用于無線電調制解調的技術,它與其他如FSK(頻移鍵控)、GMSK(高斯最小頻移鍵控)、BPSK(二進制相移鍵控)及其派生的調制方案形成競爭關系。
LoRa融合了數字擴頻、數字信號處理和前向糾錯編碼技術,擁有前所未有的性能。此前,只有那些高等級的工業無線電通信會融合這些技術,而隨著LoRa的引入,嵌入式無線通信領域的局面發生了徹底的改變。
1.2LoRa技術優勢
LoRa技術最突出的兩個優點就是長距離和低功耗。
LoRa技術的第一個優點就是傳輸距離長。在郊區環境下,LoRa技術的傳輸距離可以達到10~15km;在城市環境下,傳輸距離也能達到3~5km。這樣的傳輸距離相比Wi-Fi、2G、3G、4G等要遠很多。LoRa技術能有這么遠的傳輸距離,得益于它工作的頻率范圍比較低,頻率低的信號波長較大,在城市中眾多建筑包圍之下產生的衰落就比較小,所以傳輸距離遠。
LoRa技術另一個優點就是低功耗。LoRa技術之所以能夠低功耗,首先是因為其發射頻率低,信號波長比較長,在傳播過程中所產生的衰落比較小,因而可以采用低功率發射;其次,LoRa采用擴頻技術,能使信號的抗多徑、抗衰落能力比較強,所以對發射功率的要求不高;最后,為達到省電的目的, 業界廣泛應用WOR(Wake on Radio) 方式—芯片周期性地進入接收模式以判斷有沒有喚醒信號(比如前導),其他時間處于Sleep模式,通過對比,采用WOR方式可以使電池壽命相比功耗同樣不高的FSK調制提高3倍以上。
1.3 LoRa WAN1.0
LoRaWAN1.0是有LoRa聯盟提出的LoRa技術規范,它定義了LoRa網絡的通信協議和系統結構。通信協議和系統結構對LoRa網絡的節點電池壽命、網絡容量、服務質量、安全性和服務的多樣性有著重要影響。
如圖1所示,LoRaWAN網絡架構是一個典型的星形拓撲結構,在這個網絡架構中,LoRa網關是一個透明的中繼,連接前端終端設備和后端中央服務器。網關與服務器通過標準IP連接,而終端設備采用單跳與一個或多個網關通信,所有的節點均是雙向通信。
LoRaWAN的終端設備服務于不同的應用,有著不同的要求。為了優化各類終端應用程序配置文件,LoRaWAN利用不同的設備類權衡網絡下行通信延遲與電池壽命。在控制或執行器類型的應用程序,所述下行鏈路通信延遲是一個重要的因素。
2 面向LoRa的物聯網平臺設計
2.1 設計原則
物聯網平臺的設計應該支持多種業務需求,既要滿足不同業務的共性需求,同時又能夠支持不同業務的個性化需求。除此之外,平臺的系統設計還應該遵循以下幾個原則:安全性原則、實用性原則、標準性原則和可擴充性原則。
2.2 面向LoRa的物聯網平臺網絡結構
如圖2所示,整個LoRa物聯網平臺分為用戶節點終端、LoRa網關、LoRa服務器、管理平臺四個模塊。其中,用戶節點終端由測試節點與數據采集傳感器相連接,用戶節點終端部署在教學樓、學生公寓及行政樓等分散的多個位置,采用星型網絡布局;LoRa網關放在網絡中心機房內,用于接收測試節點發送的數據并轉發至服務器;LoRa服務器采用設備商提供的遠程云服務器;管理平臺通過登錄遠程云服務器獲取LoRa網關的數據,并能通過平臺向節點發送消息。
3 面向LoRa的物聯網平臺實現
平臺實現的用戶終端模塊由檢測儀、測試節點和移動電源組成,用于測試LoRa網絡覆蓋質量,傳輸溫度、濕度和空氣質量數據,同時,用戶也可以通過檢測儀了解到節點位置的溫度、濕度和空氣質量情況。
3.1 檢測儀
檢測儀上的各個傳感器都是通過串口通信傳輸數據,因而整個檢測儀的數據采用串口方式傳輸,采用TTL-USB接口將檢測儀連接到PC端,通過PC端的串口調試軟件測試數據傳輸是否正常。根據檢測儀的說明書,檢測儀上傳的數據間隔為1秒,波特率9600,數據位8位,停止位1位,無校驗位。
測試結果從串口調試軟件串口數據接收獲取,根據讀取的數據,計算如下:溫度=28.0℃;濕度=31RH%;PM2.5=0μg/m3;PM10=0μg/m3;計算結果與檢測儀屏幕顯示結果完全相符。測試結果說明檢測儀串口數據上傳沒有問題。
3.2 測試節點
測試節點為基于LoRa物聯網平臺中的重要部分,它的主要功能有:通過串口與檢測儀通信;OLED顯示屏,可根據需要顯示數據;通過編程中的邏輯修改,實現LoRaMAC、PHYMAC、低功耗三個模式直接的切換;向LoRa網關發送上行數據;接收LoRa網關的下行數據;測試LoRa網絡覆蓋質量。
節點編程實現:
1) 串口驅動程序
其中核心代碼如下:endprint
串口初始化函數:void UART_Init(void)
該函數的作用為初始化串口設置,在對測試節點進行燒寫編程時對串口的波特率、數據位數、有無停止位、有無校驗位等參數進行設置,若想修改這些參數,需要對測試節點進行重新燒寫。根據檢測儀的串口參數需求,編寫代碼:
UartHandle.Instance = USARTx;
UartHandle.Init.BaudRate = 9600;
UartHandle.Init.WordLength = UART_WordLENGTH_8B;
UartHandle.Init.StopBits = UART_STOPBITS_1;
UartHandle.Init.Parity = UART_PARITY_NONE;
UartHandle.Init.HwFlowCtl = UART_HWCONTROL_NONE;
UartHandle.Init.Mode = UART_MODE_TX_RX;
串口發送函數的關鍵語句為:
uint16_t i = 0 ;
for(i = 0;i { USART1→TDR = (uint8_t)(str[i]); while( HAL_USART_GET_FLAG(USART1,UART_FLAG_TC)== RESET);} 2) 屏幕驅動程序 其中的核心函數如下: void OLED_Init(void) 此函數為OLED的初始化函數,用于配置OLED引腳,設置對比度、掃描方向、亮度的參數。若想對OLED的基本參數進行改動,需修改此函數中的內容并重新燒寫。 void OLED_DrawPoint(u8 x,u8 y,u8 t) void OLED_ShowChar(u8 x,u8 y,u8 chr,u8 size,u8 mode) //單個字符顯示 此函數的功能為控制OLED顯示屏在(x,y)坐標的位置顯示一個字符。核心代碼如下: for(t=0;t { if(size==12)temp=asc2_1206[chr][t]; // Font 1206 else if(size==16)temp=asc2_1608[chr][t]; // Font 1206 else if(size==24)temp=asc2_2412[chr][t]; // Font 1206 else return; //Not word stock for(t1=0;t1<8;t1++) { if(temp&0x80)OLED_DrawPoint(x,y,mode); else OLED_DrawPoint(x,y,!mode); temp<<=1; y++; if((y-y0)==size) { y=y0; x++; break;}} void OLED_ShowString(u8 x,u8 y,const u8 *p,u8 size) //顯示需要的數據 { while((*p<='~')&&(*p>=' ')) //Determine whether illegal { if(x>(128-(size/2))){x=0;y+=size;} if(y>(64-size)){y=x=0;OLED_Clear();} OLED_ShowChar(x,y,*p,size,1); x+=size/2; p++;} } 3) LoRa頻點、信道設置 測試節點支持LoRaMAC工作模式,LoRaMAC工作模式又分為LoRa調制和FSK調制兩種,本次所建的LoRa物聯網平臺采用LoRa調制。實現LoRaMAC工作模式設置的程序寫在app_oasl.c文件中,其核心代碼如下: //設置LoRaMAC工作模式(LoRa調制) //設置信道1 g_macData.channels[0].Frequency = 779500000;//頻點 //速率范圍:((最高速率<<4丨最低速率)) g_macData.channels[0].DrRange.Value = ( ( DR_5 << 4 ) | DR_0 ); g_macData.channels[0].Band = 0; 4) 串口數據讀取 串口數據讀取的程序語句如下: switch(step) { case 0: if(ch == 0xFF) { step++; uart1_Rxcount= 0; memset(uart1_rxBuf,0,80);//???????? uart1_rxBuf[uart1_Rxcount] = ch; uart1_Rxcount++;} break; case 1: uart1_rxBuf[uart1_Rxcount++] = ch; if(uart1_rxBuf[8]==0x79)//跳過無用幀
step=0;
if(uart1_Rxcount==12)
……
for(uint8_t i=0;i<13;i++)
{ sprintf((char*)temp_buf+len,"%X",uart1_rxBuf[i]);//bandwidth
len=strlen((char*)temp_buf);}
OLED_ShowString(0,24,(u8*)temp_buf,12);
OLED_Refresh_Gram();
5) 串口數據發送
串口數據讀取完畢后,調用osal_set_event函數啟動發包程序。由于檢測儀上傳串口數據的頻率固定為1秒1幀,而測試節點采用LoRa模式發送數據的頻率遠遠低于檢測儀上傳串口數據的頻率。為保證測試節點不出現死機的情況,設置為可以丟包但是不會死機的工作模式,以保證測試節點正常工作。
3.3 用戶節點終端模塊整體測試
用戶節點終端模塊由檢測儀和測試節點組成,在完成對檢測儀和測試節點的編程、調試工作后,需對用戶節點終端模塊整體進行測試。
將測試節點上的4PIN串口數據線按照GND-GND,5V-5V,TX-RX,RX-TX的順序連接。串口數據線連接完成后,將移動電源的Micro-USB口連接至檢測儀,打開移動電源和檢測儀的開關,測試節點已經正確地讀取到了檢測儀上傳的串口數據。由此可得,用戶節點終端模塊工作正常。
3.4 LoRa 網關
為了方便管理和調試LoRa網關,網關上設有USB-B型接口,通過使用USB打印線可以將網關和PC相連接。PC終端與LoRa網關連接成功后,首先在PC 終端的設備管理器中查詢到PC終端與LoRa網關連接的串口號。連接后采用的調試軟件為Putty。設置相應參數進行連接管理。
常用指令gw info顯示LoRa網關的基本信息,包括ID,DTU版本,GWM 版本(硬件/軟件),地理位置信息。指令gw ip顯示LoRa網關的IP 信息,包括網絡連接類型,IP 地址,子網掩碼,默認網關。指令gw ping測試LoRa網關與服務器的連接情況。
3.5 LoRa服務器
基于LoRa的物聯網平臺使用的遠程云服務器主要功能有:實現中心網管平臺功能;實現LoRaWAN MAC部分;負責Gateway網關及配置工作,Mote配置及OTA與應用服務器數據交互。
3.6 管理平臺
管理平臺對網絡中各個用戶的節點終端進行管理。面向LoRa物聯網網絡的需求,管理平臺具有以下功能:
1) 服務器安全驗證
管理平臺所有功能的前提是登錄LoRa遠程云服務器,為保證數據安全,管理平臺登錄服務器時應驗證登錄信息并反饋。根據上一節內容,CS需要間隔60秒向AS發送登錄信息,這樣就確保了信息的安全。
2) 測試節點管理功能
管理平臺中應當對所有通過LoRa網關接入服務器的測試節點進行列表管理。通過選中測試節點,可以實現查看測試節點所發數據、向測試節點發送數據的功能。為了測試LoRa網絡的覆蓋質量,測試節點在發送數據時會將頻點、帶寬、碼率等信息一起發送到LoRa網關。服務器也應該具有讀取這些數據的功能,以方便和用戶節點終端進行對比,進而檢測LoRa網絡的覆蓋質量。
3) 對測試節點所發數據的處理功能
測試節點所攜帶的有效數據,根據上文所述,是一串HEX編碼的十六進制數據幀。為了更直觀地在管理平臺展示溫度、濕度和空氣質量這些數據,管理平臺需要對數據幀進行處理。通過上文所述的計算方法,管理平臺可以正確地顯示實際的數據。
4) 根據測試節點ID進行篩選
由于一個LoRa服務器可以接入很多的LoRa網關,一個網關又支持上千個測試節點接入,所以在服務器端會有很多的測試節點。服務器辨別各個測試節點的依據就是每個測試節點獨一無二的ID,根據測試節點ID選擇某個位置的測試節點比較繁瑣。為了解決這個問題,管理平臺應該具有根據節點ID進行篩選的功能,方便管理員通過按鈕直接訪問特定的測試節點。
4 結束語
本文進行了LoRa物聯網平臺的需求分析,針對需求,對物理網平臺進行了總體設計,將平臺分解為用戶節點終端、LoRa網關、LoRa服務器、管理平臺四個模塊。其中,傳感器和傳輸節點之間通過串口通信傳輸數據,節點接收數據之后通過LoRa調制方式發送給網關,服務器為所用設備公司提供的遠程服務器,在PC端編寫數據讀取窗口讀取服務器上接收的網關數據。
參考文獻:
[1] 劉琛,邵震,夏瑩瑩. 低功耗廣域LoRa技術分析與應用建議[J]. 電信技術,2016(5).
[2] 龔天平. LORA技術實現遠距離、低功耗無線數據傳輸[J]. 電子世界,2016(10).
[3] 胡江波,顏歡. 基于物聯網的無線傳感網絡平臺[J]. 電腦知識與技術,2015,11(6).
[4] 夏瑩瑩,劉琛,邵震. LPWA,物聯網產業發展的新機遇[J]. 通信企業管理,2015(10).endprint