当前位置: 首页 > article >正文

立创开源:基于ESP32与POE供电的模块化有线智能家居解决方案全解析

立创开源基于ESP32与POE供电的模块化有线智能家居解决方案全解析最近在捣鼓家里的智能设备发现无线方案虽然方便但遇到信号死角或者设备一多稳定性就有点让人头疼。于是我把目光投向了有线方案毕竟网线一拉信号稳如泰山。正好在立创EDA开源平台上看到了一个非常完整的项目——一套基于ESP32和POE供电的模块化有线智能家居解决方案。这个项目把以太网通信、POE供电、设备控制都做成了一个个独立的模块像搭积木一样就能拼出一套稳定的智能家居系统特别适合想深入学习硬件和网络通信的朋友们。今天我就带大家从头到尾拆解一下这个项目看看它是怎么设计的各个模块怎么工作以及我们如何快速上手使用。无论你是刚入门的嵌入式爱好者还是有一定经验的工程师相信都能从中获得启发。1. 项目整体概览像乐高一样的模块化设计这个项目的核心思想是“模块化”。作者把整个智能家居系统拆分成了几个功能独立的PCB模块每个模块负责一项专门的任务。这样做的好处非常明显设计清晰、调试方便、升级灵活。比如你想换一个更强大的主控只需要替换“ESP32控制模块”就行了其他电源、网络、IO扩展模块都可以复用。整个系统的信息流和电力流可以看下面这个结构图它清晰地展示了各个模块是如何协同工作的简单来说它的工作流程是这样的供电与联网外部48V电源或者通过网线POE来的电力先进入TPS23861 PSE控制模块进行管理和分配。电力转换48V的高压电经过DC-DC电源模块转换成ESP32和其他芯片需要的5V或12V低压电。核心控制ESP32控制模块作为大脑通过以太网借助LAN8720芯片连接到家庭局域网接收指令。执行与感知ESP32通过I2C总线控制MCP23017 IO扩展模块这个模块提供了大量的输入输出引脚可以用来接开关、传感器、继电器等真正控制家里的灯光、窗帘等设备。这种设计让整个系统层次分明咱们后面就一个个模块来细说。2. 核心模块深度解析2.1 电力心脏POE供电与DC-DC转换搞嵌入式供电永远是第一位的。这个项目的一大亮点就是完整实现了POE以太网供电功能让设备只需要一根网线就能同时解决通信和供电问题。POE供电是如何工作的POE系统里有两个角色PSE供电设备比如POE交换机和PD受电设备就是我们的这个模块。它们之间有一套“暗号”协商机制检测PSE会先发出一个很小的电压2.7V-10.1V来探测网线另一端有没有合法的PD设备。怎么判断合法呢就是看PD端是否有一个约24.9kΩ的特定电阻。咱们模块上的TPS2378芯片就负责提供这个“身份电阻”。分类确认身份后PSE会询问PD“你需要多大功率”PD通过调整一个电阻的阻值来回答比如“我是Class 0需要最大12.95W”。这样PSE就知道该分配多少电力避免过载。供电协商完毕PSE才会把电压提升到标准的48V开始稳定供电。监控与断电供电过程中PSE会持续监测电流。如果设备被拔掉或者短路电流异常PSE会立刻切断电源保证安全。在这个项目中TPS23861芯片扮演了PSE的角色在模块④中负责给其他模块供电而TPS2378芯片在早期的模块①中现已集成到ESP32模块则扮演PD的角色负责从网线取电。注意根据项目进度表早期独立的“W5500TPS2378 POE模块”已被淘汰其功能被集成到了新的“ESP32控制模块”中。所以在新版设计中POE受电PD部分已经和主控做在了一起。电压转换DC-DC模块网线送来的是48V直流电但我们的ESP32、LAN8720等芯片需要的是3.3V或5V。这就需要DC-DC降压模块。项目里使用了TI的TPS54560芯片它非常强悍输入电压范围宽达4.5V至60V能输出5V/5A的电流足够带动多个模块。它的典型应用电路如下图核心就是通过电感、电容和反馈电阻将高电压高效、稳定地降到我们需要的低电压。如果你需要其他电压比如12V给一些继电器模块用可以使用官方提供的TPS54360计算工具输入你的目标电压和电流它能帮你算出外围电阻、电容该用多大的值非常方便。2.2 大脑与神经ESP32以太网控制核心这是整个系统的核心主角是ESP32-WROOM-32E/UE模组和LAN8720A以太网PHY芯片。为什么是ESP32ESP32大家都很熟了双核240MHz性能足够功耗低关键是生态极其完善有Arduino、ESP-IDF等多种开发框架可选。它内部其实已经集成了以太网MAC控制器但需要一个外部的PHY芯片来完成最后的“物理层”转换把数字信号变成能在网线上跑的差分信号。LAN8720A小巧高效的网络“翻译官”LAN8720A就是这个“翻译官”。它只有24个引脚通过RMII精简媒体独立接口与ESP32通信。RMII比标准的MII接口用的引脚少更节省IO口。它们的连接关系是固定的ESP32引脚功能连接至LAN8720AGPIO17EMAC_CLK为PHY提供50MHz时钟GPIO25EMAC_RXD0接收数据线0GPIO26EMAC_RXD1接收数据线1GPIO27EMAC_RX_DV接收数据有效信号GPIO19EMAC_TXD0发送数据线0GPIO22EMAC_TXD1发送数据线1GPIO21EMAC_TX_EN发送使能信号GPIO23EMAC_MDC管理数据时钟GPIO18EMAC_MDIO管理数据输入输出这里有个关键点GPIO17被配置为输出模式GPIO17_OUT用于给LAN8720A提供50MHz的参考时钟。这是RMII接口能正常工作的必要条件。LAN8720A的PHYADD0引脚用来设置它的设备地址当系统里只有一个PHY时通常接地地址为0或接VCC地址为1在程序中需要与之对应。2.3 手脚扩展MCP23017 IO控制模块ESP32本身的GPIO可能不够用特别是你要接很多传感器、开关和继电器的时候。MCP23017芯片就是来解决这个问题的。它通过I2C总线与ESP32通信一颗芯片就能扩展出16个GPIO分为A、B两组每组8个而且可以同时挂载多达8个理论上能扩展128个IO口如何设置和寻址每个MCP23017都有一个7位的I2C地址。地址的高4位是固定的0100低3位由芯片上的A2、A1、A0三个硬件引脚的电平接GND是0接VCC是1决定。这样我们就能通过跳线或焊接给每个模块设置不同的地址避免冲突。A2A1A0I2C地址 (十六进制)0000x200010x210100x220110x231000x241010x251100x261110x27在程序中我们只需要指定正确的地址就能像控制ESP32自身的GPIO一样去控制这16个引脚是输入还是输出是读状态还是写电平非常方便。3. 快速上手使用ESPHome配置你的设备对于想快速实现功能或者对嵌入式编程不太熟悉的朋友这个项目作者强烈推荐使用ESPHome。它是一个基于YAML配置文件的系统能自动生成代码并轻松集成到Home Assistant中几乎不需要写一行C代码。下面就是项目提供的核心配置文件我加了详细注释esphome: name: my_poe_controller # 设备名称在网络中唯一标识 friendly_name: 我的POE控制器 # 友好名称用于显示 esp32: board: esp32dev # 指定开发板类型 # 启用日志方便调试 logger: # 以太网配置这是关键 ethernet: type: LAN8720 # PHY芯片型号 mdc_pin: GPIO23 # 管理接口时钟引脚 mdio_pin: GPIO18 # 管理接口数据引脚 clk_mode: GPIO17_OUT # 时钟模式GPIO17输出时钟给PHY phy_addr: 1 # LAN8720的PHY地址根据硬件连接PHYADD0引脚设置0或1 # 启用Home Assistant API用于和HA通信 api: encryption: key: your_encryption_key_here # 需要填写你自己的加密密钥 # 启用OTA无线升级功能 ota: password: your_ota_password_here # 设置OTA升级密码 # 配置I2C总线用于连接MCP23017 i2c: sda: 13 # I2C数据线引脚 scl: 16 # I2C时钟线引脚 scan: True # 启动时扫描I2C设备 frequency: 800kHz # I2C通信频率 # 声明MCP23017设备可以声明多个 mcp23017: - id: mcp23017_hub1 # 给这个设备一个ID便于后面引用 address: 0x20 # I2C地址对应A2,A1,A00,0,0 - id: mcp23017_hub2 address: 0x21 # 对应A2,A1,A00,0,1 # 定义一个二进制传感器例如接一个按钮 binary_sensor: - platform: gpio name: 走廊按钮 # 在HA中显示的名字 pin: mcp23xxx: mcp23017_hub1 # 指定使用哪个MCP23017 number: 0 # 使用该芯片的A0引脚0-7对应A0-A78-15对应B0-B7 mode: input: true # 设置为输入模式 pullup: false # 是否启用内部上拉根据实际电路选择 inverted: true # 信号是否反转根据按键是按下为低电平还是高电平调整 # 定义一个开关例如控制一个继电器 switch: - platform: gpio name: 客厅主灯 pin: mcp23xxx: mcp23017_hub1 number: 8 # 使用该芯片的B0引脚 mode: output: true # 设置为输出模式 inverted: false # 输出电平是否反转使用步骤将上面的配置保存为一个yaml文件如poe-controller.yaml。用ESPHome工具命令行或Dashboard编译并烧录到你的ESP32模块中。在Home Assistant中添加这个ESPHome设备。完成后你就可以在Home Assistant的界面上看到“走廊按钮”和“客厅主灯”的实体了并进行控制和自动化设置。提示首次使用需要根据你的网络环境和硬件连接修改配置文件中的name、encryption key、ota password、phy_addr和MCP23017的address。加密密钥和OTA密码可以自己生成一组复杂的字符串。4. 硬件组装与连接思路所有模块的PCB长度都统一为90mm宽度是12mm的倍数如24mm, 36mm, 48mm。这种标准化设计是为了能整齐地安装在UM90导轨上工业上常用的那种电气安装导轨看起来非常专业整洁。模块之间通过排针、排母或者接线端子连接。电源和信号线的连接需要仔细对照原理图。作者提供了几种灵活的连接方式动画展示了模块如何像积木一样组合以适应不同的安装空间和功能需求。给初学者的建议可以先从“ESP32控制模块”“一个MCP23017模块”的最小系统开始玩起。用USB给ESP32模块供电注意避开POE部分通过网络线连接路由器先让ESP32能够联网。然后通过I2C连接MCP23017控制一个LED或读取一个按钮。把这个基础流程跑通后再加入POE供电和更多的IO模块循序渐进。这个开源项目为我们提供了一个非常棒的有线智能家居硬件参考设计。它不仅仅是原理图和PCB更展示了一种模块化、标准化的设计思想。你可以直接使用这些模块搭建自己的系统也可以借鉴其设计特别是POE供电、ESP32以太网应用、IO扩展这些部分的电路用到你自己的项目中去。硬件设计的乐趣就在于这种“理解、借鉴、再创造”的过程。希望这篇解析能帮你打开有线智能家居的大门。

相关文章:

立创开源:基于ESP32与POE供电的模块化有线智能家居解决方案全解析

立创开源:基于ESP32与POE供电的模块化有线智能家居解决方案全解析 最近在捣鼓家里的智能设备,发现无线方案虽然方便,但遇到信号死角或者设备一多,稳定性就有点让人头疼。于是我把目光投向了有线方案,毕竟网线一拉&…...

基于 LangChain 实现带记忆功能的智能对话

在 AI 应用开发中,对话记忆是提升用户体验的核心能力之一 —— 让 AI 能够记住上下文、理解用户过往的对话内容,才能实现真正的 “多轮智能对话”。本文将基于 LangChain 框架,结合阿里云通义千问模型,手把手教你实现一个具备完整…...

手把手教你解决NCNN部署Yolov7时的NDK工具链问题(附完整配置流程)

深度解析NCNN部署YOLOv7时的NDK工具链兼容性问题与实战解决方案 在移动端AI模型部署领域,NCNN框架因其轻量高效的特点备受开发者青睐。然而,当我们将先进的YOLOv7目标检测模型部署到Android平台时,NDK工具链配置问题往往成为阻碍开发进度的&q…...

从零到一:基于 Agora Web SDK NG 构建互动直播场景

1. 为什么选择Agora Web SDK NG做互动直播? 第一次接触实时音视频开发时,我尝试用WebRTC原生API搭建直播系统,光是处理不同浏览器的编解码兼容性就掉光了头发。直到发现Agora Web SDK NG这个宝藏工具,才明白专业的事就该交给专业的…...

矩阵乘法-进阶题8

矩阵乘法 题目 问题描述给定一个N阶矩阵A&#xff0c;输出A的M次幂&#xff08;M是非负整数&#xff09;例如&#xff1a;A 1 23 4A的2次幂7 1015 22输入说明 第一行是一个正整数N、M&#xff08;1<N<30, 0<M<5&#xff09;&#xff0c;表示矩阵A的阶数和要求的幂数…...

Day6-MySQL-函数

函数是指一段可以直接被另一端程序调用的程序或代码字符串函数常用&#xff1a;SELECT 函数&#xff08;参数&#xff09;&#xff1b;数值函数常用&#xff1a;日期函数常用&#xff1a;流程函数流程函数可以在SQL语句中实现条件筛选&#xff0c;从而提高语句的效率...

AI绘画工具部署:Nunchaku FLUX.1-dev在ComfyUI中的分步安装指南

AI绘画工具部署&#xff1a;Nunchaku FLUX.1-dev在ComfyUI中的分步安装指南 1. 环境准备&#xff1a;确保系统满足要求 在开始安装前&#xff0c;请确认您的系统满足以下基础要求&#xff1a; 1.1 硬件要求 显卡&#xff1a;NVIDIA显卡&#xff08;支持CUDA&#xff09;&…...

【软考】中级信息安全工程师试题分析

​ 近几年软考中级信息安全工程师考题整体呈现&#xff1a;上午重理论广度、下午重实战落地&#xff1b;考点稳定、合规与实操双升、国密与等保2.0成核心。下面按科目、模块、趋势、备考重点完整分析。一、考试基本框架&#xff08;2023–2025&#xff09;- 上午&#xff1a;综…...

GB/T 28452-2012 三级应用系统测评

这是准备的培训材料。《GB/T 28452-2012 三级应用系统测评》培训调研问卷时间&#xff1a;45 分钟 总分&#xff1a;100 分一、 单项选择题&#xff08;每题 2 分&#xff0c;共 20 分&#xff09;根据 GB/T 28452-2012&#xff0c;应用软件系统安全子系统&#xff08;SSOASS&a…...

ROS2工具

坐标变换工具介绍查看TF树3D旋转可视化TF原理简单探究Python TF之手眼坐标变换...

Balena Etcher实战指南:从入门到精通的5大核心技能

Balena Etcher实战指南&#xff1a;从入门到精通的5大核心技能 【免费下载链接】etcher Flash OS images to SD cards & USB drives, safely and easily. 项目地址: https://gitcode.com/GitHub_Trending/et/etcher 家庭实验室部署&#xff1a;解决镜像烧录的痛点问…...

旧金山活动丨聊聊 AI Native 社交,Conversational AI Meetup@SF,3 月 20 日周五

旧金山的开发者与创业者们&#xff0c;我们的 Conversational AI Meetup 又来啦&#xff01; 本期主题聚焦「AI 社交」——今年春节期间&#xff0c;AI 社交赛道迎来现象级爆发。Elys 凭借「AI 赛博分身」概念悄然走红——你的数字分身 24 小时在线&#xff0c;替你刷内容、筛…...

Echarts v5升级必看:如何快速解决normal和api.style弃用警告(附代码对比)

Echarts v5升级实战&#xff1a;全面解决API弃用警告与性能优化指南 如果你正在将Echarts项目从v4升级到v5版本&#xff0c;可能会遇到各种弃用警告的困扰。这些警告看似简单&#xff0c;但背后隐藏着Echarts团队对性能优化和API简化的深层考量。本文将带你深入理解这些变更&am…...

告别复杂公式输入:MathLive让Web数学编辑变得简单高效

告别复杂公式输入&#xff1a;MathLive让Web数学编辑变得简单高效 【免费下载链接】mathlive A web component for easy math input 项目地址: https://gitcode.com/gh_mirrors/ma/mathlive MathLive是一款基于Web Components技术构建的数学公式编辑工具&#xff0c;它将…...

开源项目吐槽大会:从“这代码写的什么鬼”到“我来提个PR”

# 开源项目吐槽大会&#xff1a;从“这代码写的什么鬼”到“我来提个PR”## 引言在开源社区&#xff0c;有一种特殊的文化现象——吐槽。它可能出现在GitHub Issue的评论区&#xff0c;可能出现在技术会议的圆桌上&#xff0c;也可能出现在深夜程序员的朋友圈里。有人视吐槽为负…...

蓝桥杯2025年第十六届省赛真题(更新中)

蓝桥杯2025年第十六届省赛真题 1.可分解的正整数 本题结论&#xff1a;任何大于1的正整数都可表示为至少三个连续整数的和 所以只需要判断AiAiAi是否大于1就可以 C语言 #include <stdio.h> int main(){int N;scanf("%d",&N);int x;int i;int count0;fo…...

InternLM2-Chat-1.8B数据库智能助手实战:MySQL查询优化与自然语言交互

InternLM2-Chat-1.8B数据库智能助手实战&#xff1a;MySQL查询优化与自然语言交互 1. 引言&#xff1a;当数据库遇到自然语言 想象一下这个场景&#xff1a;你是一个数据分析师&#xff0c;面对着一堆业务数据&#xff0c;老板突然在群里问&#xff1a;“上个月华东区销售额最…...

Z-Image-Turbo-辉夜巫女应用场景:独立游戏开发——NPC角色原画快速迭代方案

Z-Image-Turbo-辉夜巫女应用场景&#xff1a;独立游戏开发——NPC角色原画快速迭代方案 1. 引言&#xff1a;游戏开发中的角色设计挑战 在独立游戏开发过程中&#xff0c;NPC角色原画设计往往是最耗费时间和资源的环节之一。传统工作流程需要经历概念设计、草图绘制、细节完善…...

函数式编程范式(二)

函数式编程范式&#xff08;二&#xff09; 纯函数 什么是纯函数&#xff1f; 函数式编程中的函数就是纯函数。 具体特征就是&#xff0c;相同的输入永远会得到相同的输出&#xff0c;而且没有任何可观察的副作用。 纯函数就类似于数学中函数&#xff08;用来描述输入与输出之间…...

Facebook游戏开发必备:用Graph API获取用户数据与好友列表的实战技巧

Facebook游戏开发进阶&#xff1a;Graph API数据获取与权限管理实战解析 在社交游戏开发中&#xff0c;Facebook平台的数据接入能力直接决定了用户体验的丰富程度。许多开发者虽然完成了基础SDK集成&#xff0c;却在处理用户画像构建、社交关系链同步等进阶功能时频频受阻。本文…...

代码随想录算法训练营第四十八天| 300.最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组

300. 最长递增子序列 思路&#xff1a;首先注意这里的递增不一定要连续&#xff0c;可以是隔了几个数字的递增。那么这道题设dp数组的含义比较有意思&#xff1a;dp[i]表示i之前包括i的以nums[i]结尾的最长递增子序列的长度。当nums[i]大于nums[j]的时候&#xff0c;我们可以写…...

UE5实战:Alembic文件导入全攻略(含Maya导出避坑技巧)

UE5实战&#xff1a;Alembic文件导入全流程解析与性能优化指南 在影视级实时动画制作流程中&#xff0c;Alembic文件格式已成为跨软件协作的黄金标准。作为开源的几何体缓存交换格式&#xff0c;它能够将Maya中复杂的动态模拟完美迁移到UE5的实时渲染环境中。本文将深入解析从M…...

多场耦合优化-主题034-形状优化与尺寸优化

主题034&#xff1a;形状优化与尺寸优化 1. 引言 结构优化是现代工程设计中的核心技术&#xff0c;旨在通过系统化的方法寻找最优的结构形式&#xff0c;以满足特定的性能要求。结构优化通常分为三个层次&#xff1a;尺寸优化&#xff08;Sizing Optimization&#xff09;、形状…...

PLC设计毕业设计入门指南:从硬件选型到梯形图实战

作为一名自动化专业的过来人&#xff0c;我深知做PLC毕业设计时那种既兴奋又迷茫的感觉。面对一堆陌生的硬件型号和复杂的编程软件&#xff0c;很多同学第一步就卡住了——该选哪个牌子的PLC&#xff1f;I/O点怎么算&#xff1f;梯形图画出来总是不对劲&#xff0c;仿真通过了&…...

Sigil:开源EPUB编辑工具解决电子书制作核心痛点的全面方案

Sigil&#xff1a;开源EPUB编辑工具解决电子书制作核心痛点的全面方案 【免费下载链接】Sigil Sigil is a multi-platform EPUB ebook editor 项目地址: https://gitcode.com/gh_mirrors/si/Sigil 在数字化阅读日益普及的今天&#xff0c;电子书制作面临着格式标准化、编…...

如何解决Sublime Text乱码问题:编码转换工具完全指南

如何解决Sublime Text乱码问题&#xff1a;编码转换工具完全指南 【免费下载链接】ConvertToUTF8 A Sublime Text 2 & 3 plugin for editing and saving files encoded in GBK, BIG5, EUC-KR, EUC-JP, Shift_JIS, etc. 项目地址: https://gitcode.com/gh_mirrors/co/Conv…...

那些被Windows“藏起来”的功能:找回属于你的选择权

引言&#xff1a;你的电脑&#xff0c;谁说了算&#xff1f;你有没有发现&#xff0c;Windows这些年越来越“霸道”了&#xff1f;明明习惯任务栏在左侧&#xff0c;新系统却强行把它固定在底部中央&#xff1b;明明喜欢经典右键菜单&#xff0c;新版本非要折叠起来多按一次“显…...

3大突破如何重塑Web机器学习开发?Transformers.js移动端AI框架深度解析

3大突破如何重塑Web机器学习开发&#xff1f;Transformers.js移动端AI框架深度解析 【免费下载链接】transformers.js State-of-the-art Machine Learning for the web. Run &#x1f917; Transformers directly in your browser, with no need for a server! 项目地址: htt…...

从“不会写代码”到亲手上线产品:Makund 与 Madav 眼中的 AI 软件新范式

从“不会写代码”到亲手上线产品&#xff1a;Makund 与 Madav 眼中的 AI 软件新范式 开头摘要 在这场访谈中&#xff0c;Makund 与 Madav 围绕 Emergent 的产品演进、技术路线和用户变化&#xff0c;分享了他们对“非技术用户如何借助 AI 构建生产级软件”的判断。两人认为&…...

告别乱码困扰:ConvertToUTF8的高效编码转换完全指南

告别乱码困扰&#xff1a;ConvertToUTF8的高效编码转换完全指南 【免费下载链接】ConvertToUTF8 A Sublime Text 2 & 3 plugin for editing and saving files encoded in GBK, BIG5, EUC-KR, EUC-JP, Shift_JIS, etc. 项目地址: https://gitcode.com/gh_mirrors/co/Conve…...