基于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” ,这个指

令,然后模块返回:>

  1. 此时我们输入我们需要发送的内容: `00410054004B002D00530049004D003800300030004300204E2D82F1658777ED4FE153D

190016D4B8BD5 `注意,此可以不用发送回车了

  1. 在发送完内容以后,最后以十六进制(HEX)格式当独发送(不用添加回

车): 1A(即 0X1A),启动一次短信发送。

在这里插入图片描述

一次中英文短信发送成功。

GSM模块(ATK-SIM800C)板子调试

将原子哥战舰代码下载到板子中进行调试

硬件连接

模块需要独立供电,推荐 12V1A 电源。

板子PB11连接STXD,PB10连接SRXD,模块GND连接板子GND

在这里插入图片描述
在这里插入图片描述

代码测试

下载原子哥【正点原子】GSMGPRS模块ATK-SIM800C例程**

  1. 初始化

  2. 拨号测试

  3. 短信测试

功能都正常我们就开始修改代码

  1. 去掉所有跟短信没有关系的代码;

  2. 将短信目的写成确定的;

  3. 将短信内容改为:温度:** 湿度:** ADC1:** ADC2:**

  4. 进行测试,收到的短信内容为
    在这里插入图片描述

这样就可以了。

温湿度模块(DHT11)

我们将温湿度模块代码加入原来代码中。

  1. 将模块代码文件加入。

  2. 在keil中添加引入这个文件。

  3. 在主函数中添加初始化函数。

  4. 将温湿度数据添加到短信内容中。

  5. 这里还是采用按键发送短信,按键K1之后直接向固定人发送带数据的固定短信。(每条一毛,自动发的话还是有点浪费。)

在这里插入图片描述

这样就完成了。

成品下位机:

在这里插入图片描述

ADC

又加了两路ADC可以添加别的传感器这里添加的是风速传感器和二氧化碳传感器。

<font color=#999AAA >用的是ADC1的通道1和通道4,分别对应的是A1和A4。

</font>

风速仪用的是这个:

在这里插入图片描述

CO2浓度用的是这个:

在这里插入图片描述
  1. 连接上板子:风速仪,棕色接负极,红色接A1。

  2. 查找资料并进行线性测试后得出ADC值和数据的关系。

在这里插入图片描述
  1. 在代码中加入两者关系:adcx_1*0.027

  2. 连接上板子:CO2浓度仪,接5V、GND、AOUT接A4。

  3. 查找资料并进行线性测试后得出ADC值和数据的关系。根据空气中CO2浓度为百分之0.03,呼出的气体中大约为百分之1。得出两者关系。

  4. 在代码中加入两者关系:adcx_2*0.00003

加入代码中进行测试。

在这里插入图片描述

结果跟预测的相同。

将数据通过串口1发送出去,方便上位机采集展示数据。

上位机

采用Visual Studio 2017进行开发

  1. 设计样式:
在这里插入图片描述
  1. 写一个时间(跟随系统时间);

  2. 写串口接收数据;

  3. 将串口的数据进行分析并得到我们需要的数据;

  4. 将需要不同的数据展示到不同的位置。

  5. 完成。

界面样式:

在这里插入图片描述

串口连接:

在这里插入图片描述

数据结果:

在这里插入图片描述

搞定了!

最后附上完整的项目文件。自行下载。

这个项目到这里就算完了。

还有很多不足的地方,希望大佬可以指正。也希望和爱好者交流学习。

禁止转载!!!

博客:https://blog.csdn.net/weixin_42320020/?type=blog

QQ:2039723308

VX:Shiboven

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容