电子说
第1步:功能
此板的主要特点是ESP32 FireBeetle开发板处理所有通信,传感器读数和输出。有两个步进电机驱动器,可控制两个双极步进电机。
I2C总线也已断开,可用于APDS9960或LCD等组件。为了读取温度,需要断开连接到DHT22传感器的引脚以及用于读取环境光水平的光敏电阻。
板上有一个模拟灯带,该模拟灯带具有三个MOSFET。
步骤2:PCB
我首先通过在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:输入
为处理输入,我创建了一个名为“ Hub_Inputs”的类,该类可让家用集线器与APDS9960进行通信,以及创建和管理按钮以及电容式触摸界面。它包含以下功能:
创建按钮
获取按钮是否按下
获取按钮按下次数
获取最新手势
获取电容式触摸值
按钮以结构形式存储,具有三个属性:is_pressed,numberPresses和pin。每个按钮在创建后都会附加到中断中。触发该中断时,将向该按钮的指针(作为按钮在数组中的内存地址)传递给中断服务例程(ISR),并增加按钮的按下次数,并更新is_pressed布尔值。
电容式触摸值要简单得多。通过将touch引脚传递给touchRead()函数来检索它们。
通过轮询APDS9960并检查是否检测到任何新手势来更新最新手势,如果已检测到新手势,则将专用手势变量设置为该手势。
第6步:输出
智能家居中心具有几种输出信息和更换灯的方式。有一些引脚可以断开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 :用法
要使用Smart Home Hub,只需在setup()或loop()中调用任何需要的函数。我已经放置了示例函数调用,例如打印当前时间和调用IFTTT事件。
步骤11:未来计划
智能家居中心该系统非常适合简单的家庭自动化和数据收集任务。它几乎可以用于任何事情,例如设置LED灯带的颜色,监视房间的温度,检查灯是否亮着以及其他许多潜在项目。将来,我想进一步扩展功能。这可能包括添加更强大的Web服务器,本地文件托管,甚至是蓝牙或mqtt。
全部0条评论
快来发表一下你的评论吧 !