基于STM32的(GSM+DHT11)果園環(huán)境監(jiān)測系統(tǒng)
閑來無事颈抚,用手頭STM32做個(gè)項(xiàng)目泥从。
成品功能: 用DHT11測量溫濕度數(shù)據(jù)恍涂,通過GSM模塊發(fā)送短信給手機(jī)已實(shí)現(xiàn)自動(dòng)監(jiān)測的目的右蕊。做個(gè)上位機(jī)砰奕,顯示數(shù)據(jù)。以后延申多個(gè)燎含,方便管理宾濒。
材料
STM32ZET6開發(fā)板(戰(zhàn)艦V3)
TFT顯示屏(戰(zhàn)艦有我用的2.7寸的)
GSM模塊(ATK-SIM800C)
DHT11
杜邦線
用keil5進(jìn)行開發(fā)
風(fēng)速儀
CO2濃度儀
開始制作。
制作過程
首先測試GSM屏箍,通過AT指令使其可以發(fā)短信(也可測試打電話绘梦,本項(xiàng)目用不到),然后在板子中測試铣除,測試完成后加入DHT11谚咬,最后寫上位機(jī)。
GSM模塊(ATK-SIM800C)AT調(diào)試
這里引用原子哥的例程尚粘。
首先用AT指令測試模塊择卦,達(dá)到可以發(fā)短信,打電話郎嫁。
下邊是部分AT指令:
|AT|返回|作用|
|--|--|--|
|AT | OK |模塊通訊正常|
|AT+CPIN?|+CPIN:READY|查詢 SIM 卡的狀態(tài)秉继,主要是 PIN 碼|
|AT+CSQ|+CSQ: 24,0|查詢信號(hào)質(zhì)量|
|AT+COPS?|+COPS:0,0,”CHINA MOBILE”|查詢當(dāng)前運(yùn)營商|
|AT+CGMI|SIMCOM_Ltd|查詢模塊制造商|
|AT+CGMM|SIMCOM_SIM800C|查詢模塊型號(hào)|
|AT+CGSN|866104023267696|查詢產(chǎn)品序列號(hào)(集 IMEI 號(hào))|
|AT+CNUM|+CNUM:””,”136******”,”129”,7,4|查詢本機(jī)號(hào)碼|
|ATE1|OK|設(shè)置回顯模式(默認(rèn)開啟)|
|ATD10086;|OK| 用于撥打任意電話號(hào)碼|
|ATA|OK|應(yīng)答電話|
|ATH|OK|掛斷電話|
|AT+CMGF=1|OK|置短消息模式,設(shè)置為文本模式|
|AT+CSCS="GSM"|OK|用于設(shè)置 TE 字符集,純英文為GSM泽铛,中英文為UCS2|
|AT+CMGS|>|用于發(fā)短信|
英文短信的發(fā)送
設(shè)置字符集為
AT+CSCS="GSM"
尚辑;設(shè)置文本模式為
AT+CMGF=1
;發(fā)送短信的目的人為
AT+CMGS="18********"
盔腔;然后模塊返回:
>
杠茬,此時(shí)我們輸入我們需要發(fā)送的內(nèi)容:ATK-SIM800C MSG SEND TEST
;在發(fā)送完內(nèi)容以后弛随, 最后以十六進(jìn)制(HEX)格式單獨(dú)發(fā)送(不用添加回車):
1A
(即 0X1A)瓢喉,即可啟動(dòng)一次短信發(fā)送。稍等片刻舀透,在短信成功發(fā)送后栓票,模塊返回如: +CMGS: 39,的確認(rèn)信息愕够,表示短信成功發(fā)送
中文短信的發(fā)送
首先發(fā)送
AT+CMGF=1
走贪, 設(shè)置為文本模式;設(shè)置文本模式參數(shù)
AT+CSMP=17,167,2,25
惑芭;設(shè)置字符集為
AT+CSCS="UCS2"
坠狡;首先要用將號(hào)碼和發(fā)送內(nèi)容轉(zhuǎn)換為UNICODE 字符串,
1.號(hào)碼182********遂跟,轉(zhuǎn)換后的 UNICODE 字符串(去掉空格后)為:
2.00310038003200390030003100390035003600330032
3.ATK-SIM800C 中英文短信發(fā)送測試逃沿,裝換后的 UNICODE 字符串為:
4.00410054004B002D00530049004D003800300030004300204E2D82F1658777ED4FE153D
190016D4B8BD5
由于使用了 UCS2字符集码荔,所有字符/數(shù)字/漢字,都必須使用 UNICODE 編碼
- 發(fā)送:
AT+CMGS=”00310038003200390030003100390035003600330032”
,這個(gè)指
令感挥,然后模塊返回:>
- 此時(shí)我們輸入我們需要發(fā)送的內(nèi)容: `00410054004B002D00530049004D003800300030004300204E2D82F1658777ED4FE153D
190016D4B8BD5 `注意,此可以不用發(fā)送回車了越败;
- 在發(fā)送完內(nèi)容以后触幼,最后以十六進(jìn)制(HEX)格式當(dāng)獨(dú)發(fā)送(不用添加回
車): 1A
(即 0X1A),啟動(dòng)一次短信發(fā)送究飞。
一次中英文短信發(fā)送成功置谦。
GSM模塊(ATK-SIM800C)板子調(diào)試
將原子哥戰(zhàn)艦代碼下載到板子中進(jìn)行調(diào)試
硬件連接
模塊需要獨(dú)立供電,推薦 12V1A 電源亿傅。
板子PB11連接STXD媒峡,PB10連接SRXD,模塊GND連接板子GND
代碼測試
下載原子哥【正點(diǎn)原子】GSMGPRS模塊ATK-SIM800C例程**
初始化
撥號(hào)測試
短信測試
功能都正常我們就開始修改代碼
去掉所有跟短信沒有關(guān)系的代碼葵擎;
將短信目的寫成確定的谅阿;
將短信內(nèi)容改為:
溫度:** 濕度:** ADC1:** ADC2:**
-
進(jìn)行測試,收到的短信內(nèi)容為在這里插入圖片描述
這樣就可以了酬滤。
溫濕度模塊(DHT11)
我們將溫濕度模塊代碼加入原來代碼中签餐。
將模塊代碼文件加入。
在keil中添加引入這個(gè)文件盯串。
在主函數(shù)中添加初始化函數(shù)氯檐。
將溫濕度數(shù)據(jù)添加到短信內(nèi)容中。
這里還是采用按鍵發(fā)送短信体捏,按鍵K1之后直接向固定人發(fā)送帶數(shù)據(jù)的固定短信冠摄。(每條一毛,自動(dòng)發(fā)的話還是有點(diǎn)浪費(fèi)几缭。)
這樣就完成了河泳。
成品下位機(jī):
ADC
又加了兩路ADC可以添加別的傳感器這里添加的是風(fēng)速傳感器和二氧化碳傳感器。
<font color=#999AAA >用的是ADC1的通道1和通道4奏司,分別對應(yīng)的是A1和A4乔询。
</font>
風(fēng)速儀用的是這個(gè):
CO2濃度用的是這個(gè):
連接上板子:風(fēng)速儀,棕色接負(fù)極韵洋,紅色接A1竿刁。
查找資料并進(jìn)行線性測試后得出ADC值和數(shù)據(jù)的關(guān)系。
在代碼中加入兩者關(guān)系:
adcx_1*0.027
搪缨。連接上板子:CO2濃度儀食拜,接5V、GND副编、AOUT接A4负甸。
查找資料并進(jìn)行線性測試后得出ADC值和數(shù)據(jù)的關(guān)系。根據(jù)空氣中CO2濃度為百分之0.03,呼出的氣體中大約為百分之1呻待。得出兩者關(guān)系打月。
在代碼中加入兩者關(guān)系:
adcx_2*0.00003
。
加入代碼中進(jìn)行測試蚕捉。
結(jié)果跟預(yù)測的相同奏篙。
將數(shù)據(jù)通過串口1發(fā)送出去,方便上位機(jī)采集展示數(shù)據(jù)迫淹。
上位機(jī)
采用Visual Studio 2017進(jìn)行開發(fā)
- 設(shè)計(jì)樣式:
寫一個(gè)時(shí)間(跟隨系統(tǒng)時(shí)間)秘通;
寫串口接收數(shù)據(jù);
將串口的數(shù)據(jù)進(jìn)行分析并得到我們需要的數(shù)據(jù)敛熬;
將需要不同的數(shù)據(jù)展示到不同的位置肺稀。
完成。
界面樣式:
串口連接:
數(shù)據(jù)結(jié)果:
搞定了应民!
最后附上完整的項(xiàng)目文件话原。自行下載。
這個(gè)項(xiàng)目到這里就算完了瑞妇。
還有很多不足的地方稿静,希望大佬可以指正。也希望和愛好者交流學(xué)習(xí)辕狰。
禁止轉(zhuǎn)載8谋浮!蔓倍!
博客:https://blog.csdn.net/weixin_42320020/?type=blog
QQ:2039723308
VX:Shiboven