谷歌助手使用NodeMCU控制基于物联网的宠物喂食器
扫描二维码
随时随地手机看文章
如果你家里有一只宠物,当你离开家的时候,你没有人喂它,那么你肯定需要某种机器来做这项工作。因此,我们正在构建一个简单,高效且具有成本效益的物联网宠物喂食机。使用这台机器,你可以喂你的宠物谷歌助手从世界任何地方。你只需要说:“好的,谷歌。喂我的宠物”和其他的事情将由这台机器完成。你也可以设置一个特定的时间使用谷歌助手喂养你的宠物。例如,说“好的,谷歌。“喂我的宠物今天早上”,它会在事先指定的时间喂你的宠物。像这样,你也可以为中午和晚上设定一个特定的时间。
在这个项目中,我们使用了一个NodeMCU ESP8266作为主控制器,一个伺服电机来打开和关闭喂瓶,一个16*2的LCD来显示时间。我们将从NTP服务器获取时间。这里我们使用NTP服务器来减少硬件组件,而不是使用RTC模块来处理时间和日期。与RTC相比,NTP服务器是获得时间的更好解决方案,因为它更准确,可以提供世界上任何地理区域的时间。这里是建立一个互联网时钟的完整教程。
组件的要求
•NodeMCU ESP8266
•16x2液晶显示模块
•LCD I2C模块
•伺服电机
线路图
下面给出了这个基于物联网的宠物喂食器项目的电路图。在这个电路图中,一个伺服电机和LCD模块与NodeMCU ESP8266连接。
伺服电机和LCD I2C模块的Vcc和GND引脚与NodeMCU的Vin和GND引脚相连。I2C模块的SCL和SDA引脚分别与NodeMCU的D1和D2引脚相连。
这里我们使用了一个塑料瓶作为宠物食品容器:
Adafruit IO设置物联网宠物喂食器
Adafruit IO是一个开放的数据平台,允许您在云中聚合、可视化和分析实时数据。使用Adafruit IO,您可以在互联网上上传,显示和监控数据,并使您的项目启用物联网。您可以使用Adafruit IO控制电机,读取传感器数据,并通过互联网制作酷的物联网应用程序。为了测试和尝试,有一些限制,Adafruit IO是免费使用的。我们以前也在树莓派上使用过Adafruit IO。
1. 对于Adafruit IO设置,您需要做的第一件事是注册Adafruit IO。登录Adafruit IO的网站,点击屏幕右上方的“Get started for Free”即可注册。
2. 在此之后,将弹出一个窗口,您需要在其中填写详细信息
在注册窗口填写您的详细信息,如您的姓名,邮件id,用户名等。然后点击保存设置,你的账户就创建好了。要获得你的AIO密钥,点击“查看AIO密钥”。
3. 一个窗口将弹出与您的Adafruit IO AIO密钥。复制此键,稍后在代码中需要它。
4. 现在,在此之后,您需要创建一个提要。要创建提要,请单击“feed”。然后点击“Actions”,你会看到一些选项,点击“Create a New Feed”。
5. 在此之后,将打开一个新窗口,您需要输入:
名称-在名称中,选择为提要写一个简短的描述性名称。你可以用
字母、数字和空格。
描述-对数据的长格式描述。这个字段不是必需的,但是你
可以写你的数据的描述。
6. 点击“创建”,你将被重定向到你的新提要。
IFTTT设置物联网宠物喂食器
IFTTT又名“If This Then That”,是一个免费的基于网络的服务,用于创建简单条件语句链,称为applet。IFTTT允许用户创建触发器并基于这些触发器执行操作。
在这个物联网猫喂食器项目中,当我们使用谷歌助手说出特定的线路时,我们使用IFTTT来创建触发器。为此,我们必须创建一个applet,我们将在其中集成谷歌助理与Adafruit IO。我们以前使用谷歌助手来构建物联网项目。
首先,在IFTTT上创建一个帐户。要做到这一点,请浏览IFTTT网站并点击注册。然后填写所需的详细信息并单击“创建帐户”。
现在,当你登录你的账户时,点击你的个人资料,然后点击“创建”。
注意:使用与Android手机谷歌帐户相同的电子邮件ID登录IFTTT。例如,如果您的手机使用xyz@gmail.com电子邮件ID登录,那么使用相同的电子邮件ID登录IFTTT。
现在用If ' This ' Than ' That创建一个小程序。这里的“This”是服务名,我们将通过它提供输入,而“That”将根据输入生成触发器。所以在这个项目中,我们将使用Google Assistant作为“this”,而Adafruit IO作为“That”。
因此,要创建一个applet,请单击“This”图标。然后搜索b谷歌助手。在这里,IFTTT将请求允许使用您的谷歌帐户。
现在在谷歌助手中点击“说一个简单的短语”。
现在在下一个窗口中,它会询问你想对谷歌助手说的短语,以及你想听到什么作为对该短语的回应。你也可以添加一些可选的短语。现在单击Create Trigger。
现在,这个applet的一部分已经完成。对于第二部分,点击“That”。
现在在搜索窗口中,搜索Adafruit
在下一个窗口中,选择要为其创建触发器的提要名称,然后输入在说出指定短语时要发送到提要的单词/数据。之后点击“Create Action”。之后,它会让你点击finish按钮来完成设置。现在applet就可以使用了。
当我们对谷歌助手说一句话时,这个小程序就会给宠物喂食。
现在我们将创建另一个applet,通过这个applet,我们可以在特定的时间通过说一个带有文本的短语来喂养我们的宠物,例如,“Ok Google喂养我的宠物今天早上。”通过使用这个小程序,我们可以在特定时间向ESP8266发送触发器。对于这个小程序,请遵循相同的步骤:单击profile,然后单击“Create”。之后,在“This”选项中选择“Google assistant”。现在在谷歌助手点击“说一个文本成分的短语”。
在下一个窗口中,单击“That”并选择Adafruit。在Adafruit中,选择与前一个applet相同的feed名称。然后点击“Create action”和“Finish”来完成这个过程
代码的解释
这个宠物喂食器的完整代码以及演示视频在这个项目的最后给出,在这里我们解释它的几个部分。
通过包含此项目所需的所有库开始编写代码。Arduino IDE预装了用于伺服电机和LCD模块的库。但是你必须从下面给出的链接下载并安装其余的库:
•Adafruit MQTT
•NTP Client
•Wire.h
为了从NTP服务器获得准确的时间,需要初始化服务器位置。这里我使用的是“pool.ntp.org”,这是一个全球服务器池。
在这部分代码中,我们定义了Adafruit服务器地址、端口号、Adafruit帐户用户名和您从Adafruit帐户复制的唯一AIO密钥。这用于在ESP和Adafruit IO之间建立MQTT连接。
在这部分代码中,使用前面的信息设置MQTT和WiFi客户机,即adafruit用户名、AIO密钥、服务器地址和端口号。
现在我们用名称“onoff”设置提要并订阅它。
timeClient.begin ();函数用于启动NTP客户端,以便它可以向ESP8266发送数据。
在void循环中,timeClient.update()函数用于在我们向NTP服务器请求时更新日期和时间。获取数据后,我们将小时、分钟和秒存储为三个不同的整数。
这里我们直接检查订阅提要中的特定单词,如果该单词与我们指定的单词匹配,即‘ ON ’,它将调用open_door()和close_door()函数。
通过使用if条件为“Morning”、“Afternoon”和“Evening”字符串指定特定的时间。之后,使用另一个if条件来匹配当前时间和馈送时间。因此,每当我们说“喂我的宠物今天早上”时,它将在当前时间等于10:30时调用open_door()和close_door()函数。对于“Evening”和“Afternoon”字符串将遵循相同的过程。
Void open_door()和Void close_door()函数用于向伺服电机发送打开活板门的命令。开角定义为60°,闭角定义为0°。
物联网宠物喂食器的工作原理
将代码上传到NodeMCU后,当前时间和馈入时间将显示在16*2的LCD上。最初,它将显示0:0的饲料时间,因为我们没有输入任何饲料时间。现在说“好的,谷歌。把我的宠物喂给你的谷歌助手。谷歌助手会识别出这个短语,并回答“喂你的宠物”。之后,它将伺服电机从其初始位置0⁰旋转到60⁰,并在延迟后返回到其初始位置。你也可以在特定的时间喂你的宠物。为此,我们使用了三个字符串,即“Morning”,“Afternoon”和“Evening”。这些字符串被分配了不同的时间,所以当你说“今天早上喂我的宠物”时,它会把分配给“早上”字符串的时间作为喂食时间,当输入的时间与当前时间匹配时,它会将伺服电机从初始位置0⁰旋转到60⁰,并在延迟后返回到初始位置。
这是如何使用谷歌助手喂养你的宠物。如果你想在特定的时间喂你的宠物,而不是早上、下午和晚上,去IFTTT,把谷歌助手的设置从“说一个带文字成分的短语”改成“说一个带数字的短语”。
本文编译自iotdesignpro