资料介绍
描述
概述
在这个项目中,我使用 Quickfeather 开发板和 SensiML Toolkit 构建了一个机器学习应用程序的概念验证。目前正在进行许多关于智能电网技术的研究和分析,这些技术有望有效缓解气候变化。非侵入式负载监控 (NILM) 被视为实现创新智能电网服务的关键技术。在这个项目中,我的目标是家庭能源消耗分析,但它同样适用于工业能源消耗。NILM 技术将能源消耗分解为其组件,并提供有关当前设备的信息,并可用于执行诊断。为什么我们需要 NILM?因为我们不想给每个家用电器都加一个传感器来监控。NILM 技术具有良好的可扩展性并提供积极的解决方案,没有任何电力危害,并且作为单点控制,可以方便地升级应用程序并与其他在线服务连接以提供有用和及时的信息。它还提高了对用户能源使用模式的认识,以便我们可以节省能源来拯救地球。
硬件和软件设置
我们将使用 QuickFeather 开发板。
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 是否会使用此功能。电气特性对于单个电器或电器组合具有非常具体的特征。正如我们在下图中所看到的,它描述了当灯关闭和风扇连续打开时的两个事件,延迟几秒钟。
闪存数据采集固件
假设 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 的数据采集实验室。
- 在SensiML的帮助下为人类和地球保护泥炭地
- 使用SensiML AI框架学习水培农业
- 使用QuickFeather开发工具包和SensiML
- 硕士学位论文《家庭智能网关的研究与实现》 24次下载
- 民航驾驶舱人机交互脑力负荷预测模型设计 6次下载
- 基于稀疏表示的电力负荷缺失数据补全方法 15次下载
- 可动态判别电网异常负荷的CNN阀值模型 12次下载
- WiFi连接智能家庭信息图免费下载
- 一种居民配电网负荷谐波电流发射特性评估 17次下载
- 互联电网负荷频率控制器设计 2次下载
- 基于PR控制器的孤岛微网不平衡负荷下控制策略 2次下载
- 电力负荷预测研究 0次下载
- 基于模板滤波的非侵入负荷辨识系统 0次下载
- 非侵入式家居负荷分解方法 19次下载
- 家庭用电负荷计算方式 194次下载
- 用电设备组的计算负荷 1369次阅读
- 汽车电子基本电气负荷讲解 571次阅读
- 基于CNN-LSTM网络的电力负荷预测 3252次阅读
- 电力负荷的关系分类 2096次阅读
- 高压负荷开关的要求_高压负荷开关的用途 1383次阅读
- 过负荷的火灾原因_过负荷的防火措施 4097次阅读
- 高压负荷开关与断路器的区别 1.5w次阅读
- 高压负荷开关工作原理_高压负荷开关安装 9426次阅读
- 高压负荷开关选型_高压负荷开关的主要作用是什么 6917次阅读
- 户内高压负荷开关_户内高压负荷开关型号含义 9810次阅读
- 高压真空负荷开关安装_真空高压负荷开关型号及含义_高压真空负荷开关选型 1w次阅读
- 施耐德负荷开关_施耐德负荷开关型号_施耐德开启式负荷开关使用和维护 1.1w次阅读
- 什么是高压负荷开关_高压负荷开关作用_高压断路器与负荷开关的区别 4347次阅读
- 油浸式高压负荷开关_二工位油浸式负荷开关_四工位油浸式负荷开关 1.3w次阅读
- 智能家庭应用之语音识别系统 4156次阅读
下载排行
本周
- 1使用单片机实现七人表决器的程序和仿真资料免费下载
- 2.96 MB | 44次下载 | 免费
- 2联想E46L DAOLL6笔记本电脑图纸
- 1.10 MB | 2次下载 | 5 积分
- 3MATLAB绘图合集
- 27.12 MB | 2次下载 | 5 积分
- 4PR735,使用UCC28060的600W交错式PFC转换器
- 540.03KB | 1次下载 | 免费
- 5UCC38C42 30W同步降压转换器参考设计
- 428.07KB | 1次下载 | 免费
- 6DV2004S1/ES1/HS1快速充电开发系统
- 2.08MB | 1次下载 | 免费
- 7模态分解合集matlab代码
- 3.03 MB | 1次下载 | 2 积分
- 8美的电磁炉维修手册大全
- 1.56 MB | 1次下载 | 5 积分
本月
- 1使用单片机实现七人表决器的程序和仿真资料免费下载
- 2.96 MB | 44次下载 | 免费
- 2UC3842/3/4/5电源管理芯片中文手册
- 1.75 MB | 15次下载 | 免费
- 3DMT0660数字万用表产品说明书
- 0.70 MB | 13次下载 | 免费
- 4TPS54202H降压转换器评估模块用户指南
- 1.02MB | 8次下载 | 免费
- 5STM32F101x8/STM32F101xB手册
- 1.69 MB | 8次下载 | 1 积分
- 6HY12P65/HY12P66数字万用表芯片规格书
- 0.69 MB | 6次下载 | 免费
- 7华瑞昇CR216芯片数字万用表规格书附原理图及校正流程方法
- 0.74 MB | 6次下载 | 3 积分
- 8华瑞昇CR215芯片数字万用表原理图
- 0.21 MB | 5次下载 | 3 积分
总榜
- 1matlab软件下载入口
- 未知 | 935119次下载 | 10 积分
- 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
- 1.48MB | 420061次下载 | 10 积分
- 3Altium DXP2002下载入口
- 未知 | 233084次下载 | 10 积分
- 4电路仿真软件multisim 10.0免费下载
- 340992 | 191367次下载 | 10 积分
- 5十天学会AVR单片机与C语言视频教程 下载
- 158M | 183335次下载 | 10 积分
- 6labview8.5下载
- 未知 | 81581次下载 | 10 积分
- 7Keil工具MDK-Arm免费下载
- 0.02 MB | 73807次下载 | 10 积分
- 8LabVIEW 8.6下载
- 未知 | 65987次下载 | 10 积分
评论
查看更多