Debian7.0.0で音が出ないとき

# alsactl init

でマイクから音ができるようになった。

自動起動されるように
# vi /etc/rc.local

alsactl init
を一行追記しておいた。

Day24 Raspberry Piカメラモジュールでタイムラプス撮影

今回はRaspberry Piカメラモジュールでタイムラプス撮影を行います。ハードウェアの構成は最後の写真参照。

本稿は以下のサイトを参考にしています。

###タイムラプス撮影###

まずは、Raspberry piにログインします。

#Macからログイン(-P以降はSSH用に設定したポート番号。192.168.11.7は家庭内のLanで固定したpiの無線LANのポート番号)
ssh  pi@192.168.11.7 -p XXXXX

#タイムラプス撮影(大量のjpgファイルが生成される)
mkdir /home/pi/Pictures
raspistill -o /home/pi/Pictures/image-%04d.jpg -tl 6000 -t 600000 -w 1920 -h 1080

#ログアウト
exit

#Macの任意のディレクトリにすべてのファイルをダウンロード
scp  -P XXXXX    pi@192.168.11.7:/home/pi/test ~/Pictures



####生成したファイルから動画を作る。mencoderを使用。####
#mencoderのインストール
sudo apt-get -y install mencoder

#mencoderに与えるファイルリストを生成
ls *.jpg > stills.txt

#タイムラプス画像のファイル群から動画を生成
mencoder -nosound -ovc lavc -lavcopts vcodec=mpeg4:aspect=16/9:vbitrate=8000000 -vf scale=1920:1080 -o tlcam.avi -mf type=jpeg:fps=24 mf://@stills.txt

#動画のダウンロード
scp  -P XXXXX    pi@192.168.11.7:/home/pi/tlcam.avi  ~/Pictures

#VLCで動画再生
open -a "VLC" tlcam.avi


###raspistillの文法解説####
raspistill -o /home/pi/Pictures/image-%04d.jpg -tl 6000 -t 600000 -w 1920 -h 1080
とは

-o /home/pi/Pictures/image-%04d.jpg
連番のファイルを生成

 -tl 6000
6000ミリ秒(6sec)のタイムラプスで
-t 600000
600000ミリ秒(600sec = 10min)の間 

-w 1920
横が1920pixel

 -h 1080
縦が1080pixel

という指定をしている。





Day24 Raspberry Pi専用カメラモジュールを使う

Raspberry Pi専用カメラモジュールを使って写真撮影を試みた。

#Raspberry Piのカメラを有効化する
sudo raspi-config

設定が終わると再起動される。

静止画の撮影にはデフォルトでインストールされているraspistillコマンドを使用する。

#撮影
raspistill -o image.jpg

CUIで画像を表示させるには、
fbiかimg2txtというアプリケーションを使用すれば良いが、ssh接続ではどちらもうまく行かない。手元にダウンロードしてしまうのがよいだろう。

#ログアウト
exit

#ダウンロード
scp  -P xxxxx    pi@192.168.11.7:/home/pi/image.jpg ./image.jpg

#画像表示
open image.jpg


ピントを合わせるのに一苦労だった。どうやってこのカメラモジュールを使いこなすかは、今後の課題だ。

林和孝『Raspberry Piで遊ぼう』ラトルズ 2014

OSとはハードウェアの抽象化を行うプログラムのことである

OSの本質を考える上で、抽象化という概念をイメージすると理解しやすいように思う。

抽象化とは、内部のことをとやかく言わないで、外界とのインターフェースを通じて対称とやりとりをする仕組みをつくることと言える。


数学の関数もこれとまったく同じ構造といえる。

この数式は、xに具体的な値を入力すると、関数が実装している具体的な手続きにもとづいて(この手続きは遮蔽されていてもよい)、yが出力されてくるということを意味している。

コンピュータシステムにおいても、抽象化の概念は大変重要だ。
Operating Systemはハードディスクなどのハードウェアとアプリケーションソフトウェアとの間に入って、ハードウェアを仮想化している。
このようにOSがハードウェアを抽象化することのメリットは、ハードウェアに対しての具体的な操作をOSが一手に引き受けることで、アプリケーションは共通のシステム・コールという入力を使用すればよくなるからである。OSが無い場合のことを考える。
OSが無い場合、アプリケーションがハードウェアを利用する場合、ハードウェアを使用するための方法を具体的に実装する必要が出てくる。先ほどのようにハードウェアとの間にOSが存在し、共通の規格であるシステム・コールを発行しさせえすればよかったのとは大違いである。

この話を発展させると、「インターフェースがあるところには抽象化がある」と言えるのではないだろうか。なにもOSだけの話ではない。流通システムを例にとると、お店(小売業者)にとって、流通システムとは生産者との間のインターフェースであり、各地に点在する生産者からダイレクトに買い付けるよりも問屋に注文した方が、細かい連絡や事務手続きが省けて、かつ大量注文が可能である。しかし、そのかわり流通システムを介すると、そこでお金が発生する。それは当然の事である。

OSも流通業者と考えれば、コストが発生するのは当たり前である。この場合のコストとは、お金ではなく、CPUへの負荷である。OSが細かいハードウェアの制御を一手に引き受けてくれるので、OS自体がCPUに負荷をかけることは避けられないのである。エアコンなどの家電製品に組み込まれるプログラムは、組み込みプログラムといってOSを利用せず、直接ハードウェアを制御していることが多い。この利点は、OSを動かすコストを回避できる点にある。OSを使用するかしないかは利用できる資源によってケースバイケースと言える。


以上をまとめると、OSはハードウェアとアプリケーションの位置して、ハードウェアを抽象化する。そして、アプリケーションに共通の規格であるシステムを提供する事で、アプリケーションがハードウェアを容易に制御できるようにするプログラムのことをいうのである。

(注)図中の矢印は一方行であったが、逆方向のやり取りがあってもかまわない。

Day23 ルータのポート解放を行い、サーバーを外部に公開(びびりなのですぐにポートを閉じたが。。)

WAN側から特定のポートでアクセスがあったとき、LAN側の特定のIPアドレスにつなぐようにルータの設定をすることができる。
私のbuffalo airstationでは以下の通りである。



普段、raspberry piをインターネットに接続させず、家の中のLANだけで遊んでいるときは以下の様な環境になっている。ルーターも含めて、LAN内のすべてのデバイスにはプライベートIPアドレス(192.168.11で始まる番号)が割り当てられている。


WANとLANの関係を考慮すると以下のようになる。ルーターがプライベートとグローバルのIPアドレスを同時に持っていて、LANとWANの仲立ちをしていることに注意。



ssh用にポートを解放してssh接続したときのイメージ図。手元にあるiphoneなどのスマートフォンで4G回線などの外部回線で外から、raspberry piにアクセスする時のイメージ。

ルーターはポート番号ごとにアクセスの制限をかけていることを認識する事が一番大事である。


【参考文献】
画像は以下のサイトから頂いた。
素材のデータベース
Digipot