2016年6月30日木曜日

kindle本:IchigoJamとJavaScriptではじめるIoTプログラミング




 IchigoJamとJavaScriptではじめるIoTプログラミングを出版しました。IchigoJamをIoTデバイスとして活用する方法を解説しています。プログラミング言語には、JavaScript(Node.js)を使用しています。内容は、次のような構成になっています。

1章 開発環境のセットアップ
 1.1 ハードウェアのセットアップ
 1.2 ソフトウェアのセットアップ
 1.4 実験回路
2章 dweet.ioを使用する
 2.1 dweet.ioを使用するための準備をする
 2.2 LEDをリモート制御する
 2.3 センサーデータを収集・可視化する
3章 PubNubを使用する
 3.1 PubNubを使用するための準備をする
 3.2 LEDをリモート制御する
 3.3 センサーデータを収集・可視化する
4章 Adafruit IOを使用する
 4.1 Adafruitを使用するための準備をする
 4.2センサーデータを収集・可視化する
 4.3 センサーデータを監視・通知する
 4.4 LEDをリモート制御する
5章 Ubidotsを使用する
 5.1 Ubidotsを使用するための準備をする
 5.2 センサーデータを収集・可視化する
 5.3 ウィジェットを作成する
 5.4 センサーデータを監視・通知する
6章 その他のサービスの利用
 6.1 IFTTTを使ってセンサーデータをGoogleドライブに記録する
 6.2 M2Xを使ってセンサーデータを収集・可視化す

2016年6月27日月曜日

PythonでArduinoを制御する

 前記事のついでに、PythonでArduinoを制御する方法を説明します。

 PythonでArduinoを制御するには、 pySerial、Python Firmata、pyFirmataなどを使います。ここでは、「pyFirmata」を使う方法を解説します。他の方法は、Playgroundを参照してください。

※操作例は、Windows PCを基本とします。
※Python(2.7)はインストール済のこととします。

○Arduinoのセットアップ
 「Arduinoのセットアップ」の手順で、Arduinoをセットアップします。

○pyFirmataのインストール
 次のように操作して、pyFirmataをインストールします。

①コマンドプロンプトを起動します。
②次のコマンドを入力します。

「pip install pyFirmata」

 または

「easy_install -U pyFirmata」

※Windows環境でユーザー名に2バイト文字(漢字など)を使用している場合、pipは使えないようです。

○使用例
 13ピンに接続したLEDを点灯させるには、次のように操作します。 

①コマンドプロンプトから「python」と入力してPythonを起動します。
②次のコマンドを入力します。

>>> from pyfirmata import Arduino, util[Enter]
>>> board = Arduino('COM3')[Enter]
>>> board.digital[13].write(1)[Enter]

 ※COMポートの指定は、ご自身の環境に合わせて変更してください。

PythonでIchigoJamを制御する

 PythonでIchigoJamを制御する方法を説明します。
 PythonはBASICと同じように、1行リターンでコードを実行していくこともできるので、BASICからステップアップするため言語としてお勧めです。

※操作例は、Windows PCを基本とします。
※PCとIchigoJamの接続は、「Node-REDでIchigoJamを制御する」を参照してください。

○Pythonのインストール
 Python2.7.11(2016年6月現在)をダウンロードしてインストールします。

○pySerialのインストール
 次のように操作して、pySerialをインストールします。

①コマンドプロンプトを起動します。
②次のコマンドを入力します。

「pip install pyserial」

 または

「easy_install -U pyserial」

※Windows環境でユーザー名に2バイト文字(漢字など)を使用している場合、pipは使えないようです。

○使用例
 コマンドプロンプトを起動し、「python」と入力し、Pythonを起動します。
  ※COMポートの指定は、ご自身の環境に合わせて変更してください。
・コマンド送信
  PCからIchigoJamにコマンドを送信するには、次のようにコマンドを入力します。

>>> import serial[Enter]
>>> ser = serial.Serial('COM31', 115200)[Enter]
>>> ser.write('LED1\r\n')[Enter]

※コマンドは改行コード(\r\n)を付けて送信します。

・データの受信
 Ichigojamに次のプログラムを入力し、実行します。

10 ?ANA(2)
20 WAIT 100
30 GOTO 10

 IchigoJamの出力データを受信するには、次のようにコマンドを入力します

>>> import serial[Enter]
>>> ser = serial.Serial('COM31', 115200)[Enter]
>>> while True:[Enter]
...[TAB]print ser.readline().replace('\n',"")[Enter]
...[Enter]

※「print ser.readline().replace('\n',"")」は[TAB]でインデントします。

2016年6月25日土曜日

Node.jsでIchigoJamを制御する

 Node.jsでIchigoJamを制御する方法を説明します。
 Node.jsを使うことで、PCとIchigojamを連携させて、さまざまなWebサービス(IoTプラットフォーム、メール、クラウドストレージなど)を利用したアプリケーションを作成できます。

※操作例は、Windows PCを基本とします。
※PCとIchigoJamの接続は、「Node-REDでIchigoJamを制御する」を参照してください。

○Node.jsのインストール
 Node.js V4.4.6(2016年6月現在)をダウンロードして、インストールします。

○serialportのインストール
 次のように操作して、serialportモジュールをインストールします。
①作業のフォルダ(例「JS」)を作成します。
②コマンドプロンプトを起動し、作業用のフォルダに移動します。
③「npm install serialport」と入力します。
 
 serialportの詳細は、以下のページを参照してください。

○基本プログラム
 COMポートの指定は、ご自身の環境に合わせて変更してください。

・コマンド送信
 PCからIchigoJamにコマンドを送信するプログラムは、次のように書きます。



・データ受信
 Ichigojamの出力データを受信するプログラムは、次のように書きます。



○応用例
 socket.ioを使って、ローカルのWebサーバーから、IchigojamのLEDを制御する例を紹介します。

・socket.ioインストール
①コマンドプロンプトを起動し、作業用のフォルダに移動します。
②「npm install socket.io」と入力します。

・プログラム
  次のJavaScript「ichigo_led.js」とHTMLコード「index.html」を入力し、作業用のフォルダに保存します。



・動作の確認
①コマンドプロンプトを起動し、作業用のフォルダに移動します。
②「node ichigo_led.js」と入力します。
③ブラウザを起動し、「http://localhost:3000」にアクセスします。
④[ON]ボタンのクリックでLEDが点灯し、[OFF]ボタンのクリックでLEDが消灯することを確認します。

2016年6月23日木曜日

IchigoJamとPCの通信をBluetoothで無線化する

 IchigoJamとPCのシリアル通信を、Bluetoothモジュールで無線化する方法を説明します。

・Bluetoothモジュール
SparkFun Bluetooth Modem - BlueSMiRF Silver(スイッチサイエンス)
 価格が高いのがネックです。Mete Goldにいたっては、Raspberry Pi 3が買えちゃうぐらいの値段です。技適マークが付いていないBluetoothモジュールなら安価で販売されていますが...。


○配線

 回路図では、Mate Silverとなっていますが、Mate Goldでも同じです。
SilverとGoldはピン配列が異なるので、注意してください。
 

○Bluetoothデバイスのペアリング
 次のように操作して、PCとBluetoothデバイスをペアリングします。
①[スタート]→[設定]を選択します。
②「デバイス」をクリックし、「Bluetooth」を選択します。
③[Bluetooth] をオン(機種によっては必要ない) にし、デバイスを選び、[ペアリング] を選択します。
④パスコード「1234」を入力し、[次へ]をクリックします。

○COM(シリアル)ポートの確認
 Bluetoothデバイスに使用されているCOMポートを確認するには、次のように操作します。
①[スタート]→[設定]を選択します。
②「デバイス」をクリックし、「Bluetooth」を選択します。
③「その他のBluetoothオプション」をクリックします。
④「COMポート」タブを選択します。
⑤目的のBluetoothデバイスの名前に対応する方向が「発信」のCOMポートを確認し、[OK]ボタンをクリックします。
 


○ボーレートの変更について
 SparkFunのBluetoothモジュールのデフォルトのボーレートは、115200bpsです。IchigoJamとの通信には、ボーレートを変更する必要がありませんが、参考までにボーレートを変更する方法を説明します。たとえば、ボーレートを9600bpsに変更するには、次のように操作します。

①Bluetoothモジュールの電源をオンします。
②「Startup/Config Timer」モード(赤色のLED(Stat LED)が1秒間に2回点滅)中に、通信ソフト(TeraTermなど)を起動し、BluetoothモジュールのCOMポートに接続します。
③「$$$」と入力し、「Configuration」モードにします。
※「Configuration」モードに入ると、「CMD」と文字列が返され赤色のLED(Stat LED)が1秒間に10回点滅し、緑色のLED(Connect LED)が点灯します。
④「SU,96[Enter]」と入力します。
 ※96:9600、576:57600、1152:115200のように、「0」を省略して指定します。
⑤「---」と入力して、「Configuration」モードから抜けます。

2016年6月21日火曜日

Node-RED+IchioJam+IFTTTでIoT - センサー・データの収集

 Node-REDを使用して、IchigoJamで計測したアナログデータを、IFTTTのレシピ(Maker)にポストする方法を説明します。
 IFTTTのレシピの作成方法は、「IFTTTを使ってセンサー・データをGoogleドライブ(スプレッドシート)に記録する(Arduino編)」の「IFTTTの準備」を参照してください。

○フローの作成

①「serial」(input)「function」「http request」ノードを次のように配置、接続します。

②「serial」ノード(output)のプロパティを表示して通信に使用するポートを選択し、[鉛筆]ボタンをクリックし、「add split character to output messages」のチェックをオンにし、[Update]ボタンを」クリックします。


③「function」ノードのプロパティを表示し、次のコードを入力します。


④「http request」ノードのプロパティを表示し、[Method]を「POST」に設定し、[URL]に次の形式のURLを入力します。


 [Event_Name]には、レシピのEvent Nameを、[Your Key]には、Keyを入力します。


⑤「Deploy」をクリックし、フローをデプロイします。



○BASICプログラムの入力
 IchigoJamに次のプログラムを入力し、実行します。

10 ?ANA(2)-860
20 WAIT 100
30 GOTO 10

※ここでは、温度センサーなどは接続せずに、「アナログ入力値-860」をデータとして送信することとします。

○動作の確認
  Googleドライブに接続し、「IFTTT\Maker\<イベント名>」 フォルダの「IFTTT_Maker_Events」シートを開きます。
 

2016年6月18日土曜日

Node-RED+IchigoJam+Adafruit IOでIoT

 Node-RED+IchigoJam+Adafruit IOでデータ送受信を行う方法を説明します。


○データの送信
◇Adafruit IOの準備
 次にように操作して、Adafruit IOのフィード、ダッシュボード、ブロックを作成します。

1.Feed(フィード)の作成
 次のように操作して、データを取得するためのFeedを作成します。
①Adafruit IOにサインインし、「Welcome Dashboard」を表示します。
②[MY DASHBOARDS]をクリックします。
③「Your Feeds」→[CREATE FEED]をクリックします。
④「NAME」に「Temperature」と入力し、[CREATE FEED]をクリックします。

2.Dashboard(ダッシュボード)の作成
 次のように操作して、デバイスの制御に使用するDashboardを作成します。
①「Your Dashboards」→[CREATE DASHBOARD]をクリックします。
②「DASHBOARD NAME」にダッシュボードの名前を入力し、[CREATE DASHBOARD ]をクリックします。

3.blockの作成
 次のように操作して、データを表示するためのgauge(ゲージ)を作成します。
①右上の[+](Create a new block)をクリックします。
②ゲージの[CREATE]をクリックします。
③「Temperature」フィードの「CHOOSE」をクリックし、[NEXT STEP>]をクリックします。
④[CREATE BLOCK]をクリックします。
⑤右上の[DONE EDITING]ボタンをクリックします。

◇フローの作成
①次のように「serial」(input)、「mqtt」(output)ノードを接続し、フローを作成します。
 
②「serial」(input)ノードのプロパティを表示して通信に使用するポートを選択し、[鉛筆]ボタンをクリックし、「add split character to output messages」のチェックをオンにし、[Update]ボタンを」クリックします。
 
※他の項目が図の設定内容と異なる場合、図と同じになるように変更してください。

③「mqtt」(output)ノードのプロパティを表示して[鉛筆]ボタンをクリックします。
④[Server]に「io.adafruit.com 」と入力します。
 

⑤「Security」タブを選択し、「Username」のAdafruit IOのユーザー名を、「Password」のAIO KEYを入力し、[Update]ボタンをクリックします。AIO KEYは、ダッシュボード右上の鍵アイコン(Your secret AIO KEY)をクリックすると確認できます。

⑥[Topic]にトピック名を「<ユーザー名>/feeds/<フィード名>」の形式で入力し、[OK]ボタンをクリックします。
 

⑦「Deploy」をクリックし、フローをデプロイします。


◇BASICプログラムの入力
 IchigoJamに次のプログラムを入力し、実行します。

10 ?ANA(2)-860
20 WAIT 100
30 GOTO 10

※ここでは、温度センサーなどは接続せずに、「アナログ入力値-860」をデータとして送信することとします。

◇動作の確認
①ブラウザで作成したDashboard(ダッシュボード)を表示します。
②ゲージにデータが表示されることを確認します。
 


○データの受信(LEDの制御)
◇Adafruit IOの準備
 次にように操作して、Adafruit IOのフィード、ダッシュボード、ブロックを作成します。
1.Feed(フィード)の作成
 次のように操作して、デバイスの制御に使用するFeedを作成します。
①Adafruit IOにサインインし、「Welcome Dashboard」を表示します。
②[MY DASHBOARDS]をクリックします。
③「Your Feeds」→[CREATE FEED]をクリックします。
④「NAME」にフィード名(ここでは「LED」とします)を入力し、[CREATE FEED]をクリックします。

2.Dashboard(ダッシュボード)の作成
 次のように操作して、デバイスの制御に使用するDashboardを作成します。
①「Your Dashboards」→[CREATE DASHBOARD]をクリックします。
②「DASHBOARD NAME」にダッシュボードの名前を入力し、[CREATE DASHBOARD ]をクリックします。

3.blockの作成
 次のように操作して、デバイスの制御に使用するblock(トグルボタン)を作成します。
①右上の[+](Create a new block)をクリックします。
②トグルボタンの[CREATE]をクリックします。
③「LED」フィードの「CHOOSE」をクリックし、[NEXT STEP>]をクリックします。
④[CREATE BLOCK]をクリックします。


















 「BOTTON ON TEXT」と「BOTTON ON TEXT」は、オン/オフの状態を示す文字列と同時に、送信されるメッセージになります。この場合、オンにしたときには「ON」、オフにしたときは「OFF」という文字列が送信されます
⑤ページをリロードします。
◇フローの作成
①次のように「mqtt」(input)、「function」、「serial」(output)ノードを接続し、フローを作成します。
 
②「mqtt」(input)ノードのプロパティを表示して[鉛筆]ボタンをクリックします。
③[Server]に「io.adafruit.com 」と入力します。
④「Security」タブを選択し、「Username」のAdafruit IOのユーザー名を、「Password」のAIO KEYを入力し、[Update]ボタンをクリックします。AIO KEYは、ダッシュボード右上の鍵アイコン(Your secret AIO KEY)をクリックすると確認できます。
⑤[Topic]にトピック名を「<ユーザー名>/feeds/<フィード名>」の形式で入力し、[OK]ボタンをクリックします。
 

⑥「function」ノードのプロパティを表示し、次のコードを入力します。

 

⑦「serial」(output)ノードのプロパティを表示して通信に使用するポートを選択し、[鉛筆]ボタンをクリックし、「add split character to output messages」のチェックをオンにし、[Update]ボタンを」クリックします。
 
※他の項目が図の設定内容と異なる場合、図と同じになるように変更してください。

⑧「Deploy」をクリックし、フローをデプロイします。

◇動作の確認
①ブラウザで作成したDashboard(ダッシュボード)を表示します。
②トグルボタンのONでLEDが点灯、OFFでLEDが消灯することを確認します。