Windows10でRaspberry Piのバックアップ

バックアップ

まず,メモ帳アプリを開き,何も書かずに,好きな場所に[好きな名前].imgで保存。これで,空のイメージファイルができた。

次に,Win32 Disk Imagerを開き,ImageFileには作成した空のイメージファイルを,DeviceにはバックアップするSDカードのドライブを指定し,Readボタンを押せばバックアップできる。なお,Raspberry PiをインストールしたSDカードをWindows10PCで読ませるとフォーマットの有無を聞かれるがすべてキャンセル。Deviceの指定では,RecoveryとかBootとか複数のドライブに分かれているが,SDカードのなかでドライブレターがABC順で先のものを選んでおけばいいみたい(コントロールパネル→管理ツール→コンピュータの管理画面で確認できる)。また,HashはNoneでいいみたい。

リストア

まず,SDメモリカードフォーマッターでSDカードをフォーマット(ドライブを間違えないこと!)

次に,Win32 Disk Imagerを開き,ImageFileには作成したイメージファイルを,DeviceにはSDカードのドライブを指定し,Writeボタンを押す。Readボタンを押さないように注意。

参考にしたサイト

【Raspberry pi】Windows10でSDカードのバックアップ&リストア方法 – アラフォー派遣おじさんの日常

【Raspberry Pi】SDカードを丸ごとバックアップする方法について - りなっくすとらずぱい!

SDカードのコピー方法 | Making Mugbot マグボットの作り方

Ubuntu 20.04 LTSのインストール

インストールするPC

Sony VAIO Z VGN-Z93GS

2010/1に購入したPC。Windows7が入っていたが,2020/1にサポートが終了したので放置。今回再利用。

ちなみに,Ubuntu 20.04 LTSの推奨システムは次の通りでぎりぎり対応。

  • 2 GHzデュアルコアプロセッサ以上
  • 4 GBシステムメモリ
  • 25 GBのハードドライブ空き容量
  • DVDドライブまたはUSBポート(インストールメディアとして使用)
  • インターネットアクセス(推奨)

インストール用DVDの作成

次のサイトから,Windows10PCにUbuntu Desktop 20.04.1 LTSをダウンロード

Ubuntuを入手する | Ubuntu | Ubuntu

次の手順で,ダウンロードをしたISOイメージファイルをDVD-Rに書き込む。

【備忘録】UbuntuのライブDVD作成してみた。(Windows) - Qiita

1.空のDVD-Rをドライブにセット
2.ダウンロードしたISOイメージファイルを右クリックし,「ディスクイメージの書き込み」をクリック
3.「Windowsディスクイメージ書き込みツール」が開くので,ディスクイメージファイルの内容を確認し,「書き込み用ドライブ」にセットした空のDVD-Rを選択
4.「書き込み」ボタンをクリック
5.ライブDVDの作成が開始。処理が完了するまで待つ
6.「状態」に「ディスクイメージは、ディスクに正常に書き込まれました。」と表示されたら,「閉じる」ボタンをクリックし完了

インストール

次のサイトを参考に。書いてあるとおりに選択していけば無事に終了。

Ubuntu 20.04 LTSインストールガイド【スクリーンショットつき解説】 | LFI

Ubuntu 20.04.1 のインストール

  • ようこそ画面:日本語を選択
  • キーボード:両方Japanese
  • Wifiネットワークに接続
  • アップデートと他のソフトウェア:通常のインストール,「Ubuntuのインストール中にアップデートをダウンロードする」と「グラフィックスとWi-Fiハードウェアと追加のメディアフォーマットのサードパーティ製ソフトウェアをインストールする」は両方選択
  • インストールの種類:ディスクを削除してUbuntuをインストール(さようならWindows7
  • タイムゾーンの設定:Tokyo
  • ユーザ情報設定

インストールが始まるので,終われば再起動
初期設定はすべてskip,位置情報はOFFに設定。なお初期設定は「/usr/libexec/gnome-initial-setup --existing-user」を開くと再度実行できるらしい。

インストール直後の作業

Ubuntu 20.04 LTSのインストール直後にやっておきたいことまとめ | LFI

Ubuntu 20.04 LTS をインストールした後やること13選 - Qiita

とりあえず,以下のものを実行。実行方法は上記サイトを参考。

  • 言語サポート: 不完全な言語サポートに関するアップデート情報が表示されたので,この操作を今すぐ実行するを選択し,インストール
  • 日本語を入力できるようにする:トップバーにある ja ▼ をクリック,「日本語 (Mozc) あ 」をクリックして選択。半角/全角キーで日本語入力の切り替え。
  • フォルダ名を英語に変更する
  • 日本語の表示に関する3つの問題を回避する
  • 各種形式の動画や音声を再生できるようにする

Google Chromeのインストール

Google ChromeをUbuntuにインストールする方法 | LFI

デフォルトのWebブラウザとして「Mozilla Firefox」がインストールされているが,「Google Chrome」を使いたいのでインストール。

  1. Google Chromeからdebファイルをダウンロード
  2. ~/Downloadsにdebファイルがあるので,右クリックで「ソフトウェアのインストールで開く」を実行
  3. インストールが完了したら,アクティビティでchromeと入力するとアイコンが出てくるので起動

Raspberry PiでWordPressを動かす

WordPressでHP開発を行うのだがPC環境にインストールするのがいやなので,手持ちのRaspberry Piで動かして開発を進めることにする。

projects.raspberrypi.org

日本語訳はこちら。 igarashi-systems.com その他,参考にしたサイト。 semodeler.life deviceplus.jp qiita.com

まずは,お決まりの更新。

sudo apt update
sudo apt upgrade

次いで,apache2のインストール。

sudo apt install apache2 -y

正常にインストールされていると,Rpiブラウザのアドレスに「localhost」と入力すると,何か表示される。ドキュメントルートは「/var/www/html」にある。 また,ネットワーク内の別のPCからも「192.168.?.?」とIPアドレスをブラウザに入力すると何か表示される。なお,IPアドレスはRpiのターミナルで「hostname -I」で確認できる。

次いで,PHPのインストール。

sudo apt install -y php libapache2-mod-php

動作確認。index.htmlは不要なので削除。

cd /var/www/html
sudo rm index.html
sudo leafpad index.php

<?php echo "hello world"; ?>と入力して保存。ブラウザを更新すると「hello word」と表示される(はず)。

次いで,MySQLのインストールし,Apacheを再起動。

sudo apt install mysql-server php-mysql -y
sudo service apache2 restart

WordPressのダウンロード。ルートフォルダのファイルを削除⇒ダウンロード・展開⇒展開ファイルをルートフォルダに移動⇒不要ファイルを削除⇒所有権の変更

cd /var/www/html
sudo rm *
sudo wget http://wordpress.org/latest.tar.gz
tar xzf latest.tar.gz
sudo mv wordpress/* .
sudo rm -rf wordpress latest.tar.gz
sudo chown -R www-data: .

WordPressの設定。まず,MySQLの設定。

sudo mysql_secure_installation
  • Enter current password for root (enter for none):⇒Enterキーを押す
  • Set root password?⇒Y
  • New password:⇒パスワードを入力(暫定として今日の日付)
  • Remove anonymous users⇒Y
  • Disallow root login remotely⇒Y
  • Remove test database and access to it⇒Y
  • Reload privilege tables now⇒Y

で設定完了。ついでWordPressデータベースの作成。

sudo mysql -uroot -p

パスワードを入力。「MariaDB [(none)]>」となるので,WordPressデータベースを作成。

create database wordpress;
GRANT ALL PRIVILEGES ON wordpress.* TO 'ユーザー'@'localhost' IDENTIFIED BY 'パスワード';
FLUSH PRIVILEGES;

上記,ユーザーとパスワードは自身の環境に応じて設定(今回はユーザ:master,PW:今日の日付)。Ctrl+Dで終了。

WordPressの設定。 ブラウザでlocalhostと入力すると,言語選択画面が出るので,日本語を選択すると,welcome画面が表示される。接続画面が出たら,次の内容で設定。

  • Database Name: wordpress
  • User Name:
  • Password:
  • Database Host: localhost
  • Table Prefix: wp_

「インストール実行」をクリック。必要情報の入力を求められるので入力(ユーザ名とパスワード(ここだけ西暦4桁)は上記と同じ)。「WordPressをインストール」をクリック。インストールが完了すると,ログイン画面がでるので,上記のユーザ名とPWを入力してログインするとWordPressの管理画面が表示される。「http://localhost/wp-admin」とブラウザに入力すると,管理画面のログイン画面がでる。

なお,このままの設定ではネットワーク内の別のPCからアクセスするとCSSが崩れていたり,管理画面にログインできなかったので,管理画面-一般設定のWordPressアドレス(URL)とサイトアドレス(URL)をlocalhostからIPアドレスに変更する。これで,別のPCからも「http://IPアドレス/wp-admin」で管理画面のログイン画面が出る。

以上,めでたしめでたし。

Rasbperry PiにOpenCVを入れなおす

次のプログラムを導入しようとしたら・・・

github.com

CV2がないと言われたので,OpenCVを入れ直す(以前入れていたはずなんだけど・・・)。参考にしたのは次のページ。

www.pyimagesearch.com

qiita.com

まずはmicroSDからメモリのスワップスワップ容量は次のコードで確認できる。

free -h

nanoを用いて"/etc/dphys-swapfile" を編集。

sudo nano /etc/dphys-swapfile

"CONF_SWAPSIZE=1024"(たぶん100となっている)として,control + Xで終了,Yで編集内容を保存,Enterで離脱。次のコードでスワップメモリの変更を反映。

sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start

で,しなくてもいいのだが,空き容量を作るため,wolframとLibreOfficeを削除

sudo apt-get purge wolfram-engine
sudo apt-get purge libreoffice*
sudo apt-get clean
sudo apt-get autoremove

次に必要なライブラリなどをインストール

sudo apt-get update 
sudo apt-get upgrade
sudo apt-get install build-essential cmake pkg-config
sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libxvidcore-dev libx264-dev
sudo apt-get install libgtk2.0-dev libgtk-3-dev
sudo apt-get install libatlas-base-dev gfortran
sudo apt-get install python2.7-dev python3-dev

OpenCVをダウンロード。ここではversion 3.4.5を選択。

cd ~
wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.4.5.zip
unzip opencv.zip
get -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.4.5.zip
unzip opencv_contrib.zip

pipをインストールして仮想環境を構築。このコードはpython3の環境。python2は最後の行の「python3」をpython2に変えるだけ。

wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
sudo python3 get-pip.py
sudo pip install virtualenv virtualenvwrapper
sudo rm -rf ~/.cache/pip
echo -e "\n# virtualenv and virtualenvwrapper" >> ~/.profile
echo "export WORKON_HOME=$HOME/.virtualenvs" >> ~/.profile
echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3" >> ~/.profile
echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.profile
source ~/.profile
mkvirtualenv cv -p python3

ここまで来るとターミナルを終了しても,次のコードで仮想環境に入れる。仮想環境に入れていたら,コンソールのpi@raspberypiの前に(cv)と書かれている。

source ~/.profile
workon cv

で,Numpyを入れる。

pip install numpy

いよいよOpenCVコンパイル

cd ~/opencv-3.4.5/
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D INSTALL_PYTHON_EXAMPLES=ON \
    -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.4.5/modules \
    -D BUILD_EXAMPLES=ON ..

コンパイルが終了するとインストール。

sudo make install
sudo ldconfig

はてなブログでソースコードを「見やすく」貼り付ける

はてなブログソースコードを貼り付けるときに,これまでは「見たままモード」にそのまま貼り付けてきたので見にくかったので,方法を調べてみた。

kurokinomizuiwa.hatenablog.com

はてな記法」または「Markdown記法」モードで貼り付ける

基本はこちらで,ブログを書く際の記法そのものを変更して行う。記法の違いは,次のブログを参考に。
はてなブログで使うべき“記法”はどれ?h2タグを使いたいなら◯◯記法モード! - たわしの帖
「はてな記法」と「Markdown記法」の比較 - Milkのメモ帳

ちなみに,見たままモードで作成したページをこれらの記法に切り替える方法は次の記述を参考に(自動更新はできず,かなりの力技)。
hatebu-memo.scriptlife.jp

はてな記法ソースコードを貼り付ける

スーパーpre記法を使って、プログラムコードなどの構文を色付け(ハイライト)することができる。

nagoyanofes.hatenadiary.jp

hatenadiary.g.hatena.ne.jp

Markdown記法でソースコードを貼り付ける

バッククォートを3個で囲んだ部分がプレ要素になり,その後ろにプログラミング言語の名前を記述すると シンタックスハイライトが適用される。

hatebu-memo.scriptlife.jp

「見たまま」モードで貼り付ける

この場合も力技で,「見たままモード」で作成中のページとは別に「はてな記法」か「Markdown記法」で作成したコードを貼り付けるみたい。

www.dreamark.tokyo

SSPライブラリでRaspberry Pi Camera Moduleを動かしてみる

インターフェース誌で2016年12月号から3号連続で特集されているSSPライブラリを導入してみる。イメージセンサーの素の画像データ(RAWデータ)を取り出すことで,基本的な画質調整から試せるだけでなく,RAWデータの保存と画像処理を分離することで,撮影不能時間を短くしたり,raspivid以上の高速/高解像度の動画撮影が可能になる(らしい)。

hendigi.karaage.xyz

環境構築

SSPライブラリのインストール

インストール法は次のページを参考。概ね書いてあるとおりに実行していけばインストールできた。

www.visionproc.org

ただし最新のバージョンでは,ラズパイにOpenCVをインストールする方法にあるとおり,ファイル拡張は不要(というかできない)。

インストールできたかは次のコマンドで確認

$ cd ~/libssp/1.31/sample/

$ sudo stillsample/stillsample profiles/IMX219\(1280x720@60Hz\).xml stillsampletest.raw

$ ls -l stillsampletest.raw

実際に画を見るには,windowsでダウンロードページにあるRAWViwer1.3.exeを使う。

VisionProcessingFramework(VPF) 環境構築

まず,GUIで必要なgtkパッケージを入れる(VPFではgtk2を使うようで,gtk3だけでは不可)。

$ sudo apt-get install libgtk2.0-dev libgtk-3-dev

次に,OpenCVを入れる。なお,OpenCVのインストールに関してはraspberry pi opencv ビデオで顔認識(コンパイルなし!) - KOKENSHAの技術ブログも参考。

$ sudo apt-get install libopencv-dev

続いて,次のページに書いてあるとおりに実行。
www.visionproc.org

 ASTROの導入

 VPFでも解像度が小さいうちはいいが,大きいとRpiの画面(実際にはVNC viewer内)に入りきらず不便なので,Gain(感度;実際にはアナログゲインとデジタルゲイン),Coarse Integration Time(露出時間)を指定できるように変更したプログラムを利用する。Vision Processing Community:Downloadからastro_20171201.zipをダウンロードし,「~/libssp/1.31/astro」に展開。

ここまで来れば,例えば,次のコードで,3200X2400pxのJPGとRAWファイルが出力される(アナログゲイン:200,デジタルゲイン:300,露出時間:600)。

$ cd ~/libssp/1.31/sample/

$ ./still.sh output 200 300 600

これをPCへ移行させればよいのだが,RAWViwer1.3.exeではRAWファイルを読めなかった。RawTherapeeでは読める。ただし,このソフトでは最初の画素がBから始まることを仮定しており,チャネルミキサでRとBを入れ替える。

RPi-Cam-Web-Interface

※ しばらく前に書いた記事。最近の環境では不明だがとりあえずUPしておく。

Raspberry piのカメラを動かすための方法は以前に書いた(Pi NoIR Camera V2をひとまず使えるようにする - input-R)が,ここではraspberry piに特化したRPi Cam Web Interface を使う。

http://elinux.org/RPi-Cam-Web-Interface

参考にしたサイト

raspberry pi zero W にRPi-Cam-Web-Interfaceで監視カメラ製作 | 興味本位の Trial 安堵 Error

NoIR V2 - Video Streaming Baby Monitor | element14 | Raspberry Pi Projects

Raspberry With Cam in Birdhouse: 11 Steps (with Pictures)

インストール

RPi-Cam-Web-Interface - eLinux.orgに書かれている。

とりあえず使ってみる 

[record video start/stop] 現在のカメラ画像の動画録画をスタート・ストップ

[record image] 現在のカメラ画像の静止画をキャプチャー

[tamelapse start/stop] 現在のタイプラプス撮影をスタート・ストップ
 撮影間隔はCamera Settings-Timelapse-Intervalで秒単位(0-3200s)で設定可能。

[motion detection start/stop] 動体検知録画をスタート・ストップ
 動体検知を行うにはCamera Settingsで Motion detect modeをInternalにする。なお,このボタンを押して動体検知を始めるには,Schedule SettingsでDayModeをAllDaysとし,Motion Startにca 1,Motion Stopにca 0が入力されていることを確認しておく。

[Download Videos and Images] 保存されている動画・静止画をダウンロード
 撮影した画像は/var/www/html/mediaに保存されている。

各種の設定

Schedule Settings

指定した時間にコマンドを実行するための設定ができる。デフォルトは, 24時間休みなく動体検知したときに動画を記録する設定になっており,トップ画面のmotion detection startボタンをクリックすると動体検知録画が始まる。起動と同時に動体検知する場合には,Period Startにmd 1を書き込む。

次の欄にコマンドを入力して,スケジュールを設定する。DayModeはAllDay,Fixed Times,Sunbasedから選べる。

Motion Start:モーショントリガの開始が受信されたときに行う動作
Motion Stop:モーショントリガが停止したときに行う動作
Period Start:ある時間が来たときに行う動作

実行できるコマンドはCommand referenceのボタンを押すと説明がでてくる。例えば,md(動作検知),ca(動画録画),im(静止画キャプチャー),tl(タイプラプス撮影),それぞれ1でスタート,0でストップ。

例えば,18時に動画録画をスタートして1時間後にストップ,それ以降は動作検知して,動作があれば録画をしたければ,次の通りにする。

18:00 Period Start: ca 1

19:00 Motion Start: ca 1, Motion Stop: ca 0, Period Start md 1

録画したファイルがSDカード容量を超えるのを防ぐために,ファイル削除も可能。PurgeVideo_Hours, PurgeLapse_Hours, PurgeImage_Hours:それぞれ動画,タイプラプス画像,静止画が指定時間以上古いファイルを消去する

PurgeSpace_ModeEx:Min Space(%:使用可能ファイル容量の最小値), Max Usage(% :使用済ファイル容量の最大値),Min Space(GB:使用可能ファイル容量の最小値),Max Usage(GB:使用済ファイル容量の最大値)のいずれかで設定。

なお,これらのコマンドはManagement_Intervalで設定された間隔ごとに実行される(標準は3600秒=1時間)。

Camera Settings

いじりそうなものだけをピックアップ。

[Resolution] 解像度の設定。

[Buffer] 動体検知してから動画録画を行うまでにタイムラグがあるので,画像のバッファリングを行っておく(でないと,動作検知後の場面しか写らない)。

[MP4 Boxing mode] h.264をmp4に変換するかどうか。長時間録画の場合,これをoffにしないと,Rpiがoffになることがある。offにすると,そのままでは見られないので,VLC media playerなどで見ることになる。

 [Motion detect mode] 動体検知モード

Motion Settings

保存先の変更

Raspberry Piに使っているmicroSDカードの容量が小さいため,外付HDDに保存先を変える。ただし,HDDを接続していないときにはSDカードに保存させたい。

保存先フォルダの変更

まず,保存先のフォルダを ../mediaから../media/rpicamに変更する(保存がHDD直下で良ければ,無視してよい)。

保存先のフォルダを作る

 sudo mkdir /var/www/html/media/rpicam

フォルダの所有者を変更する

 sudo chown -R www-data:www-data /var/www/html/media/rpicam

保存先を変える

 sudo leafpad /etc/raspimjpeg

 image_path, lapse_path, video_pathの記述を変える

再起動後には,ここまでで保存先フォルダが変更されているはず。

外付HDDをマウント

次に,/var/www/html/mediaにマウント先を変更。一回限りで良ければ,管理者権限でアンマウントしてから,マウントしたいフォルダにマウントすればよい。

起動時に自動マウントするなら,/etc/fstabを管理者権限で開き,次の行を追加して保存。再起動するとOK。

UUID="XXX" /var/www/html/media      ntfs-3g defaults,nofail 0      0

マウントの詳細な手順は次のサイトを参考に。

白執事の徒然なる日々 Raspberry Pi にUSBメモリをマウント

Raspberry Pi 2でファイルサーバを作るまでのまとめ - Qiita

(余談1)マウント先は重複できるみたい。どう使うかはよく考えてないが。

unshare -m とか mount --make-shared とか - Qiita

(余談2)HDDへの供給電流にも注意

Raspberry Piに3TBのUSB HDD(HD-AC30TK)を追加してみた | あっかぎのページ