×

智能家居安全系统开源分享

消耗积分:0 | 格式:zip | 大小:0.07 MB | 2022-10-28

杨福林

分享资料个

描述

描述

我们认为,没有某种形式的安全系统,任何智能家居都是不完整的。这只是我们安全系统的原型,在设计最终确定之前,硬件和软件将进行许多修改。无论如何,这里是我们一直在努力的一瞥。

过程

第 1 步:构建硬件

首先收集上面零件列表中列出的所有硬件。我们将从键盘和 LCD 电路开始,然后转到触发器(运动传感器、距离传感器和蜂鸣器)电路。

键盘和 LCD 的电路非常简单。您可以使用面包板来构建此电路,但我们发现将所有组件直接连接到 Builder Base 更简单。

使用 7 MM 跳线并从左到右将键盘的引脚连接到构建器底座上的端口。因此,键盘最左边的引脚连接到 GP0,最左边的第二个引脚连接到 GP1,依此类推。

现在,将 LCD 上的 Vcc 和 GND 端子连接到 Builder Base 上的 5V 和 GND 端口,然后将 LCD 上的 SDA 和 SCL 引脚连接到 Builder Base 上的 SDA 和 SCL 端口。

**在 I2C LCD 的背面应该有 6 个引脚。其中4个是5v、GND、SDA和SCL引脚,另外两个用于亮度。这两个引脚应该连接在一起,但如果不是,则需要连接它们。否则,您的 LCD 将不会亮起。**

使用下面列出的原理图和面包板视图作为参考。

 

 
 
 
pYYBAGNY07CALVbOAAA3GvIIzsk900.png
 
1 / 2
 

现在让我们组装触发器电路。我们建议为该电路使用面包板,因为它可以更轻松地为所有组件供电。

拿起你的面包板,将 GND 和 Vcc 导轨分别连接到 Builder Base 上的 GND 和 5V 端口。

 
 
 
poYBAGNY07WAXzxgAAAqoN9RacE144.png
 
1 / 2
 

现在,让我们连接运动传感器。将 VCC 和 GND 引脚连接到面包板上的 5V 和 GND 导轨。将数据引脚连接到 Builder Base,如下所示:

pYYBAGNY07eAYpVNAAATfu7OzsY241.png
 

现在,我们将连接蜂鸣器。将蜂鸣器上的 GND 引脚连接到面包板上的 GND 导轨,并将正极引脚连接到 Builder Base,如下所示:

poYBAGNY07mAOCr1AAASE06SDKo838.png
 

最后,我们将连接距离传感器。再次,将距离传感器上的 Vcc 和 GND 引脚连接到面包板上的 5v 和 GND 导轨。现在将 Echo 和 Trigger 引脚连接到构建器底座,如下所示:

poYBAGNY07uAI2YvAAAaDricqow198.png
 

恭喜!安全系统所需的所有电路现已完成!

第 2 步:构建固件

由于我们在这个项目中使用了两个 Builder Base,我们需要构建两个单独的固件文件。

首先导航到固件生成器并创建一个名为“安全键盘”的新固件。

pYYBAGNY08CACuVsAAAczfpjo4k304.png
 

单击“+添加硬件”按钮并添加 LCD 和 4x3 键盘。

 
 
 
poYBAGNY08OAfXa8AAAZ1uQie_M600.png
 
1 / 2
 

 

poYBAGNY08aAHpUHAAA2QvZwlv8485.png
 

现在,单击 LCD 设备并从驱动程序下拉菜单中选择“Generic LCD2004 Display (I2C)”驱动程序。

pYYBAGNY08iAXiQ8AABBs9oRAZo154.png
 

配置驱动程序如下:

I2C 地址:0x27

布局:2x16

pYYBAGNY08qAGMweAABENPIPMKM187.png
 

现在,我们将配置 4x3 键盘。您会注意到 4x3 键盘有 12 种服务需要配置。您可以通过单击左右箭头来循环浏览这些内容。

 
 
 
poYBAGNY08-AbFHLAAAlW856Ans203.png
 
1 / 2
 

对于每项服务,您必须选择驱动程序以及服务的行/列引脚。每个服务对应于键盘上的一个按钮。按照下表配置所有 12 项服务。

poYBAGNY09KAAobtAACKZ8-QeQc973.png
 

配置完所有服务后,保存固件!

现在,创建另一个名为“Security Triggers”的固件文件。

 
 
 
poYBAGNY09WAGDHKAAAWHEEnbL0893.png
 
1 / 2
 

现在,单击“+ 添加硬件”按钮并将运动传感器、距离传感器和模拟输出设备添加到您的文件中。像我们一样命名它们。

 
 
 
pYYBAGNY09eASgNCAAAM--0qWTA382.png
 
1 / 3
 

对于运动传感器,从驱动程序下拉菜单中选择 HC-SR501 驱动程序。

poYBAGNY09yAWX0sAAB9tUf8pgI814.png
 

配置驱动程序如下:

引脚:GP0

poYBAGNY096AXrNXAAA4sglKvzY382.png
 

现在我们将配置蜂鸣器。从驱动程序下拉菜单中选择“GPIO”驱动程序。

poYBAGNY0-GARXFDAAA7g2jpxSs744.png
 

现在我们将配置驱动程序如下:

引脚:GP1

pYYBAGNY0-OAIabbAAA53jUPPyM775.png
 

现在,我们将配置距离传感器。

从驱动程序下拉菜单中选择 HC-SR04 驱动程序:

poYBAGNY0-aAVnPhAAAy4mnZPAk579.png
 

现在我们将配置驱动程序如下:

回声针:GP3

触发引脚:GP2

分辨率(I):1

pYYBAGNY0-uAK9djAABBXfrx3gs960.png
 

**我们的系统在设置中设置为英制。如果您的设置为公制,您可能需要更改分辨率值。**

就是这样,您的安全系统固件文件现已完成。保存并上传您的固件文件。安全键盘固件应上传到连接键盘和 LCD 的 Builder Base,安全触发器固件应上传到连接传感器和蜂鸣器的 Builder Base。

第 3 步:对应用程序进行编程

对于这个应用程序,我们将引导您了解所涉及的基本逻辑。您可以按照我们的描述构建应用程序,或者您可以下载该应用程序并将其导入您的应用程序列表。

这是安全系统应用程序:

**请注意,此安全系统应用程序处于高度原型状态,无法完美运行。我们将在未来几个月内更新此应用程序以更有效地工作。**

在本说明中,我们将把应用程序分为四个主要部分:1. 代码集,2. 代码输入/评估,3. 传感器输入,和 4. 布防警报倒计时

poYBAGNY0-6AUpgyAAC2TbdoQ-E668.png
 

在当前状态下,当应用程序启动时,您需要通过仪表板界面设置密码。这发生在应用程序的代码集部分。

 
 
 
pYYBAGNY0_CAM76fAAAnFR6KNwQ050.png
 
1 / 2
 

使用两个自定义代码块设置引脚。一个将仪表板按钮按下转换为数字,另一个将数字存储在全局上下文数组中。

对于Number Convert代码和Set Pin 代码,请查看我们的文档

现在我们来看看程序的代码输入/评估部分。

poYBAGNY0_KAGfPlAABegWPIqkc141.png
 

在这里,我们有一个 4x3 键盘对象连接到另一个数字转换自定义片段。这会从 4x3 键盘对象获取数字输出,并根据接收到的端口将其转换为数字。此数字转换自定义代码段与上面使用的代码段相同。

然后将此数字传递到名为“安全?”的自定义片段中。

 
 
 
poYBAGNY0_eAF17iAAAXG05NjWA412.png
 
1 / 2
 

“安全?” 片段从三个端口获取输入。第一个端口“InNode0”用作布防系统的一种方式。我们通过使用键盘上的“*”键来布防系统如果从该端口接收到触发器,则执行以下代码:

1.案例0:{

2. globalContext.safe = 0;

3.};打破;

第二个端口“inNode1”从数字转换自定义片段中获取数字并将它们存储在输入数组中。当通过此端口接收到值时,将执行以下代码:

1.案例1:{

2. context.entr[context.i] = val2;

3.上下文.i++;

最后,第三个端口用作代码评估的触发器。第三个端口连接到 4x3 键盘对象上的“#”键。当按下“#”键时,它充当输入按钮。你可以在这里看到代码:

pYYBAGNY0_qAJQRYAAB-KLce4CQ761.png
 

这是“安全?”的完整代码 自定义片段:

 
 
 
poYBAGNY0_yALv5RAABbLcd_whQ094.png
 
1 / 2
 

每次按下 4x3 键盘上的一个数字时,此程序部分还会向 LCD 发送一个“*”。每按下一个数字,就会触发“Send *”数据序列,然后将计数加一,范围为 [10 → 16]。此计数对应于 LCD 上的列位置,因此每次输入一个新数字时,在最后一个数字之后输入一个新的“*”。此外,每次按下“#”键时,都会重置此计数。无论如何,这个数字被发送到 LCD 对象上的列位置端口。

然后数据序列触发包含“*”的静态字符串块,并将其发送到 LCD 上的字符串端口。

最后,数据序列触发 LCD 上的“Send to Display”端口,实际上使新消息出现在 LCD 上。

poYBAGNY0_-AH8nWAACdJ8u_puw389.png
 

我们现在来看看程序的传感器输入部分。

 

 
 
 
poYBAGNY1AGAMtz5AAB9W1nX37c110.png
 
1 / 2
 

我们有一个初始触发器连接到一个名为“Set Safe”的自定义片段。当应用程序最初启动时,系统被设置为安全位置,因此警报不会立即触发。

poYBAGNY1AaAFp_bAAAbQA9JAOo577.png
 

这是代码:

1.globalContext.safe = 1;

初始触发器还触发“输入代码”数据序列。此数据序列触发“输入代码:”的静态字符串并将其发送到 LCD 硬件对象。

pYYBAGNY1AmAEmrMAACH6ro-vYI562.png
 

现在,我们将看看所有传感器如何用作警报的触发器。

poYBAGNY1AuAFjxCAABofeOPWg8494.png
 

所有三个传感器,门触点、运动传感器和距离传感器,都通向一个 2 秒的超时对象。然后,此超时对象会导致一个名为 Sound Alarm 的自定义代码片段。

pYYBAGNY1A6AIdQRAABpSul4Q6A664.png
 

此自定义代码段检查 globalContext.safe 变量是设置为 0 还是 1。如果设置为 1,则系统是安全的,并且没有任何反应。但是,如果变量设置为 0,则字符串“Intruder Alert”通过端口“outNode0”发送到“Access G/D Data Sequence”,并通过第二个端口向“Beep Alarm”振荡器对象发送触发器“outNode1”。

pYYBAGNY1BKAPztbAAA_FEbcnJM718.png
 

然后触发“拉伸脉冲”脉冲拉伸器,进而激活蜂鸣器。

pYYBAGNY1BWAeZZTAAAmk1-E6qU862.png
 

如果我们正在输入代码并试图撤防系统,则采用 4x3 键盘上的“#”键的这条路线。

poYBAGNY1BeAE6B1AACIlQTLW3g628.png
 

在 4x3 键盘上“授予访问权限?” 触发自定义片段,如果 globalContext.safe 变量设置为 1,则将字符串“Access Granted”传递给 LCD,并触发“Access G/D”数据序列。

poYBAGNY1BqAC165AABY34XOMDM467.png
 

这是“授予访问权限?”的代码。自定义片段:

1.if(globalContext.safe ===1){

2. return["Access Granted",new Date()];

3.}

最后,我们将看看应用程序的 Arm Alarm Countdown 部分。

pYYBAGNY1B6ASzfYAACeFPPRetE529.png
 

当按下 4x3 键盘上的“*”键时,会触发“倒计时序列”对象,并触发 20 秒超时。这些同时执行。20 秒超时结束后,系统将在“安全?”上设置为“inNode0”。我们之前讨论的块将被触发。

poYBAGNY1CCARkhVAABKKfCT49s031.png
 

倒计时序列对象处理出现在 LCD 屏幕上的 20 秒倒计时。首先,清除 LCD,然后将字符串“Alarm Armed:”发送到“字符串合并”对象。

pYYBAGNY1COALlOhAABrBDaBB3M874.png
 

接下来,数字 20 被发送到数据计数器对象上的值端口。然后将该值传递到数据计数器上的“字符串 B”端口。“Alarm Armed:”+“20”的连接字符串然后通过任意数据序列发送到 LCD。

pYYBAGNY1CWAV-vwAABuc5RfmnE677.png
 

然后触发振荡代码块,计数设置为 20,间隔设置为 1000 毫秒。

然后这会触发数据计数器 20 次,每秒递减一次计数器,直到计数达到 0。每次计数递减时,都会向 String Merge 对象发送一个新值,然后将新合并的字符串传递给“Any Data Sequence”,最终将新字符串“Alarm Armed:”+“(一些新的计数)”到液晶显示器。

pYYBAGNY1CeAPgRCAABrW9pGbyw712.png
 

最后,已同时运行的超时块完成其超时并触发 LCD 上的“清除”端口和“输入代码:”序列。这使系统处于其布防状态,准备好输入密码以解除其布防。

poYBAGNY1CyAM7UeAABwfLC8WME973.png
 

这就是对应用程序进行编程的过程。保存您的应用程序并返回应用程序页面。

第 4 步:映射应用程序

您现在应该回到应用程序页面。

找到您的“安全系统”应用程序并点击播放按钮。

pYYBAGNY1C6AFHD-AAAR7Hq1p8s353.png
 

包含应用程序中所有设备的列表将展开。

poYBAGNY1DGAbrF1AACDzy8l7Ig553.png
 

接下来单击“运动传感器”设备,客户端下拉菜单将出现在右侧。

从下拉菜单中选择运动传感器驱动程序并点击“完成”。

poYBAGNY1DSAbeP5AACDjOUNuNs798.png
 

对其余设备重复相同的步骤。对于此应用程序,每个设备应该只有一个可选驱动程序。

请注意,除了一个状态符号之外的所有状态符号都已更改为绿色复选标记。我们在我们的应用程序中使用了门触点设置,但目前我们没有通过三星 SmartThings 或我们的 Builder Bases 之一设置。因此,您可以将此设备保留为未映射,或者您可以将一个设备与系统配对。

poYBAGNY1DeAK-I0AACEOzGzypk080.png
 

**将固件设备映射到您的应用程序中的对象时,请务必注意,只有相同类型的设备和对象才能映射在一起。例如,使用此应用程序,我们只能选择将带有按钮固件的客户端映射到按钮对象。**

您现在已经完成了应用程序的映射!

第 5 步:运行应用程序!

接下来,点击“保存+运行”

poYBAGNY1DeAK-I0AACEOzGzypk080.png
 

 

poYBAGNY1D2AZtdgAAAQwtdlrCg835.png
 

恭喜!您的安全系统现已完成,玩得开心!

 

 


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !