色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于LVGL驅動的OLED屏的FFT聲音實時可視化

柴火創客空間 ? 來源:柴火創客空間 ? 2023-11-25 14:20 ? 次閱讀

本項目旨在利用LVGL驅動的 Xiao-expansion-board的OLED顯示屏實現FFT聲音數據的實時可視化。關鍵內容包括利用LVGL庫在OLED屏幕上進行數據可視化展示,在XIAO ESP32S3 Sense上進行聲音數據的高速采集和預處理,以及同步進行FFT (快速傅里葉) 變換計算。該項目利用了XIAO ESP32S3 Sense開發板的I2S麥克風組件和XiaoExpansion board的OLED實現音頻數據可視化的過程,深入地了解聲音數據處理與可視化的技術細節,為實時聲音及音樂數據監測與展示提供參考和應用價值。

材料清單

硬件

XIAOESP32S3 Sense

XiaoExpansion board

軟件:

Visual Studio Code

STEP1 - LovyanGFX驅動oled屏幕

XiaoExpansionboard拓展了多個grove接口,同時還配備了一個入門級別的ssd1306_oled,按照常規ssd1306就該使用u8g2這樣的功耗上古神器來驅動,但隨著很多高性能嵌入式開發板出現了,圖形驅動更新迭代的速度也加快了,驅動ssd1306也有了更多選擇。我們值得擁有最好的, 本項目中使用LovyanGFX圖形驅動庫來驅動ssd1306。LovyanGFX庫受TFT_eSPI啟發,深度改造而來,是很多大眾創客的摯愛,它不單只可以驅動常見的LCD屏幕,同時還可以支持一些oled屏幕,使用這個庫使得最簡單入門級別的ssd1306 oled屏幕也可以共享LCD屏幕才有的作圖函數。

在本項目完成了對xiao系列擴展板上的ss1306的適配,更進一步地,按照當下最流行的lvgl圖形庫的作圖機理進行了移植,極大的豐富了xiao擴展板的ssd1306的應用場景,希望你也能從中受到啟發,這個項目能為你今后的工作帶來便利。

5dc4110e-8b48-11ee-939d-92fbcf53809c.png5dcce1e4-8b48-11ee-939d-92fbcf53809c.png

5dd76592-8b48-11ee-939d-92fbcf53809c.png

STEP2 -基于ssd1306的lvgl移植

傳統的圖形繪制庫(例如經典TFT_eSPI,Adafruit_GFX,Lovyan_GFX等)可以幫助用戶快速的完成方案。LVGL(Light and Versatile Graphics Library)的出現給嵌入式開發在最終產品呈現上提供了一種更優雅的解決方案。LVGL相對于傳統圖形庫更適合用于嵌入式系統,它在性能、資源占用和靈活性方面都有一定的優勢。然而在ssd1306上運行lvgl曾經是多么高遠的夢想呀,如今我們在Arduino編程環境上就可以輕松使用上,也可以共享廣闊的開源繁榮,是一次重大的進步。

移植完成后,在ssd1303上可以流暢運行lvgl的項目,但在程序設計的時候注意顏色最好能指定白色或者黑色,這樣顯示效果更清晰。

LVGL它與傳統的圖形庫有幾個顯著的差異:

1.硬件加速支持:LVGL具有對硬件加速的支持,可以利用硬件功能來加快圖形渲染速度和降低CPU負載,而傳統的圖形庫則通常依賴于軟件渲染。

2. 內存需求:LVGL設計時考慮了嵌入式系統的資源限制,因此在內存占用上更為高效,這使得它在資源受限的嵌入式設備上表現更出色。

3. 事件處理:LVGL提供了靈活且強大的事件處理機制,能夠方便地實現觸摸屏、按鍵等輸入設備的交互,而傳統圖形庫在這方面可能需要額外的定制和開發。

4. 主題和樣式:LVGL提供了豐富的主題和樣式支持,可以輕松地定制界面外觀和風格,而傳統圖形庫可能需要較多的工作來實現相同的效果。

5. 跨平臺支持:LVGL被設計成可跨平臺使用,可以在不同的嵌入式系統上運行,而傳統圖形庫可能需要針對特定平臺進行適配或者重新開發。

5de25826-8b48-11ee-939d-92fbcf53809c.png

STEP3-聲音頻譜解析

(1)I2S麥克風的設置

XIAOESP32S3 Sense除了裝備有攝像頭還有一個I2Smicrophone,所以可以開展天馬行空的語音類的項目。本項目正是利用了I2S microphore的優良特性,在本項目中發揮了鍵作用。i2s_config 中我們主要關注的參數包括sample_ratedma_buf_cout、dma_buf_len這3個參數。采樣率、dma數量、dma_buf長度參數的不同會對數據最終呈現產生明顯區別。采樣率越快就更能捕獲聲音的細節信息,但也不是可以無限的放大,我這里設了64000,意思是1秒鐘能采集64000個數值,這個能力是ADC機制的麥克風無法企及的。DMA 是 "Direct Memory Access"(直接內存訪問)允許外部設備直接訪問系統內存,而無需CPU的干預。這樣可以提高數據傳輸的效率,減少對CPU的負擔,從而提升系統整體性能。這里我們用一個比喻來幫助大家理解體會DMA和MCU之間的關系,DMA它就像會自己獨立好學的孩子,它完成“作業”后,就會向老爸(cpu/mcu)報告,然后在老爸忙檢查作業的時候,這個好孩子又自覺得跑去做另一門作業了,一刻也沒停過,反倒老爸忙個不停。這樣理解的話dma_buf_count 參數至少是2,(就是給孩子布置兩份作業一個數學,一個語文,輪流干,不然做完一門作業他就沒事干了,肯定會跑去玩手機,也可設為3,多布置一份英語作業)。dma_buf_len這里呢,就更有意思了,因為好孩子一把作業做完就會立即送去給老爸看,如果這孩子做一個題目就去給老爸看,就不斷的去打擾老爸,老爸就會很煩,老爸就跟孩子說你把這一整頁都做完了再來找我,所以為了減少對cpu的占用次數和時間,也把這參數設得盡量大,但也有個范圍是8-1024,這樣孩子跟老爸默契的配合下,老爸工作安心工作,孩子認真學習,其樂融融,大家的工作都完成得很漂亮。

5f7f2524-8b48-11ee-939d-92fbcf53809c.png? ??

5f9be8c6-8b48-11ee-939d-92fbcf53809c.png

(I2S調參指南)

(2)FFT數據處理

在臺面上我們只看到兩個入口函數,第一步用FreeRTOS 在esp32的第二個核心上創建一個音頻數據處理任務,這個任務的句柄是processing_task_handle,第二個是 i2s_sampler.start 函數,我們把剛才配置好的i2s設置傳遞給它,它就會在后臺默默的干活并通過上述句柄將dma采集到的數據釋放出來。在I2SSampler里面FreeRTOS的經典招式都用上了,包括消息隊列,消息直接通知,多任務創建,看似慌亂,實際是在密鑼緊鼓的忙乎著給老板們“做飯”。另外一個功臣是Processor,它就是FFT的化身,它接收了I2SSampler傳來的消息,然后嚼爛消化成漂亮干凈的數據。我就是喜歡這樣的好同事,一直默默無聞地工作,做好事不留名。實際這些在后臺默默無聞埋頭苦干的小伙伴們才這個項目的精華部分。

5fc507d8-8b48-11ee-939d-92fbcf53809c.png

(3)LVGL動態繪圖

我們采用一個振幅更新函數(bar_value_update)來處理頻譜和屏幕大小適配的工作,它接受一個傅里葉變換計算得到的浮點型數組mag,循環遍歷mag數組的每隔兩個元素,計算它們的平均值ave,并將其與窗口高度進行比較得到柱狀圖的值。整體邏輯是計算加權平均值,然后根據條件判斷,更新柱狀圖的值和峰值,并且采用了一階滯后的平滑處理,使得柱狀圖的變化更加平穩。

而圖形的繪制關鍵環節在于把頻譜對象作為一個容器進行繪制(spectrum_draw_event_cb),繪圖沒有采用lvgl常規的使用預設的作圖函數,而是采用底層的繪圖方法。繪圖實際發生在LV_EVENT_DRAW_POST(繪圖結束后)事件,會對頻譜對象進行繪制操作。整個過程中使用了繪制矩形(lv_draw_rect)、繪制線條(lv_draw_line)機制等。矩形圖代表瞬時的頻譜強度,線條用于代表頻譜峰值的滯后響應,由于線條的寬度是2 像素,所以看起來也是一個小長方體。它通過循環遍歷一個大小為頻譜分析結果數據SAMPLE_SIZE的數組,繪制矩形和兩條線條,其中bar_chart和bar_chart_peaks是用于確定柱狀圖高度的數據數組。快速地在spectrum_obj對象上繪制柱狀圖,并通過柱狀圖的高度數據進行實時更新。即使是在非黑即白的Oled屏上也能夠響應及時,產生了良好的動態效果。

5feb8958-8b48-11ee-939d-92fbcf53809c.png

總結

最終在xiao expansion board的屏幕上展示了經過FFT處理的音樂信息,它能夠即時的對當前麥克風采集到聲音作出反饋。它就好像是一座小型的音樂的噴泉,在水平面被音符的動能彈起,形成了美麗的水花飛濺的壯觀場景。每一個頻率成分就如同飛濺的水花一樣,展現出音樂中多姿多彩的細節和紋理,從低頻的穩重沉郁到高頻的輕盈活潑,每個音符都呈現出獨特的張力與韌性。充分展現了FFT解析音樂的魅力和神奇之處,通過這種方式讓人仿佛能夠透過頻譜數據看到音樂的靈魂,令人陶醉。






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FFT
    FFT
    +關注

    關注

    15

    文章

    434

    瀏覽量

    59366
  • OLED屏
    +關注

    關注

    0

    文章

    162

    瀏覽量

    20846
  • SSD1306
    +關注

    關注

    3

    文章

    40

    瀏覽量

    13623
  • 快速傅里葉變換

    關注

    0

    文章

    13

    瀏覽量

    1686
  • LVGL
    +關注

    關注

    1

    文章

    83

    瀏覽量

    2957

原文標題:創客項目秀|基于LVGL驅動的OLED屏的FFT聲音實時可視化

文章出處:【微信號:ChaiHuoMakerSpace,微信公眾號:柴火創客空間】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    可視化MES系統軟件

    管理層以圖表、圖像形式將過程控制數據、質量控制數據、實時更新的數據和歷史統計的數據可視化展示,讓管理者更直觀地管理生產現場。最后,可通過接口管理平臺實現與ERP,MES系統軟件,PDM,CAPP等系統信息
    發表于 11-30 19:55

    可視化電子看板系統的崗位需求

    的角度來說,企業看板可以分為傳送看板(作用于工序間的準時供應)、生產看板(作用于工序內的生產指導)、管理看板(作用于實時管理、外驅動力)、績效看板(作用于員工自省,內驅動力)、臨時看板。從崗位需求談
    發表于 10-19 20:07

    有了它,0基礎也能做大可視化

    設備對BI軟件來說就只是個設備,重頭戲是在大可視化報表的設計上。很多人,特別是新手可能不知道該怎么去做一份大可視化報表。這個時候你就
    發表于 12-24 14:01

    可視化報表也能自助分析了

    不管是在什么樣規格的大設備上展示的大可視化分析報表,都能做自助式分析。也就是任意瀏覽者都能隨時點擊切換字段與維度組合,從而切換到任意角度進行數據可視化分析。大
    發表于 02-06 10:36

    可視化設計模板 | 主題皮膚(報表UI設計)

    下載使用可視化設計模板,減少重復性操作,提高報表制作效率的同時也確保了報表風格一致,凸顯關鍵數據信息。 軟件:奧威BI系統,又稱奧威BI數據可視化工具 所屬功能板塊:主題皮膚上傳下載(數據
    發表于 09-12 10:10

    制作大可視化報表時需要注意什么

    看別人家的大做得直觀又好看,自己也想做,那么自己做大可視化難嗎?其實還真不算難,只要有BI數據可視化工具,你就能自由發揮,制作有個性又直觀的大
    發表于 10-11 15:27 ?791次閱讀

    Pyecharts制作可視化詳解

    前兩天發了一篇《用Python制作可視化,特簡單!》,留言區非常火爆,發現大家都對可視化部分非常感興趣。 而恰好大可視化這一部分又沒太
    的頭像 發表于 10-26 09:42 ?3541次閱讀
    Pyecharts制作<b class='flag-5'>可視化</b>大<b class='flag-5'>屏</b>詳解

    使用樹莓派Pico開發板制作實時音頻光譜圖可視化

    本期教程將會通過使用一塊帶有外置數字麥克風和 TFT LCD 顯示的樹莓派 Pico 開發板制作一個實時音頻光譜圖可視化器。有了它,你就可以將你周圍環境的實時
    的頭像 發表于 10-24 10:49 ?1966次閱讀
    使用樹莓派Pico開發板制作<b class='flag-5'>實時</b>音頻光譜圖<b class='flag-5'>可視化</b>器

    如何實現園區大可視化

    如何實現園區大可視化? 1.建立孿生模型:首先需要建立園區的孿生模型,即一個數字的虛擬模型,反映了園區的實際情況、結構、設備、人員等信息。這個模型可以通過傳感器、監控設備、GIS 數據等
    的頭像 發表于 06-19 15:39 ?410次閱讀
    如何實現園區大<b class='flag-5'>屏</b><b class='flag-5'>可視化</b>?

    數據可視化的作用和意義

    數據可視化是指利用大屏幕設備展示數據信息,通過圖表、圖像、動畫等視覺手段將數據呈現出來,以便用戶能夠直觀、清晰地理解數據背后的含義和關聯。在信息化時代,數據已經成為企業決策和運營的重要依托,而
    的頭像 發表于 06-03 17:56 ?661次閱讀

    智慧大是如何實現數據可視化的?

    智慧大,作為數據可視化的重要載體,已在城市管理、交通監控、商業運營等領域廣泛應用。本文旨在闡述智慧大實現數據可視化的關鍵技術和方法,包括數據源管理、數據處理、視覺編碼、用戶界面與交
    的頭像 發表于 06-04 15:02 ?598次閱讀
    智慧大<b class='flag-5'>屏</b>是如何實現數據<b class='flag-5'>可視化</b>的?

    數據可視化 開源

    在當今信息爆炸的時代,數據已經成為各個行業決策制定和業務發展的關鍵。為了更直觀、準確地理解和利用海量數據, 大數據可視化 成為一種強大的工具。通過將數據以圖表、圖形等形式展示在大屏幕上,不僅
    的頭像 發表于 06-27 16:06 ?402次閱讀
    大<b class='flag-5'>屏</b>數據<b class='flag-5'>可視化</b> 開源

    智慧能源可視化監管平臺——助力可視化能源數據管理

    博達可視化設計平臺在智慧能源領域的價值體現在實時監控、數據可視化、決策支持和效率提升等方面。借助該平臺,企業可以輕松搭建智慧能源類可視化
    的頭像 發表于 11-29 10:00 ?274次閱讀
    智慧能源<b class='flag-5'>可視化</b>監管平臺——助力<b class='flag-5'>可視化</b>能源數據管理

    如何找到適合的大數據可視化系統

    選擇合適的大數據可視化系統是企業或組織在數字轉型過程中至關重要的一步。一個優秀的大數據可視化系統能夠
    的頭像 發表于 12-13 15:47 ?107次閱讀

    什么是大數據可視化?特點有哪些?

    數據可視化是指通過大屏幕展示大量數據和信息,以直觀、可視化的方式幫助用戶理解和分析數據。這種展示方式通常用于展示復雜的數據集、實時監控系統、企業管理儀表盤等。以下是關于 大
    的頭像 發表于 12-16 16:59 ?130次閱讀
    主站蜘蛛池模板: 午夜免费福利小电影| 精品四虎国产在免费观看| 99C视频色欲在线| 一个人的视频全免费在线观看www| 亚洲 欧美 另类 中文 在线| 宿舍BL 纯肉各种PLAY H| 日本无码专区亚洲麻豆| 秋霞最新高清无码鲁丝片| 欧美精品华人在线| 欧美日韩一区不卡在线观看| 欧美xxxxb| 热九九99香蕉精品品| 日本色呦呦| 少妇无码吹潮久久精品AV网站| 日韩a视频在线观看| 日韩欧美三区| 天堂视频在线观看免费完整版| 特黄特色大片免费播放器9| 十八禁肉动漫无修在线播放| 视频一区二区三区蜜桃麻豆| 王晶三级作品| 手机在线观看毛片| 国产色精品久久人妻无码| 又黄又爽又无遮挡在线观看免费| 一区视频免费观看| 中文字AV字幕在线观看| 91久久线看在观草草青青| 99久酒店在线精品2019| 扒开美女的内衣亲吻漫画| 国产AV电影区二区三区曰曰骚网| 国产露脸A片国语露对白| 精品日产1区2卡三卡麻豆| 牢记永久免费网址| 青青草干免费线观看| 无码乱人伦一区二区亚洲| 亚洲天堂999| 99热精品一区| 国产精品爽爽久久久久久竹菊| 激情女人花| 欧美兽交YOYO| 亚洲AV无码国产精品午夜久久|