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

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

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

自己動(dòng)手做一個(gè)好玩的POV顯示設(shè)備

KiCad ? 來源:KiCad ? 2024-12-25 15:15 ? 次閱讀

讀大學(xué)的時(shí)候就很喜歡這些開腦洞的小玩意兒。看到一個(gè)印度小哥用ESP32 做了個(gè)高分辨率的 POV,而且開源了全部的硬件和代碼,忍不住想分享給大家。

什么是 POV?

POV(Persistence of Vision)中文翻譯為“視覺暫留”,它的基本原理是使我們的眼睛能夠從獨(dú)立的圖像中感知連續(xù)的運(yùn)動(dòng),這也是電影中運(yùn)動(dòng)錯(cuò)覺的關(guān)鍵概念。實(shí)現(xiàn)原理其實(shí)也很簡單,就是把一定數(shù)量的 LED 安裝可以旋轉(zhuǎn)或者搖晃的桿子上,通過 MCU 對(duì) LED 編程,結(jié)合桿子搖晃和旋轉(zhuǎn)的特定頻率,就會(huì)在視覺上產(chǎn)生動(dòng)態(tài)的效果。下面的視頻可以直觀地理解 POV 的實(shí)現(xiàn)和效果:

你肯定在網(wǎng)上看到過很多這樣的項(xiàng)目,但它們大多分辨率很低,只能顯示一些文字和幾何圖形。而這位印度小哥創(chuàng)建的 POV 顯示屏不僅限于文本或簡單的形狀,他的 POV 顯示器可以顯示分辨率為 128 像素的圖像和動(dòng)畫,而且很容易制作。

項(xiàng)目概覽

項(xiàng)目選擇了 ESP32 模塊作為顯示器的大腦,因?yàn)樗阋恕⑷菀撰@得,而且功能強(qiáng)大。顯示器將有兩個(gè)旋轉(zhuǎn)臂,每個(gè)旋轉(zhuǎn)臂裝有 64 個(gè) LED,總分辨率為 128 像素。在 ESP32 的控制下,旋轉(zhuǎn)臂將以恒定的速度旋轉(zhuǎn),LED 燈以精心安排的模式閃爍。通過這種同步方式,顯示屏可以生成懸浮在半空中的圖像或文字,帶來流暢、連續(xù)的視覺體驗(yàn)。

POV 顯示器項(xiàng)目特點(diǎn):

128 像素分辨率。

幀頻為 20 FPS。

易于制造。

易于控制。

基于 ESP32。

完全開源。

配套網(wǎng)絡(luò)應(yīng)用程序,可輕松轉(zhuǎn)換圖像。

元器件 BOM

ESP32 WROOM 模塊 - x1

74HC595D 移位寄存器 - x16

CH340K USB - UART 控制器 - x1

TP4056 鋰離子充電器 IC - x1

AMS1117 3.3v LDO - x1

AO3401 P - MOSFET - x1

2N7002DW 雙 N - MOSFET - x1

霍爾效應(yīng)傳感器 - x2

SS34 二極管 - x1

Typc C USB 連接器 16 針 - x1

SMD LED 藍(lán)色 0603 - x128

775 電機(jī) - x1

直流電機(jī)速度控制器 - x1

SMD 電阻電容

SMD LED

SMD 輕觸開關(guān)

SDM 滑動(dòng)開關(guān)

連接器

3D 打印部件和安裝螺釘。

其他工具和耗材。

原理圖

完整的原理圖如下所示:

wKgZomcy1AOARzOdAASmM1MyAxA213.png

讓我們看一下原理圖的細(xì)節(jié),以便更好地理解。USB Type C 端口用于充電和編程。USB 端口的電源連接到 P 溝道 MOSFET U7 和二極管 D67 構(gòu)成的電源控制電路。連接器 J4 可用于提供外部 5V 電壓。同一端口還可用于連接無線充電器模塊,以備在不充電的情況下連續(xù)運(yùn)行。在電壓調(diào)節(jié)方面,使用了常用的 AMS1117 3.3V LDO,它能夠提供高達(dá) 1A 的電流,滿載時(shí)的壓降約為 1.1V。連接器 J3 用于連接外部開關(guān),以打開和關(guān)閉整個(gè)電路。為了給內(nèi)部電池充電,我們使用了 TP4056 充電控制器,其最大充電電流為 1A。現(xiàn)在我們來看看編程電路,它是圍繞 WCH 的 CH340K 芯片構(gòu)建的。為了實(shí)現(xiàn)自動(dòng)復(fù)位,我們使用了雙 MOSFET 2N7002DW?,F(xiàn)在,整個(gè)電路的大腦是一個(gè) ESP32-WROOM 模塊。我們之所以選擇這個(gè) SoC,是因?yàn)樗鼉r(jià)格便宜、易于獲得,而且功能強(qiáng)大,能夠以足夠的幀速率驅(qū)動(dòng)顯示屏。LED(像素點(diǎn))分別位于兩個(gè)旋轉(zhuǎn)臂,每個(gè)旋轉(zhuǎn)臂有 64 個(gè) LED(像素)。因此,我們總共有 128 個(gè)像素的分辨率。我們還使用了兩個(gè)霍爾效應(yīng)傳感器進(jìn)行轉(zhuǎn)速測量和位置感應(yīng)。在PCB中,我們?cè)驹O(shè)計(jì)了 SMD 封裝,但后來決定使用 TO-92 封裝的普通 A3144 傳感器,因?yàn)樗鼈兏菀撞少?,而且易于安裝到當(dāng)前的支架設(shè)計(jì)中。

wKgZomcy1AOAJh1mAAFPOy3P_4s998.png

wKgZomcy1AOAbZRTAAECfkUDNQ0407.png

下一部分是 LED 及其驅(qū)動(dòng)。我們使用 74HC595D 移位寄存器來驅(qū)動(dòng) LED。由于單個(gè) s74HC595 最多可以驅(qū)動(dòng) 8 個(gè) LED,因此總共使用了 16 個(gè)這樣的芯片來驅(qū)動(dòng)全部 128 個(gè) LED。我們使用了一個(gè) 1KOhms 電阻器來限制電流,但您可以根據(jù)自己需要的亮度來改變電阻值。由于有兩只旋轉(zhuǎn)臂,因此只需要轉(zhuǎn)半圈就能繪制整個(gè)畫面或圖像。一只旋轉(zhuǎn)臂繪制圖像的一半,另一只旋轉(zhuǎn)臂繪制圖像的另一半。通過這種方法,我們可以將幀頻提高一倍。顯示屏可以提供大約 20FPS 的幀頻。

wKgZomcy1ASAAWO5AAN57dmA448002.png

wKgZomcy1ASAKyfCAAOR9hMfgDI136.png

PCB

PCB 的尺寸約為 210 毫米 x 60 毫米。下面是 PCB 的頂層和底層。

wKgZomcy1ASAW-VHAAKlJEK7NM8159.png

wKgZomcy1ASAaBT0AAJOaCaD0Wc684.png

wKgZomcy1ASAdA5kAAJKFJR-xQw366.png

wKgZomcy1ASAa_ObAAIag-olS9w529.png 裝配完成后的樣子:

wKgZomcy1ASAdgI9AAHIs7Dm5TU625.png

wKgZomcy1AWAPzN0AAFUMmJhTY4013.png

wKgZomcy1AWANSatAAT56_7-L-Q531.png

工作原理

現(xiàn)在讓我們來看看 POV 顯示屏是如何工作的。請(qǐng)看下圖,我們將一個(gè)圓平均分成 32 塊。如果用這樣分割來的方式完成一幅圖像,必須在每次旋轉(zhuǎn)就繪制 32 行像素。在顯示每一行像素時(shí)時(shí),必須根據(jù)像素?cái)?shù)據(jù)來決定每個(gè)LED(像素)是點(diǎn)亮還是熄滅。通過快速旋轉(zhuǎn)和逐行點(diǎn)亮像素,就可以在觀察者眼中形成一幅連續(xù)的圖像。

wKgZomcy1AWAe0c5AANGrG8ZJxs528.png

圖像分割

在實(shí)際項(xiàng)目中,我們將每個(gè)圖像徑向分成 360 塊。也就是說必須在每次旋轉(zhuǎn)時(shí)畫 360 條相距 1 度的線來繪制圖像。

線條和像素

每條線上將有 64 個(gè)像素或 LED 燈(兩條手臂上共有 128 個(gè) LED 燈),這些像素或LED需要根據(jù)像素?cái)?shù)據(jù)進(jìn)行操作。

坐標(biāo)系統(tǒng)問題

一般圖像使用的是笛卡爾坐標(biāo)系。但為了在旋轉(zhuǎn) POV 顯示器上顯示圖像,我們必須使用極坐標(biāo)。在笛卡爾坐標(biāo)系中,位置由水平距離(x)和垂直距離(y)指定。而極坐標(biāo)則基于圓形網(wǎng)格,位置由半徑(r)和水平角度(θ)指定。因此,像素并不均勻:隨著與原點(diǎn)距離的增加,像素的面積也會(huì)增加,形狀也會(huì)改變。

wKgZomcy1AWAaZwgAAH96jJlFWw082.png

要從圖像中獲取像素?cái)?shù)據(jù),我們必須使用一些三角函數(shù)計(jì)算和插值法。然而,對(duì)每幅圖像的每個(gè)像素都進(jìn)行這樣的計(jì)算將耗費(fèi)大量時(shí)間,并會(huì)減慢像素的響應(yīng)時(shí)間。為了避免這種情況,并獲得極短的像素響應(yīng)時(shí)間和最高的刷新率,我們決定使用預(yù)計(jì)算值來處理圖像,這將在編碼部分進(jìn)行說明。根據(jù)我們目前的設(shè)置,繪制一幀或一幅分辨率為 128 像素、360 段的圖像大約需要 50 毫秒,因此有效幀頻為 20fps。

下一個(gè)挑戰(zhàn)是優(yōu)化圖像的存儲(chǔ)方式。使用傳統(tǒng)工具轉(zhuǎn)換的普通圖像陣列,每個(gè)像素也會(huì)占用 1 個(gè)字節(jié)的空間。也就是說,128x128 的圖像需要 16384 字節(jié)的空間。但這樣一來,我們?cè)诖a空間內(nèi)存儲(chǔ)的圖像數(shù)量就會(huì)受到限制。為了克服這個(gè)問題,并獲得更好的優(yōu)化效果,我們采用了一種新方法。每行圖像像素將存儲(chǔ)在 16 個(gè)字節(jié)中。每個(gè)字節(jié)將包含 8 個(gè)像素的數(shù)據(jù),即黑色或白色。然后使用一個(gè)簡單的函數(shù)對(duì)這些數(shù)據(jù)進(jìn)行解碼,得到實(shí)際的像素?cái)?shù)據(jù)。使用這種方法,一幅 128x128 像素的圖像只需要 2048 (128x16) 個(gè)字節(jié)空間。使用這種方法,我們可以將圖像的大小縮小 8 倍。

代碼 & 倉庫

所有的代碼及 KiCad 設(shè)計(jì)文件都可以在以下倉庫找到,這里就不再贅述:

https://github.com/Circuit-Digest/POV-Display

結(jié)束語

今天的分享就到這兒,感興趣的小伙伴趕緊動(dòng)手實(shí)踐吧!

部分內(nèi)容引用自: https://circuitdigest.com/microcontroller-projects/diy-pov-display-using-ESP32-Arduino

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

    關(guān)注

    7

    文章

    2706

    瀏覽量

    47468
  • 顯示屏
    +關(guān)注

    關(guān)注

    28

    文章

    4488

    瀏覽量

    74291
  • POV
    POV
    +關(guān)注

    關(guān)注

    4

    文章

    14

    瀏覽量

    23109
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    旋轉(zhuǎn)LED屏原理介紹

    POV led”詞(POV即persistancd of vision),LED旋轉(zhuǎn)屏。你是否想過自己親自動(dòng)手做一個(gè)LED旋轉(zhuǎn)屏呢?說白了
    發(fā)表于 03-19 13:59 ?5.2w次閱讀

    自己動(dòng)手做簡單移動(dòng)電源

    網(wǎng)上淘了塊壓克力板,自己動(dòng)手做移動(dòng)電源自己動(dòng)手做移動(dòng)電源
    發(fā)表于 10-26 11:51

    自己做一個(gè)項(xiàng)目比看十個(gè)教程都管用

    我接觸pic單片機(jī)也有段時(shí)間了,根據(jù)我的經(jīng)驗(yàn),看什么教程啊什么的都是浮云,想要真正搞懂pic單片機(jī)要實(shí)實(shí)在在接觸些項(xiàng)目,就算是很小的項(xiàng)目也很重要,自己動(dòng)手做一個(gè)比上網(wǎng)看十
    發(fā)表于 03-07 16:01

    自己動(dòng)手做單片機(jī)的問題

    自己動(dòng)手做了單片機(jī)最小系統(tǒng),MAX232,STC89C52,RS232,等做成了簡單的串口通信,MAX232的轉(zhuǎn)換TTL電平!當(dāng)然這些大家都知道,我是想請(qǐng)教如果沒有復(fù)位電路會(huì)怎樣?但是其他的電源電路,晶振電路都是完整的。
    發(fā)表于 04-05 15:54

    冰雪的STM32 參加自己動(dòng)手做示波器活動(dòng)

    直想做個(gè)ARM開發(fā)試驗(yàn)板,這個(gè)自己動(dòng)手做示波器活動(dòng)剛剛好合適,希望能夠成功。
    發(fā)表于 06-09 00:30

    自己動(dòng)手做的VI

    自己動(dòng)手做的,有什么不懂就直接問
    發(fā)表于 04-23 15:12

    怎么用最基本的元件做一個(gè)遙控鑰匙,我想自己動(dòng)動(dòng)手做一個(gè)

    不知道需要準(zhǔn)備些什么工具和材料自己動(dòng)手做一個(gè)遙控鑰匙那樣的遙控器,或者買些元件組裝起來也行,重要的是能穩(wěn)定的實(shí)現(xiàn)遙控開關(guān)的功能
    發(fā)表于 03-15 19:43

    自己動(dòng)手做原電池

    自己動(dòng)手做原電池 1、以食醋為電解質(zhì),鋅棒和銅棒為電極,串聯(lián)上萬用表------指針會(huì)偏轉(zhuǎn);        
    發(fā)表于 10-22 09:07 ?2206次閱讀

    自己動(dòng)手做-制作簡易揚(yáng)聲器

    自己動(dòng)手做-制作簡易揚(yáng)聲器 .目的和要求   了解動(dòng)圈式揚(yáng)聲器的構(gòu)造,并理解它的發(fā)聲原理。
    發(fā)表于 01-04 12:03 ?1.4w次閱讀

    自己動(dòng)手DIY錄音機(jī)

    diy 自己動(dòng)手做錄音機(jī),主要原件isd1820.愛好者發(fā)燒友最愛
    發(fā)表于 01-07 16:55 ?55次下載

    DIY:自己動(dòng)手做數(shù)碼相機(jī)

    DIY:自己動(dòng)手做數(shù)碼相機(jī)
    發(fā)表于 01-24 16:38 ?12次下載

    超簡單!如何自己動(dòng)手做一個(gè)簡易的逆變器?

    逆變器可以把直流電轉(zhuǎn)換成交流電,通常還要有升壓變壓器,電路部分通常很復(fù)雜,不適合初學(xué)者制作。但在尋找了幾天之后,我終于找到個(gè)簡單,好做的逆變器,而且有定的實(shí)用性。電路圖在此
    的頭像 發(fā)表于 08-07 11:26 ?6.3w次閱讀

    arduino loar_Arduino動(dòng)手做(6)聲音傳感器模塊

    Arduino動(dòng)手做(1)干簧管傳感器模塊Arduino動(dòng)手做(2)光敏電阻模塊Arduino動(dòng)手做(3)微波雷達(dá)感應(yīng)模塊Arduino動(dòng)手做(4)振動(dòng)傳感器模塊Arduino
    發(fā)表于 12-14 19:11 ?4次下載
    arduino loar_Arduino<b class='flag-5'>動(dòng)手做</b>(6)聲音傳感器模塊

    自己動(dòng)手做簡單移動(dòng)電源 - 工程師創(chuàng)意 - 中國電子技術(shù)論壇 - 最好最受歡迎電子論壇!...

    自己動(dòng)手做簡單移動(dòng)電源 - 工程師創(chuàng)意 - 中國電子技術(shù)論壇 - 最好最受歡迎電子論壇! 自己動(dòng)手做簡單移動(dòng)電源 - 工
    發(fā)表于 01-05 14:51 ?26次下載
    <b class='flag-5'>自己</b><b class='flag-5'>動(dòng)手做</b>簡單移動(dòng)電源 - 工程師創(chuàng)意 - 中國電子技術(shù)論壇 - 最好最受歡迎電子論壇!...

    萬圣節(jié)來臨,動(dòng)手做一個(gè)無線充電的南瓜燈吧

    萬圣節(jié)來臨,動(dòng)手做一個(gè)無線充電的南瓜燈吧
    發(fā)表于 11-07 08:07 ?0次下載
    萬圣節(jié)來臨,<b class='flag-5'>動(dòng)手做一個(gè)</b>無線充電的南瓜燈吧