用舊液晶顯示器和樹莓派自制一個小型“全息艙”

智造星球機器人 2024-01-26 03:52:04

早在2022年2月6日,國際奧委會主席巴赫“現身”2022北京新聞中心雲聚展區,通過跨區域雲全息技術向中外媒體記者“雲拜年”,冬奧全息艙“雲拜年”登上黑科技熱搜。

“全息艙”的效果很驚豔,我也躍躍欲試。

通過查閱網絡資料,我發現制作一個小型“全息艙”是可行的。

效果展示

▼ 點擊觀看

視頻加載中...

項目設計

硬件使用舊液晶顯器結合樹莓派和語音識別模塊、LED燈帶。舊液晶顯器制作“全息艙”,LED燈帶提供光源,樹莓派播放“白背景”視頻,語音識別模塊控制視頻播放、光源開關顔色轉換指令。藍牙鍵盤用來運行Python程序。

全息艙制作

舊的顯示器:

拆解顯示器:

接著把背光板與lcd液晶顯示模組分開,不再使用背光板提供光源,使用LED燈帶提供光源。

接著制作“白艙”:

固定電源板、顯示電路板、電池組(爲樹莓派擴展板供電)

固定LED燈帶,安裝電源線、VGA視頻線。

粘貼外殼,固定樹莓派:

測試語音識別模塊

樹莓派安裝擴展板,語音識別模塊接IIC引腳,LED燈帶接18引腳。

樹莓派Python程序

# -*- coding: utf-8 -*from __future__ import print_functionimport sysimport ossys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))from DFRobot_DF2301Q import *import timefrom rpi_ws281x import PixelStrip, Colorimport argparseLED_COUNT = 24# LED燈的個數LED_PIN = 18 # DI端接GPIO18# 以下可以不用改LED_FREQ_HZ = 800000 #LED信號頻率以赫茲爲單位(通常爲800khz)LED_DMA = 10 #用于生成信號的DMA通道(嘗試10)LED_BRIGHTNESS = 255 #設置爲0表示最暗,設置爲255表示最亮LED_INVERT = False # #爲True以反轉信號(當使用NPN晶體管電平偏移時)LED_CHANNEL = 0 #GPIO 13、19、41、45設置爲“1”或35''' @brief Module I2C communication init @param i2c_addr - I2C communication address @param bus - I2C bus'''DF2301Q = DFRobot_DF2301Q_I2C(i2c_addr=DF2301Q_I2C_ADDR, bus=1)#控制LED燈顯示顔色def colorWipe(strip, color, wait_ms=20): for i in range(strip.numPixels()): strip.setPixelColor(i, color) strip.show() time.sleep(wait_ms / 1000.0)def setup(): global strip DF2301Q.set_volume(5)#語音模塊的音量設置 DF2301Q.set_mute_mode(0)#靜音開關 DF2301Q.set_wake_time(60)#喚醒後,響應時間 parser = argparse.ArgumentParser() parser.add_argument('-c', '--clear', action='store_true', help='clear the display on exit') args = parser.parse_args() #使用適當的配置創建NeoPixel對象。 strip = PixelStrip(LED_COUNT, LED_PIN, LED_FREQ_HZ, LED_DMA, LED_INVERT, LED_BRIGHTNESS, LED_CHANNEL) #初始化庫(必須在其他函數之前調用一次)。 strip.begin() print('Press Ctrl-C to quit.') if not args.clear: print('Use "-c" argument to clear LEDs on exit') DF2301Q.play_by_CMDID(23) # 完成提示音num=0def loop(): global num CMDID = DF2301Q.get_CMDID() if(117== CMDID):#打開燈光 colorWipe(strip, Color(255, 255, 255)) elif(133== CMDID):#設置顔色爲綠色 colorWipe(strip, Color(0, 255, 0)) elif(135== CMDID):#設置顔色爲藍色 colorWipe(strip, Color(0, 0, 255)) elif(130== CMDID):#設置顔色爲紅色 colorWipe(strip, Color(255, 0, 0)) elif(118== CMDID):#關閉燈光 colorWipe(strip, Color(0, 0, 0)) print(num)if __name__ == "__main__": setup() while True: loop()

視頻加載中...

注:要安裝相應的庫:pinpong,pyserial,rpi_ws281x

播放視頻

使用樹莓派系統自帶的VLC播放器播放視頻。

Python程序控制視頻播放

最好使用omxplayer庫來進行播放視頻。本例使用的os結合vlc播放視頻。

elif(5== CMDID):#播放視頻 num=1 os.system('/usr/bin/vlc-wrapper video1.mp4') elif(6== CMDID): #播放上一個 num=num-1 if num<1: num=5 os.system('/usr/bin/vlc-wrapper video'+str(num)+'.mp4') elif(7== CMDID): #播放下一個 num=num+1 if num>6: num=1 os.system('/usr/bin/vlc-wrapper video'+str(num)+'.mp4')

有興趣可以也來試試!

有任何問題也歡迎到DF創客社區論壇和雲天老師直接交流!

文章首發于:DF創客社區 https://mc.dfrobot.com.cn/thread-317678-1-1.html

轉載請注明來源信息

0 阅读:0

智造星球機器人

簡介:感謝大家的關注