ラズパイzero マイク設定

ラズパイzero マイク設定

以前、ラズパイzero で動画を撮影したが
音声がなかったので

ラズパイZeroWで作る簡単アクションカメラ——バイク編

Raspberry Pi Zeroで簡易ドライブレコーダーを自作する

を参考に設定

micro USB 変換アダプターを使うことで
ラズパイzero でも usb マイクを使用することが可能に

今回は

を使用

まずUSBマイクが認識されているか確認

lsusb

結果は

Bus 001 Device 002: ID 8086:0808 Intel Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

次にモジュール確認

cat /proc/asound/modules 

結果は

 0 snd_bcm2835
 1 snd_usb_audio

次にサウンドカードを調べる

arecord -l

結果は

**** ハードウェアデバイス CAPTURE のリスト ****
カード 1: Device [USB PnP Sound Device], デバイス 0: USB Audio [USB Audio]
  サブデバイス: 1/1
  サブデバイス #0: subdevice #0

ここまでできたら録音テスト

arecord -D plughw:1,0 ~/test1.wav

これで
test1.wav という音声ファイルができるので
これを scp コマンドで転送

しかし再生してみるとノイズがおおく音量が小さい

マイクの集音量と感度の調整 ラズパイ
で検索し
raspberry Pi3(ラズパイ)でマイクを使う

を参考に

[^shell]
amixer sget Mic
[/shell]
としたが

amixer: Unable to find simple control 'Mic',0

となってしまう

このため
amixer コマンドを調べる

Linux の Audio 機能をコマンドラインで設定

によれば

amixer -c1

でサウンドカード1の情報がみれる

結果は

Simple mixer control 'Mic',0
  Capabilities: cvolume cvolume-joined cswitch cswitch-joined
  Capture channels: Mono
  Limits: Capture 0 - 16
  Mono: Capture 0 [0%] [0.00dB] [on]
Simple mixer control 'Auto Gain Control',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [on]

また
Linuxでマイクの音量が小さいときに、それを上げる方法

amixer -D hw:1

でも同じ結果がでる

Mono: Capture 0 [0%] [0.00dB] [on]

となっているので
これだとマイクボリュームが0

これを100%にする

amixer -D hw:1 sset Mic 100%

を実行すると

Simple mixer control 'Mic',0
  Capabilities: cvolume cvolume-joined cswitch cswitch-joined
  Capture channels: Mono
  Limits: Capture 0 - 16
  Mono: Capture 16 [100%] [23.81dB] [on]

これで録音の音は改良されたけど
ノイズがまだ残っている

原因は録音したときのレートの Hz の数値

arecord -D plughw:1,0 ~/test3.wav

を実行すると

録音中 WAVE '/home/pi/test3.wav' : Unsigned 8 bit, レート 8000 Hz, モノラル
^Cシグナル 割り込み で中断...

となり 8000Hz となる

arecord -Vmono -D hw:1 -f S16_LE -c1 -r48000 test4.wav

とすると

録音中 WAVE 'test4.wav' : Signed 16 bit Little Endian, レート 48000 Hz, モノラル

となり
48000Hz になる

これだと少しトトトトトと音が入っている

Raspberry Pi3で音声録音

を参考に

arecord -D plughw:1,0 -f cd  mic.wav

を実行すると

録音中 WAVE 'mic.wav' : Signed 16 bit Little Endian, レート 44100 Hz, ステレオ

となり
44100 Hz となる

-f cd の設定で 44100Hz となる

acreclrd コマンドのオプションについては

8.1. ALSAによるサウンド機能の実現

を参考に

aplay と arecord のオプションは同じとのこと

arecord -D plughw:1,0 -f cd  mic.wav

を実行したときが一番聴きやすいかんじ

しかしノイズのような音は残るので
あとはマイクの性能によるのかもしれない

ラズパイZeroW の画像を NAS へ保存

ラズパイZeroW の画像を NAS へ保存

ラズパイZeroW から NAS へアクセス

ラズパイZeroW から NAS へアクセス


でラズパイ3で構築したNASの外付けHDDをマウントできるようになったので
motion やシェルスクリプトで撮影している画像の保存先を
NAS に変更します

なお
ラズパイ3に外付けHDDでNAS 構築


外付けHDDでNASを構築する方法を記載しましたので
興味があれば参考に

まずは motion の動画と静止画の保存先を変更

なお、各種パラメータに関しては
motionのオプションについて

を参考に

今回は保存先の変更なので

target_dir
の項目を変更

デフォルトでは
/var/lib/motion

現在、NASをマウントしていて

df -h

ファイルシス                 サイズ  使用  残り 使用% マウント位置
/dev/root                      5.7G  4.3G  1.2G   80% /
devtmpfs                       181M     0  181M    0% /dev
tmpfs                          186M     0  186M    0% /dev/shm
tmpfs                          186M  5.1M  180M    3% /run
tmpfs                          5.0M  4.0K  5.0M    1% /run/lock
tmpfs                          186M     0  186M    0% /sys/fs/cgroup
/dev/mmcblk0p6                  68M   23M   46M   33% /boot
//192.168.1.208/pizero_photo   916G   47G  870G    6% /mnt/nas
tmpfs                           37M     0   37M    0% /run/user/1000
/dev/mmcblk0p5                  30M  398K   28M    2% /media/pi/SETTINGS1

となっているので
/mnt/nas
に保存するように変更する

motion の設定は

sudo nano /etc/motion/motion.conf 

で設定ファイルを開いて変更

nano エディタの場合
ctrl + w で検索できるので
target_dir
で検索し

#target_dir /var/lib/motion
target_dir /mnt/nas      

というように
もともとの設定を # でコメントアウトしておき
その下へNASの保存先を記述

#でコメントアウトしておけばミスしても修正が簡単になります

これで ctrl + x で終了し
Y で保存
そのまま Enter にすればファイルを上書き保存できるので
これで設定ファイルの変更はOK

次に撮影スクリプトの変更

nano rscamera.sh 

でファイルを開き

#!/bin/bash
DATE=$(date +"%Y-%m-%d_%H-%M")
#raspistill -o /home/pi/rscamera/$DATE.jpg
raspistill -o /mnt/nas/$DATE.jpg

として保存

これで実際に保存ができるかを

raspistill -o /mnt/nas/$DATE.jpg

としてみると
少しの時間差のあと撮影した画像が保存されるのが確認できる

なお、WiFi 経由となるため
撮影してもすぐには反映されないので注意

ラズパイZeroW から NAS へアクセス

ラズパイZeroW から NAS へアクセス

ラズパイZeroW で撮影ができなくなっていたので
原因が容量不足と思われるため
SSH でアクセスし
ls コマンドでファイルとかをみようとすると

デバイスに空き領域がありません
-bash: ヒアドキュメント用一時ファイルを作成できません: デバイスに空き領域がありません

となってしまっていた

df -h

で確認してみると

ファイルシス   サイズ  使用  残り 使用% マウント位置
/dev/root        5.7G  5.7G     0  100% /
devtmpfs         181M     0  181M    0% /dev
tmpfs            186M     0  186M    0% /dev/shm
tmpfs            186M  5.0M  181M    3% /run
tmpfs            5.0M  4.0K  5.0M    1% /run/lock
tmpfs            186M     0  186M    0% /sys/fs/cgroup
/dev/mmcblk0p6    68M   23M   46M   33% /boot
tmpfs             37M     0   37M    0% /run/user/1000

まずはこれをどうにかしないと無理なので
Ubuntu 側で

mkdir raspi_camera_bak
cd raspi_camera_bak/
scp pi@192.168.1.9:/home/pi/rscamera/* .

で静止画のバックアップをとり

次に motion で撮影されたものは
保存場所は
/var/lib/motion
に記録されるので
こちらも同様に

scp pi@192.168.1.9:/var/lib/motion/* .

でバックアップ

このままだとディスクがいっぱいで何もできないので

sudo rm -f /var/lib/motion/*

で一度削除しようとしたが処理に時間がかかりすぎたため

sudo su
 cd /var/lib/motion
rm -f *.jpg
rm -f *.avi

でそれぞれの拡張子ごとに削除

次に
Raspberry Pi Zeroから自宅のNASにアクセスしてみよう

を参考に
NASへアクセスできるように設定

なおNASは購入すると高かったため
Raspberry Pi3 で構築したものを使用

まずラズパイZero W で
SMB でNASをマウントするツールのインストール

sudo apt install cifs-utils

次にマウントするためのディレクトリを作成

sudo mkdir /mnt/nas

これで NAS へアクセスしようとしたけど
エラーになるので
一度NASの確認

【Raspberry Pi 3】sambaサーバーが接続できないときのハマリポイントまとめチェック

を参考に

まず samba が起動しているか確認

sudo /etc/init.d/samba restart

結果

[ ok ] Restarting nmbd (via systemctl): nmbd.service.
[ ok ] Restarting smbd (via systemctl): smbd.service.

なので問題なし

次にパスワードの設定確認

sudo pdbedit -L

で何も表示されないので

sudo smbpasswd -a pi

で任意のパスワードを入力し設定

再度

 sudo pdbedit -L

を実行すると

pi:1000:

となるが、Ubuntu からアクセスしてファイルの作成などができない

原因を調べるためいろいろやってみたら
Windowsへの接続

を参考に
Nautilusを起動し、Ctrl + Lで
smb://NASのIPアドレス
としたら簡単にアクセスできた

接続が Ubuntu からはできたので
ラズパイZeroWから

sudo mount -t cifs //192.168.1.208/share /mnt/nas -o username=pi,password=raspberry,iocharset=utf8

としたけど

mount error(2): No such file or directory
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

となってしまう

NASの設定を

sudo vim /etc/samba/smb.conf 

で確認したら

[ファミリー]
        path = /mnt/hdd/share/family
        writable = yes
        guest ok = yes
        guest only = yes
        create mode = 0777
        directory mode = 0777

となっていたので

[pizero_photo]
        path = /mnt/hdd/share/pizero
        writable = yes
        guest ok = yes
        guest only = yes
        create mode = 0777
        directory mode = 0777

を追記して保存

これは motion で撮影した画像がすごい量になるので
専用のフォルダで補完するため

あとは

sudo service smbd restart

で再起動

あとはディレクトリも用意するので

mkdir /mnt/hdd/share/pizero
 sudo chmod -R 777 /mnt/hdd/share/

でディレクトリ作成とパーミッション変更

これで再度 ubuntu で
smb://192.168.1.208/
と Nautilus で検索すると表示されるようになりました

次に ラズパイZeroW で

sudo mount -t cifs //192.168.1.208/pizero_photo /mnt/nas -o username=pi,password=raspberry,iocharset=utf8

とすると
無事にマウントできました

確認のため

df -h

とすると

ファイルシス                 サイズ  使用  残り 使用% マウント位置
/dev/root                      5.7G  4.3G  1.2G   79% /
devtmpfs                       181M     0  181M    0% /dev
tmpfs                          186M     0  186M    0% /dev/shm
tmpfs                          186M  5.1M  180M    3% /run
tmpfs                          5.0M  4.0K  5.0M    1% /run/lock
tmpfs                          186M     0  186M    0% /sys/fs/cgroup
/dev/mmcblk0p6                  68M   23M   46M   33% /boot
tmpfs                           37M     0   37M    0% /run/user/1000
/dev/mmcblk0p5                  30M  398K   28M    2% /media/pi/SETTINGS1
//192.168.1.208/pizero_photo   916G   47G  870G    6% /mnt/nas

となりマウント成功が確認できます

次にOS起動したら自動的にNASをマウントするように
/etc/fstab にマウントに必要な情報を記述

sudo nano /etc/fstab

でファイルをひらき
最終行に

//192.168.1.208/pizero_photo /mnt/nas cifs username=pi,password=raspberry,file_mode=0755,dir_mode=0755,iocharset=utf8,uid=1000,gid=1000,forceuid,forcegid,_netdev 0 0

を追記

長いけど1行で書き込みます

最初は行をわけるかわからなかったので
ラズパイZeroで自宅のNASをマウントする

も参考にしました

このとき
username はユーザ名
password はユーザパスワード
ですがNASのものを使います

//192.168.1.208/pizero_photo
はNASのマウント先

/mnt/nas
はラズパイZeroWのマウントする場所
となります

次にOS起動後にNASが自動マウントするように
ブートオプションを変更
これはネットワークサービスが
起動してからブートしないとNASのマウントが失敗するから

 sudo raspi-config 

で設定画面を開き

3の
Boot Options を選びSelect にしてEnter

次に
B2 Wait for Network at Boot Choose whether to waito for n
で Select にして Enter

次に
Would you like boot to wait until a network connection is established?
となっているので
はい
にしてEnter

Waiting for network on boot is enabled
となるので
了解で Enter

あとは Finish で Enter することで設定画面を抜けます

設定確認のため

sudo reboot

で再起動して

df -h

ファイルシス                 サイズ  使用  残り 使用% マウント位置
/dev/root                      5.7G  4.3G  1.2G   80% /
devtmpfs                       181M     0  181M    0% /dev
tmpfs                          186M     0  186M    0% /dev/shm
tmpfs                          186M  7.4M  178M    4% /run
tmpfs                          5.0M  4.0K  5.0M    1% /run/lock
tmpfs                          186M     0  186M    0% /sys/fs/cgroup
/dev/mmcblk0p6                  68M   23M   46M   33% /boot
//192.168.1.208/pizero_photo   916G   47G  870G    6% /mnt/nas
tmpfs                           37M     0   37M    0% /run/user/1000
/dev/mmcblk0p5                  30M  398K   28M    2% /media/pi/SETTINGS1

というように
NASがマウントされていれば成功

ラズパイ Zero W で動画保存の設定変更

ラズパイ Zero W で動画保存の設定変更

今回も参考書籍はラズパイマガジン

motion では
動きを検知したときに動画と静止画が保存される

保存場所は
/var/lib/motion
に記録される

なお、デフォルトだと撮影時間が無制限なので

sudo  nano /etc/motion/motion.conf 

でファイルを開き

ctrl + w で検索モードにして
max_movie_time
で検索し

max_movie_time 0

から任意の撮影秒数に変更

保存するには
ctrl + x で Y のあと Enter

今回は20秒にするので

max_movie_time 20

そして、自動的に motion を起動できるようにしたいので

sudo nano /etc/default/motion 

でファイルを開き

start_motion_daemon=no

start_motion_daemon=yes

次に insserv パッケージをインストール

 sudo apt-get install insserv

あとは

sudo insserv motion

これで自動起動設定も完了

もし、自動起動していないのなら

sudo motion

で motion を起動

あとは電源をモバイルバッテリーにすることで
コンセントがない場所でも撮影が可能に

これで撮影ができるようにはなったけど
容量が8GBの microSD のため容量不足により
motion が停止してしまうので
Raspberry Pi3 でNASを構築し
動画保存先をそちらに移す予定

ラズパイ Zero W で動画保存

ラズパイ Zero W で動画保存

今回も参考書籍はラズパイマガジン

動画撮影には
motion というソフトを使うけど
デフォルトでは使えないようなので
設定を変更

 sudo nano /etc/modules

でファイルを開き

bcm2835-v4l2

を最終行に追記

保存するときには
ctrl + x で
Y
あとは Enter で保存されます

nano エディタの使い方は
nano 使い方
で検索してもでてくるけど
ファイルの作成と編集、保存ぐらいなら
nano (テキストエディター) について

のほうがまとまっていておすすめ

あとは

sudo reboot

で再起動

次に motion のインストール

sudo apt update

でリポジトリを更新し

sudo apt install -y motion

で motion をインストール

次に設定ファイルの編集

sudo nano /etc/motion/motion.conf 

で設定ファイルを開き

ctrl + w で検索できるので
daemon で検索し

daemon off

daemon on

に変更

ctrl +x で width で検索し

width 320 

width 640 

に変更

height 240

height 480

に変更

ctrl +x で framerate で検索し

framerate 2

framerate 10

に変更
framerateは
動体を検知した時に画像をキャプチャするフレームレートの最大値
大きくするとCPU負荷も上がるが
動きがなめらかになる

ctrl +x でevent_gap で検索し

event_gap 60

event_gap 10

に変更
eventgap は
動体検知が収まってから再度検知するまでの秒

ctrl +x で stream_localhost で検索し

stream_localhost on

stream_localhost off

に変更
stream_localhost は
ライブストリームへのアクセスをローカルホストからのみに制限する
on だとローカルホストのみ

ここまでできたら
ctrl + x で Y を押して保存ファイルを聞かれるので
Enter で上書き保存

なお
motion の各種設定については
motionのオプションについて

を参考に

ここまでできたら

sudo motion

で motion を起動

これでブラウザから
http://ラズパイZeroWのIPアドレス:8081/
にアクセスするとリアルタイムの動画を見れます

なお motion の停止は

sudo service motion stop

でできます

停止方法がラズパイマガジンになかったので
Raspberry Pi でカメラ

を参考にしました

ラズパイ Zero W でカメラの実験 その2

ラズパイ Zero W でカメラの実験 その2

撮影はできたけど
そのままだとファイル名が同じなので
上書きしていってしまうため
写真を保存するディレクトリを作成

今回も ラズパイマガジンを参考に実践

mkdir rscamera

次に写真を保存するスクリプトを作成

nano rscamera.sh

でファイルを作成

内容は

#!/bin/bash
DATE=$(date +"%Y-%m-%d_%H-%M")
raspistill -o /home/pi/rscamera/$DATE.jpg

として保存

保存するときには
ctrl + x で
Y
あとは Enter で保存されます

nano エディタの使い方は
nano 使い方
で検索してもでてくるけど
ファイルの作成と編集、保存ぐらいなら
nano (テキストエディター) について

のほうがまとまっていておすすめ

このスクリプトでは
DATE という変数に
date コマンドと現在の日時を保存して
それをコマンド実行時につけて行っているというもの

なおシェルスクリプトでは
変数は
$変数名
という書き方をする

ドットインストールの
シェルスクリプトの講座をみるとわかりやすいかも
シェルスクリプト入門

保存したら権限変更

chmod +x rscamera.sh 

chmodなど権限については
chmod? chown? よくわからんって人のための、ファイル権限系まとめ

を参考に

なお +x をつけているのは
スクリプト書いただけでは実行できないので
実行権限を付与するため

あとは

./rscamera.sh 

で実行

スクリプトは
./スクリプトファイル
で実行できる

撮影された写真は
rscamera というディレクトリにあるので

ls rscamera

で確認できる

ここまでできたら
次に毎回コマンドをうつのではなく
crontab で自動で指定した時間に撮影するようにする

sudo crontab -e

実行すると

Select an editor.  To change later, run 'select-editor'.
  1. /bin/ed
  2. /bin/nano        <---- easiest
  3. /usr/bin/vim.tiny

Choose 1-3 [2]: 

となって
どのエディタを使うか聞かれる

とりあえず nano でいいなら
そのままEnter

あとはファイルの最終行に

*/10 * * * * /home/pi/rscamera.sh

を追記して
ctrl + x で保存

なおcron の設定時間は
分 時 日 月 曜日
となっているので
今回の
*/10 という設定だと
毎分10分
ということになる

10だけだと
時刻が10分をさしたときだけ実行なので注意

詳しくは
cronの設定方法

を参考に

ラズパイ Zero W でカメラの実験

ラズパイ Zero W でカメラの実験

参考書籍はラズパイマガジン2018 6月号

今回は購入にあたり
KSYから購入

https://raspberry-pi.ksyic.com/
から購入可能

Raspberry Pi Zero W

Raspberry Pi Zero WH
があるけど
違いはGPIOピンヘッダのハンダ付けがされてるのが
WHのほうということ

今回はカメラが使えれば十分なので
W の方を購入

この違いに関しては
Raspberry Pi Zero W と Raspberry Pi Zero WH

を参考に

なおOSの書き込みが面倒という場合
Pi Zero W Starter Kit 8GB
を購入することで
最初からOSの書き込みがされているので
こちらを使うというのもおすすめ

なお、PiZero があるけど
こちらは WiFi 対応ではないので注意

これと
Piカメラ Official V2 for 3/2/1/0
でカメラを購入し

そのままのカメラケーブルでは
Pi Zero W で使うにはながすぎなので
FFC ケーブル 15cm for PiCSI/DSI
を購入

なお、初期セットアップで必要になる
マウス
キーボード
ディスプレイ
HDMIケーブルは
もともと自宅にあったものを使用しました

今回の目的はラズパイ Zero W で
カメラで動画撮影して、今後は WiFi 経由で
動画や写真を別のストレージに保存するというものです

なお、この構成で購入した場合
初期のインストールはGUIで行うので
マウスをさして起動するのがベスト

インストール終了後は
キーボードを使用

USBポートが少ないため
キーボードかマウスのどちらかのみしか選べないため
キーボードに差し替え
ctrl + alt + t で端末を起動

sudo bash

で root 権限になり

wpa_passphrase SSID名 パスワード >> /etc/wpa_supplicant/wpa_supplicant.conf 
exit

としてパスワードを追記

sudo reboot

で再起動すると WiFi のIPが振り分けられるので

hostname -I

でIPアドレスが確認できる

なお、Android スマホの場合
Fing というアプリでIPを調べることも可能

次に
SSH接続できるように設定を変更

sudo raspi-config

を実行し

Interfacing Options を Select

PS SSH を Select し

はいを選択後に 了解を選択

これでSSHは使えるようになったので

次にカメラを使えるように
再度 Interfacing Options を Select し
P1 Camera を Select

はいを選択して了解を選択

次にパスワードを変更
デフォルトのパスワードは
raspberry なので
1 Change User Password
を Select して 了解を選択

これで新しいパスワード設定ができるので
任意のパスワードを入力

これで
パスワード設定
カメラとSSHの有効化ができたので
Finish を選択すると
設定反映のため自動的に再起動される

これで ubuntuで
ctrl + alt + t で端末をひらき

ssh pi@ラズパイZeroWのIP

としてパスワードを入力すれば
SSHで接続して処理を行うことができるようになる

次にアップデートをするので

sudo apt update

でリポジトリを更新

sudo apt upgrade 

でアップデート

これで準備ができたので
つぎに撮影
まずは静止画
これは
raspistill コマンドでできる

オプションが色々あるけと
カメラの向きが変わってることが多々あるので
-o で出力先の変更以外に
-hf で垂直方向へ反転させたり
-hv で水平方向へ反転させることがある

とりあえず、向きに問題ないなら

raspistill -o test.jpg

てok

撮影には5秒ほどのタイムラグがあるので注意

もし撮影できていないのなら
カメラケーブルを確認するといいかも