Skip to main content

快速开始使用 Blynk

在本教程中,我们将提供一个快速指南,介绍如何设置 Grove Vision AI 模块与 Wio Terminal,通过 WiFi 上传检测数据(如人数统计和检测置信值),然后利用 Blynk 移动应用的仪表板可视化 Grove Vision AI 模块的检测输出。

所需材料

Wio TerminalGrove Vision AI 模块

初步准备

连接

在本教程中,我们需要根据下图将 Vision AI 模块连接到左侧。

软件准备

步骤 1. 安装 Arduino 软件。

步骤 2. 启动 Arduino 应用程序。

步骤 3. 将 Wio Terminal 添加到 Arduino IDE。

打开 Arduino IDE,点击 File > Preferences,并将以下 URL 复制到“Additional Boards Manager URLs”中:

https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json

点击 Tools > Board > Board Manager,然后在 Boards Manager 中搜索 Wio Terminal

步骤 4. 选择你的开发板和端口

你需要在 Tools > Board 菜单中选择与你的 Arduino 对应的条目,选择 Wio Terminal

Tools -> Port 菜单中选择 Wio Terminal 开发板的串口设备。这通常是 COM3 或更高(COM1 和 COM2 通常保留给硬件串口)。要确认,可以断开 Wio Terminal 开发板并重新打开菜单;消失的条目应该是 Arduino 开发板。重新连接开发板并选择该串口。

tip

对于 Mac 用户,串口可能类似于 /dev/cu.usbmodem141401

如果你无法上传代码,大多数情况下是因为 Arduino IDE 无法将 Wio Terminal 切换到引导加载模式(可能是因为 MCU 停止运行或你的程序正在处理 USB)。解决方法是手动将 Wio Terminal 切换到引导加载模式。

步骤指南

第 1 步. 创建账户

请访问 Blynk 官方网站,并创建一个账户。您需要提供您的电子邮件地址进行注册,请检查您的邮箱以验证并确认完成账户注册。

第 2 步. 添加新模板

登录 Blynk 控制台后,请取消并跳过启动向导弹窗,然后点击 New Template 按钮以创建一个新模板。

按照设置向导,在弹窗中为您的模板命名,并选择 Seeed Wio Terminal 作为 HARDWARE,选择 WiFi 作为 CONNECTION TYPE

点击完成后,您应该会看到模板页面。请点击右上角的保存按钮以确认新模板的所有信息。

第 3 步. 添加新设备

添加仪表板模板后,点击 My devices 标签页,然后点击 New Device 按钮。

然后请选择 From template

请从 TEMPLATE 下拉列表中选择在 第 2 步 中创建的模板名称,在本例中为 wio terminal vision ai,并在 DEVICE NAME 对话框中输入设备名称。

完成后,新设备信息将显示在弹出面板中,您应该会看到 Template ID、Device Name 和 Auth Token,请点击 Copy to clipboard 以复制并保存这些头部信息以供后续使用。

第 4 步. 添加必要的 Arduino 库

我们需要添加必要的 Arduino 库,以便使用 Grove Vision AI 模块与 Wio Terminal。请点击下方图标并下载 Grove Vision AI Arduino 库。

成功下载库的 zip 文件后,请将文件解压到以下路径:

  • 在 Windows 上:C:\Users\{User Name}\Documents\Arduino\libraries
  • 在 Mac 上:/Users/{User Name}/Documents/Arduino/libraries

第 5 步. 准备固件代码

我们可以从 这里 生成用于连接 Wio Terminal 到 Blynk 服务器的基础模板代码。

我们还为本快速入门指南准备了完整的示例代码,如下所示:

// Template ID, Device Name and Auth Token are provided by the Blynk.Cloud
// See the Device Info tab, or Template settings
#define BLYNK_TEMPLATE_ID ""
#define BLYNK_DEVICE_NAME ""
#define BLYNK_AUTH_TOKEN ""

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "";
char pass[] = "";

// Comment this out to disable prints and save space
#define BLYNK_PRINT Serial

#include <rpcWiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleWioTerminal.h>
#include "Seeed_Arduino_GroveAI.h"
#include <Wire.h>

GroveAI ai(Wire);
uint8_t state = 0;

char auth[] = BLYNK_AUTH_TOKEN;

BlynkTimer timer;

// This function sends Arduino's up time every second to Virtual Pin (5).
// In the app, Widget's reading frequency should be set to PUSH. This means
// that you define how often to send data to Blynk App.
void myTimerEvent()
{
// You can send any value at any time.
// Please don't send more that 10 values per second.
if (state == 1)
{
if (ai.invoke()) // begin invoke
{
while (1) // wait for invoking finished
{
CMD_STATE_T ret = ai.state();
if (ret == CMD_STATE_IDLE)
{
break;
}
delay(20);
}
uint8_t len = ai.get_result_len(); // receive how many people detect
if(len)
{
Serial.print("Number of people: ");
Serial.println(len);
object_detection_t data; //get data

for (int i = 0; i < len; i++)
{
Serial.println("result:detected");
Serial.print("Detecting and calculating: ");
Serial.println(i+1);
ai.get_result(i, (uint8_t*)&data, sizeof(object_detection_t)); //get result
Serial.print("confidence:");
Serial.print(data.confidence);
Serial.println();
Blynk.virtualWrite(V5, data.confidence);
Blynk.virtualWrite(V4, len);
}
}
else
{
Serial.println("No identification");
Blynk.virtualWrite(V4, 0);
Blynk.virtualWrite(V5, 0);
}
}
else
{
delay(1000);
Serial.println("Invoke Failed.");
}
}
else
{
state == 0;
}
}

void setup()
{
// Debug console
Serial.begin(115200);

Wire.begin();

Serial.println("begin");
if (ai.begin(ALGO_OBJECT_DETECTION, MODEL_EXT_INDEX_1)) // Object detection and pre-trained model 1
{
Serial.print("Version: ");
Serial.println(ai.version());
Serial.print("ID: ");
Serial.println( ai.id());
Serial.print("Algo: ");
Serial.println( ai.algo());
Serial.print("Model: ");
Serial.println(ai.model());
Serial.print("Confidence: ");
Serial.println(ai.confidence());
state = 1;
}
else
{
Serial.println("Algo begin failed.");
}

Blynk.begin(auth, ssid, pass);
// You can also specify server:
//Blynk.begin(auth, ssid, pass, "blynk.cloud", 80);
//Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,100), 8080);

// Setup a function to be called every second
timer.setInterval(1000L, myTimerEvent);
}

void loop()
{
Blynk.run();
timer.run(); // Initiates BlynkTimer
}

你需要在上面的示例代码开头填写必要的头文件,以便将 Wio Terminal 连接到 WiFi 并将数据发送到 Blynk 服务器。

#define BLYNK_TEMPLATE_ID ""
#define BLYNK_DEVICE_NAME ""
#define BLYNK_AUTH_TOKEN ""

char ssid[] = "";
char pass[] = "";

前面三行定义是 Blynk 设备信息,这些信息会在步骤 3的过程中自动生成,只需复制并替换这三行即可。

接下来是 ssid[]pass[] 变量,请填写 Wio Terminal 即将连接的 WiFi 的 ssid 和密码。例如:

#define BLYNK_TEMPLATE_ID           "TMPLx3C44oO0"
#define BLYNK_DEVICE_NAME "Quickstart Device"
#define BLYNK_AUTH_TOKEN "an8FkwZgCjShpV5NGCW-Lxl1qohRigeZ"

char ssid[] = "SeeedStudio";
char pass[] = "yyds2022";
note

我们建议使用个人热点来测试本快速入门指南,因为相比于复杂的公共网络,个人热点更加稳定。

步骤 6. 设置 Blynk Web 仪表板

请返回 Blynk 控制台,根据上面的固件代码设置一些仪表板小部件。首先,我们需要选择之前创建的模板,然后点击右上角的 Edit 按钮。

然后点击 Datastreams 标签来设置数据流,接着点击 New Datastream,选择 Virtual Pin 来配置数据输入源。

步骤 5中,我们使用了虚拟引脚 4 和虚拟引脚 5 来发送 Grove Vision AI 模块的检测数据,例如人数统计和推理置信度百分比数据。

Blynk.virtualWrite(V5, data.confidence); // 置信度
Blynk.virtualWrite(V4, len); // 人数统计

因此,我们需要在 Blynk 控制台的 Datastreams 标签中分别设置两个虚拟引脚 V5 和 V4。

Web Dashboard 设置中,我们可以定义信息布局。在本例中,我们添加了 3 个最常见的可视化小部件,例如 LabelGaugeChart

你可以通过点击每个小部件顶部的齿轮按钮来设置显示数据,鼠标悬停在小部件上时会显示该按钮。

在设置完数据信息布局后,点击右上角的 Save And Apply 按钮。

步骤 7. 上传代码并观察数据

最后,请使用 Grove 电缆将 Grove Vision AI 模块连接到 Wio Terminal 左侧的 Grove 接口,然后在完成步骤 7 后上传更新的固件,接着返回 Blynk 设备控制台。 当 Grove Vision AI 模块检测到有效数据时,你应该会看到人数统计值和检测置信度值的更新。

使用 Blynk 移动应用观察实时数据

Blynk 不仅支持通过 Web 控制台仪表板显示实时传感器数据,还支持在其移动应用上查看传感器数据。然而,您需要完成上述步骤才能在移动应用中查看数据。

第 1 步:下载 Blynk 应用

  • 如果您使用的是 IOS 设备,请下载 Blynk IoT

  • 如果您使用的是 Android 设备,请下载 Blynk IoT NEW

第 2 步:使用 Blynk 应用登录您的账户

下载并安装 Blynk 应用后,请打开应用并使用您为 Web 控制台创建的相同账户登录,这样您通过上述步骤创建的模板将会同步到移动应用中。

第 3 步:在 Blynk 移动应用上配置数据仪表板

登录应用后,请向右滑动并点击 My Profile 进入个人资料设置视图,然后确保启用了 Developer Mode(开发者模式)。

然后返回主页面,点击右上角的扳手图标进入模板设置视图。

在这里,您可以看到之前创建的模板以及 Blynk 应用中的示例模板。

现在请点击 Seeed Wio Terminal 模板进入设置界面以配置移动小部件显示。进入模板设置视图后,请点击右上角的 + 按钮,您将看到用于添加小部件的小部件窗口。

此处的设置步骤应与 Web 控制台的设置类似,我们选择一个 Value Display(值显示)小部件和一个 Labeled Value(标记值)小部件,然后重命名它们并相应地选择正确的数据流(虚拟引脚 V4 和 V5)。这样,Wio Terminal 从 Grove Vision AI 模块收集的检测数据应能够持续同步并更新到 Web 控制台和移动应用。

第 4 步:上传新代码并观察结果

由于我们已经将新代码上传到 Wio Terminal,当 Wio Terminal 连接到 WIFI 后,连接的 Wio Terminal 设备应显示在 Blynk 移动应用中,如下所示。

您只需点击 Blynk 移动应用中显示的设备,即可观察传感器数据。

声明

  • LoRa® 标志是 Semtech Corporation 或其子公司的商标。
  • LoRaWAN® 是根据 LoRa Alliance® 的许可使用的标志。
Loading Comments...