![Arduino项目开发:智能家居](https://wfqqreader-1252317822.image.myqcloud.com/cover/942/31169942/b_31169942.jpg)
2.2 模块介绍
本项目主要包括饮水机智能出水模块、预约制冷、加热模块和手机APP模块。下面分别给出各模块的功能介绍及相关代码。
2.2.1 饮水机智能出水模块
本部分内容包括智能出水模块的功能介绍及相关代码。
1. 功能介绍
本部分的主要功能是检测杯子是否正确放置、测量杯高、装入适量的水(大约为杯子高度的80%),另外,通过蓝牙接收手机APP的指令,从而装入使用者的需求水量,电路如图2-5所示。
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P63_5183.jpg?sign=1739292643-te96cuyY4AypwXbLhN1B7H8lnPhpKKdx-0-728028dcdc4019f49fa4c25058c59375)
图2-5 水杯检测模块
杯高测量部分由超声波传感器HC-SR04、直流电机和丝杆套装组成,当感应到水杯后,程序控制直流电机转动,转轴带动丝杆转动,从而带动固定于丝杆平台上的超声波传感器垂直向上移动,一旦检测到与杯子的距离大于10cm,就代表着超声波模块刚好与杯子上沿水平。因为超声波模块的初始位置与杯底的垂直高度差一定,所以可以得到:
杯高=初始垂直高度差+超声波模块垂直移动高度垂直移动高度=超声波模块移动速度*移动时间
当完成杯子高度的测量后,直流电机反转相同的时间使超声波模块复位,杯高测量部分如图2-6所示。
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P63_5187.jpg?sign=1739292643-i33WILoCxNiOAz8px5ELPLZholLqEaA2-0-a7813f4dfa781a0ca8a6f5fd2c769473)
图2-6 杯高测量部分
出水部分选用了HC-SR04超声波模块,将其固定于支架顶部用来测量水面高度,小型水泵用于抽水。在出水之前会检查串口是否收到指定水量的指令,若未收到,则最终水面高度为杯子高度的80%;若收到,则根据指令(数据为float类型,含义为杯容量的几分之几)改为指定高度。因为超声波模块到杯子底部的垂直距离一定,所以可以得到:
实时的水面高度=超声波模块到杯底的垂直高度-超声波模块到水面的距离
一旦水面高度到达指定水量对应的水位,就停止出水。至此一次出水过程完成,水面测量部分如图2-7所示。
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P63_5191.jpg?sign=1739292643-7PZt82m07NMEbDHNtZDx8CMGu3LIrQs2-0-5e4cabe3ba0fe085d856d263cf63d11c)
图2-7 水面测量部分
2. 相关代码
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P64_13167.jpg?sign=1739292643-WjbgUUzxqZSvP35wb6zg3H4TpWmf7zcL-0-c9cb542a52c683ba669a35de24f1a9f0)
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P65_12854.jpg?sign=1739292643-POqBXIqd2FoU1SOqU7dANI7S2NImOA3B-0-7d7b8744d132e5c382cc1f0321d01ebc)
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P66_12855.jpg?sign=1739292643-o29UkYt1XueNiFXa3xWAM6FiTq1CihO0-0-87894d7b23f09acde1dda65c433d0d84)
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P67_13168.jpg?sign=1739292643-YpaoyKZGxrhNxNXSt9iDL9pYm6dMTwFg-0-fb7474a59753d081ad62a4655c5b1b53)
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P68_13169.jpg?sign=1739292643-wD6JEdUo7cMd4MkudThSLNoXP76jcegl-0-1a51764a9f87167c859054fcf7ab314b)
2.2.2 预约制冷、加热模块
本部分内容包括预约制冷、加热模块的功能介绍及相关代码。
1. 功能介绍
本模块主要实现实时上传水温、预约制冷加热功能。每一秒上传一次温度到手机APP,然后实时检测串口是否接收到预约制冷或者加热的指令(指令内容为一段时间,单位为秒(s),表示从此时算起,经过该时间长度后开始加热或者制冷)。制冷指令表示为char类型‘C’,加热指令为char类型‘H’。读取到指令中延迟时间的数值,经过该时间后点亮相应的LED(制冷为红灯,加热为绿灯),表示进入加热或者制冷状态,当达到要求的温度后,相应的LED熄灭,表示加热或者制冷完成。元件包括HC-05温度模块、DS18B20温度测量模块、Arduino开发板和导线若干,电路如图2-8所示。
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P69_5216.jpg?sign=1739292643-owBLWQmo2NBRojANTgXPThR0YmFqla8Y-0-6c84b31e42126ca8064b4e5ba4ac7f78)
图2-8 预约制冷加热部分连线图
2. 相关代码
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P69_12861.jpg?sign=1739292643-qEdzCmMJsOMTryc8SFKlJNd1O57huyTA-0-2164f2b6c853ead3445fc93af1331ac6)
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P71_13171.jpg?sign=1739292643-EHVwLSrcaQue1ZebYAT24PDxyeYdqqnI-0-0018a35c496ca89f24bdd6444f1902ce)
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P72_13172.jpg?sign=1739292643-7dOnjqZRUUYZ00nur62JwDsWnLRFe0tG-0-ac06c342a63bee62864b1e51a22f7c81)
2.2.3 手机APP模块
本部分内容包括手机APP模块的功能介绍、开发方式及相关代码。
1. 功能介绍
手机APP的主要功能是实时显示水温和发送预约制冷、加热的指令,数据传输由蓝牙完成,操作界面如图2-9所示。启动APP后,点击配对蓝牙,调出手机蓝牙配对界面,选择要配对的蓝牙设备。点击已配对蓝牙列表,选择要连接的蓝牙设备。此时,标签文本会显示为实时的水温。点击预约制冷按钮后,会发送一段字符:‘C’+输入框字符(输入框规定字符为正整数,含义为时间,单位为秒(s)),点击预约加热按钮后;会发送一段字符:‘H’+输入框字符(输入框规定字符为正整数,含义为时间,单位为秒(s));点击取水量按钮,会发送一段字符:‘Q’+输入框字符(输入框规定字符为0~1的小数,含义为杯高的倍数)。
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P72_5232.jpg?sign=1739292643-HhCrxDHTFFMLkYOxJ7AQaKkXCnem7Tdy-0-0c3212aca0f5185355d4957af7fc4745)
图2-9 手机APP操作界面图
2. 开发方式
APP Inventor组件设计界面如图2-10所示,左侧是各种组件,中间为APP操作界面。首先要创建一个项目,可以有多个屏幕。设计外观和功能时,只需把组件拖到该区域。左侧区域是本项目所用到的各种组件,单击组件可以进行参数设置,例如外观、背景等。
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P73_5239.jpg?sign=1739292643-ep2r74qDckvuLkWulervQDJwIaM5RIef-0-9a630a633049ed4ade025d06ec13e671)
图2-10 APP Inventor组件设计界面
APP Inventor逻辑设计界面如图2-11所示,左侧是封装好可以调用的各种逻辑块,以积木的形式设计。每个组件有十几甚至几十种逻辑块可调用。本项目采用了蓝牙块,命名为蓝牙客户端1,蓝牙客户端可调用逻辑块表(原本共有几十个)如图2-12所示。在进行逻辑设计时,需要把各组件以正确的逻辑拼接在一起完成程序,最后打包成apk在手机上下载使用,完整项目逻辑设计如图2-13所示。
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P73_5243.jpg?sign=1739292643-WPrUo2yvrBqE2DV6yA4np2VZ2QIMQapT-0-f132e5a8de32136a1431f7a292e036f6)
图2-11 APP Inventor逻辑设计界面
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P74_5248.jpg?sign=1739292643-2VRnfwgA6sHgXcvA93nGoZpMQJTr2qrO-0-f1885f4a01f1a97b1d2fdfe9805b9134)
图2-12 蓝牙客户端可调用逻辑块
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P74_5251.jpg?sign=1739292643-U2hYZurG3gf3E9VmMM1bsYukaxy7UhW5-0-f4cb5c9594500132e5a01151e5f18a3b)
图2-13 项目整体逻辑设计图
3. 相关代码
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P74_12867.jpg?sign=1739292643-0rDgmu52uvGbKXiM8QOWddmV9kXR2k5C-0-aedb9b237666835ec564f55182d2de09)
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P76_13173.jpg?sign=1739292643-l5EpfbnjRdnOeURgs4pUP0k75fnddhTK-0-10fea055ab3c2faaa6bb0d84ecb56dee)
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P77_12868.jpg?sign=1739292643-ozIrn24ViCBzCZUdT6HPn5nwMrXLFXwv-0-a42e1afa080b5f0bb692c0931f484457)
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P78_13174.jpg?sign=1739292643-lGjCaeRK3ocMF4Jh2bsL8Dhzw0EcK9an-0-2d66fd6ad989c2afbf30f641c893add2)
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P79_12870.jpg?sign=1739292643-NbxBx1BYjq5bvpJ7U23lU5cfEyuf7lJW-0-824029f1e1ea98c7e9124610a3b263ab)
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P80_13175.jpg?sign=1739292643-4LrsvLWLX9gjCiiAeNi4cC7uTmEJGqwO-0-2ac70074cfd98ffa91edf141385d47b3)
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P81_13176.jpg?sign=1739292643-1AMUs3XLgXKxA9ypJ8b506hD6BJOiVnT-0-6811a6ce39fce3bb19d23781c51fbe62)
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P82_5286.jpg?sign=1739292643-j4JCF84p5EJWLIzZOnKsOGqlfjOmtUEC-0-0cd1ee3d96f9448cb55e717fd8921a76)
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P83_12875.jpg?sign=1739292643-d49kTGAYYw83wt4YwJNMfw6f8ZFqag6F-0-114f9af4c660d0fe9e858f62e318b6a8)