Blynk入门:简单的DIY IoT设备

Blynk是一项物联网(IoT)服务,旨在使远程控制和从您的设备中读取传感器数据尽可能快和容易。在本文中,我们将确切介绍Blynk的含义,工作方式,并提供两个简短的示例项目,说明如何通过NodeMCU和Raspberry Pi开发板使用该服务。

开始开发从未如此简单。近年来,使用微控制器和物联网设备的智能对象迅速普及。诸如Arduino或Raspberry Pi之类的开发板可用于控制电源插座中的所有内容。

对于初学者而言,可能会遇到问题的一个领域是编码和联网。 Blynk旨在消除对广泛编码的需求,并使其可以轻松地从智能手机上的任何位置访问设备。爱好者和开发人员可以免费使用它,尽管它也可以付费用于商业用途-公司可以使用Blynk创建自己的应用和系统,然后以自己的品牌进行销售。

Blynk使用自己的品牌服务器和库以使服务正常工作,但这似乎是Blynk应用的主要优势。

输入Blynk应用

Blynk应用可在以下位置免费使用Android和iOS。这是项目的起点,它具有易于使用的拖放系统,可为IoT设置构建自定义控件。工作流程非常快速:启动新项目时,系统会提示您从广泛的列表中选择开发板,以及连接方式。然后该应用通过电子邮件发送授权令牌,以通过Blynk服务器连接到您的设备。

控制元素称为小部件:各种类型的输入法和输出显示,包括按钮,滑块,操纵杆,图形和文本反馈。还有一些特定于组件的小部件,带有用于LED,LCD显示器甚至是实时流式视频的样式化控件。另外值得注意的是添加了功能(例如自动发布到Twitter和自定义通知)的小部件。

该应用程序是免费的,但通过为所有这些部件提供“能源"成本,它限制了一次可使用的小部件数量。 。该应用程序为您提供了2,000的余额,可以选择是否需要购买。

我发现,提供的初始余额对于此处列出的示例项目来说绰绰有余,尽管您的设置更为复杂,您可能会很快发现果汁耗尽。

每个小部件都有一个编辑菜单,可让您更改名称和颜色。然后,您选择要影响的引脚(无论是板上的引脚还是Blynk的虚拟引脚之一)以及要发送的值范围。对于图形和文本框等输出显示,您还可以选择更新频率,从而节省宝贵的带宽。

Blynk also features the ability to assign instructions to “virtual” pins, which are user configured connections between the app and the hardware. A single button in the app can therefore be used to trigger many different events on the device. We’ll cover how to use these later in the article.

该应用程序提供了与他人共享项目的选项。生成的QR码可以通过电子邮件发送或直接扫描,也可以由拥有Blynk应用的任何人使用。与您共享的任何人都不能对项目进行更改,这使之成为共享设备控制权的快速便捷的方法。但是,值得注意的是,您的应用程序中的项目必须正在运行,其他人才能访问硬件。

您也可以在不允许访问硬件的情况下共享项目,这是一种很好的教学方法人们如何使用该应用程序而又不让他们打开和关闭灯!

我发现创建应用程序非常快捷,直观。创建完成后,您可以通过按右上角的播放符号立即开始使用它。如果以后需要进行更改,只需按相同的按钮即可返回到编辑模式。

Blynk服务器

创建了用于控制设备的应用后,您可以有两种方法与之通信。

Blynk云服务器快速,响应迅速且免费使用。连接到Wi-Fi设备就像将生成的授权代码复制到Arduino草图中并提供Wi-Fi详细信息一样容易。对于Raspberry Pi,Blynk提供了一个测试脚本,您可以将其与授权代码一起运行以达到相同的效果。在本文的后面,我们将使用Blynk库创建自己的脚本以连接到服务。

第二个选项是托管您自己的Blynk服务器。 Blynk提供了一个基于Netty的开源Java服务器,可以从您的计算机甚至Raspberry Pi运行该服务器。在功能和安全性方面,这对某些用户而言具有各种好处,尽管在此处的示例中,我们将集中精力使用提供的Blynk云服务器。

Blynk库

第三个Blynk的最后一个元素是Blynk库。该库与大量开发板一起使用,以允许该应用程序与您的硬件之间进行通信。

最简单的是,所需要做的就是安装该库并加载一个标注良好的示例草图。

Blynk:初始设置

在智能手机上安装Blynk应用,并创建一个帐户。确保使用您可以实际访问的电子邮件地址,因为这是授权令牌的发送位置。现在创建一个项目,选择要使用的板以及连接方式。这两个示例都通过Wi-Fi连接,尽管也可以通过蓝牙,以太网甚至GSM进行连接。

创建您的项目。这将自动发送一个授权令牌。如果没有收到,可以通过选择项目设置图标(小螺母),选择设备,然后选择“电子邮件"来重新发送。

下一步,从以下位置安装Blynk库: Blynk网站。对于Arduino,请通过将文件复制到您的 Arduino>库文件夹中来安装库。如果您不熟悉Arduino,请参阅以下指南。

对于Raspberry Pi,您需要确保先安装Node.js。

首先,请确保您的Pi是最新的,并已安装了构建必需的软件包。

sudo apt-get updatesudo apt-get upgradesudo apt-get install build-essential

然后在终端窗口中键入 Node Package Manager OnOff 库和 Blynk 库。

sudo npm install -g npmsudo npm install -g onoffsudo npm install -g blynk-library

您可以通过运行Blynk测试脚本来检查一切是否正常:

blynk.js [YourAuthorizationTokenHere] 

提供的一切都可以正常工作,它应该像这样:

如果出现任何错误,在重新安装NPM,OnOff和Blynk库之前,请确保您的Pi是最新的,并且已安装了最新版本的Node.js。

使用NodeMCU进行快速设置

第一个示例显示了使用Blynk建立简单系统的速度。它不需要编码,而且一旦设置,它就完全独立了。只要开发板可以访问您的Wi-Fi连接,您就可以使用智能手机从任何地方访问它。

首先,在面包板上设置一个简单的电路。将引脚 D0 连接到LED的正极,然后通过220欧姆电阻将其连接到GND引脚。

在Blynk应用中打开NodeMCU项目。在右侧,从菜单中选择 Button 小部件。选择项目中的按钮以打开其属性菜单。您可以在此处命名,并选择它应该影响NodeMCU板上的哪个引脚。从输出列表中选择 D0引脚,然后切换模式以使其成为开和关开关,而不是瞬时按动开关。

按回去(所有更改将自动保存) ,然后按右上角的播放图标启动您的应用。您可以随时按此相同按钮以返回到编辑项目。

下一步,打开Arduino IDE,然后从工具菜单中选择NodeMCU板和端口。如果您在此菜单中没有看到您的开发板,则可能需要安装ESP8266库(本指南应提供帮助)。

现在通过导航到打开库中提供的ESP8266独立脚本Blynk >文件>示例> Blynk> Boards_WiFi> ESP8266_Standalone 。将授权令牌的占位符替换为通过电子邮件收到的授权令牌,然后输入您的Wi-Fi详细信息。

char auth[] = "YourAuthToken";char ssid[] = "YourNetworkName";char pass[] = "YourPassword"; 

将草图保存为新名称,然后将其上传到您的电路板上。现在,当您按应用程序中的按钮时,LED应该会亮起和熄灭。如果它不起作用,请检查您是否已按下应用程序中的播放图标。

在这种简单情况下,Blynk的设置速度非常快。

值得注意的是,由于它使用Blynk服务器,因此只要该板可以访问您的家庭Wi-Fi连接并且您的智能手机具有移动数据访问权限,您就可以在任何地方控制该板。

Blynk on Raspberry Pi

通过使用Blynk测试脚本,您可以在Raspberry Pi上使用与上述示例完全相同的方式使用Blynk,但是Blynk的虚拟引脚提供了一些更深层次的功能,我们将介绍这些功能。

Blynk使用Node.js进行工作,因此我们今天要编写的代码将使用Javascript。如果您是该语言的新手,那么这将是入门的很好入门。

我们将使用Blynk库来创建一个应用程序,该应用程序报告门传感器是打开还是关闭,并发送一个

您将需要:

门磁开关(也称为簧片开关)

  • 1x 1k ?电阻器
  • 1x 10k?电阻器
  • 1x 220?电阻
  • 1x LED
  • 面包板和连接线
  • 像下面这样设置面包板:

    请注意,Blynk的库使用GPIO Pi的针脚数量,因此我们将在整个项目中使用它们。将5V和GND引脚连接到面包板上的电源轨。将Raspberry Pi上的GPIO引脚22连接到LED阳极,然后通过220?将阴极连接到接地轨。电阻。将GPIO引脚17连接到1k的一侧吗?电阻,并连接10个?电阻的另一端,以及电源轨的5V端。最后,将簧片开关的一侧连接到电源轨的GND侧,并将其连接到1k?和10k?电阻彼此相遇。这种上拉电阻器设置将在开关打开时使引脚17上的电压读取高电平。

    在Blynk应用中创建一个新项目,然后选择Raspberry Pi板。在小部件菜单中,选择“标签值",“电子邮件"和“通知"小部件

    选择标签值,为其命名,然后选择虚拟图钉V0 作为其输入图钉。您还可以更改信息的显示方式。在这种情况下,在“标签"选项卡的/ pin /之前添加“门是"。我们可以将“读取频率"值保留为默认设置,尽管您可以更改此值以不同的速率将数据发送到您的应用。

    值得注意的是,您实际上不必输入电子邮件地址到电子邮件窗口小部件,因为稍后我们将其添加到代码中,尽管该窗口小部件必须存在才能正常工作。

    一旦您对应用的外观感到满意,请按“播放"按钮

    现在,创建一个名为 blynkdoor.js 的新脚本。完整的代码在此处有完整注释。

    sudo nano blynkdoor.js

    我们需要首先导入Blynk库,添加我们的授权密钥,并创建要在脚本中使用的Blynk实例。

    var blynklib = require('/usr/local/lib/node_modules/blynk-library');var AUTH ='PasteAuthorizationCodeHere'var blynk = new blynklib.Blynk(AUTH);

    我们还需要导入OnOff库,并声明设置我们的簧片开关和LED的变量。我们还将为在Blynk应用上设置的虚拟引脚创建一个变量。

    var Gpio = require('onoff').Gpio,reed = new Gpio(17, 'in', 'both'), //register changes 'both' when switch is opened and closedled = new Gpio(22, 'out');var virtualPin = 0;

    现在,我们将使用OnOff库中的 watch 函数来监视簧片开关的变化。门开关位于 0 1 ,每当该值更改时,我们会将更改写入LED引脚。

    reed.watch(function(err,value){	led.writeSync(value);

    我们可以使用值还可以将数据发送到Blynk应用。如果门是关着的,我们希望能够在您的标签值小部件中看到它。如果门开了,我们希望收到通知和电子邮件告知我们。我们使用if语句,并使用Blynk库中的 virtualWrite 通知电子邮件功能。可以在这里找到Blynk的完整文档。

     if(value==0){ blynk.virtualWrite(virtualPin,"Closed"); console.log('Door Closed'); }; if(value==1){ blynk.notify("The door just opened!"); blynk.email("[email protected]", "Front Door", "The front door just opened."); blynk.virtualWrite(virtualPin,"Open"); console.log('Door Open'); };});

    现在,只要簧片开关注册了值的更改,数据就会发送到我们的虚拟图钉,并且如果门打开到通知小部件,在应用程序中,以及写入控制台。请注意,最后的括号是我们从上面的 watch 函数开始的地方开始的。

    最后,我们需要在程序结束时重置PIN码。这与您可能已经熟悉的 GPIO.cleanup()相同。

    现在保存代码并退出。使用节点运行脚本。

    sudo node blynkdoor.js

    现在,当将磁铁从干簧传感器上移开时,您将收到一条通知,告知您门已打开,并且标有标签的显示屏也应更改。再次关闭开关,您将看到标记的显示再次发生变化。

    值得注意的是,尽管电子邮件可以正常工作,但必须在手机上运行Blynk应用才能接收推送通知

    在到目前为止与Blynk在一起的短时间内,这似乎是一项非常易于使用的服务。最简单的方法是,无需编程知识的人就可以轻松构建DIY家庭自动化系统。有了一点额外的编码知识,它就会变得更加强大,从而允许更复杂的系统和应用程序中的单个按钮按下操作产生多个事件触发器。

    该项目是Blynk的基本介绍,尽管我们拥有几乎所有家庭自动化或微控制器项目都可以轻松修改此处介绍的内容。

    您是否使用过Blynk?您是否有想要使用与我们共享的服务的疯狂复杂系统?在下面的评论中让我们知道!

    图片来源:通过YouTube.com提供的朱塞佩·卡卡瓦勒

    标签: Arduino 电子 家庭自动化 物联网 Raspberry Pi