こんにちは。
「別の部屋で寝ている1歳半の子どもが夜起きたことを知りたい」という要件から、見守りシステムを作るべくRaspberryPiでの実装に挑戦することにしました。
私自身、RaspberryPiの導入は初めてでなおかつディスプレイもキーボードも無い状態でしたので**「ディスプレイとキーボード無し、SSH経由でRaspberryPiを初期設定する手順」**をまとめます。
ここでいう初期設定とはラズパイに接続ができて、VNCでデスクトップ環境を利用可能にするまで、とします。
2回目となる動体検知と通知機能の実装はこちらです。
環境
基盤:Raspberry Pi4 Model B
OS:Raspberry Pi OS(32bit)
インストーラー: Raspberry Pi Manager v1.4
クライアント: Windows10
(参考)今回購入した製品
Amazonで販売されているRaspberry Pi 4 Model B Starter Kit Proを購入しました。
- RaspberryPi 本体
- ケース
- HDMIケーブル2本(今回は使わない)
- 専用電源ケーブル
- ヒートシンク&ファン
- 32GB MicroSD(NOOBS書き込み済)
- USB3.0 SDアダプタ
という、およそ初期設定に必要なものが全部入りになっています。
本体組立て
まずは本体を組み立てていきます。
ファンの電源は説明書を見て4,6番のピンにつなぐことにします。
赤いコード(プラス)を4番、黒いコード(マイナス)を6番につなぎます。
一旦ここまでです。
MicrosSDにOS書き込みとSSH有効化
ここからラズパイ上で動くOSの作成とSSHの設定を行います。
OSインストール
私が今回購入した付属のMicroSDには予めNOOBSというOSインストーラーが書き込まれていましたが、これはRaspberryPi上でOSをインストールするためのものなので、削除します。
なおファイルシステムはFAT32となっており、これはそのままで良いため単純にMicroSD上のファイルを全削除しました。
MicroSDへのRaspberryPi OSの書き込みはRaspberryPi公式ツールであるRaspberryPi Image Managerで非常に簡単に行なえます。
RaspberryPi Image Managerをインストール、起動します。
左端のCHOOSE OS
をクリックしてインストールするOSを選択します。今回は一番上の「Raspberry Pi OS(32bit)」を選択します。
続いて真ん中のCHOOSE SD CARD
をクリックすると、現在パソコン上で認識しているSDカードの一覧が表示されるので、インストールするSDカードを選択します。
SSH有効化
今回はディスプレイもキーボードもない状態のため、クライアントPCからRaspberryPiへSSHで接続して初期設定を行います。
RaspberryPi起動時からSSHデーモンを有効化するために、先程作成したMicroSDの直下にssh
という名前のからファイルを作成します。
これだけでRaspberryPi起動時にSSHデーモンが立ち上がります。素晴らしく簡単です。
RaspberryPi起動
MicroSDカードを最初に組み立てたRaspberryPi本体に差し込みます。
SSH接続
Raspberry Pi OSではデフォルトでホスト名がraspberrypi.local
となっているため、クライアントPCが同じネットワークにつないであれば、ホスト名でSSH接続できます。
問題なさそうです。
それではSSH接続です。デフォルトではID/パスワードがpi/raspberrypi
のユーザーが作成されているため、このユーザーでログインします。
見事に接続できました!!
WirelessLAN設定
初期設定がてら、WirelessLANも設定しておきます。
先程ログインしたコンソールにも表示されていたsudo raspi-config
を実行します。
上から2番目のNetwork Options
を選択してEnter。
上から2番目のN2 Wireless LAN
を選択してEnter。
最初のメニューに戻りFinish
をEnterすると再起動します。
再起動後に再びSSH接続、ifconfig -a
で確認すると有線LANとWirelessLANのIPアドレスが割り当てられています。
VNC設定
ラズパイ側(サーバー)
最後に、必須ではありませんがデスクトップが使えると何かと便利そうなのでVNCサーバーを導入します。
まずラズパイにVNCサーバーをインストールします。今回はTightVNCを使います。
sudo apt-get update
sudo apt-get install tightvncserver
一度tightvncserver
でVNCサーバーを起動し、ログイン用のパスワードを設定します。
pi@raspberrypi:~ $ tightvncserver
You will require a password to access your desktops.
Password:
Warning: password truncated to the length of 8.
Verify:
Would you like to enter a view-only password (y/n)? y
Password:
Warning: password truncated to the length of 8.
Verify:
xauth: file /home/pi/.Xauthority does not exist
New 'X' desktop is raspberrypi:1
Creating default startup script /home/pi/.vnc/xstartup
Starting applications specified in /home/pi/.vnc/xstartup
Log file is /home/pi/.vnc/raspberrypi:1.log
クライアント側
これでラズベリーパイにVNC接続できるようになりました。
クライアント側のViewerはおそらくなんでもいいと思いますが、一応TightVNCのクライアントを使って確認します。
java -jar tightvnc-viewer.jar
Raspberry Piのホスト名(またはIPアドレス)を入力、先程設定したパスワードでログインできれば成功です!
VNCデーモン設定
これはおまけですが、ラズパイを起動するたびにVNCサーバーを立ち上げるのは面倒なのでsystemdによる自動起動設定を行います。
/etc/systemd/system/tightvnc.service
という名前でサービスファイルを作成します。
[Unit]
Description=tightvncserver
After=network.service
[Service]
Type=forking
Restart=on-success
ExecStart=/usr/bin/vncserver :1 -geometry 1024x768 -depth 24
ExecStop=/usr/bin/vncserver -kill :1
User=pi
[Install]
WantedBy=multi-user.target
サービスを有効化します。
sudo systemctl enable tightvncserver
今回はここまで。
思ったよりも簡単にできました。次回はカメラの接続と動体検知機能の実装(と言っても既存のソフトウェアを設定するだけ)します。
参考サイト