1、54|电子制作 2023 年 1 月软件开发1 研究背景及相关技术介绍 1.1 研究背景近年来,随着社会经济的不断发展,人们对生活舒适度提出了更高的要求,对家居智能化的需求也越来越大。智能家居是近来的热门,它作为一个能够满足人类美好生活的产业,从而进入大家的视野中,目前智能家居该项目使用的微信小程序自上线以来,已经收获了大批的喜爱者,更加方便了人们的生活。在这个家居智能时代,很多用户在挑选家居用品时会优先选择物美价廉并且具有一定智能化且方便使用的家居,而且微信小程序广受用户的好评,它毫无疑问是一个方便快捷的终端应用,在实现比较人性化的控制的同时能够节省用户的空间内存。因此研究如何更好地实现微信
2、小程序与智能家居相连,具有很重要的现实意义。1.2 ArduinoArduino 是一款具有方便灵活、容易上手等特点的开源电子原型平台。它具有使用类似 Java、C 语言的Processing/Wiring 的开发环境,并且构建于开放原始码simple I/O 介面版。主要包含两个部分:其中一个是硬件部分,它用来做电路连接的 Arduino 电路板;另外一个则是Arduino IDE(计算机中的程序开发环境)。只要在 IDE 中编写程序代码,将程序上传到 Arduino 电路板后,程序便会告诉 Arduino 电路板要做些什么了,它能通过各种各样的传感器来感知环境,通过控制灯光和其他的装置来反
3、馈、影响环境。1.3 MQTT 协议MQTT 协议是一种消息列队传输协议,它采用订阅、发布机制,且订阅者只能接收自己已经订阅的数据,其他数据则不接收。要确保必要的数据的交换,而不对非必要的数据进行储存与处理。因此在工业物联网中得到广泛的应用。MQTT 使用的发布/订阅消息模式,它提供了一对多的消息分发机制,从而实现与应用程序的解耦。这是一种消息传递模式,消息不是直接从发送器发送到接收器(即点对点),而是由 MQTT server(或称为 MQTT Broker)分发的。2 系统总体方案 2.1 设计思路出于小程序操作简单方便,容易上手,且不需要开发独立 app 而选择它来设计主要功能页面,并能
4、对页面中相关功能进行打开或关闭,页面主要包括温湿度的显示,灯和空调的开关以及自动报警器,本系统主要分为如下几个方面:2.1.1 远程电灯的开关当用户因为出门着急而无法确定灯是否开关即可通过小程序查看等的开关状态,来选择操作,另外,用户不需要起身去墙壁上按动开关按钮,只需躺在床上,打开小程序界面进行开关,方便快捷。2.1.2 窗帘的开关可根据日照程度,用户在家休息时,可根据微信小程序中光照度的显示,当日光达到一定亮度时,可操作窗帘可以自动打开,到晚上时窗帘外部的传感器感受不到日光,即可关闭,用户也可远程控制窗帘的开关,在不需要打开时选择关闭。2.1.3 温湿度检测的报警室内湿气太重将会影响人的健
5、康,所以小程序可以实时监控室内的温度和湿度,将温湿度过高即会发出报警信号,用户可以参照不同时段的气候,给温湿度报警器设置限定值,同时可以在微信小程序主界面上查看当前的温湿度。2.1.4 烟雾报警器用户可以在离家之后,通过小程序提前打开烟雾报警器,烟雾浓度过高,LED 灯将变红,同时给周围邻居警醒的信号,用户在微信小程序上就能查看烟雾浓度,实现不在家也能实时监控家居状态。基于 Arduino 硬件开发系统的微信小程序控制智能家居的设计与实现张艮娟,倪敏珈(东南大学成贤学院 电子与计算机工程学院,江苏南京,210000)基金项目:江苏省大学生实践创新训练项目(YCX21037)。摘要:本项目致力于
6、开发控制智能家居的微信小程序,使用户能够在千里远外就可以一键开关家居电器,在小程序界面即可实现对家居电器的控制,而无需安装特定APP,更加方便简洁,便于操控和人们对电器的实时需求。本项目决定采用Arduino硬件开发系统。Arduino具有兼容性高的优点,使得人们在很大程度上节约了多平台间转换所需要花费的时间与精力。Arduino是一个开源平台,它可以大大地减少开发时间,非常符合本项目的智能家居开发所要的低成本的特点。关键词:微信小程序;智能家居;ArduinoDOI:10.16589/11-3571/tn.2023.01.012wwwele169com|55软件开发 2.2 系统设计流程利用
7、微信小程序工具开发界面,首先进行功能的划分,主要功能包括温湿度显示与报警设置,空调、灯、窗帘的开关等,以及用户登录注册页面,再将模拟房间及温湿度传感器、灯、窗帘等状态信息传输至 Arduino,通过爬取数据,再利用 MQTT 协议进行软硬件的通信,将数据传至主界面,主界面使用 javascript 技术实现基本控制和动态交互,最后确保每个功能都能实现后,进行测试,达到预期效果。3 硬件实现 3.1 温湿度传感器温湿度传感器主要使用的是 DHT11 模块,该模块是一款具有已校准数字信号输出的温湿度传感器,它与一个高性能 8 位单片机相连接,包括一个电阻式感湿元件和一个NTC 测温元件。其中温度测
8、量是将内部的 NTC 测温元件的阻值转化成温度,而湿度测量则是利用感湿元件,让其阻值与湿度在一定的范围内呈现出良好的线性关系,从而反应相关数据。它们能将温湿度进行精准测量,其温度精度在-5+5之间,湿度精度也在-5RH+5RH 之间。因此该产品具有较强的抗干扰能力、性价比高、品质优秀、反应速度快等优点。每个 DHT11 传感器一般都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在 OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。小体积、低功耗,信号传输通过传感技术将当前空气中的温度及湿度显示在数字模块中,当空气中的温湿度超过
9、设置阈值会发出警报声。3.2 发光模块电灯作为家庭常用家居产品,且是一个消耗品,我们本系统采用的是 LED 灯管,它运用了二极管发光原理,比普通的节能灯效果更好,其寿命也是十分之久。我们所采用的发光模块基于高节能、寿命长、多变幻、利环保、高新尖的特点,灯采用的是LED 发光模块。至于有引线的板子上,本系统采用红色LED发光模块和黄色LED发光模块,黄色 LED 模块主要用于实现正常的照明的远程控制,我们可以通过微信小程序来控制家庭灯的开关,并可以实时查看到电灯的状态;而红色的 LED 模块主要用于烟雾传感器的报警。3.3 窗帘的远程控制窗帘作为一种日常家居,大多数需要我们手动控制。市面上已有的
10、电动窗帘价格比较昂贵,结构复杂,可靠性低,不能够让所有用户都能很好享用。本系统窗帘的远程控制主要使用STC89C51,这是一种 8 位的高性能工具。在窗帘的制动中充分发挥重要作用,且其具有简单小巧,性价比高,可持续性长等优点。同时可根据光敏电阻,判断窗帘移动的距离,确定窗帘的开关状态,即当光照变强,电阻变高,窗帘自动打开。本系统采用了微信小程序控制,实现远程操作,改变布线复杂的不足,提高窗帘控制的智能化,让用户能够更好地控制窗帘移动。3.4 烟雾传感器烟雾传感器本系统使用MQ-2烟雾传感器,该传感器对于烟雾具有良好的灵敏感,可以实时检测到煤气等多种有毒可燃气体,并立刻发出警报,其气体探测的范围
11、也相对较高较为精图 1 总体设计模式示意图图 2 系统硬件实现框图56|电子制作 2023 年 1 月软件开发准。其原理是与烟雾接触时,如果晶粒间界处的势垒收到烟雾的调至而变化,就会引起表面导电率的变化。通过这一点获得烟雾存在信息,初始化单片机后包括初始化变量参数,当烟雾浓度变大时,模拟信号越大,单片机对信号进行处理,启动报警电路,红色 LED 灯开始闪烁。3.5 Arduino 硬件开发平台本设计采用的是 Arduino 的硬件开发板,版本是Duemilanove,是目前使用人数最多,且最稳定的版本,它具有开元、开放、简单、跨平台等特点,且在自动化、物联网领域内都广泛应用,本设计以 Ardu
12、ino 为核心,能够更快的完成项目开发,减少开发时间的消耗和学习的成本,我们可以从硬件检测装置中采集数据,即通过连接到Arduino 开发板上的传感器来收集温湿度、灯光、窗帘、烟雾报警器等信息。4 系统功能设计 4.1 界面整体布局该页面为主页面,其中包括温湿度、光照度、烟雾的显示,报警器、客厅灯的开关。4.2 LED 灯的远程控制功能实现本程序通过检测当前串口的初始化状态,来检测 LED灯的初始化状态,用户通过微信小程序界面的虚拟按钮来控制 LED 等的开关。先在控制台创建名称如客厅灯,在控制 LED 的引脚,初始化 LED 灯的状态默认为关的状态,再将灯的状态传至MQTT 协议中,MQTT
13、 协议可使用简单的 0/1 交互,0 为关的状态,1 为开的状态,再将数据传至微信小程序,最终由微信小程序界面中的按钮来控制灯的状态,当用户将等的状态拨到开的状态,将判断是否连接 MQTT 协议,至 LED 传感器的状态上传后,即刻执行打开电灯的相关函数,开灯;关闭灯泡时,将改变 MQTT 字符为 0,执行关灯函数,灭灯。图 4 LED 灯的远程控制功能流程示意图 图 5 窗帘的远程控制的功能流程示意图 4.3 窗帘的远程控制的功能实现本程序通过微信小程序按下界面上的按钮控制窗帘的打开状态,当为打开状态时,将为用户自动打开窗帘,当到根据窗帘宽度所设置的打开限位的阈值点时,打开窗帘的动作将会自动
14、停止,若当前按下控制窗帘的关闭键时,将为用户自动关闭窗帘,当到根据窗帘宽度所设置的关闭限位的阈图 3 主页面布局图wwwele169com|57软件开发值点时,关闭窗帘的动作将会自动停止。先判断窗帘的初始化状态及是否与MQTT协议连接后,对于窗帘的打开和关闭状态,也是一个 0/1 交互的过程,设计主要程序语句,使用 if 和 while 等循环语句目的是为了对整个窗帘的程序进行判断,当用户在界面上按了打开或关闭按钮时,会对于窗帘的位状态行判断,当执行完语句操作时,同样会对于程序的运行进行终止。4.4 温湿度的数据显示及报警DHT11 温湿度传感器将温湿度上传到 MQTT 服务器上,MQTT 服
15、务器实现与微信小程序的交互,将数据上传至微信小程序中显示。在程序编写上,tempChange 函数,当打开微信小程序时,立即发送信息数据 wx.sendMessage,如果连接成功即刻返回调用成功信息,如果连接失败,则函数 e 调用失败,返回服务器异常信息。定义 DHT11 的引脚,上传默认传感器时间为 2s,判断连接成功后,即刻获取当前时间戳,当时间达到默认时间后,将当前湿度上传。4.5 烟雾报警器的报警MQ2 烟雾传感器首先给传感器预热,再进入监控状态连接微信小程序,先初始化串口信息 Senor_AO 和引脚信息 Senor_DO,使烟雾的初始数据为 0,采集烟雾浓度值,再上传数据,当烟雾
16、大于预先设定的阈值、微信小程序发送预警通知,同时 LED 亮红灯,先设定 LED 的状态 LEDstatus=”LEDoff”,设定时间上传时间为 3 秒intervial=3,执行 if 语句,报警及立即执行 digtalWrite(A_LED,HiGH)。5 结语本 项 目 在 Arduino 开 发 板 上 连 接 LED 灯、窗 帘、DHT11 温湿度传感器、MQ-2 烟雾传感器,在开发板上连接 WiFi 模块,再通过物联网MQTT 协议来与微信小程序进行通信,完成一个智能家居控制系统。为用户提供生活上的便利,实现智能化生活。该项目有多种功能供用户选择,用户可以实时监控家居的状态,可以在微信小程序界面查看当前温湿度、光照度、可选择开关灯和窗帘,当温湿度超过设定值时会立即发出警报声,当烟雾浓度超过限定值时,报警灯会一直发出红光,提醒用户气体异常。通过这样一套系统,给用户便捷的智能家居享受。参考文献 1 倪亚玲.基于 Arduino 的节能型智能家居系统的设计与研究 D.电子科技大学,2017.2 张凤岭.基于 ARM 和 Zigbee 的小区智能家居系统 D.天津理工大学,201