概述
ESP开发板在传感器的采集和系统元件控制上,有很多优势,数模转换可以规避一些纯电气的干扰,更何况那么小巧,还自带局域网功能,以前学的是把数据显示在一块很小的屏幕上,当然利用它的局域网功能,利用Arduino IDE编写一个很简单的网站,也是完全没问题的。
最近一直在想,如果我需要一个更加丰富展示数据这块的网站,有大量的动画或Js图表,依靠ESP单片机可能就吃不消的,那么我就只用它来负责上传或下传数据,依靠电脑或服务器 来做网站搭建和渲染,各自发挥自己的长处,那就完美了。
通过一番搜索,大概了解到home assistant就是干这个事情的,和ESP开发板连接,就需要安装一个独立的模块:ESPhome,如果是树莓派,那就可以直接在home assistant中安装,就想我是DOCKER的环境,那就需要单独安装,也没啥关系,就多个端口而已。
ESPhome我理解的就是厂家自己开发的平台,只是集成到了home assistant,,它也有自己的简易网页,对数据进行参考或开关的控制,只是想表达的更丰富,增加一些联动控制功能,那就需要home assistant进行整合了。
正文
ESPhome基础
安装好ESPhome容器,打开后,首先要添加ESP开发板,首次添加,需要数据线进行连接。等把ESPhome的程序刷进ESP开发板后,后期更新就可以愉快的使用wifi更新了。
网页上有说明:
添加好设备后,会自动生成一个yaml文件,也就是配置文件。如果这里和Arduino IDE进行对比的话,你会发现yaml文件要简单明了,更高效,不再像Arduino IDE那么繁琐。
ESP32-S3 引脚
以下是我配置的一份,供参考,基本把ESP32-S3发挥到了极致,该用的协议都用到了,而且这些功能我都是测试过的,可以正常使用,我们先看引脚定义:
协议 / 功能 | 实例 (Instance) | 角色 (Role) | 分配的GPIO引脚 | 选用原因 / 备注 |
---|---|---|---|---|
继电器控制 | Relay 1 | Digital Out | GPIO1 | 通用GPIO,干净无冲突。 |
Relay 2 | Digital Out | GPIO2 | 通用GPIO,干净无冲突。 | |
数字量输入 | GPI40 | |||
数字量输入 | GPI41 | 有人存在检测 | ||
ADC | ADC 1 | Analog In | GPIO4 (ADC1_CH3) | ADC1通道,通用GPIO。 |
ADC 2 | Analog In | GPIO5 (ADC1_CH4) | ADC1通道,通用GPIO。 | |
I2C | I2C_0 (默认) | SDA | GPIO8 | Arduino框架下的默认SDA引脚。 |
SCL | GPIO9 | Arduino框架下的默认SCL引脚。 | ||
PWM | PWM1 | Analog Out | GPIO6 | 通用GPIO,干净无冲突。 |
PWM2 | Analog Out | GPIO7 | 通用GPIO,干净无冲突。 | |
SPI (共享总线) | SPI_Bus | MOSI--->SDI | GPIO11 | 共用,默认FSPI总线引脚。 |
MISO--->SDO | GPIO13 | 共用,默认FSPI总线引脚。 | ||
SCK--->CLK | GPIO12 | 共用,默认FSPI总线引脚。 | ||
SPI_Device_1 | CS 1--->CE | GPIO10 | 独立,用作设备1的片选。 | |
SPI_Device_2 | CS 2--->CE | GPIO21 | 独立,用作设备2的片选。 | |
UART | UART_1 -485 | TX | GPIO17 | 默认的UART1发送引脚。 |
RX | GPIO18 | 默认的UART1接收引脚。 | ||
UART_2 -ttl | TX | GPIO15 | 通用GPIO,干净无冲突。 | |
RX | GPIO16 | 通用GPIO,干净无冲突。 |
说明,其中UART_1 我是通过TTL转RS485 连接MODBUS的通讯设备。
YAML文件代码:
安装模块
写好YAML后,就需要进行安装,由于我们前面已经将ESP32和ESPhome进行了连接,现在就可以通过wifi进行安装了,另外需要注意的,需要配置https,才可以在线安装,如果是http,那可能需要保存到本机,然后通过数据线进行安装。
由于安装的时候,需要远程下载一些必须的模块应用,需要外网,国内下载速度超级慢或无法下载,可以通过VSCODE+插件PlatformIO IDE,在本地配置下载好,毕竟win系统要灵活一些,然后把C:\Users\你的用户名.platformio下的packages和platforms文件夹复制到docker的映射文件夹:esphome(我的映射文件夹).esphome\platformio下面,最好也带上cache文件夹一起复制。
上图提示需要:
platformio/framework-arduinoespressif32 @~3.20005.0
如果你不能外网,就算采用VSCODE+插件PlatformIO IDE也是很难配置的,漫长的等待我是经历过的,所以,ESP32-S3和ESP8266-D1mini所需的文件,我可以通过网盘分享出来,给需要的兄弟们。
这是ESP32打来网页功能,自带的网页监控画面,目前我没有连接传感器,所以,没数值。
home assistant整合
整合到home assistant中比较简单,添加设备,就可以找到你目前配置好的ESP32,在home assistant中,可以完成数据的曲线表达,逻辑控制功能,这里网上的教程比较多,我就不做更多介绍了
附件:
platformio.zip