震惊!智能饮水机无人操控竟会自动出水!
本帖最后由 诚哥崽 于 2018-5-12 17:45 编辑一、概述
近年来,由于饮水机使用不当引起的饮用水浪费的情况层出不穷,原因是许多使用者在使用饮水机装水时,会因杯内装水太满而倒掉或使用完后不及时关闭阀门而所造成水资源的浪费。
为了解决这一问题,本文研发了一款智能饮水机,通过检测水杯的高度和杯内液面上升的情况,控制注水量,防止水的溢出,减少了水资源的浪费,以此达到节水的目的,实现可持续发展。
视频地址:饮水机无人操控竟会自动出水
二、基本介绍
智能饮水机由一块Arduino UNO进行控制,周围连接了两个超声波传感器、控制丝杆滑台的直流电机、LED指示灯、抽水泵等,通过物联网技术与手机建立连接。用户可以通过手机端远程获取饮水机的使用情况。其系统框架图如图1所示。
三、原理简介
本智能饮水机主要使用了压力传感器和超声波传感器来实现节水的目的。当使用者把不同的被的杯子放在饮水机给水的位置时,压力传感器会检测到杯子对底座的压力,饮水机开始控制高度检测装置逐步上升,利用超声波传感器测出当前水杯的高度,同时确认水杯放置的情况。接着控制抽水泵开始往杯中注水,当水杯的液面高度接近水杯高度时,自动关闭抽水泵并停止注水,
1、检测水杯高度原理
本文通过分析3D打印机(图2)的结构时发现,通过旋转丝杆,可以使得滑台带动超声波传感器(图3)向上移动。当超声波传感器在上升过程中检测到前方没有遮挡物时,则判断已上升到杯顶,此时通过初末时间点与速度相乘可以得到滑台移动的距离。
2、控制注水量原理
本文使用Solidworks软件为超声波传感器制作了一个外壳,使其能够被固定在金属件上,同时能过固定水管的出水口在水杯杯口的上方。
超声波传感器获取液面与传感器直接的距离,通过算法,可以转化为水杯的液面高度。此时MCU通过比较水杯高度与液面高度之差,判断是否需要继续注水。
而对抽水泵的控制,是有一块电机调速板完成的,其可以调整抽水泵的抽水速度
3、 WIFI联网原理
智能饮水机通过使用Wifi模块接入机智云物联网平台进行联网通信。机智云平台是机智云物联网公司的一站式智能硬件开发及云服务平台。平台提供了从定义产品、设备端开发调试、应用开发、产测、云端开发、运营管理、数据服务等覆盖智能硬件接入到运营管理全生命周期服务的能力。机智云平台为开发者提供了自助式智能硬件开发工具与开放的云端服务。通过傻瓜化的自助工具、完善的SDK与API服务能力最大限度降低了物联网硬件开发的技术门槛,降低开发者的研发成本,提升开发者的产品投产速度,帮助开发者进行硬件智能化升级,更好的连接、服务最终消费者。
四、硬件设计
根据上述各个控制原理,本文准备好各种零件,画好草图,并从硬件部分入手,开始组装智能饮水机。
1、Arduino UNO
Arduino是一款便捷灵活、方便上手的开源电子原型平台。其中Arduino UNO以ATmega328 MCU控制器为基础——具备14路数字输入/输出引脚(其中6路可用于PWM输出)、6路模拟输入、一个16MHz陶瓷谐振器、一个USB接口、一个电源插座、一个ICSP接头和一个复位按钮,完全可以满足智能饮水机的设计要求。
2、ESP8266 Wi-Fi模块
智能燃气炉插件使用Kittenbot的ESP8266 Wifi模块,这是一款基于乐鑫ESP8266的超低功耗的UART-WiFi模块的模组。模块核心处理器 ESP8266 在较小尺寸封装中集成了业界领先的 Tensilica L106 超低功耗 32 位微型 MCU,带有 16 位精简模式,主频支持 80 MHz 和 160 MHz,支持 RTOS,集成 Wi-Fi MAC/ BB/RF/PA/LNA,板载天线。支持标准的 IEEE802.11 b/g/n 协议,完整的 TCP/IP 协议栈。用户可以使用该模块为现有的设备添加联网功能,也可以构建独立的网络控制器。
3、直流电机模块
直流电机选用的是减速比为1:48的双轴电机,其扭力完全可以带动丝杆旋转。
4、超声波传感器模块
超声波模块选用了经典的HC-SR04模块,其工作电压为5V,最远射程为4m,测量角度为15°,完全满足智能饮水机的设计要求。
五、程序设计
1、把饮水机连接到物联网平台
本文需要使用机智云物联网平台创建数据点,用于描述产品功能及其参数。创建数据点后,设备与云端通讯的数据格式即可确定,可以相互识别设备与机智云互联互通的数据。
通过机智云配置界面可以根据产品的需求填写productkey,根据你设置的数据点来自动生成数据点的结构体。(更详细的操作可查看无线电2018一月——智能燃气炉插件篇)
2、使多个传感器同时工作
为了同时监视多个传感器,与控制多个效应器。本文使用了ProtoThreads虚拟多线程技术,把每个传感器、执行器所要做的工作封装为一个线程,在void loop中调用。
ProtoThreads是一个通过宏定义(#define)写出来的模拟多线程库函数,为C语言模拟了一种无堆栈的轻量线程环境,能够实现模拟线程的条件阻塞、信号量操作等操作系统中特有的机制,从而使程序实现多线程操作。
制作总结
智能饮水机的设计就为大家分享到这里,基本实现了预期的设想,但是任然存在着一些不足,例如出水口的水流会干扰超声波传感器的测距、控制器没有密封起来,容易被水溅到引起短路等。
最后附上饮水机的演示视频,感兴趣的读者可以更直观地了解以下。
本人QQ:601596643 欢迎各位同道之人与我一起交流
程序代码:
下面集中回答以下大家的几个问题:
1、饮水机用到的架子是在哪买的?
答:架子是学校提供的,至于学校在哪买的,我也不清楚0.0 。不过可以确定的是,其套件是抄袭makeblock的。
2、饮水机用到的丝杆在哪买?
答:丝杆是在淘宝上买的,大家可以搜索关键词:“丝杆套件”,我购买的规格是:300mm立式套件
大神,我们仿制了一个。 你很厉害 等待大佬更新 单片机菜鸟 发表于 2017-12-17 19:14
等待大佬更新
大佬不敢当,小弟只是菜鸟一只( ̄▽ ̄)" 不错!很好的项目 诚哥,很厉害的项目,我是一个arduino的初学者,方便发一份完整的源码,让我学习学习吗?我的qq604326182万分感谢!!! vipmafia 发表于 2018-3-5 08:56
大神,我们仿制了一个。 你很厉害
哈哈,互相学习!:lol vipmafia 发表于 2018-3-5 08:56
大神,我们仿制了一个。 你很厉害
有空可以在社区里分享一下哈
诚哥崽 发表于 2018-3-11 10:13
有空可以在社区里分享一下哈
感谢大神关注, http://m.xckbot.com/62/9/p50762409378b5c准备优化步进机程序和运行算法, 我加你 qq了。过两天聊~~ 测距 我准备用激光测距模块。 我买的超声波 偶尔会跳出来个0. 大佬,看了你的帖子我准备在你的基础上加上定量取水功能,以及手机端的智能管理。(学校的程序设计实验课程)不知道你可不可以发一下完整的源码,还有就是你这个铁架子在哪买的?谢谢你了。等你回复