2.1 功能及总体设计

本项目实现了自动把杯子装满水或者指定水量、预约制冷、预约加热的功能,由绿色LED和黄色LED分别作为指示灯,并且实时显示水温数据。

要实现上述功能需将作品分成五部分进行设计,即水杯感应部分、杯高测量部分、出水部分、制冷加热部分和手机控制部分。水杯感应部分选用简单且精度高的LM386压力感应模块,将其固定在底座上,用来实时监测水杯是否放置或者被中途拿走;杯高测量部分由超声波传感器HC-SR04、直流电机和丝杆套装组成,程序控制直流电机转动,转轴带动丝杆转动,从而带动超声波传感器垂直上下移动;出水部分选用HC-SR04超声波模块,固定在支架顶部用来测量水面高度,以上三部分均由Arduino开发板控制;手机控制部分开发了APP;制冷加热部分使用DS18B20温度传感器和两个LED,由手机和Arduino开发板共同控制。

1. 整体框架图

整体框架如图2-1所示。

图2-1 整体框架图

2. 系统流程图

系统包括两个独立的流程,取水流程如图2-2所示,制冷加热流程如图2-3所示。

图2-2 取水流程图

图2-3 加热制冷流程图

当压力感应模块检测到杯子后,开始测量高度,直流电机带动固定于丝杆平台的超声波模块上下垂直移动,检测杯子上沿位置,计算出高度。然后检测蓝牙串口是否有指定水量的数据(数据为float类型,含义为杯容量的几分之几),若有则改变制定出水量,若没有则不用改,采用设定好的值。出水时位于顶部的超声波模块不断测量到水面的距离,检测是否达到指定水量。

测温模块实时把水温数据通过蓝牙传输到手机端,同时也不断检测蓝牙是否收到预约制冷、加热的指令,若收到则达到指定时间后点亮相应的LED(红灯为加热状态,绿灯为制冷状态),然后不断检测水温是否达到指定温度。当制冷完成,相应的LED熄灭;加热完成后相应的LED熄灭。

3. 总电路图

总电路如图2-4所示,引脚连接如表2-1所示(补充:直流电机1正负极连接直流电机驱动模块的OUT1、OUT2接口;水泵正负极连接继电器的COM、NC接口)。电路图左边从上到下依次为HC-05蓝牙模块、HX711压力感应模块、继电器、DS18B20温度测量模块;上方为HC-SR04超声波测距模块1和超声波测距模块2;右边为直流电机驱动模块和直流电机1,直流电机用于带动丝杆转动;下方为水泵的直流电机2;图中左侧LED用来显示加热状态,图中右侧LED用来显示制冷状态。

图2-4 总电路图

表2-1 引脚连接表