天天看點

基于STM32的(GSM+DHT11)果園環境監測系統

基于STM32的(GSM+DHT11)果園環境監測系統

閑來無事,用手頭STM32做個項目。

成品功能: 用DHT11測量溫濕度資料,通過GSM子產品發送短信給手機已實作自動監測的目的。做個上位機,顯示資料。以後延申多個,友善管理。

材料

  • STM32ZET6開發闆(戰艦V3)
  • TFT顯示屏(戰艦有我用的2.7寸的)
  • GSM子產品(ATK-SIM800C)
  • DHT11
  • 杜邦線
  • 用keil5進行開發
  • 風速儀
  • CO2濃度儀

開始制作。

制作過程

首先測試GSM,通過AT指令使其可以發短信(也可測試打電話,本項目用不到),然後在闆子中測試,測試完成後加入DHT11,最後寫上位機。

GSM子產品(ATK-SIM800C)AT調試

這裡引用原子哥的例程。

首先用AT指令測試子產品,達到可以發短信,打電話。

下邊是部分AT指令:

AT 傳回 作用
AT OK 子產品通訊正常
AT+CPIN? +CPIN:READY 查詢 SIM 卡的狀态,主要是 PIN 碼
AT+CSQ +CSQ: 24,0 查詢信号品質
AT+COPS? +COPS:0,0,”CHINA MOBILE” 查詢目前營運商
AT+CGMI SIMCOM_Ltd 查詢子產品制造商
AT+CGMM SIMCOM_SIM800C 查詢子產品型号
AT+CGSN 866104023267696 查詢産品序列号(集 IMEI 号)
AT+CNUM +CNUM:””,”136******”,”129”,7,4 查詢本機号碼
ATE1 OK 設定回顯模式(預設開啟)
ATD10086; OK 用于撥打任意電話号碼
ATA OK 應答電話
ATH OK 挂斷電話
AT+CMGF=1 OK 置短消息模式,設定為文本模式
AT+CSCS=“GSM” OK 用于設定 TE 字元集,純英文為GSM,中英文為UCS2
AT+CMGS > 用于發短信
英文短信的發送
  1. 設定字元集為

    AT+CSCS="GSM"

  2. 設定文本模式為

    AT+CMGF=1

  3. 發送短信的目的人為

    AT+CMGS="18********"

  4. 然後子產品傳回:

    >

    ,此時我們輸入我們需要發送的内容:

    ATK-SIM800C MSG SEND TEST

  5. 在發送完内容以後, 最後以十六進制(HEX)格式單獨發送(不用添加回車):

    1A

    (即 0X1A),即可啟動一次短信發送。
  6. 稍等片刻,在短信成功發送後,子產品傳回如: +CMGS: 39,的确認資訊,表示短信成功發送
中文短信的發送
  1. 首先發送

    AT+CMGF=1

    , 設定為文本模式;
  2. 設定文本模式參數

    AT+CSMP=17,167,2,25

  3. 設定字元集為

    AT+CSCS="UCS2"

  4. 首先要用将号碼和發送内容轉換為UNICODE 字元串,

    1.号碼182********,轉換後的 UNICODE 字元串(去掉空格後)為:

    2.00310038003200390030003100390035003600330032

    3.ATK-SIM800C 中英文短信發送測試,裝換後的 UNICODE 字元串為:

    4.00410054004B002D00530049004D003800300030004300204E2D82F1658777ED4FE153D

    190016D4B8BD5

由于使用了 UCS2字元集,所有字元/數字/漢字,都必須使用 UNICODE 編碼
  1. 發送:

    AT+CMGS=”00310038003200390030003100390035003600330032”

    ,這個指

    令,然後子產品傳回:

    >

  2. 此時我們輸入我們需要發送的内容:

    00410054004B002D00530049004D003800300030004300204E2D82F1658777ED4FE153D 190016D4B8BD5

    注意,此可以不用發送回車了;
  3. 在發送完内容以後,最後以十六進制(HEX)格式當獨發送(不用添加回

    車):

    1A

    (即 0X1A),啟動一次短信發送。
    基于STM32的(GSM+DHT11)果園環境監測系統
    一次中英文短信發送成功。

GSM子產品(ATK-SIM800C)闆子調試

将原子哥戰艦代碼下載下傳到闆子中進行調試
硬體連接配接
子產品需要獨立供電,推薦 12V1A 電源。

闆子PB11連接配接STXD,PB10連接配接SRXD,子產品GND連接配接闆子GND

基于STM32的(GSM+DHT11)果園環境監測系統
基于STM32的(GSM+DHT11)果園環境監測系統
代碼測試
下載下傳原子哥【正點原子】GSMGPRS子產品ATK-SIM800C例程
  1. 初始化
  2. 撥号測試
  3. 短信測試
功能都正常我們就開始修改代碼
  1. 去掉所有跟短信沒有關系的代碼;
  2. 将短信目的寫成确定的;
  3. 将短信内容改為:

    溫度:** 濕度:** ADC1:** ADC2:**

  4. 進行測試,收到的短信内容為
    基于STM32的(GSM+DHT11)果園環境監測系統
    這樣就可以了。

溫濕度子產品(DHT11)

我們将溫濕度子產品代碼加入原來代碼中。

  1. 将子產品代碼檔案加入。
  2. 在keil中添加引入這個檔案。
  3. 在主函數中添加初始化函數。
  4. 将溫濕度資料添加到短信内容中。
  5. 這裡還是采用按鍵發送短信,按鍵K1之後直接向固定人發送帶資料的固定短信。(每條一毛,自動發的話還是有點浪費。)
    基于STM32的(GSM+DHT11)果園環境監測系統

    這樣就完成了。

    成品下位機:

    基于STM32的(GSM+DHT11)果園環境監測系統

ADC

又加了兩路ADC可以添加别的傳感器這裡添加的是風速傳感器和二氧化碳傳感器。

用的是ADC1的通道1和通道4,分别對應的是A1和A4。

風速儀用的是這個:

基于STM32的(GSM+DHT11)果園環境監測系統

CO2濃度用的是這個:

基于STM32的(GSM+DHT11)果園環境監測系統
  1. 連接配接上闆子:風速儀,棕色接負極,紅色接A1。
  2. 查找資料并進行線性測試後得出ADC值和資料的關系。
    基于STM32的(GSM+DHT11)果園環境監測系統
  3. 在代碼中加入兩者關系:

    adcx_1*0.027

  4. 連接配接上闆子:CO2濃度儀,接5V、GND、AOUT接A4。
  5. 查找資料并進行線性測試後得出ADC值和資料的關系。根據空氣中CO2濃度為百分之0.03,呼出的氣體中大約為百分之1。得出兩者關系。
  6. 在代碼中加入兩者關系:

    adcx_2*0.00003

加入代碼中進行測試。

基于STM32的(GSM+DHT11)果園環境監測系統

結果跟預測的相同。

将資料通過序列槽1發送出去,友善上位機采集展示資料。

上位機

采用Visual Studio 2017進行開發
  1. 設計樣式:
    基于STM32的(GSM+DHT11)果園環境監測系統
  2. 寫一個時間(跟随系統時間);
  3. 寫序列槽接收資料;
  4. 将序列槽的資料進行分析并得到我們需要的資料;
  5. 将需要不同的資料展示到不同的位置。
  6. 完成。

    界面樣式:

    基于STM32的(GSM+DHT11)果園環境監測系統
    序列槽連接配接:
    基于STM32的(GSM+DHT11)果園環境監測系統
    資料結果:
    基于STM32的(GSM+DHT11)果園環境監測系統
    搞定了!

最後附上完整的項目檔案。自行下載下傳。

https://download.csdn.net/download/weixin_42320020/19103561

這個項目到這裡就算完了。

還有很多不足的地方,希望大佬可以指正。也希望和愛好者交流學習。

禁止轉載!!!

部落格:https://blog.csdn.net/weixin_42320020/?type=blog

QQ:2039723308

VX:Shiboven

繼續閱讀