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

システム開発エンジニアの西田五郎が運営しております。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でタッチスクリーン付3.5インチTFTを使ってみた

Raspberry Piでタッチスクリーン付モニタを使ってみました。PiScreenという商品名で3.5インチTFT(480×320) でタッチスクリーン付です。以下の商品です。以下は完成品 …

Raspberry PiでIoT(温度・湿度・気圧データ編 その1)BME280でデータ取得

Raspberry PiでIoTに取り組んでみるという内容で実際に動作させながら書きたいと思います。まずは、IoTとは、Internet of Thingsの略です。もう既にこの言葉も普及していて様々 …

Node.jsでRaspberryPiのGPIOを使う(その2)ブラウザからの操作

Node.jsでRaspberryPiのGPIOを使うの2回目です。前回はGPIOのデバイスドライバをNode.jsのファイル操作を使って操作しました。今回はこれを以下の記事で作成したWebサーバ的な …

Raspberry PiでAC100V(ソリッド・ステート・リレー)制御

Raspberry PiでAC100VのON/OFF制御を試してみました。今回そのために以下のソリッド・ステート・リレーキットを利用しました。この製品を選んだ理由としては「扱いが簡単」かなと思ったから …

Raspberry Piでタッチアプリ開発(その1)ハードウェア構成・開発環境等

Raspberry Piで簡単なタッチアプリを開発する手順について書きます。もちろんですがこれからの手順は一例です。他にもいろいろな方法があると思いますので必要な場合は最適と思われる方法を検討して選択 …