Skip to main content

Microchip IGaT让家庭自动化如虎添翼

发布于2023-04-12

上市时间是产品开发中的一个重要考量因素。如果产品质量过硬并且实用性强,快速上市就有巨大的先发优势。对于看重快速上市的项目来说,快速原型设计是关键支撑因素,而快速原型设计的一个基本经验法则就是尽可能避免从头开始。Microchip的集成图形和触摸 (IGaT) 开发套件(图1)搭载一个ARM Cortex M4 SAM E51微控制器,非常适合用于开发需要触摸屏的产品。

图1:Microchip的IGaT Curiosity开发板让用户只需简单的拖放操作即可快速完成触摸屏应用的原型设计(图源:GSG)

家庭自动化就是这样的应用,其触摸界面可以很方便地操作。如今,大多数人都喜欢触摸界面,几乎所有人都能接受这种用户界面。而且,它们还可以根据周边环境进行动态更改(比如,具有昼/夜调色板)。本项目将展示如何使用Microchip IGaT硬件及其MPLAB X IDE和Harmony3开发工具快速创建图形用户界面。另外,我们还将展示如何让开发板与继电器和无源红外传感器交互,以创建概念验证照明控制系统。

最后,我们将探索机器学习技术如何通过智能模式提升家庭自动化设备的智能水平,让其无需人类直接干预就能开/关灯。

项目材料与资源

该项目围绕Microchip的IGaT Curiosity开发板进行。此开发板具有下列关键特性:

物料清单 (BOM)

您可以点击贸泽项目共享链接来获取BOM表并查看其中的物料在贸泽的当前价格。截至本文撰写之时,该BOM表需要花费约175美元(不含适用的税费和运费)。表1列出了该BOM表中的物料。

表1:IGAT家庭自动化项目BOM表

数量

贸泽编号

说明

1

579-EV14C17A

触摸传感器开发工具 - SAM E51 IGaT Curiosity开发板

1

619-28032

板装式运动和位置传感器 - 广角PIR传感器

 1

992-QUICK-RELAY2

继电器控制板

1

485-3174

实芯连接线

项目资源

本项目所有源文件均可从GitHub存储库获取。该存储库包含两个主文件夹:

文档

Documentation文件夹包含原理图的图形文件和其他重要参考资料。

软件

Software文件夹包含源代码。有关这些文件的更多信息,将在下面的“软件”部分进行介绍。两个主要目录如下:

  • pir_motion_detection-v1:包含机器学习算法的代码,用于检测PIR传感器视野内是否有人。
  • legato_showcase_e51_igat_smarthome:包含支持IGaT Curiosity开发板的显示屏和触摸界面逻辑。

工具

本项目假定您可以使用以下工具:

  • 接入高速互联网的计算机
  • 台灯
  • 数字万用表 (DMM)
  • 导线剥线器
  • 小型螺丝刀套件

构建项目

本节包含启动和运行本项目的必要步骤, 有以下几个小节:

  1. 硬件设置
  2. 软件开发工具链设置
  3. 软件开发
  4. 总装和安装

除了在Microchip生态系统中开发硬件和软件工具外,该项目还将利用Edge Impulse工具套件。使用此套件可以开发机器学习算法来利用PIR传感器的数据为设备提供“智能”模式,自动控制灯光。

硬件设置

IGaT Curiosity开发板包含八个方便使用的GPIO引脚,允许开发人员连接外部设备进行原型设计。这八个引脚分为两组插头。插头J203包含四个分配给PORTA的GPIO引脚。插头J205包含四个分配给PORTB的GPIO引脚。此外,每个插头还有两个接地引脚:Vbus和Vcc_target引脚。为实现我们的目标,引脚PB08(也显示为ADC0_AIN[12])将用于PIR传感器输入(图2)。PA16将被保留用于台灯的继电器控制。

图2:无源红外 (PIR) 传感器可用于检测是否有人(图源:贸泽)

我们将使用以下步骤来连接项目的各个组件(图3)

图3:IGaT Curiosity 开发板的引脚布局(资料来源:Microchip)

  1. 将Curiosity板的GND引脚连接到继电器控制板的GND引脚。
  2. 将Curiosity板的PA16引脚连接到继电器控制板的CONTROL INPUT引脚。
  3. 将Curiosity板的GND引脚连接到继电器控制板的GND引脚。
  4. 将Curiosity板的PB08引脚连接到PIR传感器的SIGNAL OUTPUT引脚。
  5. 将Curiosity板的VBUS引脚连接到PIR传感器的VCC引脚。

软件开发工具链设置

本项目的固件开发工作将采用可以从Microchip免费下载的MPLAB X IDE(图4)。

图4:Microchip的MPLAB X IDE是用于为IGaT开发板开发固件的一站式平台(图源:GSG)

为了缩小下载包的大小,Microchip将各种编译器与IDE分开封装。请确保下载MPLAB XC32编译器,可从此处免费下载。下载并安装该软件后,还需要进行一些额外操作才能开始编辑代码。在MPLAB X IDE中,我们还需要启用一些插件。为此,请执行以下步骤:

  1. 点击Tools > Plugins > Available Plugins。
  2. 找到MPLAB Harmony 3 Launcher并选中复选框。
  3. 找到MPLAB Harmony Configurator并选中复选框。
  4. 点击Install。
  5. 在向导中一直点击到Finish。
  6. 重启MPLAB X IDE。

此外,Edge Impulse平台还要求在计算机上安装以下程序:

如果不想使用数据转发器,可以将PIR传感器的数据写入.CSV文件,并通过Web浏览器上传原始训练和测试数据。

现在就可以启动Harmony3配置程序来生成用户界面 (UI) 以及将用于创建应用其余部分的软件存根了。

为此,请点击Tools > Embedded > MPLAB Harmony 3 Configurator。这将启动一个新窗口,以“项目图”这种图形格式显示构成项目的各种软件组件。从这里点击Tools > Legato Graphics Composer。这将启动WYSIWYG工具,通过点击并拖动某些GUI元素(如按钮、单选框、复选框、文本、图形等)即可生成UI(图5)。

本项目的GUI也包括在内,可以根据需要重新调整。Microchip在这里有更多关于如何使用该工具的信息。

图5:Legato Graphics Composer不仅可以帮助生成触摸式GUI,还可以帮助生成应用程序代码,以提供与GPIO引脚交互等功能。(图源:GSG)

软件开发

本项目的代码库采用C语言编写。但是,在进行本项目特定的软件开发之前,需要先用Edge Impulse的服务开发一个专门针对我们的PIR传感器和操作环境的机器学习算法。对于本项目,我们认为PIR传感器在任何时候都处于以下工作状态之一:

  • 检测到人:这是一个状态指示器,当有人经过PIR传感器足够长的时间就会触发,因此,如果设备设置为智能模式,台灯将自动触发。
  • 未检测到人:这是一个状态指示器,当PIR传感器未检测到运动时,机器学习 (ML) 算法会发送此状态。

EI数据转发器允许我们以十秒为增量将数据从微控制器发送到训练服务器。因此,我们将创建几十个样本集,对于每个样本,在PIR传感器的检测角度内站立、行走或停留10秒。然后,我们将再记录几十个不在PIR传感器前面的样本。

建议夜间和白天的传感器数据都进行记录,以计算环境光及其对传感器的影响。这将可以减少误报。与所有神经网络 (NN) 训练一样,数据越多越好。

我们来看一下PIR设置为两种检测状态时的数据流(图6)。

图6:左图:有人在房间内时的PIR传感器数据。右图:没人时的数据(图源:GSG)

我们的数据集中有两个变量,时间在x轴上,PIR传感器的信号输出电压在y轴上。每个数据集包含一个10秒的时间窗口。PIR传感器在这个十秒的时间窗口内每秒被轮询一次。因为仅当有人在传感器视线范围内时,传感器的输出信号才应该为高,所以每个时间窗口的5V尖峰越多,就越容易触发ML算法的PERSON DETECTED输出。否则,将产生PERSON NOT DETECTED输出。

在添加更多数据集并重新训练模型后,我们能够将总体准确率从45%提高到80%(图7)。该模型实现了100%的检测率,但仍存在一些误报问题,可能是由于环境光干扰了传感器。调整PIR传感器的位置并添加更多的数据集可能会减少误报。

图7:Edge Impulse神经网络的测试结果表明检测准确率为100%,空房间的检测准确率为80%。这意味着误报的可能性很小(图源:GSG)

关键文件

本项目的关键文件包括:

  • le_gen_screen_SmartHome.c:包含生成UI的代码,以及事件发生(如屏幕打开、按钮按下等)时触发的回调代码。
  • trained_model_compiled.h/.c:包含Edge Impulse生成的已翻译PIR人员检测模型。
  • ei_run_classifier.c:包含运行新数据的分类器代码,这些新数据由PIR传感器通过Edge Impulse生成的ML算法产生。

关键变量和常数

您可能需要注意一些变量,另外可能还需要根据您的设计选择来对它们进行调整。

  • enum currentSystemMode {on, off, smart}:建立设备的三种工作模式:ON(亮起)、OFF(熄灭)、SMART(让PIR控制灯光状态)。如果您想添加其他模式,也可以在这里添加。

主要函数

le_gen_screen_SmartHome.c文件包含本项目的初始化代码、主循环和支持函数。支持函数包括:

  • SmartHome_ButtonWidgetLightOn->fn->setPressedEventCallback(SmartHome_ButtonWidgetLightOn,
  •             event_SmartHome_ButtonWidgetLightOn_OnPressed):
  •                 PORT_PinWrite(PA16, true);
  • SmartHome_ButtonWidgetLightOff->fn->setPressedEventCallback(SmartHome_ButtonWidgetLightOff,
  •             event_SmartHome_ButtonWidgetLightff_OnPressed):
  •                 PORT_PinWrite(PA16, false);
  • SmartHome_ButtonWidgetSmart->fn->setPressedEventCallback(SmartHome_ButtonWidgetSmart,
  •             event_SmartHome_ButtonWidgetSmart_OnPressed):
  •                 currentSystemMode = smart;

总装

注意:使用交流电 (AC) 时要格外小心。通电状态下不能修改项目。要修改项目,需要先对设备断电,进行必要的调整,然后在重新插电之前还要检查线路和连接是否牢固。

要完成总装以测试项目,需要执行以下操作:

  1. 将台灯插入继电器控制板交流插座。
  2. 将继电器控制板插入附近的墙上交流插座。
  3. 安装PIR传感器时应尽量避免直射阳光。
  4. 通过USB接口将Curiosity板插入直流电源。
  5. 将直流电源插入附近的交流插座。

实际运行

图8:运行中的IGaT Smart Home显示屏(图源:GSG)

项目完成总装和固件安装后,就可以开始验证其能否正常工作了。

按下LIGHT ON按钮将使继电器通电(常开),从而打开台灯。

按下LIGHT OFF按钮将使继电器断电,导致台灯熄灭。

按下SMART按钮将把台灯的控制权交给自动化算法。它会让台灯亮十分钟,如果没有检测到人,就会熄灭。真是节能神器! 当设备处于智能模式时,按下任何按钮都会使其退出智能模式。

作者简介

Michael Parks产品工程师(P.E.)是贸泽电子的特约作者,同时也是Green Shoe Garage的所有者。Green Shoe Garage是一家提供定制电子设计的工作室和技术咨询机构,位于马里兰州南部。Michael Parks创办了《S.T.E.A.M. Power Podcast》播客来提升公众对科技的认知。他拥有马里兰州专业工程师资质,并拥有约翰·霍普金斯大学的系统工程硕士学位。