基于物联网的语音控制新像素LED -在谷歌助手上使用语音命令设置任何颜色
扫描二维码
随时随地手机看文章
随着谷歌助理、亚马逊Alexa和苹果Siri等虚拟助手的发展,家庭自动化和语音控制应用变得相当流行。我们以前建立了许多家庭自动化项目,从简单的Alexa控制的家庭自动化到语音控制的家庭自动化使用树莓派。在这个项目中,我们将使用谷歌助手和Blynk应用程序来控制Neopixel LED条。Blynk应用程序是一个免费的物联网平台,链接到IFTTT(如果这样,那么那个)网站,该网站用于创建if-else条件语句,或者换句话说,applet。谷歌助手的语音命令已经通过IFTTT小程序添加。通过谷歌助手给出的命令被解码,然后使用IFTTT Webhooks发送到Blynk。然后微控制器访问Blynk应用程序中的数据。这里使用的微控制器是ESP-01,因为它体积小,具有Wi-Fi功能。
使用NodeMCU控制新像素所需的组件
•新像素LED带
•LM1117稳压器
•直流电源插孔(母)
•2x10µf电容器
用Arduino Uno编程ESP8266-01
而不是使用FTDI板,在这里我使用Arduino Uno来编程ESP8266-01。使用Arduino编程ESP8266-01的电路图如下:
将ESP-01的VCC和GND连接到3.3V, Arduino的GND, CH_PD连接到3.3V, GPIO_0连接到Arduino的GND。将ESP-01的RX和TX分别连接到Arduino Uno的RX和TX。GPIO_0接地,使能ESP8266的编程模式。按图完成电路后,将Arduino的Reset引脚连接到GND上,绕过Arduino。它将禁用Arduino并将代码直接上传到ESP8266板。连接ESP-01的RST引脚到地,半秒后取下RST(蓝色LED闪烁几毫秒)。
现在,启动Arduino Uno并打开Arduino IDE。在“Board type”中选择“Generic ESP8266 Module”,上传代码。
Neopixel与ESP8266接口的电路图
上传代码后,拆除Arduino Uno,按照图将Neopixel LED带与ESP-01连接。
ESP-01的VCC和CH_PD引脚接LM1117的输出引脚,GND引脚接5V电源的-ve导轨。Neopixel LED的数据引脚连接到ESP-01的GPIO2引脚上。这个完整的设置将由一个5V适配器供电。LM117稳压器用于调节ESP8266-01板的3.3V电压。
焊接完穿孔板上的所有组件后,它看起来像下面这样:
设置Blynk应用程序
Blynk是一个可以在Android和iOS设备上运行的应用程序,可以控制任何物联网设备。通过使用Blynk应用程序,用户可以创建自己的图形用户界面来设计物联网应用程序GUI。我们以前在许多其他基于物联网的项目中使用过Blynk。
在安装之前,从Google Play商店下载Blynk应用程序(iOS用户可以从Apple store下载),如果你没有帐户,请注册。
创建新项目:
安装成功后,打开应用程序,点击“新建项目”。在下一个屏幕上设置项目名称、板类型和连接类型等参数。本项目选择设备为“ESP8266”,连接类型为Wi-Fi,点击“创建”。
创建GUI:
在Blynk中打开项目,单击“+”符号,它将显示许多小部件。在我们的例子中,我们需要一个RGB颜色选择器,它被列为“zeRGBa”和一个按钮,将用于改变LED条的操作模式。
在Widgets中设置参数:
添加完所有小部件后,现在设置用于向ESP-01发送控件值的颜色和模式的小部件参数。
点击ZeRGBa,我们将看到一个名为ZeRGBa Settings的屏幕。将输出选项设置为“合并”,并将引脚设置为“V2”,如下图所示。同样,在按钮设置中,将输出引脚设置为“V3”,如下图所示。
获取认证令牌:
创建新项目后,Blynk会将该项目的认证令牌发送给您。您还可以从项目页面获取Blynk认证令牌。只需单击坚果图标并使用复制所有选项复制验证令牌并将其粘贴到安全的地方。我们在编程ESP-01时需要它。
使用Google Assistant和Blynk设置IFTTT
IFTTT又名“If This, Then That”,是一个基于网络的服务,用于创建简单条件语句链,称为applet。它使用户能够创建触发器并基于触发器执行操作。在这个项目中,当我们使用Google Assistant说出特定的一行时,我们将使用IFTTT来创建一个触发器。为此,我们必须创建一个applet,其中我们将使用Webhooks将谷歌助手与Blynk应用程序集成在一起。
首先,在IFTTT上创建一个帐户。要做到这一点,请浏览IFTTT网站并点击注册。然后填写您的详细信息并点击创建帐户。现在,当你登录你的账户时,点击你的个人资料,然后点击“创建”。
注意:登录到IFTTT使用相同的电子邮件ID在您的Android手机的谷歌帐户。例如,如果您的手机使用xyz@gmail.com电子邮件ID登录,那么使用相同的电子邮件ID登录IFTTT。
现在使用If ' This ' Then ' That创建一个小程序。这里的“This”是服务名,我们将通过它提供输入,而“That”将根据输入生成触发器。所以在这个项目中,我们将谷歌Assistant作为“this”,Webhooks作为“That”。所以要创建一个小程序,点击“This”图标并搜索“谷歌助手”。在这里,IFTTT将请求允许使用你的谷歌账户。
现在在谷歌助手中,点击“说一个带有文本成分的简单短语”。
现在在下一个窗口中,它会询问你想对你的谷歌助手说什么短语,以及你想听到什么作为对该短语的回应。你也可以添加一些可选的短语。现在点击“创建触发器”。
现在,这个applet的一部分已经完成。对于第二部分,点击“That”。
在搜索窗口中,搜索“webhooks”,然后在下一个窗口中点击“Make a web request”。
在下一个窗口中,输入URL。API的语法如下:
式中:188.166.206.43为Blynk在印度的IP地址,He3ot0ZXrYQcROYlwOIuVu-F为Auth令牌,V1为虚拟pin1。
3D打印ESP-01外壳
我测量了使用规模的设置的尺寸,也测量了桶千斤顶的尺寸,为我的设置设计一个套管。完成后,我的设计看起来是这样的。
完成设计后,我将其导出为STL文件,并根据打印机设置进行切片,最后进行打印。STL文件也可以从Thingiverse下载,你可以使用它打印你的大小写。打印完成后,我继续将项目组装在一个永久的外壳中,并将其安装在一个设施中。与完整的连接,我组装电路到我的外壳,一切都是一个很好的适合,你可以看到在这里。
控制新像素的ESP-01编程
使用谷歌助手控制新像素的完整代码可以在本页底部找到。对这个问题的解释如下。在这个项目中,我们将使用Adafruit_NeoPixel.h和BlynkSimpleEsp8266.h库。这些库可以直接从Arduino IDE下载。为此,转到Sketch > Include Library > Manage Libraries。在搜索框中搜索“Adafruit Neo”下载并安装Blynk ESP8266库。
请按照与ESP8266相同的步骤安装Blynk库。
安装库之后,开始编写代码,包括所有必需的库文件并定义输入和输出引脚
在接下来的几行中,输入Blynk和Wi-Fi凭据,如认证令牌,以及ESP-01应该连接的Wi-Fi的Wi-Fi名称和密码。blink验证令牌可以从Blynk应用程序获得。
之后,声明NeoPixel strip对象,其中参数1是NeoPixel strip中的像素数,参数2是连接LED strip的ESP-01引脚。
BLYNK_WRITE()函数用于检查V1, V2和V3虚拟引脚的传入数据。虚拟pin V1用于接收来自webhooks URL的Google Assistant数据,而V2和V3 pin用于更改来自Blynk应用程序的Neopixel颜色和模式。
在loop()函数内部,Blynk.run()检查来自Blynk GUI的传入命令。然后将输入的字符串保存到一个变量中,并使用if条件执行相应的操作。
控制新像素与Blynk和谷歌助理
一旦你的代码和硬件准备好了,使用Arduino Uno在ESP-01上上传代码。之后,连接Neopixel LED并对你的谷歌助手说“ok Google,打开彩虹模式”或“打开影院模式”。谷歌助手将识别该短语并响应“ok开启”,Neopixel将根据命令照亮。您还可以使用Blynk来控制新像素的颜色。
这就是如何用谷歌助手控制ESP8266。
本文编译自iotdesignpro