ESP32智能家居集线器的制作

电子说

1.3w人已加入

描述

第1步:功能

此板的主要特点是ESP32 FireBeetle开发板处理所有通信,传感器读数和输出。有两个步进电机驱动器,可控制两个双极步进电机。

I2C总线也已断开,可用于APDS9960或LCD等组件。为了读取温度,需要断开连接到DHT22传感器的引脚以及用于读取环境光水平的光敏电阻。

板上有一个模拟灯带,该模拟灯带具有三个MOSFET。

步骤2:PCB

ESP32

ESP32

我首先通过在Eagle中创建原理图开始了PCB设计过程。由于找不到ESP32 FireBeetle库,我只用了两个pin 1x18 pin接针。然后,我创建了一个电源管理威廉希尔官方网站 ,该威廉希尔官方网站 可以通过DC桶式插座接受12v电压,并将其转换为5v,为传感器和ESP32供电。

原理图完成后,我着手设计PCB本身。

我知道DC桶形插头必须位于威廉希尔官方网站 板的前端附近,并且100uF电源平滑电容器必须靠近步进电动机驱动器的电源输入。一切布置好后,我开始布线。

虽然Oshpark生产高质量的PCB,但价格却很高。值得庆幸的是,PCBGOGO.com还以合理的价格生产出了优质的PCB。我能够以5美元的价格购买10块PCB,而不是从Oshpark.com只需花52美元购买3块板。

步骤3:组装

总体来说,组装威廉希尔官方网站 板非常容易。首先,我焊接了表面安装的组件,然后连接了桶形插孔连接器和调节器。接下来,我焊接了电机驱动器和FireBeetle等组件的排针。

焊接完成后,我通过将万用表置于电阻测量模式并观察了威廉希尔官方网站 板是否短路来进行测试。如果电阻超过一定量。该板通过了,因此我可以插入每个组件。

步骤4:编程概述

我希望该板的代码为模块化且易于使用。这意味着有几个处理特定功能的类,以及一个将较小的类组合在一起的较大的包装器类。

步骤5:输入

ESP32

为处理输入,我创建了一个名为“ Hub_Inputs”的类,该类可让家用集线器与APDS9960进行通信,以及创建和管理按钮以及电容式触摸界面。它包含以下功能:

创建按钮

获取按钮是否按下

获取按钮按下次数

获取最新手势

获取电容式触摸值

按钮以结构形式存储,具有三个属性:is_pressed,numberPresses和pin。每个按钮在创建后都会附加到中断中。触发该中断时,将向该按钮的指针(作为按钮在数组中的内存地址)传递给中断服务例程(ISR),并增加按钮的按下次数,并更新is_pressed布尔值。

电容式触摸值要简单得多。通过将touch引脚传递给touchRead()函数来检索它们。

通过轮询APDS9960并检查是否检测到任何新手势来更新最新手势,如果已检测到新手势,则将专用手势变量设置为该手势。

第6步:输出

ESP32

智能家居中心具有几种输出信息和更换灯的方式。有一些引脚可以断开I2C总线,使用户可以连接LCD。到目前为止,仅支持一种LCD尺寸:20 x4。通过使用“ hub.display_message()”功能,用户可以通过传递字符串对象在LCD上显示消息。

有也是用于连接一串模拟LED的引脚接头。调用函数“ hub.set_led_strip(r,g,b)”,设置条带的颜色。

两个步进电机使用一对DRV8825驱动器板驱动。我决定使用BasicStepper库来处理电机控制。板子启动时,将创建两个步进对象,并且两个电动机都将启用。要步进每个电动机,请使用“ hub.step_motor(motor_id,steps)”功能,其中电动机id为0或1。

第7步:记录

由于开发板上有多个传感器,我希望能够在本地收集和记录数据。

开始记录,将使用“ hub.create_log(filename,header)”创建一个新文件,其中header用于制作表示列的CSV文件行。第一列始终是“年月日小时:分钟:秒”格式的时间戳。为了获取时间,hub.log_to_file()函数通过basic_functions.get_time()函数获取时间。然后,通过引用将tm时间结构以及数据和文件名传递给日志记录函数。

步骤8:蜂鸣器

如果您不能播放音乐,IoT板有什么用?这就是为什么我包括一个具有声音播放功能的蜂鸣器的原因。调用“ hub.play_sounds(旋律,持续时间,长度)”开始播放一首歌曲,旋律是音符频率的数组,持续时间是音符持续时间的数组,长度是音符数量。

步骤9:外部IoT集成

该中心目前支持IFTTT Webhooks。可以通过调用Hub_IoT.publish_webhook(URL,数据,事件,键)或Hub_IoT.publish_webhook(URL,数据)函数来触发它们。这会将带有该数据的POST请求发送到给定URL,并在必要时发送事件名称。要设置示例IFTTT集成,请首先创建一个新的applet。然后选择在收到请求时触发的webhook服务。

下一步,将事件称为“ high_temp”并保存。然后,为“该”部分选择Gmail服务,然后选择“向自己发送电子邮件”选项。在该服务的设置中,将主题的温度设置为“高温!”,然后在“ {{OccurredAt}}”处输入“ {{Value1}}的实测温度”,其中显示了实测温度和触发事件。

设置后,只需粘贴IFTTT生成的webhook URL,并将“ high_temp”放入事件部分。

步骤10 :用法

ESP32

要使用Smart Home Hub,只需在setup()或loop()中调用任何需要的函数。我已经放置了示例函数调用,例如打印当前时间和调用IFTTT事件。

步骤11:未来计划

智能家居中心该系统非常适合简单的家庭自动化和数据收集任务。它几乎可以用于任何事情,例如设置LED灯带的颜色,监视房间的温度,检查灯是否亮着以及其他许多潜在项目。将来,我想进一步扩展功能。这可能包括添加更强大的Web服务器,本地文件托管,甚至是蓝牙或mqtt。

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

全部0条评论

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

×
20
完善资料,
赚取积分