MJPG-Streamer」タグアーカイブ

Raspberry Piの初期設定 – Raspbian

Arch Linuxで開発を進めてきたハウスローバーですが、先日、いつもの様にシステムのアップデートを実施したところ、 パッケージマネージャのデータベースが破損したとのメッセージを出力し、pacmanが使用できなくなってしまいました。

修復を試みましたが、上手く行かず、再セットアップした方が早そうです。 それならと、最新のRaspbianに切り替えることにしました。

重い印象だったRaspbianですが、CUIではArch Linuxと大差なさそう。 それとも改善しているのでしょうか。

raspbian_img

Raspbianの初期設定

・パッケージ更新
sudo apt-get update
sudo apt-get upgrade

・ネットワーク設定
sudo nano /etc/network/interfaces
/etc/network/interfacesの内容
—————————————-
auto lo wlan0 eth0

iface lo inet loopback
address 127.0.0.1
netmask 255.0.0.0

iface eth0 inet static
address 192.168.0.XX
netmask 255.255.255.0
network 192.168.0.0

iface wlan0 inet static
address 192.168.0.XX
netmask 255.255.255.0
network 192.168.0.0
gateway 192.168.0.XX
wireless-essid XXXXX
wireless-key XXXXXXXXXX
#wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
—————————————-
(セキュリティ設定がWEPの場合、上記設定のみで繋がりますが下記ネットワークマネージャーで設定した方が安定しました)

・ワイヤレス用ネットワークマネージャー
sudo apt-get install wicd-curses
インストール後、wicd-cursesで設定画面へ

・DNS設定
sudo nano /etc/resolv.conf
nameserver 192.168.0.XX

・ネットワーク設定の適用
sudo /etc/init.d/networking reload

・Apacheインストール
sudo apt-get install apache2

・PHP5インストール
sudo apt-get install php5

・PHPキャッシュモジュールAPCインストール
sudo apt-get install php-apc

・mjpg_streamerのインストール
sudo apt-get install subversion
sudo apt-get install libjpeg-dev imagemagick
svn co https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer mjpg-streamer
cd mjpg-streamer
make
mjpg_streamerをバックグランドで起動
(インストールディレクトリで実行)
sudo ./mjpg_streamer -b -i “./input_uvc.so -f 20 -r 320×240 -d /dev/video0 -y” -o “./output_http.so -w ./www -p 8080”

・ServoBlaster
git clone git://github.com/richardghirst/PiBits.git
cd PiBits/ServoBlaster/user
make servod
sudo make install
起動オプション
–idle-timeout=2000 –p1pins=7,11

・WebIOPiのインストール
wget http://webiopi.googlecode.com/files/WebIOPi-0.6.0.tar.gz
tar xvzf WebIOPi-0.6.0.tar.gz
cd WebIOPi-0.6.0
sudo ./setup.sh
サービス起動 sudo /etc/init.d/webiopi start
サービス停止 sudo /etc/init.d/webiopi stop

・Wiring Piのインストール
git clone git://git.drogon.net/wiringPi
cd wiringPi
./build

・I2Cの使用
i2c-devのロード
sudo modprobe i2c-dev
自動起動の為/etc/modulesにi2c-devを追加
nano /etc/modules
i2c-toolsのインストール
sudo apt-get install i2c-tools
状態表示
i2cdetect 1

・CGIをroot権限で実行する為の設定
sudo の設定ファイル (/etc/sudoers) を編集する
www-data ALL=(root) NOPASSWD:ALL を追加

追加項目

・webminインストール
sudo apt-get install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl apt-show-versions
wget http://prdownloads.sourceforge.net/webadmin/webmin_1.660_all.deb
sudo dpkg –install webmin_1.660_all.deb
sudo /usr/share/webmin/changepass.pl /etc/webmin root <rootのパスワード>
https://<raspberrypiのIPアドレス>:10000/

・sambaをインストール
sudo apt-get install samba samba-common-bin
sambaの設定
sudo nano /etc/samba/smb.conf
以下を追加
—————————————-
[share]
comment = share drive
read only = no
locking = no
path = /var/www
guest ok = yes
force user = <sambaユーザー名>
—————————————-
パスワードを設定
sudo smbpasswd -a <sambaユーザー名>
New SMB password:<sambaユーザーパスワード>
Retype new SMB password:<sambaユーザーパスワード>
smanbaを再起動
sudo service samba restart

コマンド等

・デバイス表示(主にUSBデバイスの確認)
lsusb

・GPIOの状態表示
gpio readall

・wiringPiのライブラリを指定してコンパイル
gcc xxxxxx.c -o xxxxxx -I/usr/local/include -L/usr/local/lib -lwiringPi

 

 参考にさせていただいたサイト

人と技術のマッシュアップ – Raspberry PiでGPIO制御

sstea備忘録 – Raspberry Pi の最適化を試みる

ものづくりエクスペリメント – メモリーを節約する

 

Webコントロールの画面構成

webコントロール画面は、MJPG-Streamerのストリーミング映像を中心に構成しています。

機能面では、Motionの方が充実しているのですが、動作の軽快なMJPG-Streamerを利用しています。

Webコントロール画面

カメラ映像にはjavascriptにより、情報を重ね合わせ表示しています。

web_cnt_sta_v0

起動時刻、CPU負荷、CPU温度、無線品質、距離センサーのデータを表示しています。

今後、バッテリー電圧や進行方向・走行距離などの表示を加えたいと思います。

試作レベルの為、操作性やデザインなどを考慮していなかったので、現在、新バージョンを製作中です。

 

Raspberry Piの初期設定 – Arch Linux

Raspberry PiのOSは、当初、Raspbianを使用していたのですが、少しでも軽快な動作を期待して、Arch Linuxに切り替えています。

必要なパッケージを導入し、実際に使用する環境にした場合、本当にArch Linuxの方が軽快なのか? 感覚的にはあまり実感できていません。

Raspbianで再セットアップして比較してみたいとも思いますが、現在はArch Linuxです。

久しぶりに、Raspberry Piの公式サイトに行ってみると、ダウンロードページにArch Linuxがありませんでした。 なぜでしょう。

Raspberry Pi Model B

Raspberry Pi Model B

Arch Linuxの初期設定

システムを最新の状態にアップデート
pacman -Syu

sudo をインストール
pacman -S sudo

php apach をインストール
pacman -Sy apache apache php php-apache

設定ファイル(/etc/httpd/conf/httpd.conf)の修正
phpモジュールを追加

LoadModule php5_module modules/libphp5.so
Includeリストの最後に追加
Include conf/extra/php5_module.conf
追加
AddHandler php5-script php
文字コードの設定
AddDefaultCharset UTF-8
置き換える
LoadModule mpm_event_module modules/mod_mpm_event.so
から
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
に変更

php.iniの変更
ファイルの読み込み制限を解除

open_baseidr [制限パス]
から
open_basedir none
に変更
WiFi 関係のパッケージをインストール
pacman -S iw wpa_supplicant wpa_actiond dialog
WiFi toolをインストール (iwconfig等)
pacman -S wireless_tools
ホスト名を設定
hostnamectl set-hostname rasberrypi
再起動
reboot
ワイヤレスLAN を見つけて設定してくれる wifi-menu を使って設定
wifi-menu wlan0
自動で wlan0 が接続されるように設定
systemctl enable netctl-auto@wlan0

ワイヤレスLANの品質表示
cat /proc/net/wireless

固定IPの設定
/etc/netctl/examples/ethernet-staticを/etc/netctlにコピーして編集

IP=static
Address=(‘192.168.0.XX/24′)
Gateway=’192.168.0.XX’
DNS=(‘192.168.0.XX’)
※wlan0も同様
タイムゾーンの設定
ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

Webminのインストールと設定
pacmanでwebminパッケージをインストール

sudo pacman -S webmin
制御用端末のアクセス制限解除
sudo nano /etc/webmin/miniserv.conf
allow=127.0.0.1 192.168.0.0/24   追加
webmin自動起動設定とスタート
sudo systemctl enable webmin.sevice
sudo systemctl start webmin.service

MJPG-Streamerのインストール
必要なパッケージを導入

sudo pacman -S base-devel abs file
sudo pacman -S mjpg-streamer
起動コマンド(例)
mjpg_streamer -i “input_uvc.so -d /dev/video0 -r 320×240 -f 12 -y” -o “output_http.so -w /usr/share/mjpeg-streamer/www -p 8080”

I2C ツールのインストール
pacman -S i2c-tools

/etc/modules-load.d/rasberrypi.confへ以下を追加
i2c-dev

servoblasterのインストール
git clone https://github.com/richardghirst/PiBits.git
cd PiBits/ServoBlaster/user/
make servod
起動コマンド
/root/PiBits/ServoBlaster/user/servod –idle-timeout=2000

Wiring Piのインストール
git clone git://git.drogon.net/wiringPi
cd wiringPi
./build

webiopiのインストール
cd /tmp/
wget https://aur.archlinux.org/packages/py/python-webiopi/python-webiopi.tar.gz
tar -xvf *.tar.gz
cd python-webiopi
makepkg -s –asroot
pacman -U python-webiopi-0.7.0-1-armv6h.pkg.tar.xz

webiopiの起動
systemctl start webiopi

システム起動時にwebiopiを起動
systemctl enable webiopi
systemctl start webiopi.service

RAMディスクの設定・マウント
sudo mkdir -p /media/ramdisk
sudo mount -t tmpfs -o size=1K tmpfs /media/ramdisk
アンマウント
sudo umount /media/ramdisk
RAMdisk領域への書き込み例
fp = fopen(“/media/ramdisk/test.txt”, “w”);
fputs(s, fp);
RAMdisk領域からの読み込み例
fp = fopen(“/media/ramdisk/test.txt”, “rb”);
s[i] = fgetc(fp);

 

参考にさせていただいたサイト

橋本商会 – Raspberry Pi + mjpg-streamerでwebcam動画配信

人と技術のマッシュアップ – Raspberry PiでGPIO制御

Raspberry Pi 日記 – Raspberry Pi 日記 (part2)

自宅LAN構築の宇宙(せかい) – Arch Linux サーバー構築編