大数跨境
0
0

用旧液晶显示器和树莓派自制一个小型“全息舱”

用旧液晶显示器和树莓派自制一个小型“全息舱” DF创客社区
2024-01-24
2
导读:效果不错
【点击上方「蓝字」关注DF创客社区,一起成为技术颜控】

早在2022年2月6日,国际奥委会主席巴赫“现身”2022北京新闻中心云聚展区,通过跨区域云全息技术向中外媒体记者“云拜年”,冬奥全息舱“云拜年”登上黑科技热搜。

“全息舱”的效果很惊艳,我也跃跃欲试。

通过查阅网络资料,我发现制作一个小型“全息舱”是可行的。

效果展示

▼ 点击观看


项目设计

硬件使用旧液晶显器结合树莓派和语音识别模块、LED灯带。旧液晶显器制作“全息舱”,LED灯带提供光源,树莓派播放“白背景”视频,语音识别模块控制视频播放、光源开关颜色转换指令。蓝牙键盘用来运行Python程序。

全息舱制作

旧的显示器:

拆解显示器:

接着把背光板与lcd液晶显示模组分开,不再使用背光板提供光源,使用LED灯带提供光源。

接着制作“白舱”:

固定电源板、显示电路板、电池组(为树莓派扩展板供电)

固定LED灯带,安装电源线、VGA视频线。

粘贴外壳,固定树莓派:

测试语音识别模块

树莓派安装扩展板,语音识别模块接IIC引脚,LED灯带接18引脚。

树莓派Python程序


# -*- coding: utf-8 -*

from __future__ import print_function
import sys
import os
sys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))

from DFRobot_DF2301Q import *
import time
from rpi_ws281x import PixelStrip, Color
import argparse

LED_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=0
def loop():
  global num
  CMDID = DF2301Q.get_CMDID()
  if(117== CMDID):#打开灯光
    colorWipe(strip, Color(255255255)) 
  elif(133== CMDID):#设置颜色为绿色
    colorWipe(strip, Color(02550)) 
  elif(135== CMDID):#设置颜色为蓝色
    colorWipe(strip, Color(00255)) 
  elif(130== CMDID):#设置颜色为红色
    colorWipe(strip, Color(25500)) 
  elif(118== CMDID):#关闭灯光
    colorWipe(strip, Color(000)) 

  print(num)
if __name__ == "__main__":
  setup()
  while True:
    loop()

注:要安装相应的库:pinpongpyserialrpi_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硬件军火库

点击了解详情👆


DFRobot官方品牌店 https://dfrobot.taobao.com/

DFRobot官方旗舰店 https://dfrobot.jd.com/


大家有什么想说的,欢迎在下方留言


 往期项目回顾 



一文读懂全系列树莓派!

学习这20条Linux命令,玩转你的树莓派!

6块屏幕的树莓派Cyberdeck,了解一下!

用树莓派「点亮」圣诞树

树莓派自制云服务器,放进口袋随身携带!

用树莓派制作一个“数码显微镜”

春天来了,你需要一款复古风格的树莓派相机

3D打印的树莓派蜘蛛机器人

用树莓派和ESP32做一台掌上电脑!

做一个基于树莓派Zero的复古游戏主机

全网最全!树莓派扩展板怎么选?一个视频搞定!


点击阅读👆

【声明】内容源于网络
0
0
DF创客社区
我们是专注于创新和开源硬件开发的公司——DFRobot成立的创客社区,无论你是资深创客还是小白,这里都有你的一席之地。一个人玩自己的项目,你只是寂寞宅;一群人看你玩项目,你就是技术牛!快来分享你的项目吧!
内容 1282
粉丝 0
DF创客社区 我们是专注于创新和开源硬件开发的公司——DFRobot成立的创客社区,无论你是资深创客还是小白,这里都有你的一席之地。一个人玩自己的项目,你只是寂寞宅;一群人看你玩项目,你就是技术牛!快来分享你的项目吧!
总阅读1.9k
粉丝0
内容1.3k