飞道的博客

只会用 WiFi 连接 Blynk 物联网?带你解锁三种新姿势!

572人阅读  评论(0)

本文作者: & 铁熊

Blynk 是一个与硬件无关的物联网平台,使用起来简单便捷,仅需通过简单的拖拽组件即可创建漂亮的 APP 界面,再加上少量代码就能够完成一个物联网项目的开发,可谓是最简单的物联网平台之一。

随着国内图形化编程的风靡,更是进一步降低了物联网开发的门槛。裘炯涛与陈众贤(铁熊)两位老师就编写了一本《物联网,So Easy》的参考书,专门介绍 Blynk 与物联网的编程。

但是《物联网,So Easy》这本书中使用的是以 ESP8266 为核心的开发板,许多老师在学习后都会面临这样一个疑问:我能不能使用自己最熟悉的开发板接入 Blynk?一方面,对于大多数的 Arduino 玩家来说,Arduino Uno 或 Nano 是他们最常用的开发板之一,如果 Arduino Uno 或 Nano 也能使用 Blynk 就更好了;另一方面,ESP8266 引脚太少,尤其是模拟输入引脚只有一个,通常是不够用的。如果能够根据自己的实际情况,选择合适的开发板连接 Blynk,那无疑是 Blynk 爱好者的福音。

最后,Blynk 物联网的接入需要使用互联网,在某些情况下,并没有 WiFi 网络可用。那有没有办法让开发板像手机一样使用 4G 网络呢?如果使用 4G 网络接入 Blynk,再搭配上太阳能电池,这不就是最理想的物联网项目了吗?

带上这些疑问让我们开始本期的教程。本期教程主要探讨接入 Blynk 物联网的几种方式,让大家能够更加愉快的使用 Blynk,轻松享受物联网编程带来的乐趣。

姿势1:通过电脑网络连接 Blynk

对于 Blynk 来说,最简单的接入方法,无疑是 USB 串口连接方式,该种方式只需要一台连接到互联网的电脑,通过 USB 串口将开发板连接到电脑,便能享受 Blynk 服务。

先来看一下演示视频。该示例中选择的是 Arduino Nano 开发板作为演示,连接方式为 USB 串口连接。

其主要代码如下:

#include <BlynkSimpleStream.h>

char auth[] = "eacsmx5z2RvmYI4bKSLFkN6JgtjotL4k";

void setup() {
   
  Serial.begin(115200);
  Blynk.begin(Serial, auth);
}

void loop() {
   
  Blynk.run();
}

首先使用 Blynk App 扫描下方二维码克隆示例项目:

打开克隆的示例项目,并复制该项目授权码,替换上述程序中的 auth,然后上传程序。同时我们打开 Arduino 软件的安装目录(文末会提供安装好 Blynk 库的 Arduino 软件下载链接),并找到 Blynk 库文件,查找 scripts 文件夹,并编辑其文件夹下的 blynk-ser.bat 文件,将文件中的端口号替换为自己的开发板端口号,修改波特率为 115200,还需要修改 Blynk 服务器的 IP 与端口号与 Blynk 服务器保持一致,如下图所示:

图中的是国内第三方 Mixly 团队提供的免费服务器,修改完成后点击保存。最后双击打开 blynk-ser.bat 这个文件,如果看到如下图所示输出字样,就代表连接 Blynk 服务器成功,最后使用上述克隆的 Blynk 项目,点击项目中的按钮,便可控制Arduino Nano 上的板载 D13 指示灯亮灭了。

USB 串口连接方式仅需要一台联网的电脑便能连接 Blynk,快速体验 Blynk 物联网,但是由于其硬件串口被占用,导致了硬件串口的打印功能失效,通常情况下我们使用硬件串口来调试程序,没有串口,程序的调试就变得困难,因此我们有了第二种连接方式,通过软串口来连接 Blynk 服务器,硬件串口保留原来的打印功能用于程序调试。

程序如下:

#define BLYNK_PRINT Serial
#include <SoftwareSerial.h>
#include <BlynkSimpleStream.h>

SoftwareSerial DebugSerial(A4, A5); //RX TX

char auth[] = "eacsmx5z2RvmYI4bKSLFkN6JgtjotL4k";

void setup() {
   
  Serial.begin(115200);
  DebugSerial.begin(9600);
  Blynk.begin(DebugSerial, auth);
}

void loop() {
   
  Blynk.run();
}

在上面的程序当中,我们定义了软串口 DebugSerial,定义其 RX 引脚为 A4,TX 引脚为 A5,使用软串口连接 Blynk 服务器。

在具体使用时,我们利用 USB 转 TTL 模块连接该软串口,并将 USB 端插到电脑获取该模块的串口号,重新修改 blynk-ser.bat 配置文件的串口号就能够连接 Blynk,同时不影响原来的硬件串口功能,值得注意的是软串口没有硬件串口稳定,因此我们设置了一个较低的波特率 9600 作为通讯速率。当然,你也可以使用硬串口连接 Blynk,改用软串口进行调试。

姿势2:使用 WiFi 模块连接 Blynk

在网上也经常看到 Uno + ESP8266 连接 Blynk 的方式,它使用 Uno 的硬串口连接 ESP8266,然后通过 ESP8266 连接 WiFi,从而达到连接 Blynk 的目的。当我们使用该连接方式时发现其并不稳定,常有掉线的情况发生,也碰到了很多来咨询的老师,而我的回答一般都是推荐他们不要使用这种方式。

至于掉线的原因主要有二:第一,使用的 ESP8266 为山寨劣质产品,此为硬件本身的缺陷导致;第二,是程序本身的问题,Uno 连接 ESP8266 需要引用 ESP8266_Lib.h 这个库文件来设置 ESP8266,该库会占用一定的程序存储空间和动态内存,再加上 Uno 本来就资源性能有限,如果编程经验不足,较大概率会写出大量的低效率代码,这些低效率代码不但本身的执行效率低下,而且还会引起其他程序的阻塞,例如 Blynk 需要保持主函数内的 Blynk.run() 函数运行,当有程序阻塞的情况发生时,这会导致掉线情况的发生,倘若再使用 OLED 这类占用程序存储空间以及动态内存较大的模块时,就会导致不稳定的现象。

下图分别是 Uno 连接 ESP8266 编译与直接使用 USB 连接方式编译的情况。从图中的编译结果可以看到,使用 USB 连接方式的程序存储空间与动态内存的使用率都比连接 ESP8266 方式的低。

若果我们能够将 Uno 联网的部分就如 USB 连接电脑方式联网一样独立开,使用一个第三方的模块负责联网,Uno 只负责程序交互,剩下的联网问题交由第三方模块,那这便能够极大的提高程序的可靠性与稳定性。

Blynk 物联网的本质是主控板与服务器的 TCP 连接,我们只需要使用其他 WiFi 模块通过 TCP 连接到 Blynk 服务器,便能使用 Blynk 物联网了。针对有 WiFi 网络的情况下,根据简单易用的原则,这里我使用汇承的 HC-25 WiFi 模块来连接 Blynk 服务器,HC-25 作为一个串口类 WiFi 模块,与 ESP8266 一样均支持AT指令设置,与 ESP8266 相比它还支持 Web 设置,通过手机或者电脑连接到其 AP 热点,输入其默认的 IP 地址便能够打开 Web 设置页面进行配置。HC-25 WiFi 模块如下所示:

我们将前面 USB 连接模式软串口的程序上传到 Arduino Nano 开发板,程序上传完成后使用 4 根杜邦线连接 HC-25 与 Nano,先连接电源管脚 3V3 与 GND,然后将 RXD 与 TXD 分别连接到 Nano 的 A5 和 A4 引脚,最后按下 HC-25 的多功能按键2秒,等待板载指示灯快速闪烁,然后按照下图顺序进行配置:

按上图的顺序进行配置并保存设置,重启 HC-25,重启后连接到网络的过程中指示灯慢闪烁,联网成功后指示灯常亮。注意:不能连接到中文的 WiFi 名或 5G 频段的网络,Socket 必须选择 Client,协议为 TCP,远程 IP 地址与端口号和 USB 连接模式的配置一致。为了方便后续配置,可以设置 HC-25 的 AP 名称与密码。AP 名称不支持中文,按下多功能按键 10 秒可恢复出厂设置。联网成功后演示如下:

姿势3:使用 4G 网络连接 Blynk

没有 WiFi 的时候,如果想要使用物联网就需要用到蜂窝网络,目前的主流网络制式是 4G 网络,因此,我们采取 4G 模块来连接 Blynk,这里我采用的是合宙 4G Cat.1 透传 DTU 模块全网通无线通信模组 Air724UG 核心板,该模块支持全网通且其与 HC-25 类似均提供了 Web 设置界面,能很方便的进行模块配置,Air724UG 核心板结构如下图所示:

下面我们介绍如何使用 Air724UG 核心板连接 Blynk 服务器。购买 Air724UG 核心板时,店家会附赠一张 300M 流量的移动物联网卡,该卡上电即激活,激活后的使用期限为一年,一年过后需联系客服购买流量。此处为了测试我们可以使用自己的手机卡测试,流量卡待到有需要的时候再使用。Air724UG 核心板有两种固件,一种是 AT 固件,AT 固件的所有配置均通过 AT 指令进行配置,相对比较繁琐。它还有一种 DTU 固件,DTU 固件需要联系店家分配 DTU 管理系统 http://dtu.openluat.com/login/ 的账号,具体情况可咨询客服。

此处我们使用的是 DTU 固件。先登录店家分配的账号进入管理网站,如下图所示:

登录系统后,就能看到自己的设备以及配置分组(这里我有两个设备且已经配置好分组),设备根据 IMEI 编号进行区分。第一步我们先新建分组,这里我们填写 Mixly 提供的 Blynk 服务器作为分组名:

新建分组后我们点击参数配置,填写如下配置信息:

最后保存设置,并在设备列表修改连接 Blynk 服务器的设备分组为刚才设置好的分组,设置完成重启 Air724UG 核心板,当 Air724UG 核心板板载指示灯闪烁较慢时代表已连接到 Blynk 服务器,此时便可以通过手机控制 Nano,演示效果如下:

小结

本期教程我们介绍了 Blynk 连接网络的几种方法,其中我们都是以软串口的形式连接,当我们程序书写并调试无误后,我们应当禁用串口调试,同时使用硬件串口连接 Blynk 服务器,并修改其通信波特率为 115200,这能带来更加快速和稳定的连接。

通过本教程的学习,你能够使用你最熟悉的开发板享受到 Blynk 物联网带来的便捷,通过 4G 连接也让你脱离了网络环境带来的困扰,让我们专注于创意的实现。文中介绍的模块资料将放教程附录,供大家学习查阅,以便更加深入的了解文中模块用途。以上两个联网模块我们仅使用了模块的 TCP透传功能,对于其他功能大家可以根据教程附录进行学习。到这里相信你对 Blynk 的网络连接有了一个全新的认识。

资源下载

点击链接阅读原文下载教程配套资源:https://mp.weixin.qq.com/s/9T1YThL233lIPd8sdzsoAA


转载:https://blog.csdn.net/ironpandaaa/article/details/117384693
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场