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カードのバックアップ&リストア方法 – アラフォー派遣おじさんの日常
Ubuntu 20.04 LTSのインストール
インストールするPC
2010/1に購入したPC。Windows7が入っていたが,2020/1にサポートが終了したので放置。今回再利用。
- CPU: インテル® Core™2 Duo プロセッサー P9700@2.80GHz
- メモリ:4GB
- ハードドライブ: SSD 128GB
- GPU: NVIDIA GeForce 9300M GS GPU
- DVDスーパーマルチドライブ
ちなみに,Ubuntu 20.04 LTSの推奨システムは次の通りでぎりぎり対応。
- 2 GHzデュアルコアプロセッサ以上
- 4 GBシステムメモリ
- 25 GBのハードドライブ空き容量
- DVDドライブまたはUSBポート(インストールメディアとして使用)
- インターネットアクセス(推奨)
インストール用DVDの作成
次のサイトから,Windows10PCにUbuntu Desktop 20.04.1 LTSをダウンロード
次の手順で,ダウンロードをした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
- ようこそ画面:日本語を選択
- キーボード:両方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」を使いたいのでインストール。
- Google Chromeからdebファイルをダウンロード
- ~/Downloadsにdebファイルがあるので,右クリックで「ソフトウェアのインストールで開く」を実行
- インストールが完了したら,アクティビティでchromeと入力するとアイコンが出てくるので起動
Raspberry PiでWordPressを動かす
WordPressでHP開発を行うのだがPC環境にインストールするのがいやなので,手持ちのRaspberry Piで動かして開発を進めることにする。
日本語訳はこちら。 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」と表示される(はず)。
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: .
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画面が表示される。接続画面が出たら,次の内容で設定。
「インストール実行」をクリック。必要情報の入力を求められるので入力(ユーザ名とパスワード(ここだけ西暦4桁)は上記と同じ)。「WordPressをインストール」をクリック。インストールが完了すると,ログイン画面がでるので,上記のユーザ名とPWを入力してログインするとWordPressの管理画面が表示される。「http://localhost/wp-admin」とブラウザに入力すると,管理画面のログイン画面がでる。
なお,このままの設定ではネットワーク内の別のPCからアクセスするとCSSが崩れていたり,管理画面にログインできなかったので,管理画面-一般設定のWordPressアドレス(URL)とサイトアドレス(URL)をlocalhostからIPアドレスに変更する。これで,別のPCからも「http://IPアドレス/wp-admin」で管理画面のログイン画面が出る。
以上,めでたしめでたし。
Rasbperry PiにOpenCVを入れなおす
次のプログラムを導入しようとしたら・・・
CV2がないと言われたので,OpenCVを入れ直す(以前入れていたはずなんだけど・・・)。参考にしたのは次のページ。
まずは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
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記法を使って、プログラムコードなどの構文を色付け(ハイライト)することができる。
Markdown記法でソースコードを貼り付ける
バッククォートを3個で囲んだ部分がプレ要素になり,その後ろにプログラミング言語の名前を記述すると シンタックスハイライトが適用される。
「見たまま」モードで貼り付ける
この場合も力技で,「見たままモード」で作成中のページとは別に「はてな記法」か「Markdown記法」で作成したコードを貼り付けるみたい。
SSPライブラリでRaspberry Pi Camera Moduleを動かしてみる
インターフェース誌で2016年12月号から3号連続で特集されているSSPライブラリを導入してみる。イメージセンサーの素の画像データ(RAWデータ)を取り出すことで,基本的な画質調整から試せるだけでなく,RAWデータの保存と画像処理を分離することで,撮影不能時間を短くしたり,raspivid以上の高速/高解像度の動画撮影が可能になる(らしい)。
環境構築
SSPライブラリのインストール
インストール法は次のページを参考。概ね書いてあるとおりに実行していけばインストールできた。
ただし最新のバージョンでは,ラズパイに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への供給電流にも注意