回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

【Gravity】Mind+掌控板进阶教程-项目六 宠物投食机 简单

头像 EVE 2019.11.01 970 0

项目 宠物投食机

养宠物的朋友们,有没有过这样的苦恼,每次出门一整天不在家,没有办法及时给宠物喂食,就会担心它们会不会饿到。要是出差或者是旅行最先考虑的不是把宠物寄养在宠物医院会花多少钱,而是宠物换了环境会不适应、食欲不振,让人非常心疼。

project-image


那有没办法让独自在家的宠物也能按时“吃饭”呢?接下来,就让我们想想办法,一起来做一个能让独自在家的宠物也能被好好照顾的宠物投食机!

project-image


头脑风暴:宠物投食机需要具备哪些功能?


问题清单

1、主人不在家时,如何保证宠物按时有粮吃?

2、主人在家时,如何随时用投食机喂粮?

3、当主人不在家,但是想要远程给宠物加餐,怎么办呢?

4、主人如何知道宠物一天吃了几顿呢?

5、实现这些设想需要哪些硬件支持?

6、如何构造外观? 

核心知识点


电机

电机(英文:Electric machinery,俗称“马达”)的主要作用是作为用电器或各种机械的动力源,在电路中是一般用字母M表示。
 

project-image
project-image

 物联网 

     物联网就是将现实世界中的物体连到互联网上,使得物与物、人与物可以很方便的互相沟通。举一个简单的例子,比如共享单车,单车上面的锁连上网后就不再需要钥匙开锁,只需要用手机扫码,锁就能通过网络收到开锁的命令自己开锁。
      物联网的本质还是互联网,只不过终端不再是计算机,而是嵌入式计算机系统及其配套的传感器。只要有硬件或产品连上网,发生数据交互,就叫物联网。

project-image


规划方案

功能分解

在宠物投食机中最重要的功能就是投放粮食,这里假定我们使用电机完成投放粮食的动作,电机转动即可投放,当然需要配合外观搭建才能实现功能。
从前面的头脑风暴中,可以对宠物投食机作功能分解如下。

project-image
project-image




构造外观


project-image



问题记录

在后面项目实现过程中,可能会遇到各种各样的困难,尝试在下表中记录你遇到的问题和解决办法,便于以后出现类似问题时能更好的面对。

project-image


功能实现

功能1:定时投喂

这里通过电机的转动与否表示是否投喂,当电机转动时,表示宠物投食机投放粮食;电机停转则停止投放。加入一个LED灯作为喂食指示灯,喂食时灯亮,否则灯灭。
连线图:

project-image


* 使用电机时,扩展板外需接电池盒。


软件设置:使用电机需要打开Mind+软件的“扩展”,在“扩展板”下点击加载“掌控扩展板”。

project-image


程序:

project-image


运行结果:每隔5秒,电机转动1次。“喂食”函数中定义电机以50的速度转动1秒,后面项目实现过程中可根据实际需求进行修改,结合外观构建达到最佳的效果。


功能2:触发投喂

这里需要实现的功能是在定时投喂基础上额外增加按钮触发投喂。并且定时投喂与触发投喂互不干扰,即定时投喂过程中,按下按钮随时触发投喂;触发投喂时也不会影响定时投喂的时间间隔。
连线图:

project-image


思考一下,如何实现呢?让我们来写几个程序试验一下。
试验程序1:如果在功能1程序基础上,加入对按钮的判断是否能实现功能呢?

project-image


运行结果:定时投喂功能正常,按钮几乎不起作用,无法实现触发投喂。这是为什么呢?让我们一起画个流程图,分析一下!

project-image

我们知道,程序运行顺序是自上而下,逐条执行。
如左流程图,程序开始后,先执行“喂食”,然后“等待5秒”,等待的这段时间什么都不干,等待结束后,立马判断“按钮按下?”,然后根据结果迅速回到“喂食”,如此循环往复。
在“等待5秒”期间,无法判断按钮状态,所以无法实现触发投喂。并且由于程序在运行每条指令时速度非常快,所以在等待结束后判断按钮阶段,往往来不及按下按钮,程序就立马又进入喂食、等待5秒了。所以无法实现预期功能。
思考一下,既然“等待5秒”时无法判断按钮状态,那不用等待可以吗?如果不用等待,又如何实现计时呢?
其实在程序中,需要实现让两次喂食的时间间隔5秒,思考一下,如果我们可以获得第一次喂食的时间点,然后不断判断当下时间与第一次喂食的时间点的间隔是否达到5秒,进而决定是否触发下一次喂食,是否可以实现功能呢?那么如何获得时间呢?那就是使用

project-image


通过使用变量获取

project-image

记录第一次喂食时间点,随着时间推移,不断判断

project-image

与第一次喂食时间点的差值是否达到指定时间,当达到指定时间则开始下一次定时喂食。在此期间,几乎没有任何等待时间,所以加入触发投喂的判断后,两者互不干扰。流程图分析如下。

project-image



试验程序2:使用

project-image

标记喂食时间点

project-image


运行结果:程序中使用串口方便查看变量“时间标记”,可以发现每隔11秒左右会喂食一次,其中10秒为等待时间,1秒为喂食时间。在此期间,随时按下按钮,即可实现触发投喂。
通过这样的标记时间法,即可实现定时投喂与触发投喂互不干扰!


功能3:远程投喂

通过使用物联网,主人可在电脑或手机端发送指定消息,实现远程投喂,这里我们选择Easy IoT。* 关于Easy IoT的介绍和用法详见掌控板入门教程14 智能物联手表。
在功能2程序基础上,程序修改如下:

project-image
project-image


运行结果:程序运行后,掌控板屏幕会显示文字“宠物投食机”,然后进行WIFI和MQTT连接,完成连接后,实现功能如下。

project-image



关于功能4使用物联网平台反馈记录喂食次数,程序实现较为简单,只需要新增一个变量在“喂食”函数中,每次触发“喂食”函数,变量加1,然后将这个变量作为MQTT消息发送到Easy IoT即可。这里不再做程序介绍。
构造外观


构造外观有多种方法,下图仅作示例:

project-image
project-image



评价与反思
与人分享快乐,能产生更多快乐,尝试让亲朋好友的宠物都亲身体验一下你的投食机,看看能不能满足它们的需求!你还可以在DF创客社区中分享作品,听听更多人的建议!
社区网址:www.dfrobot.com.cn
问卷调查

尝试让体验过你作品的人做下面的问卷表,看看在别人眼中这个作品的闪光点与不足。
 

project-image



自我反思


梳理自己设计项目的思维逻辑、项目在执行层面的问题和经验等等,可以帮助我们形成学习的闭环,加深在项目进行的过程中对知识点和内容的理解,找到可以改进和提高的地方。

project-image

评论

user-avatar