电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>电子资料>使用QuickFeather和SensiML识别家庭负荷

使用QuickFeather和SensiML识别家庭负荷

2022-11-14 | zip | 0.11 MB | 次下载 | 免费

资料介绍

描述

概述

在这个项目中,我使用 Quickfeather 开发板和 SensiML Toolkit 构建了一个机器学习应用程序的概念验证。目前正在进行许多关于智能电网技术的研究和分析,这些技术有望有效缓解气候变化。非侵入式负载监控 (NILM) 被视为实现创新智能电网服务的关键技术。在这个项目中,我的目标是家庭能源消耗分析,但它同样适用于工业能源消耗。NILM 技术将能源消耗分解为其组件,并提供有关当前设备的信息,并可用于执行诊断。为什么我们需要 NILM?因为我们不想给每个家用电器都加一个传感器来监控。NILM 技术具有良好的可扩展性并提供积极的解决方案,没有任何电力危害,并且作为单点控制,可以方便地升级应用程序并与其他在线服务连接以提供有用和及时的信息。它还提高了对用户能源使用模式的认识,以便我们可以节省能源来拯救地球。

硬件和软件设置

我们将使用 QuickFeather 开发板。

poYBAGNxJNaAPZCTAACimj2mZLU972.png
 

QuickFeather 开发板有许多板载传感器,如上图所示,但对于当前项目,我们需要一个可以为我们提供有关电力特性信息的传感器。为此,我们使用了 M5Stack Atom Socket Kit,它具有 HL8032 电能表集成电路,可通过 UART 连接以 4800 bps 的速度提供数据。

M5Stack Atom 插座套件可安全使用高达 10A 的电流它有一个连接到主电源的 3 针输入电源插座,它具有可用于从 HLW8032 IC 获取数据的针连接器它还有一个内置继电器,可以使用 Grove 连接器来控制打开/关闭主电源。有两个输出插座。(2 针/3 针)连接到电源板,最多可为 4 台设备供电对于这个项目,我只使用了两个电器;风扇(30W)和灯(90W)。对于数据收集,我们使用了 SensiML Data Capture Lab这是一个 Windows 应用程序,我们需要一台 Windows PC 来安装它。因为我有一台 Macbook,所以我使用 VirtualBox 来安装 Windows VM 和另一个用于 Linux 的 VM 来使用 QORK-SDK 构建固件。请按照此处的说明https://github.com/QuickLogic-Corp/qorc-sdk安装 QORK-SDK。此外,如果我们想使用 Wi-Fi 连接在 Data Capture Lab 中捕获数据,我们需要安装 SensiML Open Gateway应用程序。假设树莓派 4 安装了最新的树莓派操作系统

我们需要许多 UART 连接才能使用。我们需要一个 UART 连接来将 QuickFeather 连接到 M5Stack Atom Socket Kit。我们需要另一个 UART 来向 Raspberry Pi 4 发送数据。我们还需要一个 UART 来查看也连接到 Raspberry Pi 4 的调试消息。由于 QuickFeather 只有一个硬件 UART,我们需要使用 eFPGA 来启用另外两个硬件UART。对于这个项目,我们使用来自 QORK-SDK 存储库的两个示例应用程序的混合:

1. qf_apps/qf_fpgauart_app (加载FPGA UART网关,启动FPGA时钟

2. qf_apps/qf_ssi_ai_app (使用Simple Streaming Interface或识别的数据收集)

至少对我来说,将两个应用程序合并在一起是一项相当大的工作。最终应用程序可以在这里找到:https ://github.com/metanav/Challenge_Climate_Change

Atom Socket Kit 中有一个继电器和开关引脚连接,连接到 QuickFeather 以控制继电器。我们需要在 src/pincfg_table.c 中添加以下配置来初始化引脚。

{ // setup GPIO for External Button
  .ucPin = PAD_24,
  .ucFunc = PAD24_FUNC_SEL_GPIO_0,
  .ucMode = PAD_MODE_INPUT_EN,
  .ucPull = PAD_PULLUP,
  .ucDrv = PAD_DRV_STRENGTH_4MA,
  .ucSpeed = PAD_SLEW_RATE_SLOW,
  .ucSmtTrg = PAD_SMT_TRIG_DIS
},
{ // setup GPIO for Relay Switch
  .ucPin = PAD_23,
  .ucFunc = PAD23_FUNC_SEL_GPIO_7,
  .ucMode = PAD_MODE_OUTPUT_EN,
  .ucPull = PAD_NOPULL,
  .ucDrv = PAD_DRV_STRENGTH_4MA,
  .ucSpeed = PAD_SLEW_RATE_SLOW,
  .ucSmtTrg = PAD_SMT_TRIG_DIS
},

连接所有设备的原理图可以在原理图部分找到。我们可以在下面看到物理连接。

Atom Socket Kit (HLW8032) 使用低波特率 (4800) 甚至奇偶校验,因此我们需要相应地配置 FPGA UART。此外,另一个 FPGA UART 配置为 115200 波特率,无奇偶校验。main.c 中有一个“init_fpga_uart”函数调用来处理它。

void init_fpga_uart()
{
  UartBaudRateType brate;
  UartHandler uartObj;
  memset( (void *)&(uartObj), 0, sizeof(uartObj) );
  uartObj.baud = BAUD_4800;
  uartObj.wl = WORDLEN_8B;
  uartObj.parity = PARITY_EVEN;
  uartObj.stop = STOPBITS_1;
  uartObj.mode = TX_RX_MODE;
  uartObj.hwCtrl = HW_FLOW_CTRL_DISABLE;
  uartObj.intrMode = UART_INTR_ENABLE;
  uartHandlerUpdate(UART_ID_FPGA, &uartObj);
  // wait
  for (volatile int i = 0; i != 4000000; i++) ;
  uart_init(UART_ID_FPGA, NULL, NULL, &uartObj);
  uint32_t device_id = *(uint32_t *)FPGA_PERIPH_BASE ;
  if (device_id == 0xABCD0002)
  {
      uartObj.baud = BAUD_115200;
      uartObj.wl = WORDLEN_8B;
      uartObj.parity = PARITY_NONE;
      uartObj.stop = STOPBITS_1;
      uartObj.mode = TX_RX_MODE;
      uartObj.hwCtrl = HW_FLOW_CTRL_DISABLE;
      uartObj.intrMode = UART_INTR_ENABLE;
      uartHandlerUpdate(UART_ID_FPGA_UART1,&uartObj);
      uart_init(UART_ID_FPGA_UART1, NULL, NULL, &uartObj);
   }
}

我们将尝试对以下 4 个类别进行分类。

1. 风扇

2. 灯

3. 灯和风扇

4. 无负载

我们使用 4 个电气特性:

1.电压(伏)

2.电流(安培)

3. 真实功率(瓦特)

4. 视在功率(伏安)

在交流电路中,有功功率(也称为有功功率或有功功率)是设备做有用功所消耗的实际功率。无功功率(仅在负载中吸收和返回的功率)与真实功率的组合称为视在功率,它是电路电压和电流的乘积,与相角无关。对于给定的地理区域,电压几乎是恒定的,但传感器值有一些变化,我们稍后会看到 SensiML Toolkit 的 AutoML 是否会使用此功能。电气特性对于单个电器或电器组合具有非常具体的特征。正如我们在下图中所看到的,它描述了当灯关闭和风扇连续打开时的两个事件,延迟几秒钟。

pYYBAGNxJOiAJQqvAABYRRCL4cg996.png
 

闪存数据采集固件

假设 QORK-SDK 存储库已克隆到主目录中,并且所有构建工具链都已设置。

克隆存储库:

$ cd ~/qork-sdk
$ source envsetup.sh
$ cd qf_apps
$ git clone https://github.com/metanav/Challenge_Climate_Change.git
$ cd challenge_climate_change

确保在 inc/app_config.h 中将固件模式更改为数据收集。

#define S3AI_FIRMWARE_IS_COLLECTION  1		
#define S3AI_FIRMWARE_IS_RECOGNITION 0

我们需要 TinyFPGA-Programmer-Application 来刷新固件。请按照此处的说明进行安装:https ://github.com/QuickLogic-Corp/TinyFPGA-Programmer-Application

$ cd GCC_Project
$ make
$ qfprog --port /dev/ttyACM0 --m4app output/bin/Challenge_Climate_Change.bin --mode m4

设备插件

设备插件是描述数据捕获实验室 (DCL) 如何从设备收集数据的属性列表。Data Capture Lab 允许我们通过 SSF 文件导入设备插件。以下是用于导入 DCL 的 SSF 文件内容。

{
  "name": "QuickFeather Simple Stream [Custom]",
  "uuid": "a612edcc-58fe-a534-15d7-1255447308ee",
  "collection_methods": [
   {
      "name": "live",
      "display_name": "Live Stream Capture",
      "storage_path": null,
      "is_default": true
   }],
  "device_connections": [
  {
    "display_name": "Serial Port",
    "value": 1,
    "is_default": true,
    "serial_port_configuration": {
      "com_port": null,
      "baud": 115200,
      "stop_bits": 1,
      "parity": 0,
      "handshake": 0,
      "max_live_sample_rate": 3301
    }
  },
  {
    "display_name": "Wi-Fi",
    "value": 2,
    "is_default": true,
    "wifi_configuration": {
      "use_external_broker": false,
      "external_broker_address": "",
      "broker_port": 1885,
      "device_ip_address": "192.168.3.6",
      "device_port": 5555,
      "max_live_sample_rate": 1000000
    }
  }],
  "capture_sources": [
  {
    "max_throughput": 0,
    "name": "Energy_Meter",
    "part": "HWL8032",
    "sample_rates": [
        6,
        7,
        8
    ],
    "is_default": true,
    "sensors": [
    {
      "column_count": 4,
      "is_default": true,
      "column_suffixes": [
        "VA",
        "mA",
        "W",
        "V"
      ],
      "type": "Energy_Meter_IC",
      "parameters": [],
      "sensor_id": 1529804975,
      "can_live_stream": true
    }]
  }],
  "is_little_endian": true
}

建筑知识包

为设备生成的模型称为知识包。知识包包含用于推理的设备固件代码。

有标准步骤可以为边缘设备的每个机器学习项目构建模型。

1. 原始数据采集

2. 数据标注

3. 模型准备

4.模型训练

5. 设备上的推理

SensiML Toolkit 有助于自动化上述大部分步骤。

对于每个类,传感器数据被捕获 4 分钟。由于电力负荷是给定持续时间的连续事件,因此捕获的数据用单段注释。

数据收集演示

 

使用 SensiML Analytics Studio Demo 创建知识包

 

闪光识别固件

假设应用程序存储库已按照前面的步骤中所述进行了克隆。

$ cd qork-sdk/qf_apps/challenge_climate_change

确保在 inc/app_config.h 中将固件模式更改为识别。

#define S3AI_FIRMWARE_IS_COLLECTION  0		
#define S3AI_FIRMWARE_IS_RECOGNITION 1

构建并刷写固件:

$ cd GCC_Project
$ make
$ qfprog --port /dev/ttyACM0 --m4app output/bin/Challenge_Climate_Change.bin --mode m4

推理演示

演示中显示的推理速率似乎很慢,因为采样率为 6,我们使用 4 秒的样本(总共 24 个样本)进行推理。此外,应用程序中有一个消息队列缓冲来自 HLW8032 传感器的数据,因此知识包需要一些时间才能在当前事件更改时到达。

 

使用 SensiML Open Gateway 进行推理演示

 

结论

我们已经通过线路供电的 QuickFeather 演示了该应用程序。由于 QuickFeather 仅通过 UART 从传感器获取数据,因此可以使用电池供电。虽然我们只使用了 2 个电器使用了 4 个类别,但该应用程序是可扩展的,并且通过捕获更多数据并为许多其他电器训练模型,它可以轻松地对整个家用电器负载进行分类。另外,将来我想尝试分层模型来提高缩放版本的模型鲁棒性。QuickFeather 开发板和 SensiML Toolkit 具有为边缘设备构建和部署机器学习管道的巨大潜力。我希望在不久的将来看到适用于 MacOS 和 Linux 的数据采集实验室。


下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1使用单片机实现七人表决器的程序和仿真资料免费下载
  2. 2.96 MB   |  44次下载  |  免费
  3. 2联想E46L DAOLL6笔记本电脑图纸
  4. 1.10 MB   |  2次下载  |  5 积分
  5. 3MATLAB绘图合集
  6. 27.12 MB   |  2次下载  |  5 积分
  7. 4PR735,使用UCC28060的600W交错式PFC转换器
  8. 540.03KB   |  1次下载  |  免费
  9. 5UCC38C42 30W同步降压转换器参考设计
  10. 428.07KB   |  1次下载  |  免费
  11. 6DV2004S1/ES1/HS1快速充电开发系统
  12. 2.08MB   |  1次下载  |  免费
  13. 7模态分解合集matlab代码
  14. 3.03 MB   |  1次下载  |  2 积分
  15. 8美的电磁炉维修手册大全
  16. 1.56 MB   |  1次下载  |  5 积分

本月

  1. 1使用单片机实现七人表决器的程序和仿真资料免费下载
  2. 2.96 MB   |  44次下载  |  免费
  3. 2UC3842/3/4/5电源管理芯片中文手册
  4. 1.75 MB   |  15次下载  |  免费
  5. 3DMT0660数字万用表产品说明书
  6. 0.70 MB   |  13次下载  |  免费
  7. 4TPS54202H降压转换器评估模块用户指南
  8. 1.02MB   |  8次下载  |  免费
  9. 5STM32F101x8/STM32F101xB手册
  10. 1.69 MB   |  8次下载  |  1 积分
  11. 6HY12P65/HY12P66数字万用表芯片规格书
  12. 0.69 MB   |  6次下载  |  免费
  13. 7华瑞昇CR216芯片数字万用表规格书附原理图及校正流程方法
  14. 0.74 MB   |  6次下载  |  3 积分
  15. 8华瑞昇CR215芯片数字万用表原理图
  16. 0.21 MB   |  5次下载  |  3 积分

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935119次下载  |  10 积分
  3. 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
  4. 1.48MB  |  420061次下载  |  10 积分
  5. 3Altium DXP2002下载入口
  6. 未知  |  233084次下载  |  10 积分
  7. 4电路仿真软件multisim 10.0免费下载
  8. 340992  |  191367次下载  |  10 积分
  9. 5十天学会AVR单片机与C语言视频教程 下载
  10. 158M  |  183335次下载  |  10 积分
  11. 6labview8.5下载
  12. 未知  |  81581次下载  |  10 积分
  13. 7Keil工具MDK-Arm免费下载
  14. 0.02 MB  |  73807次下载  |  10 积分
  15. 8LabVIEW 8.6下载
  16. 未知  |  65987次下载  |  10 积分