亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于ESP32桌面智能小擺件系統(tǒng)的設計

        2024-11-25 00:00:00陳鎧串陳國泰
        物聯(lián)網技術 2024年11期
        關鍵詞:系統(tǒng)設計

        摘 要:文中設計了一種基于ESP32的桌面智能小擺件。該小擺件系統(tǒng)由ESP32-S3微控制器、WM8978全功能音頻處理器、LCD觸摸屏幕顯示模塊、SD/TF卡讀寫模塊組成,具有時間顯示、天氣顯示、日歷顯示以及音頻播放等功能。該系統(tǒng)使用LVGL庫繪制相應的UI界面并采用FreeRTOS實時操作系統(tǒng)進行線程管理。經測試,該小擺件系統(tǒng)能按照預設的功能進行操作并顯示相應的內容。

        關鍵詞:桌面智能小擺件;ESP32;嵌入式系統(tǒng);LVGL;FreeRTOS實時操作系統(tǒng);人機交互

        中圖分類號:TP368.1 文獻標識碼:A 文章編號:2095-1302(2024)11-00-04

        0 引 言

        隨著各種高性能、低功耗的控制芯片不斷涌現(xiàn),智能桌面擺件已成為一種時尚、個性化的物品。當前網絡上雖已出現(xiàn)多種智能桌面擺件[1],但完整介紹并深入研究擺件設計的文獻卻很少。本文設計了一款基于ESP32的桌面智能小擺件,它是一款結合多種實用功能的智能產品,如音樂播放、天氣預報、圖片顯示、人機交互、時間和日歷顯示等,能夠提高人們的生活質量和生活便捷性。該小擺件系統(tǒng)使用ESP-IDF框架[2-4]中的FreeRTOS[5]來實現(xiàn)多任務實時運行。

        1 總體方案設計

        本文設計的智能小擺件系統(tǒng)以ESP32-S3模組作為核心模塊,實現(xiàn)時間顯示、天氣預報、日歷顯示、圖片顯示、音樂播放、屏幕背光設置等功能。圖1為桌面智能小擺件系統(tǒng)框圖。該系統(tǒng)上電后通過配置好的WiFi聯(lián)網,再從NTP服務器獲取實時日期時間;根據(jù)IP獲取當前城市,并通過HTTP GET方法獲取該城市的天氣數(shù)據(jù)。將這些從網絡上獲得的數(shù)據(jù)進行解析后顯示到屏幕上。日歷顯示功能將通過LVGL圖形庫[6]網絡上的日歷數(shù)據(jù)繪制在屏幕上,并顯示當前日期。圖片顯示功能則將SD卡內的圖片文件讀出并顯示在屏幕上。音樂播放功能是從SD卡上讀取相應的音樂文件并通過音頻處理芯片解析后播放出來。最后使用LVGL繪制一個菜單界面,通過上下滑動的方式進行APP切換,點擊APP圖標進入到相應的APP界面。向右滑動則是退出當前APP。

        2 硬件模塊設計

        硬件設計方面主要包含:電源的設計、串口下載電路的設計、LCD驅動電路的設計、音頻編解碼電路的設計。通過這幾大模塊共同實現(xiàn)桌面智能小擺件的相應功能。其中,電源電路設計實現(xiàn)了將TYPE-C接口提供的5 V電壓轉換至3.3 V電壓。圖2是ESP32引腳及其外接的網絡命名。

        2.1 系統(tǒng)電源電路設計

        主控模塊及其他模塊所需的工作電壓為3.3 V,本系統(tǒng)選用了具有固定輸出電壓的LDO芯片AMS1117S-3.3,用于對輸入電壓進行穩(wěn)壓并輸出3.3 V電壓,如圖3所示。圖中,C5為輸入端濾波電容,C6、C7為輸出端濾波電容。

        2.2 串口下載電路設計

        為了將調試的代碼下載到ESP32中的主控芯片,將USB轉串口芯片CH343P通過串口引腳(如圖4中網絡名RXD0和TXD0)與ESP32電路板進行連接。圖5則展示了實現(xiàn)程序自動下載的電路,引腳RTS和DTR通過2個三極管控制引腳EN及I/O0來選擇程序燒錄模式[7]。

        2.3 LCD驅動電路設計

        LCD屏幕通過SPI接口與ESP32連接,觸摸屏接口則通過I2C接口與ESP32連接。本設計使用的是裸屏并采用FPC座進行連接,如圖6所示。LCD模塊配備了背光引腳,該引腳通過N溝道MOSFET晶體管AO3400A進行控制,而具體的控制信號則來自引腳LCD_BL。

        2.4 音頻編解碼電路設計

        音頻編解碼芯片WM8978的I2S接口與ESP32連接(如圖7所示),同時還需要連接一些控制引腳,如復位引腳、MCLK時鐘引腳、左右聲道選擇引腳等。WM8978需要使用3.3 V電壓供電。WM8978的音頻輸入可以來自于麥克風或線路輸入,音頻輸出可以連接耳機或揚聲器[8]。在電路設計中,需要考慮音頻輸入輸出的電路設計,包括輸入輸出耦合電容、濾波電路等。WM8978的各項參數(shù)通過I2C總線進行配置,如圖7中的WM_SDA及WM_SCL為I2C的2個引腳。

        3 軟件程序設計

        3.1 開發(fā)環(huán)境的搭建

        本系統(tǒng)的ESP32開發(fā)環(huán)境是在Windows環(huán)境下搭建的。在安裝Visual Studio Code(簡稱VS Code)后繼續(xù)安裝ESP32插件,將VS Code配置成支持ESP32開發(fā)的IDE。ESP-IDF是一個用于ESP32和ESP32-S系列芯片的官方開發(fā)框架,提供了完整的開發(fā)工具鏈、SDK、示例代碼和文檔,可以幫助開發(fā)人員快速搭建ESP32開發(fā)環(huán)境,并開發(fā)出高效、穩(wěn)定的應用程序。在開發(fā)過程中,程序的編寫、編譯需要在ESP-IDF框架下進行,采用組件(component)的方式管理框架中的功能模塊,編譯前可通過make menuconfig指令管理各個組件,再使用VS Code進行編譯,最后通過串口將程序傳到ESP32中。

        3.2 FreeRTOS設備驅動框架

        FreeRTOS是一種實時操作系統(tǒng),在實現(xiàn)上其僅提供操作系統(tǒng)內核,包括任務管理、隊列管理、信號量管理、時間管理和內存管理模塊,其設備驅動框架實現(xiàn)過程如下[9]:

        (1)創(chuàng)建驅動程序:開發(fā)者需要編寫設備驅動程序來操作外設,驅動程序需要實現(xiàn)特定的接口函數(shù),包括初始化、讀取、寫入等操作。

        (2)創(chuàng)建設備對象:開發(fā)者需要創(chuàng)建設備對象來表示特定的外設,設備對象需要包括一些基本的屬性,如名稱、ID、驅動程序指針等。

        (3)注冊設備對象:開發(fā)者需要將設備對象注冊到系統(tǒng)中,通常使用類似于設備樹的方式進行管理,以便系統(tǒng)能夠正確識別和操作這些設備。

        (4)實現(xiàn)設備驅動框架:開發(fā)者需要實現(xiàn)設備驅動框架,以提供操作設備的標準接口函數(shù),這些接口函數(shù)通常包括打開、關閉、讀取、寫入等。

        (5)使用設備對象:開發(fā)者可以使用設備對象來操作外設,這樣可以方便地訪問和控制設備,同時也可以提高代碼的可讀性和可維護性。

        在本系統(tǒng)設計中,主菜單程序及天氣界面的設計中用到了FreeRTOS的線程管理。

        3.3 LCD觸摸屏的軟件程序設計

        LCD觸摸屏的軟件程序設計包括初始化LCD屏幕以及觸摸屏模塊和相關驅動模塊的編寫。初始化設計包括SPI總線初始化、I2C總線初始化,以及LCD顯示參數(shù)和觸摸屏參數(shù)的設置等。在LCD顯示模塊的驅動程序編寫中實現(xiàn)了畫點、畫線、畫矩形、填充矩形、顯示字符等基本圖形顯示功能,并根據(jù)需要編寫了更高級的圖像顯示函數(shù)。對于觸摸屏模塊的驅動程序,編寫了讀取觸摸點坐標的功能,并實現(xiàn)了根據(jù)觸摸點坐標執(zhí)行相應操作的能力。之后進行了LVGL圖形庫的移植,并為LVGL圖形庫提供了適配的LCD顯示接口和觸摸接口。

        3.4 圖片解碼的軟件程序設計

        本設計中使用的圖片格式主要為PNG格式和JPG格式。PNG格式圖片解碼流程為:讀取PNG文件頭信息,包括寬度、高度、顏色類型、位深等;分離出PNG數(shù)據(jù)流中的各個chunk塊,如IHDR、IDAT、IEND等;解壓縮IDAT塊中的壓縮數(shù)據(jù),得到解壓縮的像素數(shù)據(jù);根據(jù)顏色類型和位深,將解壓縮后的像素數(shù)據(jù)轉化為RGB、RGBA或灰度像素數(shù)據(jù);將像素數(shù)據(jù)繪制到LCD屏幕上。JPG格式圖片的解碼流程為:讀取JPG文件頭信息,包括寬度、高度、顏色類型等;分離出JPG數(shù)據(jù)流中的各個marker,如SOF0、DQT、DHT、SOS等;根據(jù)DQT、DHT等數(shù)據(jù),對JPEG進行解碼,得到解碼后的像素數(shù)據(jù);將像素數(shù)據(jù)轉化為RGB、RGBA或灰度像素數(shù)據(jù);將像素數(shù)據(jù)繪制到LCD屏幕上。在具體的程序設計中,需要使用相應的庫函數(shù)或者開源庫來實現(xiàn)PNG和JPG的解碼,例如libpng、libjpeg等。同時,還需要根據(jù)具體的項目需求和硬件平臺特性進行適當?shù)膬?yōu)化,以提高解碼的效率和穩(wěn)定性。

        3.5 主菜單的程序設計

        在主菜單的程序設計中,首先需要創(chuàng)建一個容器,將其作為活動屏幕的子對象,以便在屏幕上顯示容器。之后設置容器的大小并關閉容器的滾動條,同時設置容器的彈性布局、容器的布局對齊方式、容器的滾動方向、容器的背景透明度和顏色、容器的邊框、容器內部元素之間的間隙等。接著往這個容器中添加相應的圖像按鍵。通過LVGL圖片轉換工具將圖片轉換為C數(shù)組的形式并放在程序中,通過調用LV_IMG_DECLARE將圖像數(shù)據(jù)聲明為程序中的常量,其中包含圖像的寬度、高度、像素格式和像素數(shù)據(jù),這些數(shù)據(jù)可供LVGL圖形庫使用,以便在圖形界面中顯示該圖像。最后通過調用lv_obj_scroll_to_view函數(shù)設置默認顯示的APP圖標。本設計創(chuàng)建了5個APP圖標,分別為天氣、日歷、圖片、音樂、設置,其中天氣圖標如圖8所示。采用上下滑動的形式切換APP,同時為每個APP圖標添加了事件回調,點擊相應APP圖標可進入到這個APP的界面中。通過右滑的方式退出當前APP。起初在程序初始化完成后,通過xTaskCreate創(chuàng)建LVGL任務線程,顯示主菜單界面。

        3.6 天氣時間界面的程序設計

        在天氣時間界面的程序設計中,首先初始化本頁面用到的樣式,包括背景色、邊框顏色、邊框寬度、內邊距、圓角半徑等。再初始化本頁面用到的控件,其中包括創(chuàng)建一個鋪滿屏幕的對象,在這個對象中添加城市、最高溫度、空氣質量、溫度圖標、濕度圖標、時間、日期、溫度數(shù)據(jù)、濕度數(shù)據(jù)等,如圖9所示。接著為以上各類控件訂閱主題,以便能夠實時更新時間、溫濕度、天氣等數(shù)據(jù)。再通過xTaskCreate創(chuàng)建天氣時間數(shù)據(jù)更新的任務線程,確保數(shù)據(jù)的實時性。而天氣的各類數(shù)據(jù)則通過HTTP客戶端的GET訪問心知天氣的API接口獲取,通過返回的JSON格式文本[10]解析所需要的數(shù)據(jù)。為了不占用系統(tǒng)資源,當未打開天氣APP時,系統(tǒng)將掛起天氣時間數(shù)據(jù)更新的線程,以便讓出一部分的資源。

        3.7 日歷界面的程序設計

        在日歷界面的程序設計中,使用了LVGL圖形庫。首先需要創(chuàng)建一個父對象,可以是屏幕或其他容器;再使用lv_calendar_create函數(shù)創(chuàng)建一個日歷的對象,并將此對象添加到最開始創(chuàng)建的父對象中;接著通過調用設置對象大小和位置的API來設置這個日歷對象的大小和所在位置,并配置lv_calendar對象的屬性(如設置日歷的日期、設置日歷顯示的月份、設置日歷頭等),再通過調用lv_obj_update_layout函數(shù)更新日歷的參數(shù)。而對于日歷的日期顯示,則是通過連接WiFi后的NTP時間獲取到當前的北京時間,接著將相應數(shù)據(jù)解析后傳給日歷界面進行顯示,其效果如圖10所示。

        4 結 語

        本文設計了一種基于ESP32桌面智能小擺件系統(tǒng)。實物測試顯示:該系統(tǒng)可以在桌面上以低功耗模式運行,并支持擴展和自定義,具有準確、實時和便捷的信息展示功能,例如展示當前時間、天氣預報等;在性能方面,該系統(tǒng)具有較高的穩(wěn)定性和響應速度,能夠在不影響其他并行任務的情況下完成所有既定任務。

        注:本文通訊作者為陳國泰。

        參考文獻

        [1]嘉立創(chuàng)EDA.立創(chuàng)開源硬件平臺[EB/OL]. [2023-11-11]. https://oshwhub.com/.

        [2]冷宇.基于ESP32的遠程家居控制系統(tǒng)設計[J].無線互聯(lián)科技,2022,19(24):86-88.

        [3]樂鑫科技. ESP-IDF物聯(lián)網開發(fā)框架[EB/OL].(2023-10-02). https://www. espressif.com.cn/ zh-hans/products/sdks/esp-idf.

        [4]郭志舒. 一種用于治療帶狀皰疹超聲波治療儀的研究[D].太原:中北大學,2023.

        [5] FreeRTOS官網. FreeRTOS實時操作系統(tǒng)[EB/OL]. (2023-02-17). https://freertos.org/zh-cn-cmn-s/.

        [6] LVGL官網. Light and Versatile Graphics Library [EB/OL].(2023-03-01). https://docs.lvgl.io/8.3/index.html#.

        [7]狄新宇,刁宇杰,朱泓宇,等.基于ESP32的智能物聯(lián)網臺燈設計[J].林業(yè)機械與木工設備,2023,51(1):47-51.

        [8]牛帥,張弛,董振華,等. WM8978音頻處理器的百度AI語音識別[J].單片機與嵌入式系統(tǒng)應用,2023,23(2):42-44.

        [9]趙楠. 基于嵌入式技術的智能家居系統(tǒng)設計與實現(xiàn)[D].沈陽:東北大學,2019.

        [10]李貞輝.基于JSON的數(shù)據(jù)交換系統(tǒng)設計[J].電腦知識與技術,2021,17(29):68-69.

        作者簡介:陳鎧串(2000—),男,研究方向為嵌入式技術、物聯(lián)網技術。

        陳國泰(1975—),男,博士,教授,研究方向為信號處理、電路技術。

        收稿日期:2023-10-08 修回日期:2023-11-09

        基金項目:福建省科技計劃自然科學基金項目(2021J01329)

        猜你喜歡
        系統(tǒng)設計
        Smartflower POP 一體式光伏系統(tǒng)
        WJ-700無人機系統(tǒng)
        ZC系列無人機遙感系統(tǒng)
        北京測繪(2020年12期)2020-12-29 01:33:58
        何為設計的守護之道?
        《豐收的喜悅展示設計》
        流行色(2020年1期)2020-04-28 11:16:38
        基于PowerPC+FPGA顯示系統(tǒng)
        半沸制皂系統(tǒng)(下)
        瞞天過?!律O計萌到家
        藝術啟蒙(2018年7期)2018-08-23 09:14:18
        連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
        設計秀
        海峽姐妹(2017年7期)2017-07-31 19:08:17
        精品国产麻豆免费人成网站| 国产精品久久夜伦鲁鲁| 久热香蕉av在线爽青青| 国产福利97精品一区二区| 中文字幕亚洲综合久久久| 日本精品一区二区三区在线观看| 欧美日韩精品一区二区视频| 老师粉嫩小泬喷水视频90| 久久中文精品无码中文字幕| 中文字幕第七页| 免费va国产高清不卡大片| 亚洲国产av中文字幕| 精品高清一区二区三区人妖| 日日噜噜夜夜狠狠va视频v| 毛茸茸的中国女bbw| 99福利影院| 丝袜美腿制服诱惑一区二区| 欧美xxxxx高潮喷水| 青青草原精品99久久精品66| 激情综合欧美| 日本精品免费一区二区三区| 成人影院羞羞的视频免费观看| 亚洲精品一品区二品区三区| 精品国际久久久久999波多野| 特级毛片a级毛片免费播放| 五月丁香六月综合激情在线观看| 视频精品熟女一区二区三区| 青草久久婷婷亚洲精品| 久久精品亚洲精品国产色婷| 亚洲av日韩av永久无码色欲| 亚洲AV无码成人精品区H| 白白色发布视频在线播放| 国产毛女同一区二区三区| 四虎影视永久在线观看| 最新国产日韩AV线| 无码a级毛片免费视频内谢| 久久精品亚洲精品国产区| 99国产精品99久久久久久| 人妻少妇av无码一区二区 | 亚洲永久精品日韩成人av| 久久狠狠爱亚洲综合影院|