STM32物聯網通訊GPRS


一、GPRS相關概念介紹  

  智能家居和物聯網都是目前的新興產業,智能家居和物聯網都是通過無線通訊模塊與服務端進行數據通訊。其中GPRS通訊是一種常見的方式。GPRS(通用分組無線業務)的簡稱,是在現有的GSM系統上新增新GGSM(網絡支持節點)和SGSN(服務支持節點)節點發展出來的一種新的分組數據承載業務。GPRS網絡傳輸的主要優點:永遠在線、按流量計費、快速登陸、高速傳輸、覆蓋范圍內不受限制、數據傳輸可靠等。

  使用GPRS,一般會選擇使用GPRS模塊,在這里我選擇的是廣和通廠商的G510模塊。GPRS安裝到控制器中,主要功能為通過GPRS網絡連接到Internet網絡,並主動與監聽中心建立通信鏈路,進行雙向數據通訊。GPRS模塊主要是由G510模塊、天線、SIM卡、相關電平轉換電路等組成,GPRS模塊通過串口與STM32單片機進行數據通訊。

 

二、基本初始化流程

  (1)考慮到模塊外圍電路電容充電效應,建議上電5s后發送開機初始化在命令。

  (2)常用指令

     AT+MRST    OK           -------------  重啟模塊,應答

     AT+CPIN?         READY  -------------  檢查SIM卡是否插好

     AT+CGREG?    OK    -------------  檢查網絡注冊狀態

       AT+CSQ     OK           -------------  信號查詢

      AT+MIPCALL?         : 0            -------------- 查詢網絡連接狀態(0:未連接;1:連接)

      AT+MIPCALL=1,\"cmnet\"    OK    ----------------連接網絡

      AT+MIPOPEN=1,,\"47.105.162.0\",1883,0   -------------- 連接服務器

  (3)數據鏈路層數據處理:實現GPRS數據接收/發送控制,存儲串口中斷接收到的數據,發送GPRS數據長度和GPRS數據內容。串口收到數據之后會將數據存儲到MIPRTCP_DataStreaming()中,這個函數會將接收到的數據進行解析處理。串口接收數據流程如下:

void USART1_IRQHandler(void) //串口1中斷服務程序
{
  u8 Res;

  if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中斷(接收到的數據必須是0x0d 0x0a結尾)
  {
    Res =USART_ReceiveData(USART1); //讀取接收到的數據
    MIPRTCP_DataStreaming(Res);

    if((USART1_RX_STA&(1<<15))==0)//接收完的一批數據,還沒有被處理,則不再接收其他數據
    {
      if(USART1_RX_STA<USART1_MAX_RECV_LEN) //還可以接收數據
      {
        TIM_SetCounter(TIM4,0); //計數器清空
        if(USART1_RX_STA==0) //使能定時器7的中斷
        {
          TIM_Cmd(TIM4,ENABLE); //使能定時器7
        }
        USART1_RX_BUF[USART1_RX_STA++]=Res; //記錄接收到的值
      }
      else
      {
        USART1_RX_STA|=1<<15; //強制標記接收完成
      }  
    }

    // USART_ClearITPendingBit(USART1,USART_IT_RXNE);
  }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM