STM32开发板+机智云AIoT+家庭监测控制系统-Arduino中文社区 - Powered by Discuz! Archiver

机智小子 发表于 2022-6-24 16:35

STM32开发板+机智云AIoT+家庭监测控制系统

摘要:基于esp8266与机智云Aiot开发平台的家庭监测和控制系统是基于大数据和物联网技术的家庭设备控制系统。利用机智云物联网平台和ESP8266WiFi模块、STM32核心板、电机驱动、继电器、温湿度传感器模块等,实现与手机终端的数据交互和数据监测。
通过移动手机终端APP的开关按键,可以控制系统电机的正转与反转;通过APP的开关按键,模拟窗户的开合,并控制舵机的正转和反转,模拟门的开关;通过APP的开关按键控制系统LED的亮灭,模拟家中对灯的控制;
通过APP的开关控制按键模拟家庭风扇的控制。系统采集MQ135烟雾传感器的数值,经单片机进行ADC转换后,通过OLED显示ADC采集转换后的数值。单片机将通过DHT11采集的数值显示在OLED上,还可通过APP和OLED显示模块查看单片机系统外设的运行状态。

引言
火灾,是人类重大的灾难之一。每一次的火情都牵动无数人的心,而火情最容易带来人员的伤亡和财产的损失。据统计,全世界每天发生大大小小的火灾约一万起,而我国在消防体系十分健全的情况下,每年火灾发生的数量达到十五万起,家庭起火导致的火灾约五万起,占三分之一。每年因火灾而失去生命的人约800人,每年因火灾造成的经济损失超10亿元。家庭防火刻不容缓,特别是因缺乏安全意识玩火、家庭线路老化、天然气泄漏等需要引起注意。如今,很多重要的公共场合已在关键地方安装了烟雾报警器,能在第一时间发现可能存在的火情威胁。但家庭是我们极度容易忽视的地方。
随着物联网技术的发展,智能家居作为物联网最典型的应用之一,越来越多的设备接入物联网中,给人们的生活带来了很多便利。本系统利用物联网技术完成了简易的智能家庭监测和控制系统。利用开源的机智云物联网平台实现远程数据交互,通过智能云平台对家庭传感器实现远程控制,对家庭中潜在的火源威胁进行监控。采用烟雾传感器、温湿度传感器、人体光学传感器等,对嵌入式系统在中间层进行深度开发,实现基本的功能原理,完成原理图、PCB的设计,以及嵌入式系统软件实现课题的目标功能。
1总体设计方案
本系统基于ARMM3系列控制器,考虑外设中需要较大的驱动能力和较大的内存存储空间才能实现系统运算,故结合本设计的需求,使用WiFi模块作为单片机与上位机系统间的通信模块。单片机采集外部的温湿度信息、空气中烟雾的浓度信息等,通过WiFi模块连接云平台,借助云平台与手机终端APP将信息传递给用户。用户通过手机终端APP按键,向云平台传输字符信号,云平台通过WiFi模块向单片机系统传递控制指令,单片机接收到指令后,执行相应的操作。系统框架如图1所示。

https://club.gizwits.com/data/attachment/forum/202206/24/154818h4w58qm4oomm5f5t.jpg.thumb.jpg
图1系统框架
2硬件设计
本系统的硬件模块主要包括:嵌入式微控制器STM32F103C8模块、GPS/北斗模块、OV7670摄像头模块和GPRS模块。其中,STM32F103C8为主控制器,负责信息的处理与控制;GPS/北斗模块和OV7670摄像头模块负责采集环境图片信息和当前的位置信息;GPRS模块负责嵌入组建网络并与Internet服务器通信。
2.1系统电源设计
本系统采用12V的DC作为供电电源,用线性稳压芯片和DC调压芯片作为嵌入式系统为各外设供电。由于本系统中有较多的应用外设,因此需要多个稳压芯片稳定系统的电压,以确保外设和CPU不受电压影响,正常工作。有些负载比较大的外设,如电机和舵机等,在使用时需要较大电流,如果共用同一个电源系统,在外设驱动时,电压和电流波动较大,会影响其他外设的正常使用,而嵌入式系统也可能会因为电压和电流的不稳定造成复位现象,极大影响系统的稳定运行。因此在选择系统电源时,选择多电源分开供电的方案,如图2所示。
https://club.gizwits.com/data/attachment/forum/202206/24/154847hs7wgksbs8vdw6v4.jpg.thumb.jpg
图2系统电源分配方案
2.2嵌入式系统硬件
嵌入式开发系统采用STM32F103RCT6核心板模块。模块资源包括STM32RCT6集成的32位SOC、SWD程序调试接口、复位按键电路、通用I/O口、时钟振荡电路、FLASH存储电路、OLED接口、按键电路以及LED电路。

2.3ESP8266硬件设计
ESP8266作为一款性能强大的无线射频模块,内部定义了丰富的管脚。ESP8266通过串口与单片机相连,根据数据手册可知,单片机的USART1在PA9和PA10引脚上,其中,ESP8266的RX与单片机的TX相连,ESP8266的TX与单片机的RX相连。ESP826作为本系统的主要通信载体,连接了MCU和云服务平台,通过串口1的串口协议与MCU实现数据交互,通过与局域网的连接,把串口协议传输的信息上传到云服务平台。同样,用户操作上位机平台,经云平台和ESP8266将控制信号通过串口协议传输给MCU,MCU在接收到串口数据后,执行相应的指令。
2.4L298N电机驱动电路
L298N模块是一款集成的驱动电路,其具有驱动能力强、发热量低、抗干扰能力强等特性。L298N可输出电流为2A,最大可输出4A电流,最高可驱动50V工作电压,可用于中小型直流电机的控制。L298N使用单片机的TTL逻辑电平控制电机的正反转,软件上只需改变输入端逻辑电平的脉冲宽度即可控制电机的转速。通过控制输入端逻辑电平的输入端正转或反转,就能相应控制电机的正反转。L298N的正常工作电压为5V。L298N内部集成了L298N驱动和8个续流二极管,构成H桥驱动电路。
2.5SG90舵机模块
SG90使用5V直流电压,控制信号接单片机的PA11。PA11为定时器的通道4,通过PWM信号控制舵机的正反转,通过PWM输出的脉冲宽度来控制舵机的转速和角度。
2.6MQ135烟雾传感器
MQ135烟雾传感器为5V供电,通过PA1的ADC引脚采集MQ135信号。MQ135烟雾传感器可以输出数字信号和模拟信号,本系统采集模拟信号。
2.7OLED显示电路
本系统使用OLED显示电路显示本系统的外设状态,如烟雾传感器ADC采集的值,温湿度的值,以及电机、舵机、LED、风扇的状态。OLED显示电路采用3.3V电压供电,使用I2C协议通信。
3系统软件设计
本系统的软件设计模块主要包含ESP8266固件烧录、云平台接入、云平台创建节点、STM32固件开发四部分。借助ESP8266与SOC的云平台开发需要完成以下4步:(1)ESP8266模块烧录GAgent开发固件;(2)机智云开发中心创建产品以及定义数据点;(3)下载机智云开发平台生成的通信协议并对协议进行移植;(4)使用机智云APP对设备进行远程测试。
初始化各模块的函数后,在软件的主函数中写入系统的总体服务函数,系统在OLED显示屏上显示温湿度、烟雾、门、窗以及人体红外等传感器状态。当按键按下时,OLED显示为安防状态,然后系统扫描MQ135烟雾传感器及温湿度传感器,当传感器的数值大于阈值时,系统报警。当上位机执行控制指令时,触发串口中断,接收来自上位机的字符指令,把相应的标志置位后,执行控制指令。控制主流程如图3所示。
3.1STM32固件开发编程
本系统基于STM32固件库开发,在软件开发之前,需要对硬件系统的固件库进行初始化(GPIO初始化、串口初始化、I2C协议初始化、定时器初始化),方便以后使用。
3.2WiFi传输函数
ESP8266模块作为本系统的传输媒介,使用串口通信,初始化串口代码后,需要撰写WiFi模块的接收代码和发送代码。上位机APP按钮按下后,通过WiFi模块给单片机传输一个字符指令,单片机程序中设定接收相应的字符后,将系统中标志位的布尔值赋值,系统在运行中不断扫描标志位布尔值的状态,执行相应的指令。
3.3OLED显示函数初始化完成后,通过OLED显示函数向OLED显示屏不断传送信息,通过sprintf()函数把字符和模块采集的数据格式化并送入oled_buffer字符数组,通过判断状态标志位的布尔值,不断更新字符数组内存放的值,然后通过OLED_ShowStr()函数向OLED传送信息。OLED_ShowStr()包含4个入口参数,分别为OLED的x坐标,y坐标,字符串和字符大小。

https://club.gizwits.com/data/attachment/forum/202206/24/154907lldcedmhjpmhqxxj.jpg.thumb.jpg图3控制主流程
3.4PWM输出函数本系统中的门和窗使用舵机和电机控制,舵机和电机均依靠单片机的脉冲宽度调制来控制转速和转动角度,电机和舵机分别使用系统的定时器3和定时器1。以电机控制为例,初始化结束后,系统WINDOW_TIM3_PWM_INIT(799,0)定时器设定一个时钟周期为800ms,在上位机执行开窗或者关窗指令时,设定25%的脉冲宽度,延时1s后停止。电机的控制引脚分别悬挂在定时器3的通道3和通道4上,通过控制不同通道上的脉冲宽度可以控制电机的正转和反转,以实现开窗和关窗的目的。
3.5ESP8266固件烧录ESP8266接入机智云平台需要将机智云开发的固件烧录至WiFi模块的SOC中,在机智云官网上有已经集成的固件包,以及烧录的SDK软件。固件烧录时,需要将ESP8266的串口和USB-TTL的串口下载工具对应连接,在下载固件时,需注意把ESP8266的GPIO0连接到地线上,使模块进入写入模式。烧录完成后将GPIO0连接到VCC中,设置为工作模式。

3.6接入机智云平台
本系统需要使用云服务平台对系统进行实时监控,如果自主搭建云服务器的难度和成本太大,可以考虑接入机智云AIoT开发平台。接入机智云流程如图4所示。
https://club.gizwits.com/data/attachment/forum/202206/24/154921wgooukthopthnzoh.jpg.thumb.jpg
图4接入机智云流程
注册开发者账号后,用户账号可以通过用户的相关产品相互关联。创建产品,根据用户产品的类型创建对应的产品分类以及产品名称。机智云平台每个账号可以接入10个开发产品。创建产品之后,在产品中创建数据点。数据点即为系统的功能及参数。在云平台创建数据节点,本系统中,移动终端和SOC模块以控制和显示为主,数据类型分为可写和只读两种。可写类型:用户控制家庭的设备数据类型,如,LED、门、窗、空调等;只读类型:温湿度模块、烟雾传感器、人体红外传感器通过SOC上传的数据。创建节点后生成可移植的平台,将其移植到SOC后,设备能与云端实时通信,进行数据交互。
4实验验证搭建系统后,对系统的稳定性进行测试,对系统的功能进行必要性测试。系统上电自动复位时,各模块正常运行,LED、电机、舵机、风扇均处于停止状态,OLED显示屏循环显示模块状态,红外检测状态为无人状态,温湿度检测正常显示,烟雾传感器数据正常显示。
5结语本设计以STM32F103RCT6为核心,通过串口协议与本系统的主要通信模块ESP8266相连,单片机可通过串口协议完成对模块数据和ESP8266的WiFi模块通信,ESP8266在烧录机智云提供的固件后可连接到局域网,与机智云云平台的服务进行实时数据交互。
云平台可以在线调试系统的外设虚拟状态,在云平台的在线虚拟设备状态下,系统外设控制状态为布尔值,可以通过布尔值控制设备的状态标志位。系统在服务器的虚拟状态位如图5所示。
系统通过ESP8266与云平台上传系统状态标志以及温湿度和烟雾传感器采集的数据。系统向上位机上传数据示意图如图6所示。
https://club.gizwits.com/data/attachment/forum/202206/24/154959w6c660m53bnfjn6b.jpg.thumb.jpg
图5云平台控制界面

https://club.gizwits.com/data/attachment/forum/202206/24/155011mh6p6tbh7hbv69av.jpg.thumb.jpg
图6系统向上位机上传数据
当温湿度和烟雾的值大于STM32F103RCT6单片机设定的阈值时,单片机发出警报,并通过串口将预警信号发送给上位机APP。人体光学传感器HCSR-501采集人员闯入信息。可以在外出时通过按键将单片机设定为安防模式,单片机通过不断扫描人体光学传感器HCSR-501的电平判断是否有人闯入。
页: [1]
查看完整版本: STM32开发板+机智云AIoT+家庭监测控制系统