<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 設計應用 > 基于ESP32S3的智能家居控制面板系統設計

          基于ESP32S3的智能家居控制面板系統設計

          作者:譚偉偉(深圳康佳電子科技有限公司,深圳 518057)時間:2023-08-26來源:電子產品世界收藏
          編者按:設計了一款用于控制智能家居設備的帶屏控制面板,主控部分采用樂鑫ESP32S3系統級芯片并自帶WIFI功能,屏幕使用LCD液晶屏QSPI接口;面板自帶3個按鍵可自定義控制功能;語音采用ES8388編解碼芯片和雙麥拾音;系統可支持語音控制。

          是一種可控制全屋智能設備的入口設備,通過Wi-Fi 或以太網接口的方式連接云平臺,同步全屋智能設備到面板上,在面板上可以隨時的監控各種設備以及一鍵執行特定場景的功能,它具有操作簡單方便、顯示直觀、方便安裝部署等方面優點。

          本文引用地址:http://www.ex-cimer.com/article/202308/449955.htm

          目前主流的帶屏基本采用安卓系統,安卓系統功能強大,但系統復雜需經過多方面的適配工作和精簡,另外采用安卓方案的整體成本會較高,不易推廣;本文基于 方案設計的控制面板開發高效,系統穩定性強,成本上也具有很大的競爭力。

          1 硬件設計

          硬件系統主控采用樂鑫官方的-WROOM-1 模組, 是一款低功耗的 MCU 系統級芯片(SoC),支持2.4 GHz 和低功耗藍牙(Bluetooth? LE) 雙模無線通信。芯片集成了Xtensa? 32 位LX7 雙核處理器、超低功耗協處理器、 基帶、藍牙基帶、RF 模塊以及外設,其運行主頻最高可達240 M,可用GPIO 口高達45 個滿足大部分使用場景,支持QSPI、QuadSPI、Octal SPI 等高速接口。ESP32S3-WROOM-1 模組在ESP32S3 芯片基礎上,內置了時鐘電路、 電路、擴展Flash和Ram,極大地方便了開發者使用。

          整體硬件系統主要包括電源模塊、主控模塊、屏驅動模塊、麥克風電路模塊、喇叭功放模塊,整體的硬件系統如圖1。

          1693012095129876.png

          圖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。

          1693012192726516.png

          圖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。

          image.png

          圖3 設備同步流程

          面板因為是使用Wi-Fi 連接到云平臺,因此第一次使用需要用戶手動進行配網,ESP32S3 有ble 功能,用戶使用APP 進行藍牙配網后,將同時綁定了控制面板,用戶就可以在手機APP 上對面板進行操作。用戶在手機APP 上操作將其他設備添加到控制面板設備上時,控制面板會收到一個同步指令,然后向云平臺發起http 請求,請求用戶的設備列表信息,當請求成功后,清除內存中原來的設備列表信息然后更新,并將設備信息顯示在內存上,以下是完整的語音控制流程。

          控制面板一直處于外部采集語音狀態中,當從語音系列中檢測到喚醒詞的語音信號,進行內置的喚醒反饋音頻播報后,開始VAD 檢測,VAD 檢測可以檢測出當前的人聲語音的活動狀態,只有檢測到有人聲活動狀態才將語音信號送往在線語音平臺,這樣可以減少數據流量,增加識別率,錄音送往語音平臺后,語音平臺開始進行asr 語音轉文字識別,然后執行nlp 自然語言識別,識別出用戶的操作意圖,當命中后向云平臺發送操作請求,云平臺收到在線語音平臺的操作請求后,向對應的在線設備發送相應的操作指令,而控制面板則等待語音平臺返回的播報音地址,通過播報音地址下載相關的音頻數據后進行播報。另外,面板也可使用按鍵進行操控,,3 個按鍵定義為左、確定、右功能,左右選擇要操作的設備,確定鍵是觸發設備的開關,功能較簡單,當觸發設備開關時,控制面板會往云平臺發送1 條控制指令,云平臺收到后將此指令轉發給相應設備,然后反饋設備狀態給控制面板更新顯示,相比于語音操作,按鍵操作流程較為簡單,這里不再敘述。

          image.png

          圖4 語音控制流程

          4 結束語

          本文設計一款基于ESP32S3 的帶屏智能家居控制面板,可接入云平臺,具有語音識別功能,使用簡單,功能強大,成本低,具備極為廣闊的市場前景。

          (本文來源于《電子產品世界》雜志2023年8月期)



          評論


          相關推薦

          技術專區

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();