精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

柴火創(chuàng)客空間 ? 來源:柴火創(chuàng)客空間 ? 2023-11-25 14:20 ? 次閱讀

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

材料清單

硬件

XIAOESP32S3 Sense

XiaoExpansion board

軟件:

Visual Studio Code

STEP1 - LovyanGFX驅(qū)動oled屏幕

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

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

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

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

STEP2 -基于ssd1306的lvgl移植

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

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

LVGL它與傳統(tǒng)的圖形庫有幾個顯著的差異:

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

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

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

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

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

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

STEP3-聲音頻譜解析

(1)I2S麥克風(fēng)的設(shè)置

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

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

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

(I2S調(diào)參指南)

(2)FFT數(shù)據(jù)處理

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

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

(3)LVGL動態(tài)繪圖

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

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

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

總結(jié)

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






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FFT
    FFT
    +關(guān)注

    關(guān)注

    15

    文章

    434

    瀏覽量

    59305
  • OLED屏
    +關(guān)注

    關(guān)注

    0

    文章

    162

    瀏覽量

    20822
  • SSD1306
    +關(guān)注

    關(guān)注

    3

    文章

    40

    瀏覽量

    13599
  • 快速傅里葉變換
    +關(guān)注

    關(guān)注

    0

    文章

    13

    瀏覽量

    1680
  • LVGL
    +關(guān)注

    關(guān)注

    1

    文章

    80

    瀏覽量

    2911

原文標(biāo)題:創(chuàng)客項目秀|基于LVGL驅(qū)動的OLED屏的FFT聲音實時可視化

文章出處:【微信號:ChaiHuoMakerSpace,微信公眾號:柴火創(chuàng)客空間】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    何謂單片機編程的可視化?

    何謂單片機編程的可視化?可視化編程就是提供給用戶可視化的器件模塊配置界面使用戶在不用關(guān)心具體器件工作原理和設(shè)置的情況下直接生成所要配置的器件初始代碼及
    發(fā)表于 07-08 16:53

    可視化MES系統(tǒng)軟件

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

    如何把AD中非可視化區(qū)域物件移到可視化區(qū)域?

    AD中非可視化區(qū)域物件怎么移到可視化區(qū)域???
    發(fā)表于 09-10 05:36

    可視化電子看板系統(tǒng)的崗位需求

    的角度來說,企業(yè)看板可以分為傳送看板(作用于工序間的準(zhǔn)時供應(yīng))、生產(chǎn)看板(作用于工序內(nèi)的生產(chǎn)指導(dǎo))、管理看板(作用于實時管理、外驅(qū)動力)、績效看板(作用于員工自省,內(nèi)驅(qū)動力)、臨時看板。從崗位需求談
    發(fā)表于 10-19 20:07

    Python數(shù)據(jù)可視化

    Python數(shù)據(jù)可視化:網(wǎng)易云音樂歌單
    發(fā)表于 07-19 08:30

    有了它,0基礎(chǔ)也能做大可視化

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

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

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

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

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

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

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

    Pyecharts制作可視化詳解

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

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

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

    如何實現(xiàn)園區(qū)大可視化

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

    數(shù)據(jù)可視化的作用和意義

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

    智慧大是如何實現(xiàn)數(shù)據(jù)可視化的?

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

    數(shù)據(jù)可視化 開源

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