- 先决条件:
- 工作理念:
- 用于ESP8266的Arduino IDE程序:
- 电路图和硬件:
- 转发您的ESP8266 IP的端口:
- 安装Moni Android应用程序:
- 使用IFTTT服务创建小程序:
- 项目测试:
欢迎来到另一个激动人心的项目,在该项目中,我们将使用ESP8266 Wi-Fi模块构建一个语音控制的家庭自动化系统,您可以在全球任何地方通过Android应用程序使用Voice来控制家庭AC设备。是的,在此项目结束时,您梦想通过仅使用语音命令打开或关闭负载(灯光/风扇)的梦想就会实现。该项目是我们先前的家庭自动化智能接线盒项目的变体,在该项目中,我们已通过网络使用Web服务器控制了家用电器。
这个基于物联网的语音控制家庭自动化项目非常易于构建,并且不需要花费太多,因为它不需要您购买任何昂贵的语音模块。整个项目花了我大约500 INR(8 USD)来建造。此外,这是一个微控制器独立的项目,这意味着你不需要任何MCU / MP喜欢的Arduino和树莓派。整个项目都在ESP8266模块上运行。在此处了解更多有关ESP8266的信息。所以,让我们开始讨论…。
以前,我们已经介绍了 使用不同技术的多种类型的 家庭自动化,例如:
- 基于DTMF的家庭自动化
- 使用Arduino的基于GSM的家庭自动化
- 使用Arduino的PC控制的家庭自动化
- 使用8051的蓝牙控制家庭自动化
- 使用Arduino的IR远程控制家庭自动化
- 使用MATLAB和Arduino的家庭自动化项目
- 使用Raspberry Pi的RF远程控制LED
- 使用Arduino的智能手机控制家庭自动化
先决条件:
该项目是我们之前使用ESP8266进行家庭自动化的智能接线盒项目的延续,因此该教程已涵盖了大部分硬件部分。在继续阅读本教程之前,请仔细阅读该内容,因为我将跳过该教程中介绍的信息。为了简要回顾一下我们以前的项目,我们在该教程中修改了一个接线盒(扩展板),该接线盒可以控制由两个继电器和ESP8266模块组成的Perf板。可以使用ESP8266创建的网页(充当网络服务器)来切换两个继电器(交流负载)。在本教程中,我将向其中添加一些功能,以便我们也可以通过智能手机使用语音命令来控制交流负载。我们不会在本教程中介绍任何硬件部分,其硬件和代码将与上一教程相同。
也知道如何使用www.IFTTT.com将使您在该项目中占上风。如果您不熟悉IFTTT,请不用担心,我将在此特定教程中解释如何使用它,以便您可以使用它。
工作理念:
我假设您已经阅读了上一教程,在这种情况下,现在您应该知道如何构建该接线盒以及如何从Web浏览器远程切换负载。为了做到这一点,我们使分配给ESP8266的IP地址公开可用。这可以通过“端口转发技术”来完成。然后在您的Android / iPhone移动设备上安装一个名为“ Moni”的移动应用程序。该应用程序将识别我们的语音,并将信息传达给IFTT小程序,这些小程序又将通过Maker Web挂钩控制负载。
听起来可能有些乏味,但是所有这些事情在本教程中都得到了清楚的解释,并且只需点击几下就可以相信我,上述所有内容都是可以的。本教程将借助“图片和视频”以最佳方式为您提供帮助。在本教程结束时,您将可以通过世界各地的声音打开或关闭家用电器。查看本教程结尾的完整代码和演示视频。
同时使用Raspberry Pi和16x2 LCD上的语音输入检查语音控制灯。
用于ESP8266的Arduino IDE程序:
就像之前的项目一样,我们将在Arduino IDE的帮助下对ESP8266模块进行编程。在程序中进行了微小的修改。进行此修改后,ESP8266会在每次与路由器建立连接时连接到一个恒定的IP地址。该程序与前一行代码完全相同,除了以下四行
//每当IPAddress ip(192,168,0,104)时获取一个恒定的IP; //这应该是我的ESP模块IPAddress网关的IP(192,168,0,1); //设置网关以匹配您的网络大多数默认情况下,网关将是相同的Serial.print(F(“将静态ip设置为:”)); Serial.println(ip); IPAddress子网(255,255,255,0); //设置子网掩码以匹配您的网络WiFi.config(ip,gateway,subnet);
在这里,代替 IPAddress ip(192,168,0,104); 输入所需的IP地址。在这种情况下,我的ESP将一直连接到192.168.0.104,我可以在浏览器中使用此IP来简单地对其进行访问。本教程末尾给出的完整代码。
电路图和硬件:
基于IoT的语音控制家用电器的原理图和硬件与我们之前的Smart Junction项目相同,我在此解释了原理图。在这里,您可以看到完整的原理图以供参考:
转发您的ESP8266 IP的端口:
第一步是在路由器(调制解调器)中启用端口转发,以便您只需输入公共IP即可从世界任何地方访问ESP。每当我们的ESP8266连接到我们的家庭/办公室路由器时,它将获得一个唯一的IP地址,此IP地址用于通过Web浏览器访问ESP8266。此IP地址在家庭/办公室网络中受到限制,这意味着您无法全局访问它;它只能由连接到路由器的设备访问。端口转发是一种技术,通过它可以使此网页在全球范围内加载。 端口转发之后,您可以使用您的公共IP从世界任何地方访问此网页。听起来不错吧!让我们看看如何完成这项工作。为此,您需要事先了解以下内容。
1.路由器的制造商名称和IP地址。可以通过查看路由器轻松找到。IP地址也会在贴纸上提及。如果不是Google,则不知道您的路由器IP。
2.路由器登录页面的用户名和密码。大多数路由器的用户名均为“ admin”,密码为“ admin”。
3.分配给您的ESP8266模块的IP地址。这是您用来访问ESP模块网页的地址。
4. Internet服务提供商的IP地址(公共IP地址)。只需浏览“我的IP是什么”即可找到。
掌握完所有内容后,您可以按照以下步骤进行端口转发,如果您发现有问题,请使用下面的注释部分。我会帮你的。
步骤1:使用路由器的IP地址登录到路由器的Web管理实用程序页面,通常为192.168.1.1。我的屏幕如下所示
步骤2:默认输入用户名“ admin”,默认输入密码“ admin”,然后单击Login。您将被带到实用程序页面,该页面如下所示。
您在此处看到的大多数信息都是非常机密的,因此请勿与任何未知信息共享,否则可能会冒互联网安全风险。
第3步:如上图所示,页面的所有选项将在左下方列出。我们的目标是找到一个名为“虚拟服务器”的名称。我的转发选项下列出了我的列表。大多数路由器会将它们列为第6、7或第8个选项(大多数位于DHCP设置以下)。找到它并单击它
步骤4:现在,您必须输入分配给ESP模块的IP地址和端口号以转发我们的IP。就我而言,我必须单击 添加新项 并输入这些详细信息。对您来说可能略有不同。IP地址是用于访问ESP模块网页的IP地址。您可以选择端口号,但为简单起见,让我们使用“ 80”。分配给我ESP8266模块的IP是192.168.0.104,因此我的转发如下所示:
步骤5:现在我们必须知道我们的公共IP地址。您可以在“我的IP是什么”中找到我。您的ISP IP应该高度保密。对于本教程,让我们假设我的IP地址是987:654:321:123,在本教程的其余部分中,我将使用它作为ISP IP。
注意: 您的ISP可能已经为您提供了静态/动态IP,如果它是动态IP,则您的IP将在每次重新启动调制解调器/路由器时更改。在这种情况下,您必须使用DynDNS之类的东西。但是,这超出了本教程的范围。即使它是动态IP,只要您不重置路由器,它也将为您工作。
就是说我们的端口转发成功,我们可以通过在浏览器中输入ISP IP:端口名(987:654:321:123:80)来检查并检查ESP网页是否已加载。如果一切都按预期进行,您现在应该可以使用ISP IP地址从世界任何地方切换负载。
安装Moni Android应用程序:
Moni是可用于Android,Windows,iTunes甚至Skype的应用程序。您可以将此应用程序下载到您的手机。Moni.ai除了响应您的语音命令外,还具有更多功能,它对开发人员非常友好,您可以在视觉上快速定义对话并连接到服务。Moni.ai使用一个名为Node-Red的应用程序,您可以使用该应用程序轻松地创建语音通道并为您的业务/项目构建自己的Chabot(AI)系统,并使用自然语言对其进行自动化。最好的事情是Moni对于非商业用途是完全免费的。
我使用的是Android手机,因此我直接从Google Play商店下载Moni。安装后,创建您的免费帐户并登录,您的应用程序应如下所示:
您可以像使用任何其他虚拟助手一样使用它,例如询问天气,时间等。但是,另外还有一点是,它可以响应由Ifttt服务创建的小程序。让我们看看如何立即为您的应用程序创建Applet。
使用IFTTT服务创建小程序:
我们距离完成此项目仅一步之遥。最后一步是在IFTTT网站上创建Applet。在这里,我们指示Moni使用不同的语音命令来在家中控制不同的家用电器。
我正在使用此语音控制接线盒来切换我的水族馆负载(灯光/滤镜),如下面的视频所示。因此,我正在为该需求定制Applet,您可以根据自己的需求对其进行定制。请按照以下步骤操作:
第1步:访问www.IFTTT.com并使用您的帐户登录。如果是新用户,请注册。
第2步:现在,单击“搜索”,然后键入Make Webhooks。选择它,然后单击“连接”。按照步骤进行连接。
第3步:现在再次单击“搜索”,然后输入Moni。选择Moni,然后单击“连接”。使用您的IFTTT帐户登录以启用连接。
步骤4:我们已连接到“ Maker Webhooks”和“ Moni”服务。现在,让您使用这些服务创建一个Applet。单击我的小程序,然后单击“新小程序”。您应该会看到以下内容:
在此屏幕中,您必须单击“ this”并选择“ Moni”。然后单击“询问Moni以执行操作”,您将进入以下屏幕。
步骤5:按照上面的图像填写细节。我的任务是在我说“打开水族馆灯”时打开我的水族馆灯(负载1)。然后点击“创建触发器”
步骤6:您将被带回到“如果超过”屏幕。现在,单击“ that”并输入“ Maker Webhooks”并选择它。然后点击“发出网络请求”。您将被带到以下屏幕
这是最可能犯错误的重要步骤。在此页面中,输入您要加载的URL。在我的情况下,我想打开连接到switch1的负载,因此使用http:// 987:654:321:123 / switch1On行,您需要用您的公共IP地址替换我的IP。仅当您在上一教程中使用了我的代码时,此方法才有效。下面列出了用于切换负载的URL的完整列表。
网址 |
程序中的关键字 |
行动 |
http:// 987:654:321:123 / switch1On |
开关1开 |
GPIO_0设为高电平,从而打开负载1 |
http:// 987:654:321:123 / switch1Off |
关机1 |
GPIO_0设为低电平,从而关闭负载1 |
http:// 987:654:321:123 / switch2On |
开关2开 |
GPIO_2设为高电平,从而打开负载2 |
http:// 987:654:321:123 / switch2Off |
关机 |
GPIO_2设为低电平,从而关闭负载1 |
输入所需的URL后,单击“创建操作”。然后单击完成。同样,您可以在“接线盒”中创建4个Applet来打开/关闭两个负载。
也就是说,您的小程序已经准备好采取行动,它应该显示在“我的小程序”下,如下所示。
是时候测试我们的代码了……
项目测试:
最后,我们准备好我们的项目。让我们测试一下。打开电源,然后在手机中打开Moni应用程序。单击麦克风图标,然后说出命令。在我的情况下,它是“打开水族箱灯”,它应该以“确定”打开回复并打开灯。查看下面的完整代码和演示视频。
希望您喜欢该项目并使它正常工作。如果您被卡在某个地方,请使用下面的评论部分,我一定会帮助您。在此之前,您将遇到另一个有趣的项目,请继续关注。
也可以在此处查看我们的其他基于IoT的项目。