2015年8月29日土曜日

S4AをGR-SAKURA HTTPサーバーにつなげる

1. S4A とは
S4Aは、「Scratch for Arduino」の略称で、MITがリリースしている Scratch Ver 1.4 を、Arduino ボードに接続しScrtachからArduinoボードに接続されているセンサーを読み取ったりモーターを駆動できるよに拡張されたアプリケーションソフトです。

Arduinoボードを使った組込みシステムの開発は、ボードや搭載されているワンチップマイクロコントローラーの細かい技術的知識がなくてもセンサーを読んだりモータを駆動したりと簡単にソフトウエア開発が可能です。しかしそのソフト開発にはC++言語を使うので、ある程度のC/C++言語の知識がないと開発ができない。

その点、Scratchは命令ブロックを積木のように組み合わせて制御プログラムの開発ができるので、小中学生のようなプログラミングに何の知識がない方々でも簡単なプログラム開発できます。

S4AはScratch機能をすべて継承し、Arduinoボードの制御機能を拡張し多くのセンサーを読んだりやモータを駆動できるように拡張されています。

2. GR-SAKURAボード
メード・イン・ジャパンの高機能版Arduinoボードです。Arduinoの基本機能をすべて継承し、Web上でソフト開発ができる開発環境を備えています。

GR-SAKURAのWeb開発環境は、開発テンプレートが「GR-SAKURA_Stetch_V2.02.zip]にアップデートされました。スケッチリファレンスもアップデートされ、「Ethernet サーバー」にはHTTPサーバーとして動作するサンプルプログラムが添付されています。

3.GR-SAKURA IoTセンサーサーバー
S4A 1.6 の【調べる】 (http://) 機能(下記の赤点線)は、おもしろい命令だ。インターネット上にあるIoTサーバーの情報を取り込む命令が備わっています。

GR-SAKURAの「Ethernet サーバー」サンプルコードを修正して、S4AからGR-SAKURAにつながったセンサー情報をS4Aで使用できるようなデモを紹介します。

3.GR-SAKURA センサー端子(A0 - A6)をS4Aで読む
GR-SAKURAボードをサンプルコード ”Ethernet サーバー” を使ってHTTPサーバーとして動作させる。この時、S4Aでデータを取得しやすくするために下記の用に変更する。

サンプルコードの43~59行目の変更:
client.print(":"); // this is for S4A client.print(analogRead(0)); // this is for S4A client.print(":"); // this is for S4A client.print(analogRead(1)); // this is for S4A client.print(":"); // this is for S4A client.print(analogRead(2)); // this is for S4A client.print(":"); // this is for S4A client.print(analogRead(3)); // this is for S4A client.print(":"); // this is for S4A client.print(analogRead(4)); // this is for S4A client.print(":"); // this is for S4A client.print(analogRead(5)); // this is for S4A client.print(":"); // this is for S4A 
/*
client.println("<!DOCTYPE HTML>"); client.println("<html>"); // output the value of each analog input pin for (int analogChannel = 0; analogChannel < 6; analogChannel++) { int sensorReading = analogRead(analogChannel); client.print("analog input "); client.print(analogChannel); client.print(" is ");
client.print(sensorReading); client.println("<br/ >"); } client.println("</html>"); */

4. GR-SAKURA HTTPサーバーの起動
修正したサンプルコードをビルドし、GR-SAKURAに書き込みます。そしてUSBシリアルポートを立ち上げます。
そして任意のキーボーをたたくと、GR-SAKURAのIPアドレスが表示されます。このときLANケーブルを接続する場合は、DHCP環境でないとうまくIPアドレスが取得することができません。


今使ってるLAN環境ではルーターはGR-SAKURAに上記のようなIPアドレスを付与しました。

5.S4Aサンプルプログラム
GR-SAKURAのIPアドレスが分かったので、これを使って下記のようなS4Aのスクリプトを作成します。

このとき、Arduino1は、下記のようなスクリプトを準備ください。もし、GR-SAKURAとS4Aを同一PCで実行している場合、USB COMポートが衝突する場合があります。


S4Aのスクリプトブロック が取得するデータは、

 のような形式で受信します。 : によってデータ区切られており、先頭データがA0ピンのアナログ入力値になります。

 http_data[1] = A0ピンのアナログ値
 http_data[2] = A1ピンのアナログ値
 http_data[3] = A2ピンのアナログ値
 http_data[4] = A3ピンのアナログ値
 http_data[5] = A4ピンのアナログ値
 http_data[6] = A5ピンのアナログ値


6.GR-SAKURAのUSBシリアルポート(HTTPモニタ)
このとき、GR-SAKURAボードが接続されたUSBシリアルポートからは、S4AがGR-SAKURA を読むたびに下記のような情報が出力されます。



7. センサーを接続
GR-SAKURAボードのA0~A5ピンにセンサーを接続すれば、S4Aのサンプルスクリプトが4秒おきにGR-SAKURAを読みに行きます。 センサーは、0V~3,3Vの電圧を出力するタイプにしてください。サンプルスクリプトを応用すれば楽しいIoTセンサーネットワークを制作することができます。