工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

所持しているポートレート–更新

DIYはRaspberryを使用して怖いポートレートを最初からジャンプしますPi 3 B、Python、AtmosFXビデオの生き生きとしたポートレート。また10月になり、RaspberryPiを使用したハロウィーンプロジェクトを考え出したいと思いました。幽霊の出る肖像画があちこちに散らばっているのを見ましたが、どれも怖いものではなく、単純な動きだけでした。

私はそのアイデアを拡張することに決め、使用できるジャンプスケアタイプの優れた動画を探し始めました。これにより、AtmosFxにたどり着きました。彼らには、それぞれたったの7.99ドルの本当にクールなUnlivingPortraitビデオがいくつかあります。これらは私が考えていたものにぴったりで、手動で選択したり、ランダムに実行したりできるジャンプスケアビデオを複数持つことができました。

これが完成したプロジェクトのビデオです。

PIRコードを最初から書きたくなかったので、PythonでPIRにアクセスする例をウェブで検索しました。同様のプロジェクトを示した古い記事ByArcSoftwareを見つけました。

私が提示しているコードは、ほとんどが彼らの例からのものですが、ニーズに合わせていくつかの変更を加えました。

ステップ1:LCDフレームを作成する

LCDモニターを分解し、LCDパネルと電子機器を取り外した後、縦向きでディスプレイ17 X11の正確なサイズを測定します。

このオンラインツールを使用して、LCDパネルに合うようにフレームカットを測定しました。

私は、LCDを保持する17インチx11インチの内寸を持つ1インチx2インチの木を使用して木製フレームを作成しました。フレームを合わせたときにLCDの正確なサイズになるように、4つのピースを切り取り、LCDをフレームに取り付けて、LCDをLCDフレームと同じ高さにしました。額縁はLCDフレームに取り付けられ、すべての電子機器に背面からアクセスできるようにします。

額縁を染色して乾かした後、ブラッド釘打機を使用して額縁をLCDフレームに取り付けました。

組み立てられたLCDフレーム次に、3Dプリンターで印刷したThingiverse.com(Pi Side Mount)の小さなマウントを使用してRaspberryPiをマウントしました。

ミラーホルダーを使用してLCDを所定の位置にボルトで固定し、LCDがずれないようにし、額縁に対してフレームの前面と同じ高さになるようにしました。

組み立ての最後のステップは、PIRセンサー用に全体をドリルして、PiのGPIOヘッダーに取り付けることでした。 PIRは非常にシンプルで、ホット、グラウンド、センサーピンがあります。

ステップ2:画像、動画、コード

プロジェクトでAtmosFXのUnlivingPortraitビデオを3本使用しました。

最初のハードルは、画面上で常にループするだけでなく、動きが検出されたときにビデオを再生することでした。ビデオをロードして最初のフレームで一時停止し、モーションが発生したら再生を続行し、完全にリセットして最初からやり直すことができます。

最初のフレームの静止画を表示し、動きが検出されたらOMXPlayerを起動して適切なビデオファイルを再生する方が簡単です。これの利点は、OMXPlayerが終了したときに、ロードされたものがまだフレームバッファにあり、画面に表示されることです。

初期画像を表示するために、Linux FBI(フレームバッファー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としてインポート
インポート時間
import os
クラス検出器(オブジェクト):
def __init __(self、sensor ):
self.callBacks =[]
self.sensor =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 pin {0} is {1}”。format(self.sensor、“ HIGH” ifself。 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()
Trueの場合:
self.read()
if self.currState!=self.prevState:
self.printState()
self.callBack(self.currState)
time.sleep(.1)
#fbiはコンソールを正しく復元しないためアプリケーションが終了したら、KeyboardInterruptイベントを少しクリーンアップして処理します。
(KeyboardInterrupt、SystemExit)を除く:
os.system( ‘stty sane’)

scare.py

#!/ usr / bin / python
import subprocess as sp
import time
import os
from pirDetect import *
import sys
video =[“ omxplayer」、「filename」、「-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(video)
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")

すべてをまとめる:

怖いスクリプトには、再生したいビデオシーケンスを含む単一のパラメーターを渡すことができます。後でこれを自動化して、3つのうちのいずれかをランダムに再生します。

Piカメラを追加し、モーションをアクティブにしている人の5秒間のビデオを撮影し、モーションが検出されるたびにPiに保存するように変更することもできます。 (まだ実装されていません)。

詳細を読む:所有するポートレート–更新


製造プロセス

  1. テーブル(ポートレートビュー)
  2. 眼鏡フレーム
  3. 液晶ディスプレイ(LCD)
  4. CDS:3D透明LCDディスプレイ
  5. 展示:プライマルディスプレイ
  6. LCDアニメーションとゲーム
  7. AI LCDフレンド!
  8. Arduino Weather Station
  9. ArduinoLCDビデオゲーム
  10. Dodge The Defs!
  11. DS1302RTCを備えたシンプルな目覚まし時計