2015年12月31日木曜日

Raspberry PiのカメラモジュールをJavaScript(Node.js)で制御する

■カメラの制御テスト
 まずは、Raspberry Piのカメラ モジュール をJavaScript(Node.js)で制御してみます。

①「date-utils」モジュールのインストール
ファイル名を日付から生成するため、まずは日付処理を単純にするための「date-utils」モジュールをインストールします。

1.ターミナルを起動し、作業用フォルダに移動します。
2.「npm install  date-utils」と入力します。

②コードの入力
 次のJavaScriptコードを入力し、「camae.js」と名前を付けて作業用フォルダに保存します。

 処理内容は、「child_process.spawn」で、「raspistill」コマンドを実行しているだけです。

③動作の確認
1.ターミナルを起動し、作業用フォルダに移動します。
2.「sudo node camae.js」と入力します。


■カメラをリモート制御する
 応用的な事例として、PubNubを使ってRaspberry Piのカメラモジュールをリモート制御してみます。

①コードの入力
1.次のJavaScriptコードを入力し、「pi-camae.js」と名前を付けて作業用フォルダに保存します。

2.次のHTMLコードを入力し、「camera.js」と名前を付けて作業用フォルダに保存します。

<your Publish key>にはPublish Keyを、<your Pubscribe key>にはSubscribe Keyを入力します。




⑤動作の確認
1.ターミナルを起動し、作業用フォルダに移動します。
2.「sudo node pi-camera.js」と入力します。
3.ブラウザで「camera.html」を開き、[Shutter]ボタンのクリックで、撮影されることを確認します。



2015年12月29日火曜日

IFTTTを使ってセンサー・データをGoogleドライブ(スプレッドシート)に記録する(Arduino編)

 IFTTTを使うと、IoTデバイスをさまざまネットワーク・サービス、クラウド・サービスに接続することができます。たとえば、IoTデバイスのセンサー・データをGoogleドライブやEvernoteに記録することができます。
 そこで、今回は、Arduinoで計測した温度データを、Googleドライブ(Googleスプレッドシート)に記録する方法を説明します。



■IFTTTの準備
 次の手順で、アカウントを作成し、レシピを作成します。

①IFTTTアカウントの作成
 IFTTTのアカウントを作成します。


②IFTTTのレシピの作成
1.「My Recipes」をクリックし、 [Create a Recipe]をクリックします。



2.「this」をクリックします。


3.検索ボックスに「Maker」と入力し、「Maker」を選択します。


4.「Receive a web request」を選択します。


5.Event Name(イベント名)を入力し、[Create Trigger]をクリックします。


6.「that」をクリックします。


7.検索ボックスに「google」と入力し、「Google Drive」を選択します。

 
 ※初回のみ、[Connect]ボタンクリックし、Googleサービスへの接続を「許可」します。

8.「Add row to spreadsheet」を選択します。


9.[Create Action]をクリックします。


 ここでは、 Spreadsheet name(シート名)、Formatted row(行の書式)、Drive folder path(保存先のパス)を設定します。今回はデフォルトの設定を使用することとします。

10.[Create recipe]をクリックします。


③Keyの確認
  ブラウザでMaker Channelを開き、Keyを確認します。



■IoTデバイスの準備
①Arduinoのセットアップと回路の配線
1. 「ArduinoをJavaScriptで制御する」の手順でArduinoをセットアップし、Node.js、Johnny-Fiveをインストールします。
2.温度センサー(LM35)を次のように接続します。
















②「request」モジュールのインストール
1.コマンドプロンプトを起動し、作業用フォルダに移動します。
2.「npm install request」と入力します。

③プログラムの作成
 次のJavaScriptコードを入力し、「home_temperature.js」と名前を付けて作業用のフォルダに保存します。

<Event Name>には、「IFTTTの準備」の「②IFTTTのレシピの作成」の「5」で設定したEvent Nameを入力します。
<your key>には、「IFTTTの準備」の「③Keyの確認」で確認したKeyを入力します。

④動作の確認
1.コマンドププロンプトを起動し、作業用フォルダに移動します。
2.「node home_temperature.js」と入力します。
3.Googleドライブに接続し、「IFTTT\Maker\<イベント名>」 フォルダの「IFTTT_Maker_Events」シートを開きます。


2015年12月26日土曜日

Raspberry Pi+ubidotsでセンサー・データをリアルタイムで可視(グラフ)化する



関連記事:Arduino+ubidotsでセンサー・データをリアルタイムで可視(グラフ)化する

①ubidotsの準備
1.ubidotsに登録し、ログインします。
2.「Source」をクリックし、「Add Data Sources」をクリックします。











3.「Raspberry Pi」を選択し、[Continue]ボタンをクリックします。
  ※Nameは任意に変更可能です。DescriptionやTagsは必要に応じて入力してください。


4.[Create]ボタンをクリックします。
5.作成したData Sourcesをクリックします。


6.「Add Variable」をクリックします。


7.Name(Variableの名前)を入力し、[Create]ボタンをクリックします。


8.作成されたVariableのパネルの右上のアイコンをクリックし、Variable IDを確認します。



9.右上のユーザー名をクリックし、「My Profile」を選択します。
10.「API Key」をクリックし、API Keyを確認します。









②Raspberry Piのセットアップと回路の配線
  「Raspberry Pi 2のGPIOをJavaScriptで制御する」の手順でセットアップし、「Raspberry Pi+Johnny-Fiveでアナログデータを計測する」の回路を配線します。

③ubidotsライブラリ(Node.jsのモジュール)のインストール
1.ターミナルを起動し、作業用フォルダに移動します。
2.「npm install ubidots」と入力します。

④プログラムの作成
 次のJavaScriptコードを入力し、「brightness.js」と名前を付けて作業用のフォルダに保存します。

<Your API Key>には、①-10で確認したAPI Keyを、<Variable ID>には、①-8で確認したVariable IDを入力します。


⑤動作の確認
1.ターミナルを起動し、作業用フォルダに移動します。
2.「sudo node brightness.js」と入力します。
3.ubidotsの管理画面で「Brightness」Variableを開きます。


 データを監視・通知する方法は、「Arduino+ubidotsでセンサー・データを監視、通知する」を参照してください。

Raspberry Pi+Johnny-Fiveでアナログデータを計測する

必要なモノ(リンク先:Amazon)
PCF8591AD/ DAコンバータモジュール(YL-40)

1.Raspberry Piのセットアップ
 「Raspberry Pi 2のGPIOをJavaScriptで制御する」の手順で、Raspberry Piをセットアップします。

2.次のように回路を配線します。




3.プログラムの作成
  次のようにコードを入力し、「AnalogRead-pi.js」と名前を付けて保存します。

4.プログラムの実行、動作確認
 「sudo node AnalogRead-pi.js」と入力します。





2015年12月24日木曜日

PubNubを使ってRaspberry Piを制御する

 内容的には、「PubNubを使ってArudinoを制御する」とほぼ同じです。

①PubNubのアカウントの登録(無料)
 PubNubに登録し、Publish KeyとSubscribe Keyを取得します。














②Raspberry Piのセットアップ
 「Raspberry Pi 2のGPIOをJavaScriptで制御する」の手順でRaspberry Piをセットアップします。

③PubNubモジュールのインストール
1.ターミナルを起動し、作業用フォルダに移動します。
2.「npm install pubnub」と入力します。

④コードの作成
1.次のJavaScriptコードを入力し、「main-pi.js」と名前を付けて作業用のフォルダに保存します。

2.次のHTMLコードを入力し、「index.html」と名前を付けて保存します。

<your Publish key>には①のPublish Keyを、<your Subscribe key>には①のSubscribe Keyを入力します。

⑤動作の確認
1.ターミナルを起動し、作業用フォルダに移動します。
2.「sudo node main-pi.js」と入力します。
3.ブラウザで「index.html」を開き、[ON]ボタンのクリックでLED点灯、[OFF]ボタンのクリックでLEDが消灯することを確認します。

Raspberry Pi 2のGPIOをJavaScriptで制御する

必要なモノ
・Raspberry Pi (RASPBIAN JESSIE )
・Node.js
・raspi-io
・Johnny-Five

 Raspberry Pi には、RASPBIAN JESSIEがインストール済みで、環境設定などは 済んでいることとして説明します。なお、デフォルトで「Node.js」はインストールされますが、バージョンが古いです。新しいバージョンをインストールする方法は、こちらを参照してください。

①raspi-ioのインストール
1.作業用フォルダ(例「JS」)を作成します。
2.ターミナルを起動し、作業用フォルダに移動します。
3.「npm install raspi-ioと入力します。

②Johnny-Fiveのインストール
 「npm install johnny-five」と入力します。

③動作の確認

1.次のように回路を配線します。


2.テキストエディタなどで、次のコードを入力し、「pi-test.js」と名前を付けて保存します。

 「five.Led('P1-7')」の'P1-7'で使用するGPIOのポート指定しています。これは、ピンヘッダー1の7ピン(GPIO07)という意味になります。対応表は、ここを参照してください。

3.「sudo node pi-test.js」と入力します。LEDが点滅すれば、成功です。

2015年12月22日火曜日

Arduino+ubidotsでセンサー・データを監視、通知する

 「Arduino+ubidotsでセンサー・データをリアルタイムで可視(グラフ)化する」の続きです。

ubidots.でデータを監視、通知するには、「Event」を作成します。前記事のシステムで、温度が30度より高くなったら、SMSを送信するには、次のように「Event」を作成します。




1.ubidotsにログインし、「Events」をクリックします。
2.「Add Event」をクリックします。


3.「Event」を設定するData Sourceを選択します。


4.監視するVariableを選択します。


5.条件を設定し、[Continue]ボタンをクリックします。


 ここでは、「30度より高くなったら」なので、「greater」を選択し、「30」と入力します。

6.「Send SMS」を選択します。


7.Phone Number(SMSの送信先電話番号)、Message(送信メッセージ)を入力し、[Continue]ボタンをクリックします。


8.Name(名前)、Description(説明)、Tagを確認し、必要に応じて編集、入力し、[Finish]ボタンをクリックします。




以上で、Eventが作成は完了です。

Arduino+ubidotsでセンサー・データをリアルタイムで可視(グラフ)化する

 「ubidots」は、IoTのクラウドサービスです。ubidotsを使うと、センサー・データをリアルタイムで可視(グラフ)化したり、センサー・データを監視することができます。たとえば、温度データをリアルタイムに取得、監視して、30℃を超えたら、メールやSMSなどで通知することができます。



①ubidotsの準備
1.ubidotsに登録し、ログインします。
2.「Source」をクリックし、「Add Data Sources」をクリックします。 
 
3.Data Sources(データソース)の名前を変更します(([Enter]キーで確定))。 
 
4.作成したData Sourcesをクリックします。
5.「Add Variable」をクリックします。
6.データの種類(Type)を選択(ここでは、「Default」を選択)します。
 
7.Variableの名前を入力します([Enter]キーで確定)。
 
8.作成されたVariableのパネルの右上の(i)アイコンをクリックし、Variable IDを確認します。
 
9.右上のユーザー名をクリックし、「My Profile」を選択します。
10.「API Key」をクリックし、API Keyを確認します。

②Arduinoのセットアップと回路の配線 
1. 「ArduinoをJavaScriptで制御する」の手順でセットアップします。 
2.温度センサー(LM35)を次のように接続します。
















③ubidotsライブラリ(Node.jsのモジュール)のインストール 
1.コマンドププロンプトを起動し、作業用フォルダに移動します。 
2.「npm install ubidots」と入力します。 

④プログラムの作成 
 次のJavaScriptコードを入力し、「Temperature.js」と名前を付けて作業用のフォルダに保存します。 

⑤動作の確認 
1.コマンドププロンプトを起動し、作業用フォルダに移動します。 
2.「node Temperature.js」と入力します。 
3.ubidotsの管理画面で「Temperature」Variableを開きます。