株式会社インデペンデンスシステムズ横浜

システム開発エンジニアの西田五郎が運営しております。Raspberry Pi や Arduino その他新規開発案件のご依頼をお待ちしております。

Raspberry Pi SkyWay

SkyWayの利用(その4)Raspberry Piでの利用

投稿日:2019年12月9日 更新日:

前回の続きです。NTTコミュニケーションズ株式会社提供のリアルタイムコミュニケーションのためのプラットフォームであるSkyWayを使ってみます。前回はJavaScriptでカメラとマイクのストリーミングと双方向でのテキストデータのやり取りのプログラムを作成しました。

今回はRaspberry PiでSkyWayの動作確認をしました。単純にWindowsと同様には動作しなかったですが、要点を押さえれば同じように使えると思います。その要点を中心に書きます。

主に以下のページを見ながら作業をしました。こちらも参照して下さい。
SkyWay JavaScript SDK チュートリアル

ここでの環境は以下です。
Raspberry Pi 4 Model B
USBカメラ(logicool c270)
SDカード(32G)
周辺機器(モニタ、キーボード、マウス、電源等のRaspberry Piをパソコンと同様に利用出来るようにするための周辺機器)
ブラウザはchromium(Raspberry Pi標準)です。

今現在で最新のRaspberry Pi 4です。このRaspberry Pi 4ではHDMIの仕様が変更になったので変換ケーブルも買いました。HDMIの変更(発展とか進化という表現の方がいいと思いますが。)を理解していないでRaspberry Pi だけ届いたのでモニタに接続出来ませんでした。

以下は、Amazonの【国内正規代理店版】へのリンクです。今現在ですが、販売店により価格がバラバラのようなので必要な場合は調べてみて下さい。手元にない場合はHDMIのケーブルも必要です。

Raspberry PiへのSSHの操作(TeraTerm)にはWindows10 ProのPCを利用しています。

以下の2点を対応すればRaspberry PiでもWindowsと同様にSkyWayが利用出来ました。
オーディオの優先順位
ブラウザで認識させるカメラの解像度の指定
順番に書きます。

オーディオの優先順位の変更
オーディオの優先順位の変更で何をするかというとUSBカメラのマイクを優先して認識してブラウザで使えるようにするということです。

まずターミナルから現在の状態を確認します。
$ cat /proc/asound/modules
以下のように表示されました。USBカメラのマイクは2番目です。

この順序を変更します。
/etc/modprobe.d/alsa-base.conf というファイルを作成します。もしあれば変更します。以下のように編集して作成します。

options snd slots=snd_usb_audio,snd_bcm2835
options snd_usb_audio index=0
options snd_bcm2835 index=1


再起動します。再度確認してUSBカメラのマイクが最初になっていれば設定完了です。

カメラの解像度の指定
JavaScriptでgetUserMediaというAPIを利用してWebブラウザでカメラ映像、マイク音声を取得していますが、今までは解像度を指定しないで利用していました。もちろんこれで問題なく取得出来ていましたがRaspberry Piでは動作しませんでした。

カメラの機種にもよるかもしれないですが、以下のようにカメラとマイクを取得する際に解像度を指定しました。これで問題なくカメラ映像、マイク音声が取得出来ました。
getUserMedia({video:{ width: 800, height: 600 }, audio: true},

以下のチュートリアルの「カメラ映像、マイク音声の取得」の項目にも説明があります。必要な場合はこちらも参照して下さい。
JavaScript SDK チュートリアル

動作確認
WebサーバはローカルのWindows10上のXAMPPでとりあえずHTTPSでアクセス出来るようにしています。

プログラムは前回のプログラムに上記のようにカメラの解像度を指定しました。

Raspberry PiにカメラをUSB接続して、ブラウザから画面を表示します。

カメラのセキュリティ確認も表示されました。

ローカル側の映像が表示されました。

Windows側でリモート接続してみます。問題なく表示されました。テキストデータのやり取りも出来ました。

反対にWindows側にUSBカメラを接続してRaspberry Pi側からも見えました。これで無事に動作が確認出来ました。

Raspberry PiでのSkyWayの活用
特定アプリ専用のPC
Raspberry Piならコスト的にも専用アプリ用のPCとしてSkyWayのトップページの事例のような利用が可能かと思います。長時間起動したままでの遠隔監視、双方向コミュニケーション等が出来ると思います。

GPIOでの拡張
今回はブラウザ間のみの通信でしたが、MQTT over the WebSocketを利用すればブラウザからRaspberry PiのOS間との通信が出来ます。ということは、Raspberry PiのGPIOの操作が出来るということです。

以下の記事からで遠隔操作を取り上げましたが、同様のことをP2Pのイメージで操作出来ます。P2Pなので感覚的には直接Raspberry Piを操作するようになります。(またこれについては書きたいと思います。)
Raspberry PiでIoT(MQTTで遠隔操作編 その1)MQTTでの通信

(※2020/01/21追記 このSkyWayでの遠隔操作についての記事を以下で書きました。)
SkyWayでRaspberry Piの遠隔操作(その1)MQTT over WebSocket
SkyWayでRaspberry Piの遠隔操作(その2)SkyWayからの操作

(補足)SkyWay WebRTC Gateway
今回の一連の記事ではブラウザベースでSkyWayを利用しました。SkyWay WebRTC Gatewayを利用すればブラウザを経由しないでSkyWayを利用出来るようです。まだしっかりと試していないので補足ということにします。

今回はここまでです。また書きたいと思います。

AdSense

AdSense

-Raspberry Pi, SkyWay

執筆者:

関連記事

Raspberry PiでのNode.jsの導入(その1)インストールと動作確認

Node.jsとは、Node.js 日本ユーザグループのサイトから引用させて頂きますと、「Node.jsは高速でスケーラブルなネットワークアプリケーションを 簡単に構築するためにChrome の Ja …

Raspberry Piでwifiに接続する

Raspberry Pi(Raspbian)でwifiを使って無線LANに接続してみました。その際のハードウェアや接続の設定についてです。 今回使ったのは以下のBUFFALO製 WLI-UC-GNM2 …

Raspberry Piでタッチアプリ開発(その3)Kivyでレイアウト・ボタン作成

Raspberry Piでタッチアプリ開発の3回目です。前回はKivyの導入について書きました。今回は具体的なレイアウトとボタンを配置してみます。以下のレイアウトについて順番に書きます。Kivyでのレ …

SkyWayでRaspberry Piの遠隔操作(その1)MQTT over WebSocket

前回までの記事でSkyWayのJavaScriptでの動作確認を行いました。またRaspberry Piでの動作も確認出来ました。そうすると今回はSkyWayを利用してRaspberry Piの遠隔操 …

Raspberry PiでIoT(MQTTで遠隔操作編 その3)Raspberry PiのGPIOとHeroku連動Sub編

Raspberry PiでIoT MQTTで遠隔操作編の3回目です。2台のRaspberry Piでインターネット経由でGPIOを操作するというテーマで書いています。前回はHerokuでMQTT Br …