【Raspberry Pi】【電子工作】PIRモーションセンサ(人感センサ)の確認

PIRモーションセンサ(人感センサ)にて、人を検知してみます。

 

1.必要なもの

  1. ラズベリーパイ(1のB+)
  2. ブレッドボード(直接センサをラズパイに接続するならいらない)
  3. PIRモーションセンサ(https://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-4KSX
  4. ジャンパーコード各種

2.配線図、回路図

こんな感じ!

f:id:engetu21:20151101155817j:plain

f:id:engetu21:20151101155832j:plain

PIRセンサは3.3Vあれば動作するため、VDDにラズパイの3.3Vに繋げる。センサで検知すればSIGから信号が送信されるため、適当なGPIOに接続しておく。

 

3.ソースコード

 

検知するだけであれば大して難しくは無いです。

問題はどうやって活用するか、ということ。

【Raspberry Pi】【電子工作】Lチカをやってみる

せっかくラズパイを買ったので、電子工作に挑戦します。

参考にするのは「ラズパイマガジン 2015年秋号」に記載されている内容です。

 

1.必要なもの

  1. ブレッドボード
  2. 抵抗:330Ω
  3. LED(こちらを購入→http://akizukidenshi.com/catalog/g/gI-09451/
  4. ジャンパーコード各種

2.接続させる前に

ブレッドボードを介してLEDを光らせます。

光らせるには電流を通してあげないといけないわけで、抑えておかないと行けないポイントは以下のとおり。

  1. LEDの光らせろとかセンサから情報を取得しろ、というのは、ラズパイのGPIOピンを使う必要がある。
  2. LEDを光らせるときは過電流だとLEDが壊れるため、抵抗が必要になる。必要な電流量はオームの法則で求める。

という点でしょうか。

1については、以下の画像の通りで、GPIOと書かれているピンにジャンパーコードを指す必要がある。

http://data.designspark.info/uploads/images/53bc258dc6c0425cb44870b50ab30621

出展:DESIGNSPARK - Raspberry Pi B+のご紹介(http://data.designspark.info/uploads/images/53bc258dc6c0425cb44870b50ab30621)

 

で、LEDを光らせるにはオームの法則を使って電流を計算する必要がある。

そんなわけで、はい、計算サイトです。

オームの法則(電流) - 高精度計算サイト

 

まず、使用するLEDの仕様として、

・連続最大電流:50mA

とのこと。要は50mA以上を流すと壊れるということ。

 

抵抗は330Ωを買っており、かつラズパイのGPIOピンは3.3V動作ピン、そしてLEDのVf(順電圧)の2.1Vを差し引く必要があるため、

(3.3V-2.1V)/330Ω=3.63mAになります。この電流量ならLEDが壊れることはなく、また、程よく光ります。

 

3.接続図と回路図

fritzingというCADアプリがあるため、これを用います。

2項の内容を踏まえると以下のとおりです。

f:id:engetu21:20151018195512j:plain

f:id:engetu21:20151018195551j:plain

 

4.プログラム

1秒間隔で点灯と消灯を繰り返します。

 これでLEDが点きます!

【Raspberry Pi】DLNAサーバの構築

ちゃんと手順で残していなかったため、書きます。

なお、DLNAの対象になるのはラズパイに繋いだ外付けのHDDです。

 外付けHDDの設定はこちら→http://engetu21.hatenablog.com/entry/2015/02/01/205818

1.minidlnaのインストール

Linuxにおいてはminidlnaというソフトを入れれば結構簡単に実現できます。

というわけでインストール

$ sudo apt-get install minidlna

 

2.minidlnaの設定内容変更

minidlnaの設定内容を変更します。

$ sudo vi /etc/minidlna.conf

media_dir=V,/mnt/hdd1/videos
media_dir=A,/mnt/hdd1/music
media_dir=P,/mnt/hdd1/pictures

V,A,Pはそれぞれvideo,audio,picturesを表す。まぁ、ファイル内にコメントで書いてあるんですが。

 

3.設定の反映と再起動

設定と反映をします。2番めのはやる必要ないかもしれないけど、一応。

$ sudo /etc/init.d/minidlna force-reload
[ ok ] Restarting DLNA/UPnP-AV media server: minidlna.


$ sudo /etc/init.d/minidlna restart
[ ok ] Restarting DLNA/UPnP-AV media server: minidlna.

 あとは、AndroidDLNAに対応したアプリでアクセスできるかを確認。

 

4.システム起動時に自動実行

以下のコマンドを実行しておく。

$ sudo update-rc.d minidlna defaults

 

【悲報】3.0TBのHDDが逝く

久しぶりの更新ですが、特にネタは無く。いや、無くはないけどモチベーションがなかなか。

そういったわけでHDDが逝きました。暑さもあったけど、直前で変なことしちゃったからなぁ・・・。今回死んだのはバックアップ側なので問題無いですが。

問題だったのは某バックアップソフトを使ったからだけど、自分で作って運用したほうがいいかもしれない・・・。

【Raspberry Pi】apt-get updateで失敗する

何故かupdateに失敗する。

結論から言えばDNS解決ができていなかっただけなんですが。

$ sudo apt-get update

エラー http://mirrordirector.raspbian.org wheezy Release.gpg
  'mirrordirector.raspbian.org' を解決できませんでした

(略)

W: いくつかのインデックスファイルのダウンロードに失敗しました。これらは無視され るか、古いものが代わりに使われます。

 

で、resolv.confを見ると

$ view /etc/resolv.conf

nameserver 8.8.8.8

 確かにOS設定時のDSNサーバを(面倒なので)8.8.8.8にしていた・・・

 

というわけで、上記設定をプロバイダ提供のDNS解決が変更し、リロード。

$ sudo vi /etc/resolv.conf

nameserver xxx.xxx.xxx.xxx

 

$ sudo /etc/init.d/networking reload

[....] Reloading network interfaces configuration...ifup: interface lo already configured

Waiting for br0 to get ready (MAXWAIT is 10 seconds).
done.

 

再度updateで無事実施可能。

 

$ sudo apt-get update
ヒット http://repository.wolfram.com stable Release.gpg

(略)

 

 

 

 

【Android】着信の検知

GitHubを導入してみる。テストも兼ねて投稿。

ネットで公開されているプログラムを元にしてみました。Androidで着信を検知する場合の実現方法は以下のようにすればできるっぽい。

で、これをトリガに別の端末にSMSかメールを飛ばすようにする予定。というか、大体出来たけど、まだまだ公開するレベルにはなっていないので、そのうちには。

【Raspberry Pi】外付けHDDの追加

ラズパイで外付けHDDを管理させます。

HDDは3.5インチの1.5TB(ST31500341AS)。玄人志向の外付けケースを使ってUSBケーブルで接続します。

 

1.外付けHDDのパーテーションの作成とフォーマット 

余程のことがない限り、USBで接続すればラズパイで自動認識してくれます。

 $ sudo fdisk -l

(略)

Disk /dev/sda: 1500.3 GB, 1500301910016 bytes

 

パーテーション作成はコマンドでもできますが、今回はGUIでやります(特に意味はなし)。というわけで、GPartedをインストールします。インストールは事前に導入していたSynapticにて。

 

なお、今回はWindowsで接続しても大丈夫なようにNTFSで作ります。NTFSで作る場合は予めntfs-3gをインストールしないとダメです。

$ sudo apt-get install ntfs-3g 

 インストールが完了したら、

ラズパイのスタートメニュー?->「設定」->「GParted」を実行。

GPartedが起動したら、メニュー->「GParted()」->「デバイス(D)」->「/dev/sda1」を選択します。

f:id:engetu21:20150201201819j:plain

 

/dev/sda1(外付けHDD)が見つかるため、パーテーションメニューからパーテーションを作ります。また、 フォーマット時はNTFSを選択します。ntfs-3gをインストールしていないと、NTFSを選択できないため、注意。

まぁ、GUIは直感的にわかると思うので、特に操作説明は書きません。

 

 2.マウントの設定 

マウントできるようにします。

$ sudo mkdir /mnt/hdd1

$ sudo mount /dev/sda1 /mnt/hdd1

しかし、これだと毎回マウントしないと行けないため、自動マウントをさせます。他の外付けHDDを接続することも想定し、UUID指定でマウントできるようにします。

UUIDは以下のコマンドで抽出。

$ sudo blkid /dev/sda1

/dev/sda1: UUID="XXXXXXXXXXXXX" TYPE="ntfs"

(追記)なお、以下のコマンドでも確認することが可能です。

$ lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda 
├─sda1 ntfs XXXXXXXXXXXXX /mnt/hdd1

 

このUUIDを自動マウントセッティングします。一番最後の行に以下のように追加

 $ sudo vi /etc/fstab

UUID="XXXXXXXXXXXXX" /mnt/hdd1 ntfs defaults 0 2

自動マウントされるかは再起動で確認しましょう。

→(追記)sudo mount -a を打つことで再起動せずに確認することも可能。 

 

【2019/8/15追記】

上記の設定をした際、配下のグループやユーザを変えられない場合がある。その時には、fstabの設定を以下のように変更する。

※参考:【LinuxUbuntuNTFS形式のファイルで所有者や権限が変更する方法 https://sekisuiseien.com/computer/11054/

$ sudo vi /etc/fstab

UUID="XXXXXXXXXXXXX" /mnt/hdd1 ntfs-3g defaults,permission 0 2

 

$ sudo mount -a

 

また、一括で グループ/ユーザを変える場合は以下の通り。

参考:ファイルやディレクトリのパーミッションを一括で置換したい https://qiita.com/takeshi81/items/48ea62eae2fc7f1cb2f0

$ sudo find /home/xxxx -type d -exec chmod 755 {} +
$ sudo find /home/xxxx -type f -exec chmod 644 {} +

【追記終わり】

 3.HDD回転を自動で止める 

 参考サイト:

Raspberry PiでUSB外付けHDDの回転を自動で止める | Frog Code Works

sdparmをインストールします。 

$ sudo apt-get install sdparm

動作確認は以下のコマンドで。

$ sudo sdparm --command=stop /dev/sda1
    /dev/sda1: Initio    ST31500341AS      3.01 

動作用シェルスクリプトを作成(コピペ)。作成後に実行権限を付与。

$ sudo vi  /usr/local/bin/usbhdd_spindown.sh

gist.github.com

$ sudo chmod 755 /usr/local/bin/usbhdd_spindown.sh

起動時の シェル実行設定をします。

$ sudo vi /etc/rc.local

/usr/local/bin/usbhdd_spindown sda1 900 2>&1 | logger -t usbhdd_spindown &