资讯详情

基于STM32的智能室内环境检测系统

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

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

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

材料

开始制作。

制作过程

分为基点和基站,负责收集不同的传感器信息并发送给基站;基站负责处理信息并发送给手机。 基点:接收不同传感器收集的数据,包装在一起,通过蓝牙模块发送到基站蓝牙模块。 基站:通过蓝牙接收数据、处理、判断,当数据异常时,通过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个M固定孔,方便用户将其固定在外壳上。 模块通过IIC进行通讯。

硬件连接

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

软件测试

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

根据此设置取模软件 请添加图片描述 把得到的值放进去char Hzk[][32]在这个数组中

SGP30模块调试

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

硬件连接

IIC没有端口限制,只需找两个引脚连接即可。

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

调试温湿度模块

分辨率:16Bit 重复性:士1%:士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. 测试数据是否正确。

空气质量传感器模块调试

硬件连接

接AD输入(模拟输入)。

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

蓝牙模块调试

1.使用核心模块HC-从模块中引出的接口包括05VCC,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命令模式设置参数和查询信息; 体积小(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模块调试

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

硬件连接

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

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),启动一次短信发送。 一次中英文短信发送成功。
代码测试

  1. 初始化
  2. 短信测试

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


//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

标签: te511温度lcd显示传感器753a二极管

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台