2023-06-07单片机部分代码公布,请从附件中下载
本项目已获得服务外包大赛东部赛区二等奖(后续应该是发全国三等奖)
物联网与工业自动化
应用类
智能家居远程控制系统
【问题说明】
基于Android,设计开发出一款智能家居远程控制APP,实现远程控制房间的智能家居设备的开、关和调整,如灯、空调、入户锁等。为用户带来更加智能、便利的生活。
【用户期望】
(1)智能控制中心
智能控制中心主要由智能主机网关组成,用来连接各种设备,组建成一个智能家居网络,包括远程的APP控制指令都是由智能主机来执行,达到设备的智能联动,智能场景切换的目的。
(2)智能家居的安防系统
通过控制门锁的APP,向智能门锁发送无线远程控制信息,实现远程开锁(方式不限,可以是发送临时密码,也可以直接远程打开)。
(3)智能照明系统
通过APP要求实现房屋内灯光一键全开,全关。对房间,客餐厅,主卧,次卧等区域灯光实行分区控制,对于一个区域有多种灯源要独立设立控制开关,系统展示房间内灯源打开数量以及打开区域,方便用户进入系统操作开关。
(4)智能暖通系统
通过APP要求实现房屋内空调一键全开,全关。实现对房间客厅,主卧,次卧空调分别控制开关,模式控制(制冷,制热,通风),温度设定,风速(低风,中风,高风)。
(5)系统扩展性
要求除了上述功能以外,系统可以灵活接入其他家居电器,通过APP对其实现远程控制。(接入一个即可)
【开发说明】
【提交材料】
(1)项目概要介绍;
(2)项目简介PPT;
(3)项目详细方案;
(4)项目演示视频;
(5)企业要求提交的材料:
①完整的需求分析文档;
②完整的系统设计文档;
③完整的测试案例;
④完整的源码与数据库;
⑤完整的测试报告。
⑥产品APK安装包
(6)团队自愿提交的其他材料。
【任务清单】(1)需求调研与分析;
(2)系统设计,包括硬件系统设计和软件系统设计,软件包含概要设计与详细设计;
(3)测试案例编写;
(4)编码;
(5)部署测试环境并完成测试。
【开发工具与数据接口】
Eclipse或者AndroidStudio等等
由于本人只完成了硬件部分,所以开源只会开源硬件部分PCB板以及ESP32的代码,剩余APP端以及智能网关端暂不开源
图2.8硬件架构
图2.9硬件组网结构图
智能控制中心主要由智能主机网关组成,用来连接各种设备,组建其一个智能家居网络。这智能控制中心的选型上,我们使用了树莓派4B来作为智能主机网关。树莓派4B是一款由英国树莓派基金会(RaspberryPiFoundation)推出的单板计算机,于2019年6月发布。树莓派4B采用了64位四核ARMCortex-A72处理器,内存使用4GB的LPDDR4。
树莓派4B的实物图如下:
图2.10树莓派4B实物图
树莓派4B的主要技术规格如下:
BroadcomBCM2711,四核Cortex-A72(ARMv8)64位SoC@1.5GHz
2GB、4GB或8GBLPDDR4(取决于型号)
2.4GHz和5.0GHzIEEE802.11b/g/n/ac无线局域网,蓝牙5.0,BLE
千兆以太网
2×USB3.0接口
2×USB2.0接口
标准40针GPIO头(完全向后兼容以前的板)
2×microHDMI端口(最多支持4Kp60)
2通道MIPIDSI显示端口
2路MIPICSI摄像接口
4极立体声音频和复合视频端口
H.265kp60解码(4);
H.264(1080p60解码,1080p30编码);
OpenGLES,3.0图形
Micro-SD卡插槽,用于加载操作系统和数据存储
5VDC通过USB-C连接器(最小3A1)
5VDC通过GPIO头(最小3A1)
支持以太网供电(PoE)(需要单独的PoEHAT)
在控制功能板主控选型上,我们使用了乐鑫科技推出的ESP32-C3微控制器。ESP32-C3系列芯片是极低功耗、高集成度的MCU系统级芯片(SoC),集成2.4GHzWi-Fi和低功耗蓝牙(BluetoothLE)双模无线通信。芯片的功能框图如下图所示。
图2.11ESP32-C3功能框图
系列
ESP32
ESP32-S2
ESP32-C3
2016
2020
CPU
XtensaLX632位双核/单核处理器
XtensaLX732位单核处理器
RISC-V32位单核处理器
主频
240M
160M
超低功耗协处理器(ULP)
ULPFSM
PicoRV32内核,8KBSRAM,ULPFSM
N/A
SRAM
520KB
320KB
400KB
ROM
448KB
128KB
384KB
片内Flash
无/2MB/4MB不同规格
无/4MB不同规格
外部Flash
最大支持16MB
最大支持1GB
外部PSRAM支持
最大支持8MB
Wi-Fi
802.11b/g/n、2.4GHz
蓝牙
Bluetoothv4.2BR/EDRBluetoothLowEnergy
Bluetooth5.0
ADC
2*12-bitSARADC,18channels
2*12-bitSARADC,20channels
2*12-bitSARADC,6channels
DAC
2*8-bit
定时器
4*64-bit通用定时器,3看门狗定时器
2*54-bit通用定时器,3看门狗定时器
温度传感器
1
触摸传感器
10
14
霍尔传感器
GPIO
34
43
22
SPI
4
3
UART
2
I2C
I2S
Camera
RMT(红外遥控器)
1*8channels
1*4channels
LEDPWM
1*16channels
1*6channels
MCPWM
2,提供六个PWM输出
USBOTG
TWAI
SD/SDIO/MMC主机
SDIO从机
以太网MAC
USB串口
表2.6ESP32常用型号对比
在系统供电模块方案中,为了方便调试和家庭布线。我们目前使用的是5V输入,每块功能板同时带有USB口和KF128接线柱。电源输入可以在2个输入接口中二选一,不可同时使用。
在芯片供电部分,芯片需要使用3.3V供电,采用了一颗由矽力杰公司推出了SY8089A1AACDCDC芯片,最高输入电压5V,通过调节FB引脚的电压,可以实现输出电压的调节,这里输出电压为3.3V。
在输入端,为了防止静电,雷电击穿PCB上的器件,加入了TVS瞬态抑制二极管,吸收来自外部的浪涌,保护板上器件。
下图展示了供电模块的输入连接件以及SY8089的外围电路原理图。
图2.12供电模块连接件原理图
图2.13供电模块原理图
在指示灯模块中,我们使用了WS2812RGBLED,WS2812是一种常见的可编址RGBLED(发光二极管),它包含了一个红色、一个绿色和一个蓝色LED,以及一个内置的控制电路。这使得每个LED可以单独控制,从而可以创建各种颜色效果和动画。其在许多应用中得到广泛应用,包括艺术装置的照明、舞台表演和建筑装饰。它们也常用于DIY项目,例如LED矩阵、可穿戴电子产品和交互式显示。
WS2812LED使用单线接口进行通信,单片机可以发出控制信号控制这些指示灯,告知用户当前状态,便于用户确定问题。
WS2812的基本参数如下:
1.电源输入电压:3.5-7.5V
2.OUTR/G/B恒流值:12mA
3.TopSMD内部集成高质量外控单线串行级联恒流IC
4.控制电路与芯片集成在SMD5050元器件中,构成一个完整的外控像素点,色温效果均匀且一致性路高
5.内置数据整形电,任何一个像素点收到信号后经过波形整形再输出,保证线波形畸变不会影响。
6.默认上电不亮灯
7.灰度调节电路(256级灰度可调)
8.数据整形:接收完本单元数据自动将后续数据整形输出
9.内置高精度和高稳定性振荡器
10.单线数据传输,可无限级联
11.数据协议兼容性高
12.数据发送速率:800Kbps
该模块典型原理图如下:
图2.14指示灯模块原理图
为了满足设备提示用户的需求,项目加入了蜂鸣器模块,通过一颗AO3400NMOS控制无源蜂鸣器,实现蜂鸣器发出声音。
为了保证PCB板的大小尽可能小,项目并没有选择传统的插件蜂鸣器,而是使用了贴片蜂鸣器,物料型号为MLT-8530,参数如下所示:
驱动方式:无源(外部驱动)
构造类型:电磁式
额定电压:3.6V
频率:2.7kHz
声压(SPL):80dB@5V
大小:10cm8.5x8.5x3mm
由于蜂鸣器为感性复杂,其开关会影响电源,导致电源波动,所以需要加入一颗续流二极管(如图所示D2),下图展示了蜂鸣器模块的原理图。
图2.15蜂鸣器模块原理图
图2.16MLT-8530实物图
使用窗帘电机+配套轨道方案,电机接入220V交流电,控制板通过继电器短接电机上引出的干触电接口控制窗帘电机运行。
产品参数:
电机名称:五芯线强电-电机
产品型号:WX-82
额定功率:45W
额定电流:0.14A
机身重量:1.05KG
额定扭矩:1.2N/m
运行速度:14cm/s
电源标准:五芯线
运行噪声:33dB
最小宽度:0.9m
最大宽度:12m
最大载重:50KG
防护等级:20IP
工作温度:-10℃-50℃
输入电压:220V
参考淘宝商品:
图2.17电机商品图
在空调和电视的控制上,我们使用了红外发射,通过解码设备遥控器发出的红外信号并通过家电控制功能板上的红外发射模块重新发射实现家电控制。
在开锁电路中,我们使用了一颗RZ7899单路H桥驱动芯片。RZ7899是一款DC双向马达驱动电路,它适用于玩具等类的电机驱动、自动阀门电机驱动、电磁门锁驱动等。它有两个逻辑输入端子用来控制电机前进、后退及制动。该电路具有良好的抗干扰性,微小的待机电流、低的输出内阻,同时,他还具有内置二极管能释放感性负载的反向冲击电流。
为了保护单片机和电源,这里没有使用MOS管控制锁具打开,而是使用了一颗H桥芯片RZ7899,该芯片内置了过流保护电路和续流二极管,比较满足该项目。
RZ7899特点如下:
微小的待机电流,小于2uA。
工作电压范围宽3.0V~25V。
有紧急停止功能
有过热保护功能
有过流嵌流及短路保护功能
封装外形为:SOP8
在开锁检测电路部分,开锁电路原理图中的LOCK_STATE引脚输入了开锁信号,门锁打开时,该引脚的电平会相应变化,就可以检测到门锁的开启的与关闭。
图2.18开锁电路原理图
在继电器选型方面,我们考虑了多种因素,例如大小,最大电流,最后考虑到门禁板上控制的设备电流一般不是很大,而且控制板上空间剩余不是很多,所以选用了宏发继电器厂的HF49FD/005-1H11这个型号,最大电流5A,满足基本需求。
下图展示了继电器控制电路的原理图:
图2.19HF49FD/005-1H11实物图
图2.20继电器控制模块原理图
窗帘控制电路基本与继电器控制电路相同,原理就是通过继电器短接窗帘的控制线,完成窗帘的控制。
在继电器方面,同样采用了宏发继电器厂的HF49FD/005-1H11这个型号,该型号体积小巧,比较容易集成到控制板上。
图2.21窗帘控制模块原理图
图2.22门禁控制功能板原理图1
图2.23门禁控制功能板原理图2
图2.24门禁控制功能板原理图3
图2.25门禁控制功能板顶层装配图
图2.26门禁控制功能板底层装配图
图2.27门禁控制功能板实物图
灯光模块为灯光控制功能板上的设备,主要由WS2812RGBLED组成,用户可以发出灯光控制指令,提供给单片机LED灯的R,G,B值,控制灯光展示指定的颜色,下图展示了灯光模块的原理图。
图2.28灯光模块原理图
图2.29灯光控制功能板原理图1
图2.30灯光控制功能板原理图2
图2.31灯光控制功能板原理图3
图2.32灯光控制功能板顶层装配图
图2.33灯光控制功能板底层装配图
图2.34灯光控制功能板实物图
由于风扇需要使用12V电压才可以驱动,而输入的电压为5V,所以风扇控制板上板载了一颗升压芯片MT3608,将输入的5V升压为12V,为风扇供电。
MT3608为西安航天民芯推出的一款BOOST升压芯片,该芯片是一款恒定频率的6引脚SOT23封装用于小电流的升压转换器。MT3608开关频率为1.2MHz且允许使用微型、低成本高度不超过2mm的电容器和电感器。内部软启动可以减小浪涌电流,延长使用寿命。MT3608包括欠压锁定、电流限制和热过载保护,以防止在输出过载的情况下损坏。MT3608采用小型6引脚SOT-23封装。
下图展示了MT3608的外围电路,输入电压5V通过EN引脚输入,FB引脚通过分压电阻设置输出的电压,芯片通过上方的电感和二极管升压,最后输出12V。
图2.35升压模块原理图
风扇控制电路由H桥驱动电路,PWM调速电路,INA199电流采样电路,风扇测速电路组成,下图展示了风扇控制电路的原理图。
首先,通过升压模块,将5V电压升压到12V,然后通过H桥驱动电路控制风扇的启动和停止,PWM调速电路由单片机发出PWM调速信号,控制风扇转速,INA199电流采样电路以及风扇测速电路为风扇测速功能提供相应的实现。
图2.36风扇控制模块原理图
图2.37风扇控制功能板原理图1
图2.38风扇控制功能板原理图2
图2.39风扇控制功能板原理图3
图2.40风扇控制功能板顶层装配图
图2.41风扇控制功能板底层装配图
图2.42风扇控制功能板实物图
温湿度采集模块使用了SHT30芯片。SHT30内部集成了温度以及湿度的采集电路,对外通过I2C接口通信,能够提供极高的可靠性和出色的长期稳定性,具有功耗低、反应快、抗干扰能力强等优点。下图展示了温湿度采集模块的原理图。
图2.43温湿度采集模块原理图
红外控制模块为家电控制功能板板载的功能,用于发出红外信号,控制家庭中的空调电视机等设备,采用了5个红外发射二极管,通过一个AO3400N沟道MOS管控制其开启与关闭。
在红外发射管的选型上,我们考虑了电路的布局,由于PCB板可用空间较少,所以使用了贴片红外发射管,贴片可以使得PCB大小大幅降低,同时生产效率大幅提升。
发射管使用了亿光生产的IR67-21C/TR8红外发射头,该发射头基本参数如下:
波长:940nm;
辐射强度:1.5mW/sr@20mA;
下图展示了红外发射模块的原理图。
图2.44红外控制模块原理图
图2.45IR67-21C/TR8实物图
图2.46家电控制功能板原理图1
图2.47家电控制功能板原理图2
图2.48家电控制功能板原理图3
图2.49家电控制功能板顶层装配图
图2.50家电控制功能板底层装配图
图2.51家电控制功能板实物图
智能家居安防系统包含了门禁控制功能,用户发送开门指令后,需要响应指令,并完成开门操作。
智能照明系统需要满足家中的基本照明需求,首先灯光需要完成基本的开关操作,每个灯光应该可以单独控制。同时为了满足用户调节灯光亮度和灯光颜色的需求,灯光应该可以独立变换颜色。
为了保证用户家中空气流通,加入了智能通风系统,用户可以控制房间内风扇的开关以及速度,支持风扇无极调速,进一步满足对风速的要求。
通过窗帘控制系统,用户可以在手机端远程控制家中窗帘,在自动控制的同时,窗帘可以被手动控制,更加方便使用。
除上述功能外,智能家电控制系统应可以控制家中使用红外发射控制的家电,这可以实现对家中原有电器的兼容,极大的增加家庭的智能性。
在智能控制中心中,团队使用了现成的树莓派4B方案,通过将服务部署到树莓派4B上,实现智能家居的整体交付,用户只需要只能控制中心和无线路由器就可以组建起最简单的智能家居网络。
在本项目中,硬件设计使用了结构化设计,所有功能可基本分为下图中的14个模块。
图3.1电路模块
在上有模块基础上,团队自主开发了四款功能板,分别为门禁控制功能板,灯光控制功能板,风扇控制功能板,家电控制功能板,下述图片展示了四个功能板的电路设计框图。
图3.2门禁控制功能板电路设计框图
图3.3灯光控制功能板电路设计框图
图3.4风扇控制功能板电路设计框图
图3.5家电控制功能板电路设计框图
为了实现快速开发,团队采用了ESP32-C3-WROOM-2模组,模组中搭载了ESP32-C3微处理器以及微处理器的时钟电路,射频电路和板载的WIFI天线。
下图展示了模组外围电路的原理图。
图3.6主控芯片模组外围原理图
左边位号为U3的即ESP32-C3-WROOM-2模组,右边为芯片手册中要求的引脚上拉电阻以及复位按钮。
供电模块主要包含了输入的连接件,TVS瞬态抑制二极管和降压芯片。考虑到安全性和接入设备的方便,系统全部采用5V供电,同时加入了TYPE-C口和KF128接线端子,最大可能保证供电的便利性,降低了对家庭供电的要求。
图3.7供电模块连接件原理图
图3.8供电模块原理图
开锁电路包含了连接件,开锁电路以及开锁检测电路,为了保护单片机和电源,这里没有使用MOS管控制锁具打开,而是使用了一颗H桥芯片RZ7899,该芯片内置了过流保护电路和续流二极管,比较满足该项目。
在开锁检测电路部分,下图中的LOCK_STATE引脚输入了开锁信号,门锁打开时,该引脚的电平会相应变化,就可以检测到门锁的开启的与关闭。
图3.9开锁电路原理图
图3.10红外控制模块原理图
为了给12V风扇供电,团队加入了升压模块,升压模块使用了MT3608升压芯片,将输入的5V升压为12V,为风扇供电。
图3.11升压模块原理图
图3.12蜂鸣器模块原理图
为了满足芯片配网的需求,项目加入了按钮电路,通过按钮,功能板可以切换为烧录模式,或是按下板上的一些按钮,可以进入配网模式,后续更新中,按钮也可以提供给用户完成一些本地的控制。
图3.13按钮电路原理图
图3.14继电器控制模块原理图
指示灯模块由两颗WS2812RGBLED组成,单片机可以发出控制信号控制这些指示灯,告知用户当前状态,便于用户确定问题。
图3.15指示灯模块原理图
图3.16灯光模块原理图
图3.17风扇控制模块原理图
温湿度采集模块由一颗SHT30芯片组成。SHT30内部集成了温度以及湿度的采集电路,对外通过I2C接口通信,能够提供极高的可靠性和出色的长期稳定性,具有功耗低、反应快、抗干扰能力强等优点。下图展示了温湿度采集模块的原理图。
图3.18温湿度采集模块原理图
窗帘控制部分目前使用了业内成熟的窗帘电机方案,在控制端,通过两路继电器控制窗帘电机控制线的短接,实现窗帘的开,关,停三种控制,下图展示了两路继电器以及连接件的原理图。
图3.19窗帘控制模块原理图
下图展示了门禁控制功能板的PCB装配图
图3.20门禁控制功能板顶层装配图
图3.21门禁控制功能板底层装配图
下图展示了灯光控制功能板的PCB装配图
图3.22灯光控制功能板顶层装配图
图3.23灯光控制功能板底层装配图
下图展示了风扇控制功能板的PCB装配图
图3.24风扇控制功能板顶层装配图
图3.25风扇控制功能板底层装配图
下图展示了家电控制功能板的PCB装配图
图3.26家电控制功能板顶层装配图
图3.27家电控制功能板底层装配图
在软件设计部分,得益于硬件部分模块化设计,软件部分基本也实现了模块化设计,下文将详细描述智能家居远程控制系统的软件设计。
软件开发语言:C语言
软件开发框架:ESP-IDF
软件开发工具:VSCode
连接控制的MQTT服务器时,需要先连接WIFI,然后再连接MQTT服务器,下图展示了WIFI连接部分的流程图。
图3.28WIFI连接模块流程图
该部分使用了ESP32的LEDC外设,通过LEDC生成PWM波来驱动无源蜂鸣器发出声音,下图展示了该部分的原理图。
图3.29蜂鸣器控制模块流程图
为了连接不同的模块,系统设计了配网模块,用户通过安卓端连接需要配网的WIFI,输入WIFI的密码,然后点击配网,微控制器会接收到来自用户的配网信号,接着将其中的SSID和密码保存到NVS中,便于下次连接WIFI,下图展示了配网模块的原理图。
图3.30配网模块流程图
温湿度采集模块用于采集家庭中的温度和湿度,为了从温度传感器获取数据,需要使用到I2C总线协议,下图给出了温湿度采集模块的软件流程图。
图3.31温湿度采集模块采集流程图
得益于模块化设计,每个器件的控制模块基本相同,下图展示了设备控制模块的流程图,基本上可以抽象为初始化外设,处理MQTT指令,控制外设三个步骤。