Raspberry PiでAmazon Echo Spotを作ってみよう。
息子が携帯電話の電源を切っていることがあるのです。
滅多にないことではあるのですが、遠くに住んでいる息子に連絡を取りたいときに携帯電話の電源が切れていることがあります。 まあ、連絡を取る理由というのが、朝起こす、ということなんですが。 えっ、目覚まし買えばいいじゃん、と言われますが、日々声を聞くことも大切なのでいまだに続いている我が家のルーティーンです。 折角、朝起こしても携帯電話の電源が入っていない、困るんですよね。 そこで閃きました。 そうだ、Raspberry PiでネットワークTV電話を作ってみよう。 できればAmazon アレクサも搭載しAmazon Echo Spotのようなものを作って息子の部屋に置こう。 思い立ったが吉日、ということで早速作り始めました。
Amazon Echo Spotの写真
まずは材料を集めよう。
ネットワークTV電話を作るために家の中にある部品を探してみました。 結果、以下のものを集めました。
1)Raspberry Pi4:1台
2)Webカメラ:LogicoolのWebカメラ(USB)
3)モニタ:Lepow 15.6インチFHDモニタ(HDMI)
4)スピーカ+マイク:INSIGNIAのマイク付きヘッドセット(テスト用です)
Raspberry Pi4に持たせる機能は?
アレクサを使えるネットワークTV電話を作るためには、まずはRaspberry Pi上にスマートスピーカ機能を構築する必要があります。 スマートスピーカ機能として、今回はAlexa Voice Serviceを使うことになります。 併せて、ハンズオン環境を構築するということになります。 それでは機能実現のための具体的な手順を書いていきます。
1)SSH通信を使ってVNCサーバへ接続する。
2)マイクとスピーカの動作確認を行う。
3)Raspberry PiでAlexaが動くようにする。
Alexa Voice Service(AVS)が使えるようにする。
・Raspberry Pi4をAVSに登録する。
・Raspberry Pi4でAlexaが使えるようにする(AVS Device SDKの環境を構築する)。
注)SDK:ソフトウエア開発キット
4)テストプログラムで動作確認を行う。
それでは、手順に則って進めていきます。
SSH通信を使ってVNCサーバへ接続する。
SSH通信を行う上で、Raspberry PiのSSH通信機能をONにして、IPアドレスの固定を行います。 それが終わるととRaspberry Piをリスタートし、パソコンからRaspberry Piにログインします。 今回は先日買ったMacbook Proからログインすることにしました。
何とか無事にログインできました。
ターミナルを開いてSSHでRaspberry Piにログイン ssh pi@paspberrypi.local
続いてMacbook ProのターミナルからVNCでRaspberry Piにログインします。
これでRaspberry PiのデスクトップにMacbbok Proからアクセスできるようになりました。 さて次はVNCクライアントの起動です。 下記アドレスからViewerをインストールします。 https://www.realvnc.com/en/connect/download/viewer/
インストールが終わってVNC Viewerを起動しました。 おお、成功!
Macbook ProにRaspberry Piのデスクトップを表示
これで電源ONでRaspberry Piを起動した後、必要に応じてMacbook Proからコントロールできるようになりました、キーボード、マウスが不要なのは本当に便利です。
Raspberry Pi4にUSBヘッドセットを接続して音を出す
本当はUSBスピーカとUSBマイクを使ってテストしたかったのですが、残念ながらUSBスピーカ、マイクとも手元にないため、USBヘッドセットを使ってテストを行いました。
手順としては、
1)USBヘッドセットを接続して、Raspberyy Pi4がキチンと認識していることを確認
・ターミナルを開いて、lsusb と入力し、オーディオコントローラとして認識
されていることを確認しました。
・ターミナルから、aplay -l と入力し、デバイス0にUSB Audioが認識されて
いることを確認しました。
2)Audio Device Settingでデフォルトの出力先として指定する
・Raspberry Pi4のメニュー(画面の左上のイチゴマーク)から、
設定 → Audio Device Setting を起動し、サウンドカードのメニューから
USB Audio Deviceを選択し、メニューの下にあるMake Defaultボタンを押し、
OKを押したら完了です。
3)Youtubeの虎ノ門ニュースを使ってテスト開始
おおっ、聞こえた、成功!
スピーカとマイクは一体なのでマイクのチェックは省略
Raspberry PiでAlexaが動くための準備を行う
1) Raspberry Pi4をAVSに登録する。
・Amazon Developer PortalからAVSを登録
・Amazon Developer Portalへログイン
Alexa開発者アカウントを作る必要があります。簡単なので是非チャレンジを!
・AVSへの製品登録
上の画面のAlexa Voice Serviseから今回作るRaspberry Pi4のシステムの
製品登録をします。 入力する項目は以下
製品名、製品ID、アプリやデバイス使用有無、商品カテゴリ、製品概要 他
登録した結果の画面が以下です。
2)セキュリティプロファイルを有効にする。
ブラウザからセキュリティプロファイルを有効化するURLにアクセスします。
https://developer.amazon.com/lwa/sp/overview.html
そしてプルダウンメニューからSample Profileを選択し、確認、を押します。
Consert Privacy Notice URLに http://example.com と入力し、保存、します。
これでセキュリティファイルの有効化が完了です。
この時に、config.jsonファイルをダウンロードしておきます。 このファイルを
Raspberry Pi4に持っていく必要があります。
Raspberry PiでAlexaを動かす
1)AVSのSDKをダウンロードします。
SSHクライアント(Macbook Pro)からRaspberry Pi4を動かしターミナルから
以下のコマンドを実行します。(必要なファイルをgithubから入手します)
wget https://raw.githubusercontent.com/alexa/avs-device-sdk/master/tools/
Install/setup.sh
wget https://raw.githubusercontent.com/alexa/avs-device-sdk/master/tools/
Install/genConfig.sh
wget https://raw.githubusercontent.com/alexa/avs-device-sdk/master/tools/
Install/pi.sh
これを見つけるのには少々時間がかかりました。 最初に見つけたアドレスには
ファイルがなく、試行錯誤の末に上のアドレスにたどり着きました。
ファイルが、home下のpiというフォルダにダウンロードされますので、ここに
AVSからダウンロードした config.json ファイルを持ってきます。
2)AVSのSDKをインストールします。
ターミナルから以下のコマンドを実行します。
sudo bash setup.sh ~/config.json -s 12345678
ここで、12345678 は、device serial numberです(自分で番号を決めてOK)
インストールが始まると途中で取り合わせが表示されるので、AGREE、yes、と
入力して進める。 そうすると最終的に以下のメッセージがターミナルに出ます。
**** Completed Configuration/Build ***
3)Alexaの認証を行います。
ターミナルから以下のコマンドを実行します。
sudo apt install -y gstreamer1.0-alsa
sudo bash startsample.sh
このコマンドを入力した後、Raspberry Pi4が動きっぱなしで止まらない。
失敗の原因はスワップメモリのサイズを大きくしなかったからだろうか?
もう2時間以上動きっぱなし、止めるわけにもいかず静かに見守るしかない。
げげげ、一晩経ってもまだ動いている。
今回の記事はいったんここまでで投稿します。
次回はこの続きを書きます。
チョットしたミスで時間を大幅に無駄にしてしまった。
反省!!
(追伸)
以前、こういう状態になって無理やりRaspberryPi4の電源を切ったことがある
のだが、大失敗。 その後電源を入れても、うんともすんとも動かず、結局、
システムを入れなおした苦い経験あり。
今回は根気よく終わるのを待とう、何日かかっても仕方ないですね。
最近よく聞く、自己責任、かな。