Quantcast
Channel: okahiro | Okahiro's Gadget Lab
Viewing all articles
Browse latest Browse all 40

感圧センサをタッチしてラズパイで地デジをザッピングしてみた。

$
0
0

img_1450

今日は前回成功したラズパイ2での地デジのリアルタイム視聴と、その前の回でやってみた感圧センサを組み合わせてみます。

関連記事1):ラスパイで地デジのリアルタイム視聴をしてみた。
関連記事2):ラズパイで感圧センサを使って貯金額を計ってみた。

感圧センサがタッチされたらチャンネルを切り替えるようにしてみました。いわゆるザッピングですね。

以下のようにPythonでスクリプトを作成してみました。

#!/usr/bin/env python
import spidev
import time
import subprocess

# Open spi device.
spi = spidev.SpiDev()
spi.open(0, 0)

# Make channels list
ch = ["27", "26", "25", "22", "21", "24", "23", "16", "28"]

try:
 n = 0
 while True:

  if n >= 9: #Number of channels
   n = 0
 
  res = spi.xfer2([0x68, 0x00])
  value = (res[0] * 256 + res[1]) & 0x3ff
  print value
 
  if value > 100: # Threshold of pressure
   cmd0 = 'pkill -9 "omxplayer"'
   subprocess.call(cmd0, shell=True)

   cmd1 = 'pkill -9 "recdvb"'
   subprocess.call(cmd1, shell=True)

   cmd2 = 'rm /tmp/mpegpipe'
   subprocess.call(cmd2, shell=True)
 
   cmd3 = '[ -p /tmp/mpegpipe ] || mkfifo /tmp/mpegpipe'
   subprocess.call(cmd3, shell=True)
 
   cmd4 = 'recdvb --b25 --strip ' + ch[n] + ' - /tmp/mpegpipe &'
   subprocess.call(cmd4, shell=True)
 
   cmd5 = 'omxplayer --live /tmp/mpegpipe'
   subprocess.Popen(cmd5, shell=True)

   n += 1

  time.sleep(0.5) #sleep 0.5sec
 
except KeyboardInterrupt:
 spi.close()

上記のスクリプトでは、Pythonスクリプトからシェルコマンドをsubprocess.callで命令しています。.callではコマンドが完了するまで待ちの状態になります。前のコマンドが完了する前に次のコマンドが走ると困るのでこうしています。ただし、最後のコマンドはomxplayerを起動するものですが、ここでは.callではなく.Popenを使用しています。もしここで.callを使うとタッチしても次のチャンネルに切り替わりません。なぜならomxplayerが再生中なので、スクリプト内の次のラインが実行されないからです。.Popenの場合はコマンドの完了を待たないのでタッチが有効になります。

では試してみましょう。スクリプトを走らせた状態で、感圧センサをタッチしてみます。

img_1471

すると感圧センサのDN値が3から869に跳ね上がり、地デジのリアルタイム視聴のためのプログラムが起動しました。

img_1451

まずは某公共チャンネルが再生されます。

img_1452

再び感圧センサにタッチすると、一度デスクトップの画面が現れ、別のチャンネルに切り替わります。

img_1453

この間、約6秒くらいかかります。ザッピングというには遅すぎますねー。(;^ω^)

なお、しばらく視聴し続けて、その後タッチするとなぜかデスクトップは表示されず、ブラックアウトして次のチャンネルに切り替わるようになります。原因は不明ですね…。

普通のテレビなら当たり前にできることですが、実際作ってみると結構大変です。電気メーカーの社員さんたちはやっぱり優秀です。

今日のところはこの辺で。☕️


Viewing all articles
Browse latest Browse all 40

Trending Articles