stm32毕业设计 NBIOT远程通信系统
文章目錄
- 1 簡介
- 2 NBIOT 簡介
- 2.1 NBIOT 的特點
- 2.2 NBIOT 的優點
- 2.3 NBIOT能做什么
- NBIOT 模塊使用
- 4 實現效果
- 5 STM32 驅動NBIOT模塊
- 6 最后
1 簡介
Hi,大家好,NBIOT是近幾年不比較火的遠程通信模塊,是物聯網的重要技術,今天學長向大家詳細介紹什么是NBIOT,NBIOT模塊能做什么,以及但單片機如何使用NBIOT模塊
單片機與NBIOT通信模塊
大家可用于 課程設計 或 畢業設計
2 NBIOT 簡介
基于蜂窩的窄帶物聯網(Narrow Band Internet of Things, NB-IoT)成為萬物互聯網絡的一個重要分支。NB-IoT構建于蜂窩網絡,只消耗大約180KHz的帶寬,可直接部署于GSM網絡、UMTS網絡或LTE網絡,以降低部署成本、實現平滑升級。
NB-IoT是IoT領域一個新興的技術,支持低功耗設備在廣域網的蜂窩數據連接,也被叫作低功耗廣域網(LPWAN)。NB-IoT支持待機時間長、對網絡連接要求較高設備的高效連接。據說NB-IoT設備電池壽命可以提高至至少10年,同時還能提供非常全面的室內蜂窩數據連接覆蓋。
重點:NBIOT是一種通信技術,是用于通信的!單片機通過該模塊可以與外接互聯網進行數據交互!
2.1 NBIOT 的特點
- 頻譜窄:200kHz;
- 終端發射窄帶信號提升了信號的功率譜密度,提升了信號的覆蓋增益,并且提升了頻譜利用效率;
- 相同的數據包重復傳輸也可獲得更好的覆蓋增益;
- 另外該技術降低了終端的激活比,降低了終端基帶的復雜度。
- NB-IOT四大能力:廣覆蓋,海量連接,更低功耗,更低芯片成本。
- NB-IOT基于現有蜂窩網絡的技術,可以通過升級現網來快速支持行業市場需求,成為GUL網絡上的第四種模式。
2.2 NBIOT 的優點
- NB-IOT與其他的LPWA技術LoRa,Sigfox的比較優勢
- 可以重用現網資源,支持廣覆蓋
- 標準化技術,支持切換移動性好。產業鏈豐富
- 20dB+增益(vs GSM)
- 授權頻譜,抗干擾性好
2.3 NBIOT能做什么
- 智能水表
- 智能停車
- 寵物智能跟蹤
- 智能自行車
- 智能煙霧檢測器
- 智能馬桶
- 智能售貨機
- 等等等等
NBIOT 模塊使用
這里以市面上常見的NB260模塊為例:
NB260是基于移遠NB-IOT模塊:BC26的小系統板,板載了IPEX射頻天線座,5V轉3.3V LDO穩壓電源,MicroSIM卡座,ESD防護電路,開機電路等,即插即用。
NB260小系統板采用2.54標準間距排針,引出BC26模塊的全部可用GPIO口,整板尺寸僅 25mm*33.02mm,便于嵌入到客戶產品中。
支持的頻段
引腳信號
NB260引腳排列如下圖所示。
CON1(P1)右側一列信號為:GND,VIN,TXD,RXD,PEN,RST,EINT,NRI(NRI電壓域1.8V,若用作喚醒MCU,可以簡單串聯1K電阻然后上拉后與MCU的GPIO口相連。),該列信號還與NB101,NB200兼容,可以相互替換。
SIM卡槽
NB260采用自彈式MicroSIM卡槽,注意SIM卡插入方向為:卡缺口朝外。
工作模式
4 實現效果
(以下為學長作品)
stm32 + NBIOT模塊構建的家庭煙霧報警系統(智能家居的一部分)
NBIOT指紋簽到系統:
5 STM32 驅動NBIOT模塊
#include"nbiot.h" /*************************************************************************************** 函數名:send_NB_IoT 功 能:發送數據到NB模塊 參 數:cmd 要發送的數據或者命令 返回值: 例 子: 說 明: ****************************************************************************************/ void send_NB_IoT(u8 *cmd) {while(*cmd!='\0'){USART_SendData(USART2,*cmd++);while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)==Bit_RESET); //發送數據結束} }/*************************************************************************************** 函數名:NB_IoT_ack_chack 功 能://檢查NB模塊應答是否符合預期 參 數: 返回值: 例 子: 說 明: memset(a, 0, sizeof a); //清空數組 ****************************************************************************************/ u8 NB_IoT_ack_chack(u8 *str) {delay_ms(10);if(USART2_RX_STA!=0){USART2_RX_STA=0;if(strstr((const char*)USART2_RX_BUF,(const char*)str))//符合預期{ memset(USART2_RX_BUF,0, sizeof USART2_RX_BUF); return 0;}else //不符合預期 { memset(USART2_RX_BUF,0, sizeof USART2_RX_BUF); return 1;} } else { memset(USART2_RX_BUF,0, sizeof USART2_RX_BUF); //清空數組 return 1;} } u8 NB_IotConect() {u8 x=1;cmd1:send_NB_IoT("AT\r\n");// 指令測試if(!NB_IoT_ack_chack("OK")) x=0;else goto cmd1;return x; } /*************************************************************************************** 函數名:NB_IoT_ZDFW 功 能:自動附著網絡 參 數: 返回值: 例 子: 說 明: ****************************************************************************************/ u8 NB_IoT_ZDFW() {u8 x=0; cmd1: send_NB_IoT("AT+NCONFIG=AUTOCONNECT,TRUE\r\n") ; if(!NB_IoT_ack_chack("OK")) x++ ;else goto cmd1; cmd2: send_NB_IoT("AT+CFUN=1\r\n") ; if(!NB_IoT_ack_chack("OK")) x++ ;else goto cmd2; cmd3: send_NB_IoT("AT+NRB\r\n") ; if(!NB_IoT_ack_chack("REBOOTING")) x++ ;else goto cmd3; //確認自動附網 cmd4: send_NB_IoT("AT+NBAND?\r\n"); if(!NB_IoT_ack_chack("+NBAND:5")) x++ ;else goto cmd4; cmd5: send_NB_IoT("AT+CFUN?\r\n"); if(!NB_IoT_ack_chack("+CFUN:1")) x++ ;else goto cmd5; cmd6: send_NB_IoT("AT+CIMI\r\n");if(!NB_IoT_ack_chack("460113007651563")) x++ ;else goto cmd6; cmd7:send_NB_IoT("AT+CSQ\r\n"); //確認信號質量第一個參數應該 1-30 之間delay_ms(10);if(USART2_RX_BUF[7]>'0'&&USART2_RX_BUF[7]<'3'){memset(USART2_RX_BUF,0, sizeof USART2_RX_BUF); USART2_RX_STA=0;x++ ;}else {memset(USART2_RX_BUF,0, sizeof USART2_RX_BUF); USART2_RX_STA=0;goto cmd7;} cmd8: send_NB_IoT("AT+CGATT?\r\n");if(!NB_IoT_ack_chack("+CGATT:1")) x++ ;else goto cmd8; cmd9:send_NB_IoT("AT+CEREG?\r\n");if(!NB_IoT_ack_chack("+CEREG:0,1")) x++ ;else goto cmd9; cmd10:send_NB_IoT("AT+CSCON?\r\n");if(!NB_IoT_ack_chack("+CSCON:0")) x++ ;else goto cmd10; cmd11:send_NB_IoT("AT+CGPADDR\r\n"); if(!NB_IoT_ack_chack("+CGPADDR:0,10.")) x++ ;else goto cmd11; if(x==11) return 0;//自動附著網絡成功else return 1;//自動附網失敗} /*************************************************************************************** 函數名:NB_IoT_conect_COAP 功 能:COAP連接 參 數: 返回值: 例 子: 說 明: ****************************************************************************************/ u8 NB_IoT_conect_COAP() {u8 x=0; cmd1: send_NB_IoT("AT+CGSN=1\r\n") ; if(!NB_IoT_ack_chack("+CGSN:356566078248721")) x++ ;else goto cmd1; cmd2: send_NB_IoT("AT+NCDP=180.101.147.115,5683\r\n") ; if(!NB_IoT_ack_chack("OK")) x++ ;else goto cmd2; cmd3: send_NB_IoT("AT+NRB\r\n") ; if(!NB_IoT_ack_chack("REBOOTING")) x++ ;else goto cmd3; cmd4: send_NB_IoT("AT+NCDP?\r\n"); if(!NB_IoT_ack_chack("+NCDP:180.101.147.115,5683")) x++ ;else goto cmd4; cmd5: send_NB_IoT("AT+NSMI=1\r\n"); if(!NB_IoT_ack_chack("OK")) x++ ;else goto cmd5; cmd6: send_NB_IoT("AT+NNMI=2\r\n");if(!NB_IoT_ack_chack("OK")) x++ ;else goto cmd6; cmd7: send_NB_IoT("AT+NMGS=3,000102\r\n"); if(!NB_IoT_ack_chack("OK")) x++ ;else goto cmd7;if(x==7) return 0;//COAP連接成功else return 1; //COAP連接失敗 } /*************************************************************************************** 函數名:NBIoTInit 功 能:NBIoT初始化 參 數: 返回值: 例 子: 說 明: ****************************************************************************************/ void NBIoTInit(){NB_IotConect();NB_IoT_ZDFW();NB_IoT_conect_COAP(); // send_NB_IoT("AT+NMGS=10,53544d33325f4e423735\r\n"); //發送設備名字:STM32_NB75 // POINT_COLOR=BLUE; //設置字體為藍色 // LCD_ShowString(50,80 ,250,16,16,"NBIoT conecting..."); // if (!NB_IotConect()) LCD_ShowString(50,80 ,250,16,16,"NB_IotConect success!"); // else LCD_ShowString(50,80 ,250,16,16,"NB_IotConect error!!"); // LCD_ShowString(50,100 ,250,16,16,"NBIoT Net conecting..."); // if(!NB_IoT_ZDFW()) LCD_ShowString(50,100,250,16,16,"NBIoT ZDFW success! "); //自動附著網絡 // else LCD_ShowString(50,100,250,16,16,"NBIoT ZDFW error! "); // LCD_ShowString(50,120 ,250,16,16,"NBIoT COAP conecting..."); // if(!NB_IoT_conect_COAP()) LCD_ShowString(50,120,250,16,16,"NBIoT COAP success! ");//COAP連接 // else LCD_ShowString(50,120,250,16,16,"NBIoT COAP error! "); // send_NB_IoT("AT+NMGS=2,0005\r\n"); }6 最后
總結
以上是生活随笔為你收集整理的stm32毕业设计 NBIOT远程通信系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 欧盟统计局:2020年7%的欧盟企业使用
- 下一篇: linux内存加速硬盘缓存,linux块