![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=1739281678-aMKgZr9Xf2SDEmT8XiGOycBrn9NSHFf8-0-d01b39e8dcb395b6e301e2b089e69cc4)
图2-5 水杯检测模块
杯高测量部分由超声波传感器HC-SR04、直流电机和丝杆套装组成,当感应到水杯后,程序控制直流电机转动,转轴带动丝杆转动,从而带动固定于丝杆平台上的超声波传感器垂直向上移动,一旦检测到与杯子的距离大于10cm,就代表着超声波模块刚好与杯子上沿水平。因为超声波模块的初始位置与杯底的垂直高度差一定,所以可以得到:
杯高=初始垂直高度差+超声波模块垂直移动高度垂直移动高度=超声波模块移动速度*移动时间
当完成杯子高度的测量后,直流电机反转相同的时间使超声波模块复位,杯高测量部分如图2-6所示。
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P63_5187.jpg?sign=1739281678-8RiXcX1SdiK9TVulk11d4yIauj2MEHl2-0-71bb88df2dca670f765fe8858c6a1f5a)
图2-6 杯高测量部分
出水部分选用了HC-SR04超声波模块,将其固定于支架顶部用来测量水面高度,小型水泵用于抽水。在出水之前会检查串口是否收到指定水量的指令,若未收到,则最终水面高度为杯子高度的80%;若收到,则根据指令(数据为float类型,含义为杯容量的几分之几)改为指定高度。因为超声波模块到杯子底部的垂直距离一定,所以可以得到:
实时的水面高度=超声波模块到杯底的垂直高度-超声波模块到水面的距离
一旦水面高度到达指定水量对应的水位,就停止出水。至此一次出水过程完成,水面测量部分如图2-7所示。
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P63_5191.jpg?sign=1739281678-Gn52I7VKV71aQxneCHgMC0oVQUMpUUuy-0-ced85b4f4485fbde2a41a517966e66f3)
图2-7 水面测量部分
2. 相关代码
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P64_13167.jpg?sign=1739281678-IhXygoEfJBLHqtzYGQqWlJOHRB6Vi0Cy-0-26879bfdbf8eea081b21944cb7b98702)
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P65_12854.jpg?sign=1739281678-A0nyyQH3U002ZfJ6uvHLzLQ6j3cQaiYv-0-bf8d7ede3146740342fcd23593a95def)
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P66_12855.jpg?sign=1739281678-hJz4UwC1uS7G5szAzESKxVbX7n1YvnkF-0-9b1b7056787f42d8f6bf9d0993bc0772)
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P67_13168.jpg?sign=1739281678-K2fQbltT3eHGVI2YVcxeISsyk50Uqelk-0-8b3b4af2ecd282aca9ae31bdadff7971)
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P68_13169.jpg?sign=1739281678-oe7gWvjKoWRE2GGaOSefyy4PV7zGTBGM-0-d38368983be0267616d97ff9d00097ea)
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=1739281678-5u62d8F5CW612NwlT08HtqqYVDaJxodF-0-2dece1e507b2873e00e08ac69ee2229c)
图2-8 预约制冷加热部分连线图
2. 相关代码
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P69_12861.jpg?sign=1739281678-puhJEfZFlHghcv1Wejdq45oDeWy4e6Ko-0-e0e35415ea026d29917ea848c44cb410)
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P71_13171.jpg?sign=1739281678-5IjEFcyTnD2PF8IphU02Kwf9vTPiall7-0-019e2d4a7cef8b367ea19a18853a20fd)
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P72_13172.jpg?sign=1739281678-zvwHD3ds7hPYwxohMU3lHpyKIuZnQkQ2-0-77bd23c6930854019ff091ed425abffb)
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=1739281678-pP85RQEDvqyFXzMMGtJUudf3JBHPxelC-0-7fd8822a6fbb52763cfe0e3faa06ca97)
图2-9 手机APP操作界面图
2. 开发方式
APP Inventor组件设计界面如图2-10所示,左侧是各种组件,中间为APP操作界面。首先要创建一个项目,可以有多个屏幕。设计外观和功能时,只需把组件拖到该区域。左侧区域是本项目所用到的各种组件,单击组件可以进行参数设置,例如外观、背景等。
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P73_5239.jpg?sign=1739281678-9AafZ22AbCOQQEF5icg9295ywfrkxrWs-0-c4835fa505eb05a219c23262af66a809)
图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=1739281678-H5xfo1WqHO7gBUqBBVqgdIoQOPLHZJBr-0-11a412a258e519bad611459dd80b3d04)
图2-11 APP Inventor逻辑设计界面
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P74_5248.jpg?sign=1739281678-ZX2nigUweRKKvykMIv0tBTrfTwD9Jnxp-0-5b91169a8c9469fad6651f8706113e0c)
图2-12 蓝牙客户端可调用逻辑块
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P74_5251.jpg?sign=1739281678-jRdyyTekK9k0z3Al8xbZ8B7StUS91qin-0-d90afc4a7691b51191ca932b95634ff8)
图2-13 项目整体逻辑设计图
3. 相关代码
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P74_12867.jpg?sign=1739281678-HxQnYpg6vrKsUDCfEW4XShDWN7bJBiOU-0-92935efd503971a84251a51e10309249)
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P76_13173.jpg?sign=1739281678-herngJD1plV4aOmxGrxCCg9wzbyJU4j1-0-668117d36db3aea8432dc00a696fc9c4)
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P77_12868.jpg?sign=1739281678-MCDxc57kgFO59ednZP2shwYrrYdKcFCy-0-3e02ce1304b5bbefd614c64c75d4dc7d)
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P78_13174.jpg?sign=1739281678-hSadwQmgTRCBGmFME0TKLysyyWNuU90j-0-44c84d31098c1802a4d57aec1ab09f9b)
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P79_12870.jpg?sign=1739281678-s4zmQaHa9rEvR2BZpTEIex77mkzw4G6c-0-191c61fe7a8103a5a1f0f0467b75d671)
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P80_13175.jpg?sign=1739281678-UjbUkQUWgEYqZmP1e3delQpEIhl6i2nA-0-48cbc1b13cd805593c77a3400b06a398)
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P81_13176.jpg?sign=1739281678-23RlL28pXGHUpjlSvyoOpIrmkFqSF3hZ-0-7292e75a2b79a133684348cacf9142ce)
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P82_5286.jpg?sign=1739281678-0al9JT4Kj9ChLcaEFSIrZKKDLVa884gt-0-f631fb0451ca7b662dfcfbacea749832)
![](https://epubservercos.yuewen.com/F75462/16888495404071106/epubprivate/OEBPS/Images/Figure-P83_12875.jpg?sign=1739281678-TBteb648eQUEb9dYdq0UT92tt8x2C72u-0-6ae0f2a747d7aa30b14c81d71629af66)