スマートスピーカの自作① ~Raspberry Piの初期設定~

 本投稿は,「スマートスピーカ with Raspberry Pi」に関する投稿です.投稿は内容ごとに分け、下記の通り分割して投稿してゆきます.そして本投稿は下記①の内容になります.

① Raspberry Piの初期設定(本投稿)
② Google Assistant SDKの初期設定
③ ウェイクワードを任意ワード化
④ ローカルストレージ上の音楽ファイルを再生する機能の実装
⑤ Raspberry Piの起動と同時にGoogleAssistantの自動実行
⑥ Wake on LANを用いた同ネットワーク内PCの起動
⑦ OpenSSHを用いた同ネットワーク内PCのシャットダウン
⑧ Pi Zero Wと自作シールドとの連携による家電操作
⑨ 別Piとの相互通信による室内の温湿度・気圧測定と合成音声での読み上げ

 筆者が「スマートスピーカ with Raspberry Pi」を開発を始めたときから今現在の運用の環境は,Raspbian 9.x系です.しかし,これらの投稿の執筆にはRaspbian 11.1を使用しています.

目次

  1. 使うもの
  2. Raspberry PiのOS準備
  3. VNCを用いたPCからのリモート環境の構築
  4. トラブルシューティング①:VNC時のRaspberry Piの解像度の変更方法
  5. トラブルシューティング②:Pi 4にてHDMI接続していないとOSがブートしない現象

1. 使うもの

  • Raspberry Pi
  • Raspberry Piに用いるACアダプタ*1
  • microSDHCカード(amazon)*2
  • キーボード*3
  • マウス*3
  • ディスプレイ*3
  • HDMIケーブル*3 *4
  • PC*5
  • Win32 Disk Imager(SourceForge
  • VNC Viewer(Real VNC

*1 電源供給はUSB端子の規格ですが,Raspberry Piのモデルによって求められる電流が異なります.例えばPi 3 Model Bでは2.5A,Pi 4 Model Bでは3.0Aです.もしスマホなどで使用しているアダプタを流用したりUSBハブから電源供給する際は,出力電流を確認してからご使用ください.

*2 購入するSDカードの参考として,筆者は32GBのSDカードを使用しています.投稿⑧までの内容が実装された,スマートスピーカの環境および音楽ファイル(mp3形式で約400曲,3.3GB)が書き込まれた状態で,空き容量が18.4GBです.

*3 Raspberry Piと接続して使用するものです.筆者はVNCによるPCからリモートでRaspberry Pi上での操作や開発を行うため,Raspberry Piとの無線接続設定時のみにしかこれらは使用しません(例外として,Pi 4の場合はHMDを接続していないとOSがブートしない問題があります).

*4 Raspberry Piのモデルによって用いるHDMIの端子が,HDMI/MiniHDMI/MicroHDMIと異なります.購入する際は気をつけてください.

*5 Raspberry Piに対するOSのダウンロードとmicroSDカードへの書き込みを行います.また,筆者はRaspberry Piとの無線接続設定を済ませ次第,以降はVNCによるPCからリモートでRaspberry Pi上での操作や開発を行います.筆者のPC環境はWIndows 10です.

2. Raspberry PiのOS準備

 この第2章では,OSイメージファイルのダウンロード,SDカードへの書き込み,Raspberry Piの稼働確認までを行います. 
 まずは,Raspberry Pi向けのOSイメージファイルを公式サイトからダウンロードします.以前まではOSイメージファイルのみが公開されており,それをSDカードに書き込むためには各自で書き込みツール(e.g. Win32 Disk Imager)を見繕う必要がありました.しかし現在(2022.1/1)では書き込みツールとイメージファイルを包括した状態で公開されているようです.
 しかし,開発が進んだら,その時点のOS・開発環境をイメージファイルとしてまるごとバックアップを取ることもでてくると思います.そのため,公式サイトではOperating system imagesページからOSのイメージファイルのみをダウンロードし,書き込みと/読み込みの双方ができる「Win32 Disk Imager」を使用して書き込みます.筆者は「Raspberry Pi OS with desktop and recommended software」をダウンロードしました(図1).

図1  Operating system imagesページ の様子

 次にダウンロードしたOSイメージファイルをSDカードに書き込みます.書き込みには 「Win32 Disk Imager」を使用します.「Win32 Disk Imager」をダウンロードしたらPCにインストールします.
 また,前述にてダウンロードしたOSイメージファイルはzip形式のため,解凍します.そうすると,img形式のファイルが1つ格納されています.
 Deviceの項目にてPCに接続したSDカードのドライブを選択し,ImageFileの項目にてimg形式ファイルを選択します.そしてWriteボタンを押して書き込みます.

図2 Win32 Disk Imagerの実行画面

 これからRaspberry Piを実際に稼働させます.初回の起動時には,図3のようなウィンドウが表示され,初期セットアップが開始されます.

図3 セットアップウィンドウ

 図3にて「Next」ボタンを押すと,用いる言語やタイムゾーンの設定が表示されます(図4).
 ここで設定した言語はOS上の言語だけでなく,IMEにも適用されるようです.筆者が実際に開発を行ったRaspbian 9.11では日本語入力用のIMEを別途インストールする必要がありましたが,本投稿で扱っているRaspbian 11.1では別途インストールすることもなく日本語入力ができます.

図4 言語の設定

 図4にて「Next」ボタンを押すと,ユーザアカウントとパスワードの設定が表示されます(図5).
 デフォルトでは,ユーザアカウント名はpi,パスワードはraspberryです.まずはVNCによるリモートで操作できる環境を構築することを優先し,この段階ではデフォルトのまま何も入力せずに「Next」ボタンを押します.

図5 アカウント名とパスワード

 もしタスクバーが画面にフィットしていなければ,チェックボックスにチェックします(図6).

図6 画面の設定

 アップデートの確認と実行を促す内容が表示されますが,VNCによるリモート操作環境を確立し腰を据えて諸設定や開発できる状態になるまでは保留とし「Skip」ボタンを押します(図7).

図7 ソフトウェアのアップデート

 これからネットワークの設定と,VNCの準備をします.
 まずネットワークの設定をします.タスクバーの右端に表示されている無線LANのアイコンをクリックすると,周囲のアクセスポイントが表示されます.そこから任意のアクセスポイントに接続します(図8).

図8 無線LANの接続

 次にVNCの設定をします.
 タスクバーの左端に表示されているメニューボタン(Raspberry Piのアイコン)をクリックし「設定>Raspberry Piの設定>インターフェイス>VNC」にて,「有効」にチェックします(図9).
 図9では,投稿⑦や⑧にてSSHでの接続も行うため,「SSH」もこの期に有効にしています.

図9 VNCの有効化

3. VNCを用いたPCからのリモート環境の構築

 まず,接続する時によってRaspberry Piに割り当てられるIPアドレスが変わってしまわないよう,固定IPアドレスで割り振っておきます.Raspberry Piからも取得するIPアドレスを指定できるようですが,筆者はルータ上での設定にて,任意のマシンに対し手動でIPアドレスを割り振り固定化しています.
 PCからRaspberry Piへのリモート接続にVNC Viewerを使用します.VNC Viewerの基本画面は図10のようなものになります.筆者は既に3台のマシンに対しメインPCからリモートで操作を行っているため,接続先マシンとして3台分登録されています.
 VNC Viewerを利用するためには, VNC Viewerにおけるアカウントを作成する必要があるかもしれません(無くてもできる?).筆者はアカウントを作成しました.

図10 VNC Viewerの実行画面

 図10のように,登録した接続マシンが表示される領域の,その余白部分で右クリックをし「New connection…」を選択します(図11).「VNC Server」の項目に,Raspberry Piに割り当てたIPアドレスを入力します.「Name」の項目は,VNC Viewer上での各マシンの名前です.

図11  New connection… によるプロパティ画面

 IPアドレスを入力して「OK」ボタンを押すと,図12が表示されます.Raspberry PiのデフォルトのUsernameは「pi」,Passwordは「raspberry」です.
 「Remember passwoed」の項目にチェックを入れておくと,次回の接続からこの図12の入力を省略できます.

図12 接続先(Raspberry Pi)のユーザ名とパスワードの入力画面

 以上で,Raspberry Piの初期設定と,VNCによるPCからのリモート開発環境の構築は終了です.

4. トラブルシューティング①:VNC時のRaspberry Piの解像度の変更方法

 VNC ViewerからRaspberry Piに接続すると,Raspberry Piの解像度を変更しても,図13のようにVNC Viwerのウィンドウに合わない場合があります.この第4章では,この問題の解決方法を説明します.

図13 VNC時にRaspberry Piの解像度を変更(1024×768)してもVNC Viewerのウィンドウに合わない様子


  タスクバーの左端に表示されているメニューボタン(Raspberry Piのアイコン)をクリックし「設定>Screen Configuration」をクリックします(図14).

図14 Screen Configuration

 表示されたウィンドウにて「Cifigure>Screens>Composite-1」にて「アクティブ」にチェックが付いているため,この部分をクリックしチェックを外します.そして緑色のチェックマークをクリックし,変更内容を適応します(図15).
 ここで,アクティブになっているコンポジットが無いという確認が表示されると思いますが「はい」を選択します.さらに変更を適応するか確認されるため「はい」を選択します.
 Raspberry Piを再起動すると,これらの適応が反映されます(図16).

図15 Conposite-1のアクティブのチェックを外し適応する様子
図16 変更した解像度(1024×768)が正常に反映された様子

5. トラブルシューティング②:Pi 4にてHDMI接続していないとOSがブートしない現象

 Raspberry Pi 4 Model B(RAM 8GB)を使用した場合,HDMI接続していないとOSがブートしない現象を確認しています.そのため,HDMI接続せず通電だけ行い,VNCでPCから作業することができません.
 筆者はこれまでにPi 3 Model B,Pi Zero Wを使用した経験がありますが,Pi 4 Model Bで初めて遭遇した現象です.本投稿にて筆者が使用したOSのバージョン(Raspbian 11.1,イメージファイル:2021-10-30-raspios-bullseye-armhf-full.img)をPi 4 Model BでなくPi Zero Wに使用した場合,この現象は確認できていません.
 筆者には根本的な解決法がまだ分かっていませんが,筆者が行っている回避策を下記にて紹介します.

 HDMIをPi 4 Model Bとディスプレイに接続さえしていれば,ディスプレイに別のPCの映像信号を表示していようと,Pi 4 Model BのOSはブートされます.
 わざわざディスプレイと有線で接続しておく必要はありますが,この方法であれば,ひとまずVNCでPCから作業することができ.つまり「1つのマウスやキーボードでRaspberry PiとPCの同時に作業ができる」「PC上から,PCの作業とRaspberry Piの作業ができる(コピペなども可能)」「ディスプレイの表示内容をRaspberry Piだけで占有しない」のメリットが得られます.