您好! 请登录 注册
Picture Show
搜索
Picture Show

       联系电话    

135 1009 9916

图片展示

如何使用继电器或N-MOSFET模块构建迷你智能家居系统

2025-07-23 08:49:09

本文将首先介绍新系统所需的组件,模块与电路板的连接,最后介绍Android Studio和CircuitPython中的代码

组件

为了完善这个项目,我增加了一个Minebea Motor的12V NMB-MAT风扇和定制的灯箱来模拟家庭系统。要操作这些设备,您需要2个外部电源来使用这两个产品,因为我们的板只支持5V和3.3V。

此外,为了允许我们的电路板为硬件供电,您将需要一个继电器或n通道MOSFET模块。两者都被使用,以便通过从我们的板向模块提供信号,然后它们将允许外部电源通过各自的机制为硬件供电。

风扇使用的电源是XY-SK35电源,因为它允许高达24v的电压水平,对于定制灯箱,您只需要一个microrousb到USB线和一个USB插头作为灯箱的电源。

XY-SK35电源

on组件以及我们的Pico 2板将与继电器模块连接。

对于带灯条的盒子,您将需要一个MOSFET模块,以便在该灯条上运行PWM。

硬件连接

对于每个硬件,我们将首先连接控制模块(继电器/MOSFET),电源和硬件,然后我们将完成的电路连接回电路板。

在我的研究中,我遇到了这个视频,教我如何连接继电器与硬件,以及如何控制它与Pico板。

要连接风扇、继电器和电源,您需要执行以下操作。

1. 确定要使用的电路。

如果您希望硬件在电路板提供低信号时工作,则需要使用继电器的NC端口,这意味着当电路板上的各自引脚输出低信号时,电源到风扇电路保持关闭,表明风扇仅在信号为低时运行。

如果您希望硬件仅在电路板提供高信号时工作,则需要继电器的NO端口,这意味着电源到风扇电路在引脚为LOW时保持打开,表明风扇在信号为LOW时不会操作。

2. 将风扇的正极连接到电源的正极。您可能需要使用剥线钳允许铜线连接到电源的正极。我剪断电线的塑料涂层,绕在电源的正极上。(蓝色线为风机正极线)

3. 将风扇的接地线与风扇的接地口连接到继电器的COM口。

4. 最后,将电源的负极连接到步骤1 (NO/NC)中选择的端口。对于这个项目,我希望风扇仅在我的板发送高信号时运行,这意味着我将使用NO端口

完成电源-风扇电路。

要连接到电路板,只需将接地,电压和信号引脚连接到各自的引脚,信号应在CircuirPython中的DigitalInOut引脚中

接下来,对于灯箱,您需要执行以下步骤。

1. 切割并去除microrousb转usb线的塑料涂层。暴露一些铜线以便电通过。现在您应该有两段导线,我将它们称为microUSB导线和USB导线。

2. 在N-MOS模块中,您将发现4个端口,分别是V输入+/-和V输出+/-。将微型rousb线的正极和负极分别接在电压输出正、负端口上。对于电压输入,我们相应地连接USB线。

3. 您应该会发现模块的另一侧有6个端口。顶部的三个端口都用于PWM,其余的都接地。

然后我们需要将这些端口连接到电路板的引脚。我使用GP12作为这个模块的引脚。

这就完成了两个硬件的连接。

CircuitPython代码

在编写代码之前,在Adafruit IO上为风扇和PWM灯创建两个馈送,以便您可以在Adafruit模式下读取或写入这些值

为了允许我们的应用打开/关闭风扇/盒子灯,你需要为这两个硬件设置一个新的端点。

要使用风扇,我将Gp9引脚绑定为DigitalInOut引脚,当该引脚值为1时,风扇将打开,如果不是,则风扇将关闭。

我还增加了一个自动版本,如果SFA30的温度超过一定值,风扇将自动打开。

由于现在我们希望SFA30自动记录变量,而不是仅在调用SFA30端点时执行计算,因此我们将SFA30端点中负责检索数据的代码移到一个函数中,当服务器在线时,我们将在该函数中调用每个循环。

我们将在新版本中返回风扇值以及这些数据供应用程序使用,我将在稍后解释。

本地模式下的旧版本:

本地模式的当前版本:

在Adafruit模式中,您需要为风扇值添加一个新的提要,订阅它,并在计算后将该值发布到Adafruit IO。

在第一次迭代中,当达到温度阈值时,我们需要首先将当前风扇值发送给Adafruit IO(这里的代码为25)。

在while循环内部,为了避免达到Adafruit IO的节流错误,最好只在风扇状态发生变化时才发布风扇值。增加油门时间也有助于减少达到油门时间的可能性。

最后,如果服务器结束,则将风扇的状态发布回默认状态(关闭)。

要使用该灯,您需要使用PWMIO库来调整亮度。

将GP12上的引脚与PWMOut功能绑定。previous_PWM变量用于在我们关闭应用程序中的灯之前记录PWM值。我们将其初始化为65535,因为灯的初始状态是关闭的,如果我们切换应用程序上的灯,占空比只能设置为65535的最大值。

在开发本节的过程中,有一个有趣的发现发生在我收到一个使用All计时器的错误时。经过一番研究,我发现发生这种情况是因为我使用了相同PWM输出片的第二个通道。正如在前面的代码中,我使用PWM输出来播放声音,如果连接,这是在引脚26,我不小心使用了相同PWM片的另一个通道的光,这是引脚11。您可以阅读此网站以获得有关Pico 2板的PWM通道的简短解释,或者您可以参考RP2350数据表。

PWM通道图片来自RP2350 Datasheet

由于这两种硬件的工作方式不同,最简单的解决方案是将我的光更改为PWM输出的另一片,即引脚GP12。

接下来,我们修改切换光端点,使用我们自定义的灯箱而不是led模块。

如果当前状态为0,我们将其打开到先前存储的PWM值作为亮度。

如果电流状态非零,我们关闭它。

我们还应该添加另一条路由来改变光的PWM值。

当Android从0-100缩放时,我们通过以下方式将这些值映射到0-65535,并将计算结果存储回previous_PWM变量。

接下来,对于Adafruit模式,创建boxlight提要并在连接的MQTT函数中订阅它。

我们还需要修改消息功能。应用程序仍然会调用LED端点来打开/关闭灯,但应用程序现在可能会将滑块值发送到PWM端点以调整亮度。

如果应用程序被发布到光源,我们的箱灯将改变亮度到以前存储的状态,如果它是打开的,如果它是关闭的0。

如果应用程序发送到箱灯馈送,我们首先用这个公式设置应用程序的值相应的占空比,并将当前占空比值存储到previous_PWM变量中,这样如果我们重新打开灯,亮度就处于先前存储的状态。

如果我们从本地模式切换到Adafruit模式,我们还需要发布当前的亮度。

最后,将占空比的默认值发布给Adafruit IO,该值为0

这就完成了CircuirPython代码。

Android Studio代码

在Android应用程序中,你需要添加一个按钮图像来存储风扇的当前状态,并添加一个按钮,负责切换灯的亮度,旁边是一个滑块,组成PWM值。

和之前的版本一样,我使用了ImageButton组件作为风扇,我允许它通过按下这个按钮来打开或关闭风扇。在未来,我可能会包括一个自动/手动切换,这样如果它是自动风扇模式,它就可以作为静态图像组件,但如果它是手动模式,我们可以按下这个按钮来打开和关闭。

风扇打开和关闭的图像是由ChatGPT生成的。你可以制作自己的版本,并将其重命名为fan_on, fan_off并将其存储到/res/drawable文件夹中。

这是我的代码在activity_main xml。

接下来,让我们转到这些组件背后的逻辑。

设置滑块和按钮如下。当SeekBar改变时,我们将把改变的结果存储到一个滑块值变量中,当我们决定按下负责亮度的Apply按钮时,该变量将用于发送到电路板。

我还将fan_button设置为false,因为我们目前不支持手动更改风扇。

创建Adafruit IO端点以发出HTTP请求。

由于我们在App中添加了一些新组件,我们需要在网络断开时禁用这些新组件。

现在我们可以对滑动按钮进行编码。这个滑动按钮背后的大部分逻辑与其他按钮非常相似,但我添加了一小部分,告诉用户在按下Apply按钮之前需要打开灯。

接下来,根据我们是否从上一篇文章中的discoveryot函数检索IP,我们将对各自的API端点执行HTTP请求。请记住,在这个Adafruit部分中,我们需要在从正确的提要(即pwmlight)获取数据之前识别物联网设备的在线状态。

在本节中,我使用POST而不是来自之前的onClickListener的GET请求,因为我们将向物联网设备发布数字数据。

完成滑块按钮后,我们现在可以修改SFA30功能,我们将在SFA30数据的同时检索风扇状态。

继上一篇关于get_data_job函数的文章之后,我们首先修改本地模式中的代码。

当我们决定返回一个带有SFA30数据和来自SFA30端点的风扇数据的JSON对象时,我们可以简单地检查“fan”键的值是真还是假,然后相应地更改风扇照片。

这里是本地模式的代码

对于Adafruit模式,您需要为向粉丝提要的http请求创建另一个async await函数,并相应地更改图片。但是,如果服务器不在线,则需要将照片设置为默认值。

这就完成了Android应用程序的Kotlin代码。

结论

这就是使用Kotlin和CircuitPython对迷你智能家居系统的更新。我希望通过这个项目,您可以学习如何使用继电器或N-MOSFET模块与我们的Pico板连接来操作现实生活中的硬件,并为您的个人项目提供一些灵感。也可能有新的更新到这个系统,使它作为一个更全面的家庭系统项目。希望你能从这篇文章中学到一些新的东西!

如您对我们的产品感兴趣,欢迎联系咨询电话:135 1009 9916(微信同号)


    


                    



学习了解更多碳化硅功率器件产品知识  请查看碳化硅课堂



作者: 深圳市亿伟世科技有限公司
0
如何使用继电器或N-MOSFET模块构建迷你智能家居系统
本文将首先介绍新系统所需的组件,模块与电路板的连接,最后介绍Android Studio和CircuitPython中的代码组件为了完善这个项目,我增加了一个M
长按图片保存/分享

 技术学院


IGBT 课堂

SIC 课堂
工程师家园

 

产品中心

碳化硅器件

    IGBT

超洁 MOS

东芝隔离器

 

 

 

码上关注

     码上关注

码上联系

Picture Show
Picture Show

联系电话

135 1009 9916

 (微信同号)

添加微信好友,详细了解产品
使用企业微信
“扫一扫”加入群聊
复制成功!
添加微信好友,详细了解产品
我知道了
粤ICP备2022009448号