IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 基于STM32的智能室内环境检测系统 -> 正文阅读

[嵌入式]基于STM32的智能室内环境检测系统

基于STM32的智能家具检测系统

闲来无事,用手头STM32做个项目。

成品功能:
1、不同基点可以同时检测不同环境的情况;
2、这些节点将数据发送给基站;
3、当基站检测到数据异常时,可以给手机发短信进行提醒;

材料

  • STM32F103C8T6最小系统板两个
  • OLED显示屏(IIC 四脚)两块
  • 温湿度模块(DHT11)
  • 气体传感器模块(TVOC/CO2 空气质量甲醛 二氧化碳测量)(SGP30)
  • 空气质量传感器(MQ-135)
  • 蓝牙模块(HC-05)两个
  • 短信GSM无线模块(SIM800C)
  • 杜邦线
  • 电源(充电宝代替)
  • 用keil5进行开发

开始制作。

制作过程

分为基点和基站,基点负责采集不同传感器信息并发送给基站;基站负责处理信息,并发送给手机。
基点:接收不同传感器采集的数据,打包一起,通过蓝牙模块发送给基站蓝牙模块。
基站:通过蓝牙接收数据,处理,判断,当数据不正常的时候,通过GSM发送短信给手机进行提醒。

系统制作

基点采用STM32F103C8T6作为主控;SGP30接3.3V供电,采用IIC进行数据传输;MQ-135接5V供电,有一个模拟输出,一个数字输出,我们这里用模拟输出,采集AD值,蓝牙模块接3.3v供电,串口传输;OLED接3.3v供电,采用IIC进行数据传输。
基站采用STM32F103C8T6作为主控;OLED接3.3v供电,采用IIC进行数据传输。GSM模块接5V供电,串口传输。

OLED模块调试

有机发光二极管又称为有机电激光显示,OLED显示技术具有自发光的特性,采用非常薄的有机材料涂层和玻璃基板,当有电流通过时,这些有机材料就会发光,而且OLED显示屏幕可视角度大,功耗低。OLED由于同时具备自发光、不需要背光源(只上电是不会亮的,驱动程序和接线正确才会点亮)、对比度高、厚度薄、视角广、反应速度快、可用于挠曲面板、使用温度范围广、结构及制程简单等优异之特性。最先接触的12864屏都是LCD的,需要背光,功耗较高,而OLED的功耗低,更适合小系统;由于两者发光材料的不同,在不同的环境中,ILED的的显示效果更佳。模块供电可以是3.3V也可以是5V,不需要修改模块电路,OLED屏具有多个指令控制,可以控制OLED的亮度、对比度、开关升压电路等指令。操作方便,功能丰富。可显示汉字、ASCll、图案等。同时为了方便应用在产品上,预留4个M3固定孔,方便用户固定在机壳上。
模块通过IIC进行通讯。

硬件连接

IIC并没有端口限制,随便找两个普通IO接上即可。

软件测试

1.调用淘宝给的例程。
2. 根据自己的需要,通过取模软件,得到自己想要显示的汉字或者图片。
3.观察显示是否正确。

取模软件按照这样设置即可
请添加图片描述
将得到的值放到char Hzk[][32]这个数组中即可

SGP30模块调试

SGP30模块
SGP30主要是对空气质量进行检测。TVOC是一项重要指标,指总可挥发有机物气体。一般我们可以用它来反映甲醛的浓度。
SGP30是一款单一芯片上具有多个传感元件的金属氧化物气体传感器,内集成4个气体传感元件,具有完全校准的空气质量输出信号。另外,SGP易于集成,能够将金属氧化物气体传感器集成到移动设备中,为智能家居、家电和物联网应用中的环境监测开辟了新的可能性。主要用于甲醛的检测!
模块通过IIC进行通讯。

硬件连接

IIC并没有端口限制,随便找两个引脚接上即可。

软件测试
  1. 配置好IIC通信。
  2. 根据协议配置好数据接收。
  3. 测试数据是否正确。

温湿度模块调试

DHT11模块
分辨率:16Bit
重复性:士1%RH
精 度:25℃士5%RH
互换性:可完全互换
响应时间:1/e(63%)25℃ 6s 1m/s 空气 6s
迟 滞:<士0.3%RH
长期稳定性:<±0.5%RH/yr
供 电:DC33~5.5V
供电电流:测量0.3mA待机60μA
采样周期:次大于2秒
湿度测量范围:20-95%RH
温度测量范围:0-50℃
温度分辨率:1℃

硬件连接

接一个普通IO作为数据输入(推挽输入)即可。

软件测试
  1. 根据协议配置好数据接收。
  2. 测试数据是否正确。

空气质量传感器模块调试

MQ-135模块
SGP30主要是对空气质量进行检测。TVOC是一项重要指标,指总可挥发有机物气体。一般我们可以用它来反映甲醛的浓度。
SGP30是一款单一芯片上具有多个传感元件的金属氧化物气体传感器,内集成4个气体传感元件,具有完全校准的空气质量输出信号。另外,SGP易于集成,能够将金属氧化物气体传感器集成到移动设备中,为智能家居、家电和物联网应用中的环境监测开辟了新的可能性。主要用于甲醛的检测!
模块通过IIC进行通讯。

硬件连接

接AD输入(模拟输入)。

软件测试
  1. 配置好ADC检测。
  2. 测试数据是否正确。

蓝牙模块调试

HC-05模块
1、核心模块使用HC-05从模块,引出接口包括VCC,GND,TXD,RXD,KEY引脚、蓝牙连接状态引出脚(STATE),未连接输出低,连接后输出高;
2、led指示蓝牙连接状态,快闪表示没有蓝牙连接,慢闪表示进入AT模式,双闪表示蓝牙已连接并打开了端口;
3、底板设置防反接二极管,带3.3V LDO,输入电压3.6~6V,未配对时电流约30mA,配对后约10mA,输入电压禁止超过7V!
4、接口电平3.3V,可以直接连接各种单片机(51,AVR,PIC,ARM,MSP430等),5V单片机也可直接连接,无需MAX232也不能经过MAX232!
5、空旷地有效距离10米(功率等级为CLASS 2),超过10米也是可能的,但不对此距离的连接质量做保证
6、配对以后当全双工串口使用,无需了解任何蓝牙协议,支持8位数据位、1位停止位、可设置奇偶校验的通信格式,这也是最常用的通信格式,不支持其他格式。
7、可以通过拉高34脚进入AT命令模式设置参数和查询信息;
8、体积小巧(3.57cm*1.52cm),工厂贴片生产,保证贴片质量。并套透明热缩管,防尘美观,且有一定的防静电能力。
9、可通过AT命令切换为主机或者从机模式,可通过AT命令连接指定设备;
10、支持从4800bps~1382400bps间的标准波特率;
https://item.taobao.com/item.htm?spm=a230r.1.14.16.cbf753edcP10kQ&id=39244262350&ns=1&abbucket=8#detail

硬件连接

两个蓝牙分别接到串口上。

软件测试
  1. 我们将两块蓝牙配置成上电自动开启透传模式,波特率为9600,这样就不需要再去控制输出,只是接收两个牙传送的数据。(教程https://blog.csdn.net/weixin_42320020/article/details/88562539
  2. 配置好串口发送和接收,在主机那一段,还要具体去分析数据。
  3. 测试数据是否正确。

GSM模块调试

ATK-SIM800C
此模块供电要求:5V 供电 ,电脑调试初期电脑USB供电可以满足要求。因为我们加了1000UF的大电容。长时间传输数据用电量大推荐1A以上的直流,TTL电平串口自适应兼容3.3V和5V单片机。可以直接连接单片机。待机在80MA左右,可以设置休眠状态在10MA左右低功耗。电脑调试USB–232和USB–TTL均可,根据各人配件而定。支持短信,数据,彩信,上网等。复位排针引出,可实现现场无人值守远程复位,带DTMF功能实现远程遥控功能。模块最大的优点是保留232口,在学习或者开发时可以监听51低端单片机和模块指令执行情况,能更快的找出原因,节省开发和学习的时间。[支持2,3,4G手机卡]。

硬件连接

两个串口线接在板子另一路串口上,还需要接12V独立供电。

AT指令测试模块调试

首先用AT指令测试模块,达到可以发短信,打电话。
下边是部分AT指令:

AT返回作用
ATOK模块通讯正常
AT+CPIN?+CPIN:READY查询 SIM 卡的状态,主要是 PIN 码
AT+CSQ+CSQ: 24,0查询信号质量
AT+COPS?+COPS:0,0,”CHINA MOBILE”查询当前运营商
AT+CGMISIMCOM_Ltd查询模块制造商
AT+CGMMSIMCOM_SIM800C查询模块型号
AT+CGSN866104023267696查询产品序列号(集 IMEI 号)
AT+CNUM+CNUM:””,”136******”,”129”,7,4查询本机号码
ATE1OK设置回显模式(默认开启)
ATD10086;OK用于拨打任意电话号码
ATAOK应答电话
ATHOK挂断电话
AT+CMGF=1OK置短消息模式,设置为文本模式
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),启动一次短信发送。
    在这里插入图片描述
    一次中英文短信发送成功。
代码测试

我们要做的就是将上述步骤自动化,这里我们做的是英文短信,因为英文短信简单,也足够满足我们的需求。

  1. 初始化
  2. 短信测试


3. 这样既可得到我们需要的内容

GSM模块代码


//SIM800C主测试程序

void sim800c_test(void)
{	
	OLED_Clear();
	sim800c_send_cmd((u8*)0X1A,"+CMGS:",10);
	delay_ms(1000); 
	while(sim800c_send_cmd("AT","OK",100))//检测是否应答AT指令 
	{
		OLED_ShowString(40,3,"SBLJZ   ",16);	//连接成功
		sim800c_send_cmd((u8*)0X1A,"+CMGS:",10);
		delay_ms(800);
	} 
	OLED_ShowString(40,3,"LJCG   ",16);	//连接成功
	delay_ms(10); 
	while(sim800c_send_cmd("AT+CMGF=1","OK",200)){}			//设置文本模式 
		OLED_ShowString(40,3,"WBMS   ",16);//文本模式
	while(sim800c_send_cmd("AT+CSCS=\"GSM\"","OK",200)){}		//设置TE字符集为UCS2 
		OLED_ShowString(40,3,"ZFMS   ",16);//字符模式
	//发送短信测试
		OLED_ShowString(40,3,"ZZSZ    ",16);	//正在发送
	if(sim800c_send_cmd("AT+CMGS=\"13113131313\"",">",800) == 0);
	printf(temp_table_Send);
	if(sim800c_send_cmd((u8*)0X1A,"+CMGS:",800)==0){OLED_ShowString(40,3," FSCG   ",16);return;}
		OLED_ShowString(40,3," FSSB   ",16);
	USART_RX_STA_2=0;
	if(USART_RX_STA_2&0X8000)sim_at_response(1);//检查从GSM模块接收到的数据 
}

这样就可以了。

最后完善代码逻辑。

通过接收基点发来的数据,经过分析后,当出现超过阈值的数值之后发送一次短信,知道本次恢复正常后再次超过阈值才会发送第二次短信。


这是整个实验的效果视频。
https://www.bilibili.com/video/BV1CR4y1A7Mf?spm_id_from=333.337.search-card.all.click
最后附上完整的项目文件。自行下载。
https://download.csdn.net/download/weixin_42320020/85319611
这个项目到这里就算完了。
还有很多不足的地方,希望大佬可以指正。也希望和爱好者交流学习。

禁止转载!!!
博客:https://blog.csdn.net/weixin_42320020/?type=blog
QQ:2039723308
VX:Shiboven

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-05-10 12:04:54  更:2022-05-10 12:05:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 16:23:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码