산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

소지된 초상화 – 업데이트됨

라즈베리를 사용하여 처음부터 DIY 점프 공포 초상화 Pi 3 B, Python 및 AtmosFX 동영상이 살아 있지 않은 초상화입니다. 다시 10월이 되었고 Raspberry Pi를 사용하여 할로윈 프로젝트를 구상하고 싶었습니다. 나는 여기 저기 흩어져 있는 유령의 초상화를 몇 개 보았지만 그들 중 어느 것도 실제로 겁을 주는 방식으로 많이 표현되지 않았고 단지 약간의 단순한 움직임만 있었습니다.

저는 그 아이디어를 확장하기로 결정하고 사용할 수 있는 좋은 점프 겁 유형 비디오를 찾기 시작했습니다. 덕분에 AtmosFx는 각각 $7.99에 불과한 정말 멋진 Unliving Portrait 동영상을 가지고 있습니다. 이것들은 내가 염두에 두었던 것에 완벽했고 수동으로 선택하거나 무작위로 각각을 실행하도록 할 수 있는 하나 이상의 점프 공포 비디오를 가질 수 있었습니다.

완료된 프로젝트의 동영상입니다.

PIR 코드를 처음부터 작성하고 싶지 않았기 때문에 Python으로 PIR에 액세스하는 예를 웹에서 검색했습니다. 유사한 프로젝트를 시연한 By Arc Software의 오래된 기사를 찾았습니다.

제가 제시하는 코드는 대부분 그들의 예제에서 가져온 것이지만 제 필요에 맞게 몇 가지 수정했습니다.

1단계:LCD 프레임 제작

LCD 모니터를 분해하고 LCD 패널과 전자 장치를 제거한 후 세로 방향으로 디스플레이 17 X 11의 정확한 크기를 측정합니다.

이 온라인 도구를 사용하여 LCD 패널에 맞게 프레임 컷을 측정하는 방법을 알아냈습니다.

1″ x 2″ 목재를 사용하여 내부 치수가 17″ x 11″이고 LCD를 고정할 수 있는 목재 프레임을 만들었습니다. 나는 함께 액자를 만들 때 내 LCD의 정확한 크기가 될 4 조각을 자르고 LCD를 프레임에 장착하고 LCD를 LCD 프레임과 같은 높이로 만들었습니다. 액자는 LCD 프레임에 부착되며 모든 전자 제품은 후면에서 접근할 수 있습니다.

액자에 얼룩을 지고 건조시킨 후 브래드 네일러를 사용하여 액자를 LCD 프레임에 부착했습니다.

조립된 LCD 프레임

다음으로 3D 프린터로 인쇄한 Thingiverse.com의 멋진 작은 마운트(Pi Side Mount)를 사용하여 Raspberry Pi를 마운트했습니다.

거울 홀더를 사용하여 LCD가 움직이지 않도록 고정하고 액자 전면과 액자의 전면과 같은 높이를 유지하기 위해 LCD를 볼트로 고정했습니다.

조립의 마지막 단계는 PIR 센서 전체를 드릴로 뚫고 Pi의 GPIO 헤더에 부착하는 것이었습니다. PIR은 매우 간단하며 핫, 접지 및 센서 핀이 있습니다.

2단계:이미지, 비디오 및 코드

내 프로젝트에서 AtmosFX의 Unliving Portrait 비디오 3개를 사용했습니다.

첫 번째 장애물은 화면에 계속 반복되는 것이 아니라 움직임이 감지되었을 때 비디오를 재생하는 것이었습니다. 비디오를 로드한 다음 첫 번째 프레임에서 일시 중지한 다음 움직임이 있으면 계속 재생하고 완료되면 다시 시작하고 처음부터 다시 시작할 수 있습니다.

첫 번째 프레임의 스틸을 표시한 다음 움직임이 감지되면 OMXPlayer를 실행하여 적절한 비디오 파일을 재생하는 것이 더 간단합니다. 이것의 장점은 OMXPlayer가 종료될 때 로드된 스틸이 여전히 프레임 버퍼에 있고 화면에 있다는 것입니다.

초기 이미지를 표시하기 위해 Linux FBI(framebuffer imageviewer)를 사용했습니다.

사용된 플레이어는 OMXPlayer이며 일시 중지를 지원하지만 프로젝트를 지나치게 복잡하게 만드는 DBuscontrol과 같은 구현 없이 일시 중지 및 재생을 위해 Python에서 호출할 수 있는 명령줄 명령은 없습니다.

폴더 구조:

아래 폴더 구조는 스크립트의 경로와 일치하여 이미지 및 비디오에 액세스합니다. 스크립트의 경로가 일치하도록 업데이트되는 한 경로를 변경할 수 있습니다.

스크립트 경로와 일치하는 필수 폴더 구조

이미지:

그래서 각 비디오에 대해 VLC에 로드하고 비디오가 재생될 때 비디오와 함께 화면에 완벽하게 오버레이되도록 비디오와 동일한 해상도로 첫 번째 프레임의 스크린 캡을 했습니다. .

3개의 비디오는 남자, 여자 및 어린이에 대한 것이므로 각각의 화면 캡을 가져와서 MaleStart.png, FemaleStart.png 및 ChildStart.png로 이름을 지정했습니다. 저는 할로윈 프로젝트에서 ScareMedia라는 폴더를 만들고 3개의 스틸을 업로드했습니다.

동영상:

다음으로 각 동영상의 이름을 MaleScare.mp4, FemaleScare.mp4 및 ChildScare.mp4로 지정하고 ScareMedia 폴더에 업로드했습니다.

코드:

모션 감지에서 동영상을 자동화하려면 2개의 스크립트가 필요합니다.

pirDetect.py

#!/usr/bin/python
RPi.GPIO를 GPIO로 가져오기
시간 가져오기
os 가져오기
클래스 감지기(객체):
def __init__(자체, 센서 ):
self.callBacks =[]
self.sensor =센서
self.currState =False
self.prevState =False
GPIO.setmode(GPIO.BOARD )
GPIO.setup(self.sensor, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
def read(self):
self.prevState =self.currState
self. currState =GPIO.input(self.sensor)
def printState(self):
print( "GPIO 핀 {0}은 {1}입니다.".format(self.sensor, self.sensor인 경우 "HIGH"입니다. currState else "LOW"))
def subscribe(self, callBack):
self.callBacks.append(callBack)
def callBack(self, state):
for fn in self.callBacks:
fn(state)
def start(self):
try:
self.read()
self.printState()
while True:
self.read()
self.currState !=self.prevState인 경우:
self.printState()
self.callBack(self.currState)
time.sleep(.1)
#fbi가 콘솔을 올바르게 복원하지 못하기 때문에 ko 응용 프로그램이 종료되면 약간의 정리를 수행하고 KeyboardInterrupt 이벤트를 처리합니다.
except (KeyboardInterrupt, SystemExit):
os.system('stty sane')

scare.py

#!/usr/bin/python
하위 프로세스를 sp
가져오기 시간
os 가져오기
pirDetect에서 가져오기 *
시스템 가져오기
비디오 =[“ omxplayer", "파일 이름", "-o", "both", "-win", "0 0 1280 720", "-aspect-mode", "fill", "-no-osd", "-orientation" ,"180","–vol", "-600"]
scareFile ="/home/pi/Projects/Halloween/ScareMedia/{0}ScareV.mp4".format(sys.argv[1])
print(scareFile)
def onMotion(currState):
if currState:
video[1] =scareFile
subVideo =sp.Popen(비디오)
subVideo.poll()이 None인 동안:
time.sleep(.1)
def showImage():
os.system(“sudo fbi -T 1 -d /dev/fb0 -noverbose -once /home/pi/Projects/Halloween/ScareMedia/{0}Start.png”.format(
sys.argv[1]))
showImage()
objDetect =감지기(7)
objDetect.subscribe(onMotion)
objDetect.start()
os.system(“sudo killall -9 fbi”)

모든 것을 하나로 통합:

공포 스크립트는 재생하려는 비디오 시퀀스와 함께 단일 매개변수를 전달할 수 있습니다. 나중에 이 세 가지 중 하나를 무작위로 재생하도록 자동화할 것입니다.

또한 Pi 카메라를 추가하고 모션을 활성화하는 사람의 5초 비디오를 찍어 모션이 감지될 때마다 Pi에 저장하는 수정 사항이 있습니다. (아직 구현되지 않음).

자세히 보기 :빙의된 초상화 – 업데이트됨


제조공정

  1. 테이블(세로 보기)
  2. 안경테
  3. 액정 디스플레이(LCD)
  4. CDS:3D 투명 LCD 디스플레이
  5. 전시:원시 전시
  6. LCD 애니메이션 및 게임
  7. AI LCD 친구!
  8. Arduino 기상 관측소
  9. Dedge The Defs!
  10. DS1302 RTC가 있는 간단한 알람 시계