当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]你好,这是我以前在Android应用程序上的W5100S-EVB-Pico 2项目的更新。在这个项目中,我改进了系统的设计,以支持更多的硬件使用继电器。有了这些,你也可以在你的个人项目中创建一个类似的迷你智能家居系统。

一个易于遵循的迷你智能家居系统,您可以尝试使用CIrcuitPython, Android Studio和W5100S EVB Pico2在家中构建

你好,这是我以前在Android应用程序上的W5100S-EVB-Pico 2项目的更新。在这个项目中,我改进了系统的设计,以支持更多的硬件使用继电器。有了这些,你也可以在你的个人项目中创建一个类似的迷你智能家居系统。

本文将首先介绍新系统所需的组件,模块与电路板的连接,最后介绍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板连接来操作现实生活中的硬件,并为您的个人项目提供一些灵感。也可能有新的更新到这个系统,使它作为一个更全面的家庭系统项目。希望你能从这篇文章中学到一些新的东西!

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

特朗普集团近日取消了其新推出的T1智能手机“将在美国制造”的宣传标语,此举源于外界对这款手机能否以当前定价在美国本土生产的质疑。

关键字: 特朗普 苹果 AI

美国总统特朗普在公开场合表示,他已要求苹果公司CEO蒂姆·库克停止在印度建厂,矛头直指该公司生产多元化的计划。

关键字: 特朗普 苹果 AI

4月10日消息,据媒体报道,美国总统特朗普宣布,美国对部分贸易伙伴暂停90天执行新关税政策,同时对中国的关税提高到125%,该消息公布后苹果股价飙升了15%。这次反弹使苹果市值增加了4000多亿美元,目前苹果市值接近3万...

关键字: 特朗普 AI 人工智能 特斯拉

3月25日消息,据报道,当地时间3月20日,美国总统特朗普在社交媒体平台“真实社交”上发文写道:“那些被抓到破坏特斯拉的人,将有很大可能被判入狱长达20年,这包括资助(破坏特斯拉汽车)者,我们正在寻找你。”

关键字: 特朗普 AI 人工智能 特斯拉

1月22日消息,刚刚,新任美国总统特朗普放出重磅消息,将全力支持美国AI发展。

关键字: 特朗普 AI 人工智能

特朗普先生有两件事一定会载入史册,一个是筑墙,一个是挖坑。在美墨边境筑墙的口号确保边境安全,降低因非法移民引起的犯罪率过高问题;在中美科技产业之间挖坑的口号也是安全,美国企业不得使用对美国国家安全构成威胁的电信设备,总统...

关键字: 特朗普 孤立主义 科技产业

据路透社1月17日消息显示,知情人士透露,特朗普已通知英特尔、铠侠在内的几家华为供应商,将要撤销其对华为的出货的部分许可证,同时将拒绝其他数十个向华为供货的申请。据透露,共有4家公司的8份许可被撤销。另外,相关公司收到撤...

关键字: 华为 芯片 特朗普

曾在2018年时被美国总统特朗普称作“世界第八奇迹”的富士康集团在美国威斯康星州投资建设的LCD显示屏工厂项目,如今却因为富士康将项目大幅缩水并拒绝签订新的合同而陷入了僵局。这也导致富士康无法从当地政府那里获得约40亿美...

关键字: 特朗普 富士康

今年5月,因自己发布的推文被贴上“无确凿依据”标签而与推特发生激烈争执后,美国总统特朗普签署了一项行政令,下令要求重审《通信规范法》第230条。

关键字: 谷歌 facebook 特朗普

众所周知,寄往白宫的所有邮件在到达白宫之前都会在他地进行分类和筛选。9月19日,根据美国相关执法官员的通报,本周早些时候,执法人员截获了一个寄给特朗普总统的包裹,该包裹内包含蓖麻毒蛋白。

关键字: 美国 白宫 特朗普
关闭