IoTといえば、Googleが買収したNestのように、家電のコントロールが注目されています。IBMのクラウド・サービス「IBM Bluemix(以下、Bluemix)」を使ったIoTアプリの開発方法を紹介する連載第3回は、ユーザーがRaspberry Piに接続したUSBマイクに向かって「It’s hot...(暑い)」としゃべると、扇風機が動くWebアプリを作ります。
今回は音声で機器を制御するシステムをNode-RED※1で開発し、デバイスとしてRaspberry Pi※2を使います。
具体的には、マイクから入力された音声をRaspberry Pi内部で“hot”という単語が含まれているかを、Bluemixの「Watson Speech to Text」サービスで識別します。含まれていたら扇風機につながっているリレーのスイッチを入れます。この処理のロジックの記述にNode-REDを使っています。
※1:Node-REDは、ファイルからバイナリデータを読み込む、条件分岐をする、外部コマンドを実行する、などの処理がカプセル化されている“処理ノード”をGUIでつなぐことで、一連の処理を開発できる開発環境です。処理ノードについては、第1回の記事を参考にして下さい。Node-REDを習得するには、Node-REDユーザー会の勉強会、IBMが開催しているハンズオンに参加する方法が、学習効率が高くお勧めです。また、技術向け記事サイトであるQiitaにもNode-REDに関する情報が多数掲載されており、参考になります。
※2:Raspberry Piは、教育用に開発されたシングルボードコンピュータです。Raspberry Piは、Raspberry Pi向けLinux OS「Raspbian」をインストールすれば、安価なLinuxマシンとして動作します。特にRaspberry Piは、GPIO(General Purpose Input/Output)端子を経由して電子機器と接続できるという特徴があります。本記事ではRaspberry Pi 2 Model Bを用いましたが、最新のRaspberry Pi 3 Model Bでも同じ開発方法となります。
使用したシステム
今回開発するシステムで利用したソフトウェア、サービス、ハードウェアの一覧です。
・ソフトウェア、サービス
名称など | 備考 |
---|---|
Raspbian version 1.5.0, Release date 2015-11-21 | https://www.raspberrypi.org/downloads/noobs/ |
Node.js v4.2.6 | https://nodejs.org/ |
FFMPEG 2.8.6 | https://www.ffmpeg.org/ |
Watsonサービスの処理ノード | 音声を分析してテキストに変換する「Watson Speech to Text」 |
・ハードウェア
型番 | 発売元 | 備考 | URL | |
---|---|---|---|---|
Raspberry Pi 2 スターターキット(無線版) | Raspberry Pi 2 Model B | スイッチサイエンス | 構成は、Raspberry Pi 2 Model B、ケース、USB型無線LANアダプター、HDMIケーブル、8GBマイクロSDカード、電源供給用USBケーブル、USB電源向けACアダプター | https://www.switch-science.com/ |
USBヘッドセット | HS-EP13USV | エレコム | http://www.elecom.co.jp/ | |
USB給電型扇風機 Digio2 | UA-045-BK | ナカバヤシ | http://www.nakabayashi.co.jp/ | |
USBキーボード、マウス | - | - | ||
HDMI端子のあるディスプレイ | - | - | ||
インターネット接続可能な無線LANルータ | - | - | ||
ブレッドボード | BB-801 | CIXI WANJIE ELECTRONICS | ||
リレー | 941H-2C-5D | HSIN DA PRECISION CO., LTD. | http://www.hsinda.com.cn/ | |
ブレッドボード用マイクロBメスUSBコネクタDIP化キット | - | 秋月電子通商 | 2個 | http://akizukidenshi.com/ |
ブレッドボード・ジャンパーコード(オス-メス)15センチ(青) | - | Herwell Asia Limited | http://www.herwell-asia.com/ | |
ブレッドボード・ジャンパーコード(オス-メス10センチ20本セット | - | CIXI WANJIE ELECTRONICS |
Raspbian版Node-REDを使う
プログラミングを始める前に、PC版のNode-REDとRaspberry Pi用Linux OS「Raspbian」のNode-REDの違いを説明します。
Raspbian版Node-REDには、Raspberry Pi向け処理ノードが用意されています。これらの制御用の処理ノードを使って、GPIO端子やマウスから受け取ったイベントをきっかけとして処理を開始したり、処理中にGPIO端子を制御したりできます。今回は、左側に端子のあるrpi-gpioノードを使用しました。このノードは、入力をきかっけとして、指定したGPIO端子の電流ON/OFFを制御できます。
Watsonサービスと連携する処理ノードについては、Raspbian版Node-REDには標準で用意されていないため、Node.jsのモジュール管理ツールnpmを使って手動でインストールする必要があります。下記コマンドをターミナルから実行すると、Watsonサービスの処理ノードをRaspberry Piでも使えるようになります。
sudo npm install node-red-bluemix-nodes
インストールした処理ノードは、インターネット上のWatsonサービスのAPIにアクセスし、Node-RED上でWatsonの機能を利用できるようにする処理ノードです。今回は、音声を認識するWatson Speech to Textサービスを利用しました。
今回のように環境標準では用意されていないNode-REDの処理ノードはたくさんあります。どのような処理ノードがあるかは、Node-RED Libraryのサイトを参照してください。