基于ESP32S3的智能家居控制面板系统设计
智能家居控制面板是一种可控制全屋智能设备的入口设备,通过Wi-Fi 或以太网接口的方式连接云平台,同步全屋智能设备到面板上,在面板上可以随时的监控各种设备以及一键执行特定场景的功能,它具有操作简单方便、显示直观、方便安装部署等方面优点。
本文引用地址:https://www.eepw.com.cn/article/202308/449955.htm目前主流的带屏控制面板基本采用安卓系统,安卓系统功能强大,但系统复杂需经过多方面的适配工作和精简,另外采用安卓方案的控制面板整体成本会较高,不易推广;本文基于ESP32S3 方案设计的控制面板开发高效,系统稳定性强,成本上也具有很大的竞争力。
1 硬件设计
硬件系统主控采用乐鑫官方的ESP32S3-WROOM-1 模组,ESP32S3 是一款低功耗的 MCU 系统级芯片(SoC),支持2.4 GHzWiFi 和低功耗蓝牙(Bluetooth® LE) 双模无线通信。芯片集成了Xtensa® 32 位LX7 双核处理器、超低功耗协处理器、WiFi 基带、蓝牙基带、RF 模块以及外设,其运行主频最高可达240 M,可用GPIO 口高达45 个满足大部分使用场景,支持QSPI、QuadSPI、Octal SPI 等高速接口。ESP32S3-WROOM-1 模组在ESP32S3 芯片基础上,内置了时钟电路、WiFi 电路、扩展Flash和Ram,极大地方便了开发者使用。
整体硬件系统主要包括电源模块、主控模块、屏驱动模块、麦克风电路模块、喇叭功放模块,整体的硬件系统如图1。
图1 硬件系统框图
其中电源模块采用一般常规86盒面板的设计方式,即电源部分和核心部分进行分离,电源部分需接入220 V交流市电,然后再进行变压、整流、滤波、稳压处理等到较稳定的5 V 直流电压供给核心部分,而核心部分根据不同模块的供电需要再进行降压处理。主控模块使用了ESP32S3-WROOM-1 模组,因此极大简化了硬件设计,但仍要预留UART 下载电路和IO0 下载使能管脚、复位信号这些关键的功能管脚;屏驱动模块接口采用QSPI 方式连接GC9501 屏幕驱动芯片,QSPI 可同时传输4 bit 的信号,因此相比于传统的SPI 接口,QSPI 具有更高的传输效率,同时也会增加IO 口的使用数量,背光控制电路上采用了1 个三极管作为开关,当屏需要调光时可控制PWM 信号方式控制屏的亮度大小;麦克风模块采用模拟双麦,接到ES8388 ADC 接口上,转成I2S 信号送入ESP32S3 中,ESP32S3 内部自带I2S 音频总线,可采集处理I2S 信号;喇叭驱动电路由ESP32S3 输出I2S 信号,给到ES8388 的DAC 接口,再由ES8388 输出模拟信号给到功放电路进行放大再输出到喇叭中,这里功放采用CS8122 模拟功放这款D 类放大器,最大支持3W 功率输出,通过设定输入电阻可设置放大倍数,本设计采用47 K 电阻值,放大倍数约6.3倍,满足家居的使用场景,在ES8388 电源端需1 μF 去耦电容旁路到地以确保其能有更高的效率和滤除低频噪音;按键则使用3 个GPIO 口并下拉到地。
2 软件设计
乐鑫以开放生态的理念对自有产品进行管理维护,每个人都可以从乐鑫官方指定的地址获取开发SDK,本软件设计采用稳定成熟的esp-idf 开发SDK 对ESP32S3进行开发,整体的软件架构如图2。
图2 软件架构
esp-idf 是一套以FreeRTOS 为基础的开发框架,它部署简单,资料丰富,文件架构清晰。本设计以espidf开发框架为基础,整体的程序大致可分为4 层,描述如下。
应用开发层,程序最主要的工作就是在这一层开发,包括核心的IOT 网络通信协议,界面设计等功能;界面设计采用开源的轻量级的嵌入式图形库LVGL,LVGL包含大量可用的控件,并且移植简单,接口丰富,可快速的设计出友好的UI 界面;语音识别则使用esp-sr 这个乐鑫官方推出的AI 语音识别组件,在通过I2S 驱动获取到原始PCM 音频数据后送入esp-sr 识别库中,可快速实现唤醒词、离线命令词的响应;IOT 协议是在mqtt 组件基础上进行了封装和开发,实现了与云端连接功能;语音播报通过提前内置好语音格式文件,在程序需要的时候加载到内存中,然后将数据通过I2S 输出到外设上;设备数据管理通过esp-idf 的nvs 存储功能,将IOT 同步过来的设备数据保存在内存和Flash 中,当需要时显示在屏幕上。
应用框架则是esp-idf 针对一些常用的功能进行封装好的库,用户无须再去实现或移植这些常用的程序功能,比较典型的有mqtt、lwip、spiffs 文件系统、OTA、加密算法、json 等,这层需要多了解才能更好的设计出上层应用程序。
设备驱动则比较贴近底层,这一层是直接操作硬件,并向上提供可靠的接口,在本系统设计中,用到了屏幕信号传输的QSPI 接口驱动和DMA 传输驱动、WiFi 驱动、基于GPIO 轮询方式实现的按键响应、I2S 数据传输。这一层具体实现一般来说开发者无需关注。
内核层,整个程序架构都是完全基于FreeRTOS 系统实现,FreeRTOS 是一个完全开源免费的嵌入式实时操作系统,具有使用简单、稳定性强、功能强大、占用资源小等优点。提供了操作系统中常见的任务管理、信号量、队列、事件组等这些功能,使得在这些功能基础上可以设计出模块化的代码,更好地维护程序。
3 运行流程
控制面板核心的功能便是监控其他智能家居设备,这需要面板接入到云端平台中,获取用户的设备列表同步到面板上,用户可通过按键操作,也可通过语音方式进行控制,形成控制指令后发送到云端平台,再由云平台进行转发,其中设备的同步流程如图3。
图3 设备同步流程
面板因为是使用Wi-Fi 连接到云平台,因此第一次使用需要用户手动进行配网,ESP32S3 有ble 功能,用户使用APP 进行蓝牙配网后,将同时绑定了控制面板,用户就可以在手机APP 上对面板进行操作。用户在手机APP 上操作将其他智能家居设备添加到控制面板设备上时,控制面板会收到一个同步指令,然后向云平台发起http 请求,请求用户的设备列表信息,当请求成功后,清除内存中原来的设备列表信息然后更新,并将设备信息显示在内存上,以下是完整的语音控制流程。
控制面板一直处于外部采集语音状态中,当从语音系列中检测到唤醒词的语音信号,进行内置的唤醒反馈音频播报后,开始VAD 检测,VAD 检测可以检测出当前的人声语音的活动状态,只有检测到有人声活动状态才将语音信号送往在线语音平台,这样可以减少数据流量,增加识别率,录音送往语音平台后,语音平台开始进行asr 语音转文字识别,然后执行nlp 自然语言识别,识别出用户的操作意图,当命中后向云平台发送操作请求,云平台收到在线语音平台的操作请求后,向对应的在线设备发送相应的操作指令,而控制面板则等待语音平台返回的播报音地址,通过播报音地址下载相关的音频数据后进行播报。另外,面板也可使用按键进行操控,,3 个按键定义为左、确定、右功能,左右选择要操作的设备,确定键是触发设备的开关,功能较简单,当触发设备开关时,控制面板会往云平台发送1 条控制指令,云平台收到后将此指令转发给相应设备,然后反馈设备状态给控制面板更新显示,相比于语音操作,按键操作流程较为简单,这里不再叙述。
图4 语音控制流程
4 结束语
本文设计一款基于ESP32S3 的带屏智能家居控制面板,可接入云平台,具有语音识别功能,使用简单,功能强大,成本低,具备极为广阔的市场前景。
(本文来源于《电子产品世界》杂志2023年8月期)
评论