2020年5月21日木曜日

マウスでキーボード操作

ラズパイ用に5インチモニターを購入したが、現在の作業環境では、キーボードを1台しか置けないので、Windows機とラズパイを同時に操作することが難しい。

マウスで簡単なキーボード操作ができないか。せめてエンターキーだけでもマウスで使えると助かると思って調べてみた。

1.xbindkeys と xdotool をインストール
$ sudo apt install xbindkeys xdotool

2.ボタンの番号を調べる。
$ xev | grep button
エンターキーに使いたいボタンを押してみると、
  state 0x0, button 8, same_screen YES
ボタン8にEnterキーを割り当てたい。


3.設定ファイルを作成する。
$ nano ~/.xbindkeysrc
新規作成し、下記のコマンドを記載して保存。
---~/.xbindkeysrc---
#ボタン8へエンターキーを割り当て。Enterキーは”Enter"ではなく"Return"。
"xdotool key Return"
b:8
-----------------------

4.設定ファイルの再読み込み
$ killall xbindkeys
$ xbindkeys

現在使っているBluetoothマウス『BSMBB505BSK』
※写真の数字がボタンの番号

xdotoolの詳細な使い方は他サイトに多数記載されているので割愛。

<xdotool コマンド 引数>
コマンドは今回は、キー入力をシュミレートする"key"コマンドを使用。
引数に割り当てたいキーを入力している。
※本来の使い方では、スクリプトを記載し、ボタン一つで様々なスクリプトを動かすことが可能。今回とは逆にキーボードでマウス操作することも可能。

2020年5月14日木曜日

ラズパイ デジタルフォトフレーム化

先日、kuman製5インチモニターを購入したので、RPiをデジタルフォトフレームとして使ってみたいと思います。

環境:
Raspberry Pi 3 Model B+
OS:Raspbian 10.3 (buster)

1.fehとxscreensaverのインストール
$ sudo apt install feh
$ sudo apt install xscreensaver
 ※fehはコマンドで操作できる画像ビューア

 2.Raspberry Pi 3B+ スリープモードの解除
方法は3通りあるが、①が簡単そう。

①スタートメニュー → 設定 → スクリーンセーバー を選択
モード(M):セーバーを無効にする(D)を選択する。
(xscreensaverをインストールするとスクリーンセーバーを選択可能)


②スクリーンセーバーの無効化
$ sudo nano /etc/lxsession/LXDE/autoatart
---/etc/lxsession/LXDE/autoatart---
@lxpanel --profile LXDE
@pcmanfm --desktop --profile LXDE
@xscreensaver -no-splash
@xset s off     (※追記)
@xset s noblank  (※追記)
@xset -dpms     (※追記)

 -----------------------------------------

③
$ sudo nano /etc/lightdm/lightdm.conf
文末に以下の2行を追記する。
 ---/etc/lightdm/lightdm.conf---
[SeatDefaults]
xserver-command=X -s 0 -dpms
------------------------------------

再起動する。

3.スライドショーを起動する
 最初に表示させたい画像をフォルダ(例 /home/pi/Pictures)にまとめます。
$ feh -Y -x -q -D 10 -R 43200 -F -Z -r /home/pi/Pictures/

4.スクリプト化
デスクトップ上にstart_slideshow.sh(名前は適当)というスクリプトファイルを作成。
中身は以下
---/home/pi/Desktop/start_slideshow.sh---
#!/bin/bash
startx 
feh -Y -x -q -D 60 -R 43200 -F -Z -r /home/pi/Pictures/
-------------------------------------------------
ダブルクリックして、実行を選択すれば、スライドショーが実行され、デジタルフォトフレームとして使用可能。


番外編.fehのオプション説明

-Y, --hide-pointer
 ポインタを非表示にします(スライドショーに役立ちます)。
-x, --borderless
 フチなしウィンドウを作成します。
-q, --quiet
 失敗したロードの致命的でないエラーを報告しません。冗長モードと静止モードは相互に排他的ではありません。最初のモードは情報メッセージを制御し、2番目のモードはエラーのみを制御します。
-D, --slideshow-delay float スライドショーモードの場合、スライドが自動的に切り替わるまでfloat秒待機します。
-R, --reload int int秒後にファイルリストと現在の画像を再読み込みします。HTTP Webカメラまたは頻繁に変更されるディレクトリの表示に役立ちます。(ファイルリストのリロードはまだ実験的であることに注意してください。)ゼロに設定すると、あらゆる種類の自動再読み込みが無効になります。 画像が削除されると、fehは次の画像を表示するか、終了します。 ただし、画像がまだ存在していてもロードできない場合、fehは引き続きロードを試みます。このオプションを設定すると、inotifyベースの自動再読み込みが無効になります。
-F, --fullscreen ウィンドウを全画面表示にします。このモードでは、大きな画像は常に画面に合わせて縮小され、-zoom zoomは小さな画像にのみ影響し、画面サイズに合わせて必要以上に拡大することはありません。唯一の例外は100倍のズームです。この場合、画像は常に100%ズームで表示されます。 --thumbnailsと組み合わせると、このオプションはサムネイルの概要から開いた画像にのみ影響します。サムネイルリスト自体は引き続きウィンドウ表示されます。
-Z, --auto-zoom
 フルスクリーン/固定ジオメトリモードで画像を画面サイズにズームします。
-r, --recursive
 コマンドライン引数内のディレクトリを再帰的にそれらのディレクトリのコンテンツに展開し、最下位レベルまで下げます。
-z, --randomize スライドショーで複数のファイルを表示する場合は、表示する前にファイルリストをランダム化してください。リストは、スライドショーが循環する(つまり、最後の画像から最初の画像に移行する)たびに再ランダム化されます。

2020年5月13日水曜日

Kuman 5インチ ラズベリーパイ用モニタ

amazonにて「Kuman 5インチ 800*480 HDMI モニター タッチパネル ラズベリーパイ 液晶 ラズパイ Raspberry Pi ディスプレイ 保護ケース Raspberry Pi 3 2 Model B B+ A A+ SC5AC」を¥4950にて購入。

Raspberry Pi 3B+用に購入。問題なく使えた。
Description:Raspbian GNU/Linux 10 (buster)


 箱の中に説明書は英語の紙1枚のみ。
 組み立て方はアマゾンの商品紹介画像をみると大体わかる。

 

<<組み立て時の注意点>>
※保護フィルムを外せと書かれており、外そうとするが、とても硬い。
※①の四角いフレームには薄いのと厚いのがある。薄いほうがバリが少ないので、全面に 使うと良い。
※長いネジ4本は⑤の四角いフレームに使う。
※黒いドーナッツ状の物は④と⑤の間に入れて⑥になるのと、⑦のラズパイと保護パネルの間に入れて⑨にする。


取扱説明書の内容
ステップ1)最新のRaspbianを準備しろ。
ステップ2)ラズパイを接続しろ。
ステップ3)ドライバーを入れろ。
1)SSHで接続しろ。
2)下のコマンドを実行しろ。
$ sudo rm -rf LCD-show
$ git clone https://github.com/goodtft/LCD-show.git
$ chmod -R 755 LCD-show
$ cd LCD-show/
$ sudo ./LCD5-show
3)上記実行すると勝手に再起動され、ディスプレイとタッチパネルが使える。

タッチパネルが使えるようになったけど、SSHでも接続できなくなったので、いったん強制再起動。⇒正常に使用可能となった。
 

設定
/boot/config.txtを修正しろとサイトには書いているけど、最初から800*480にて表示されている。
$ tvservice -s
→state 0x6 [DVI DMT(87)RGB full 15:9], 800x480 @ 59.00Hz, progressive

タッチパネルをキャリブレーション
大体合っているので、飛ばす。

2.1A出力のモバイルバッテリーでも電圧低下マークが出ることもなく、使用可能。モニタとしての消費電力はかなり低い模様。

今後の予定
デジタルフォトフレームとして使用する

使ってみて気づいたこと
・モニター側とラズパイ側で電源入力が2系統存在するが、どちらでも利用可能。普段はコンセントから電源を取り、移動したいときにモバイルバッテリーを別系統のmicroUSB端子に接続すれば、電源を落とすことなく、移動も可能。
・2系統から電源を取ることで低電圧を防止することも可能。
・モニタ裏面のバックパネルと書かれたスイッチはモニタの電源スイッチとして使用できる。

※2026年5月1日追記
久しぶりに最初から構成しなおした。
ドライバを入れなおしたところ、再起動時にCUIで起動するように強制的に書き換えられていた。(元から?)
$ sudo raspi-config
SystemOptions→Bootにて設定可能。

2020年4月18日土曜日

WEBカメラ

以前スカイプ用に購入したロジクール製C270が使わなくなり、押入れに入れたままだったことを思い出し、ラズパイに接続してなにかできないかな〜と思い、引っ張り出してきました。
色々なサイトを見てみると、監視カメラとして利用していることが多いようなので、今回は監視カメラとして設置できるようにしてみた。

Raspberry Pi 3 Model B+
OS:Raspbian 10.3 (buster)
WEBカメラ:ロジクール HD Webcam C270

以下がUSBカメラを接続する前のlsusbの状態です。
pi@raspberrypi:~ $ lsusb
Bus 001 Device 004: ID 0411:023a BUFFALO INC. (formerly MelCo., Inc.)
Bus 001 Device 006: ID 0411:02c1 BUFFALO INC. (formerly MelCo., Inc.)
Bus 001 Device 005: ID 1c4f:0002 SiGma Micro Keyboard TRACER Gamma Ivory
Bus 001 Device 007: ID 0424:7800 Standard Microsystems Corp.
Bus 001 Device 003: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
Bus 001 Device 002: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

キャプチャデバイスも存在していません。 →存在してるっぽい
pi@raspberrypi:~ $ ls /dev/video*
/dev/video10  /dev/video11  /dev/video12

接続すると以下が追加されました。
pi@raspberrypi:~ $ lsusb
Bus 001 Device 008: ID 046d:0825 Logitech, Inc. Webcam C270

接続して認識されると、ビデオキャプチャデバイスも生成されています。
pi@raspberrypi:~ $ ls /dev/video*
/dev/video0  /dev/video1  /dev/video10  /dev/video11  /dev/video12

これでWEBカメラを使う準備ができました。
次はアプリを使用しての画像取り込みになりますが、どのソフトが良いのかわからないので、
適当に調べて詳しく使い方が乗っているアプリを使うことにします。


★★guvcviewを使用してみました★★
$ sudo apt install guvcview
$ guvcview &
※使い方がよくわかりません。今回はパスします。

★★motionを使用してみた★★ 最新バージョン (4.1.1) 2020/2/25
$ sudo apt install motion
続行しますか? [Y/n] →y
motion.confという設定ファイルをいじりますが、設定ファイルを変更する前に別ファイル名でオリジナルをコピーしておいてください。
$ cd /etc/motion
$ sudo cp motion.conf motion.conf.bak
$ sudo nano motion.conf

confファイルの中を見てみると、、、
logは/var/log/motion/motion.logに出力されるようです。
画像のサイズを変更できるようです。(defaultは320*240)
エンコードにはffmpegを使用しているようです。
defaultのbpsは400000=50KByte/s
コーデックは”mpeg4, msmpeg4, swf,flv, ffv1, mov, mp4, mkv, hevc”を利用可能なようです。
保存先ディレクトリ”/var/lib/motion”のようです。

設定変更!!

$ sudo nano /etc/motion/motion.conf
(Ctrl+oで保存、Ctrl+xで終了)
$ sudo motion
ブラウザで”localhost:8081”と検索するとストリーミングされる。
ブラウザで”localhost:8080”と検索するとブラウザ上で操作できる。
実際に変更項目を確認しながらやるとベター。ALL → action → quitで停止できる。

★設定変更した項目★
daemon on
norm 1(使用するビデオ規格 0:PAL 1:NTSC 2:SECAM 3:PAL NC no colour)
width 640
height 480
framerate 12(640*480だと概ね12-14fpsしかでない)
output_pictures on(動体検知時に画像を出力する)
ffmpeg_video_codec mp4(mkvから変更)
locate_motion_mode on(動体マーカをつける)
text_double on(日付はフォントが小さいためonとしておけば、大きな文字になる。)
v4l2 17 →8or15 (C270は8:Motion-JPEGと15:YUYVに対応)
(https://motion-project.github.io/4.1.1/motion_guide.html#Options_Video4Linux_Devices)

※デフォルトのまま
stream_localhost on(ストリーム接続をローカルホストのみに制限する)
target_dir /var/lib/motion (静止画や動画を保存するディレクトリ)
ffmpeg_output_movies on(動体検知時に動画を出力する)
event_gap 60


では起動!
$ sudo motion
ブラウザで"localhost:8081"と検索窓に入力すると、カメラの映像を見ることができた。
動体検知された時の映像がtarget_dirである/var/lib/motionに保存されている。
ディレクトリ内のファイルを削除するには管理者権限が必要なので、
$ sudo rm /var/lib/motion/*.jpg
*ワイルドカードを使用すると便利。



監視カメラやWEBカメラとして使えるようになったけど、今のところ利用予定はなし。

2020年1月4日土曜日

WI-U3-866DS 購入

ネットワーク周りの改善のために、wifi子機を購入。
アマゾンにて2019.11.19購入 ¥3253

IEEE802.11a/b/g/n/acに対応。ac対応の中から選んだ。
アンテナ2つなので、5GHzなら866Mbps、2.4GHzなら300Mbps。
ビームフォーミング対応。
延長ケーブル付属(地味にうれしい)

メーカーの公称実効速度は491Mbps

googleのspeedtestでは
ダウンロード:81.3Mbps
アップロード:17.5Mbps



ルーターに有線接続しているPCがないので、本機(WI-U3-866DS)をRPTに無線接続し、RPTに有線接続しているラズベリーパイとiperf3で計測してみた。
※PC(クライアント) ~ RPT --- RPi(サーバ) :~無線.---有線
300秒計測 平均58.3Mbps 最小10.2Mbps 最大115Mbps 標準偏差25.0
クライアントマネージャⅤ(バッファローの無線接続ツール)では電波状態76-82%で推移。

ラズベリーパイでよく使うコマンド

ラズベリーパイを使う中で、よく使うコマンド

poweroff
システムのシャットダウン。
$ sudo shutdown -h now でも可。

reboot

システムの再起動。
$ sudo shutdown -r now

ls
ファイルやディレクトリの情報表示。
$ ls -l :で詳細表示可能。

cd
ディレクトリの移動
$ cd .. :一つ上のディレクトリに移動
$ cd ~ :ホームへ戻る

mkdir
ディレクトリを作成
$ mkdir dir  :dirという名前のディレクトリを作成

mv
ファイルやディレクトリの移動、名前の変更。
$ mv file1 /etc  :file1という名前のファイルを/etcディレクトリに移動。
$ mv file1 file2  :file1という名前のファイルをfile2という名前に変更。

cp
ファイルやディレクトリのコピーを作成。
$ cp file1 file2 :file1という名前のファイルをfile2という名前で複写。
$ cp -r dir1 dir2 :ディレクトリdir1の内容をすべてdir2へ複写。

rm
ファイルやディレクトリの削除。ディレクトリを削除するときは-rオプションをつける。
$ rm file1 :file1を削除
$ rm -r dir1 :ディレクトリdir1を削除

cat
ファイルの中身をテキスト表示。(逆順で表示させたい場合はtac)
nano等でも表示できるが、変更しない場合はcatの方が安全。

chmod
ファイルやディレクトリのパーミッション(アクセス権)の変更。
$ sudo chmod 755 file1 :file1のパーミッションを755に変更。

nano
テキストエディタnanoで編集。指定したファイル名が存在しなければ新規作成。
ctrl+oで保存、ctrl+xで終了。

apt
パッケージ管理。以前はapt-getだったが、現在はaptの使用を推奨。
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install パッケージ名


aptの履歴
/var/log/apt/history.logに履歴が残るので確認が可能。

wget
ファイルのダウンロード
$ wget https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRR-rtHiAbN9DtJ2LjpXtljV9MgPjAwikyH-CPBb7N91OV9M2oNjFfdDBuSpGZvVEuL4f31Fatv19d1fLgf-n5pO_3ojjiBQUMvzDYcPrx8B7JR53_2EFwTndfpig42PbCG590SSqBh_Q/s1600/sh_spindown.png

lsb_release -a
OSのバージョンを確認するコマンド。

raspi-config
RaspberryPiの設定ツール

echo
引数の中身を表示

|(パイプ)
commnd1 | command2
コマンド1の実行結果を引数としてコマンド2に送る。