ラベル IchigoJam の投稿を表示しています。 すべての投稿を表示
ラベル IchigoJam の投稿を表示しています。 すべての投稿を表示

2016年10月3日月曜日

IchigoJamをスマホ(Android)で制御する

 Androidのプログラムは、パーミッションがどうだとか、インテントがどうだとか、いろいろと作法があり、簡単なことを簡単に実現できません。また、開発環境の構築も、そこそこ面倒です。
 そんな面倒なことを省いて、Androidアプリを開発できるのがMITの「App Inventor」です。
 

 今回は、この「App Inventor」を使って、スマホ(Android端末)でIchigoJamを制御するアプリを作成してみました。

○IchigoJamの準備
 「IchigoJamとPCの通信をBluetoothで無線化する」の手順で、IchigoJamにBluetoothモジュールを接続します。

○アプリのインストール
 こちらから、APKファイルをダウンロードしてインストールしてください。
※提供元不明のアプリのインストールを許可してから、インストールしてくだしさい。

○使い方
①アプリを起動する前にあらかじめ、Bluetoothモジュールとスマホをペアリングしておきます。
②アプリを起動し、「ペアリングBluetoothデバイス」をタッチします。
 

②接続するBluetoothデバイス(この例では「RNBT-DE41」)をタッチして選択します。
※接続が完了するまで少し時間がかかります。接続エラーが発生した場合は、アプリを再起動してください。
③接続されると次の画面になります。
 
・[LED ON][LED OFF]ボタンで、ビルトインLEDの点灯/消灯
・テキストボックスにBASICのコマンド入力し、[送信]ボタンでコマンドを送信
・行番号を付けて送信すれば、プログラムとして入力される
 
・[音声認識]ボタンで、音声入力開始、認識されたテキストはテキストボックスに入力される


 アプリのプロジェクトファイル(.aia)は、こちらからダウンロードできます。
 プロジェクトファイル(.aia)は、「App Inventor」の[Projects]メニューの[Import project(.aia) from my computer]でインポートできます。

2016年7月14日木曜日

Nextionタッチパネル - IchigoJam偏

  NextionタッチパネルをIchigoJamで使用する方法を紹介します。

 

○新規プロジェクトの作成
 Nexion Editorで新規プロジェクトを作成します。
①[New]をクリックします。
②保存先のフォルダを選択し、ファイル名を入力して[保存(S)]ボタンをクリックします。
③デバイスと画面の向きを選択し、[OK]ボタンをクリックします。

○フォントの作成
 次のように操作して、フォントを作成します。
①[Tools]→[Font Generator]を選択します。
②フォントの種類を選択し、フォント名を入力して、[Generate font]をクリックします。
 
※ここでは「Arial」を選択することとします。なお、他の設定項目は規定値のままとします。

②保存先のフォルダを選択し、ファイル名を入力して[保存(S)]ボタンをクリックします。
③[OK]ボタンをクリックします。
④「Font Creator」ウィンドウの[×]をクリックします。
⑤[Yes]ボタンをクリックします。

○GUIの作成
 次のように操作して、ボタンを2つ配置します。
①[Button]コンポーネントを2つ配置します。
 
②ボタン「b0」をクリックして選択状態にします。
③「Attribute」の「txt」(表示テキスト)を、「ON」に変更します。
 
④②~③の手順でボタン「b1」の表示テキストを「OFF」に変更します。

○イベントの設定
 ボタンがリリースされたときに、ボタンのIDが送信されるように設定します。
①ボタン「b0」をクリックして選択状態にします。
②「Event」ウィンドウの「Touch Release Event」をクリックし、「Send Component ID」のチェックをオンにします。
 
③ボタン「b1」も②③の手順で「Touch Release Event」の「Send Component ID」のチェックをオンにします。

※「Touch Press Event」の「Send Component ID」のチェックをオンにすると、ボタンが押されたときにIDが送信されるようになります。


○デバッグとコンパイル
 次のように操作して、デバッグし、コンパイルします。
①[Debug]ボタンをクリックします。
②各ボタンをクリックし、「Simulator Return Data」を確認します。

・ON
 0x65 0x00 0x01 0x00 0xff 0xff 0xff

・OFF
 0x65 0x00 0x02 0x00 0xff 0xff 0xff

③[×]ボタンをクリックし、デバックのウィンドウを閉じます。
④[Compile]をクリックします。

○「.tft」ファイルのアップロード
 シリアル通信、またはSDカードを使用し、作成した「.tft」ファイルをタッチパネルにアップロードします。
※アップロード方法は、「Nextionタッチパネル - 導入偏」を参照してください。

○配線
 IchigoJamとタッチパネルを次のように接続します。
タッチパネル
IchigoJam
RX
TXD
TX
RXD
VCC
CN5の1ピン
GND
CN5の5ピン


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

10 bps 9600
20 I=INKEY()
30 IF I=1 LED1
40 IF I=2 LED0
50 GOTO 20

 タッチパネルの[ON]ボタンをタッチ(正確には、タッチからのリリース時)するとLEDが点灯、[OFF]ボタンをタッチするとLEDが消灯します。

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で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が消灯することを確認します。

2016年6月17日金曜日

Node-RED+IchigoJam+dweet.ioでIoT - LEDの制御

 Node-RED+IchigoJam+dweet.ioで、IchigoJamのオンボードLEDをネットワーク経由でオン・オフする方法を説明します。

○データ送信用HTMLの作成
 次のHTMLコードの入力し、データ送信用HTMLの作成します。


「thingName」には任意の固有名を指定します。ここでは、「ichigojam-led-onoff」としています。


○フローの作成

①「inject」「http request」「function」「serial」(output)「debug」ノードを次のように配置、接続します。
 ※「debug」ノードは無くても構いません。

②「inject」ノードのプロパティを表示し、[Repeat]を「interval」に設定し、[every]を「10」「seconds」に設定します。
③「http request」ノードのプロパティを表示し、[Method]を「GET」、[Return]を「a parsed JSON object」に設定し、[URL]に次の形式のURLを入力します。


 「my-thing-name」には任意の固有名を指定します。ここでは、「ichigojam-led-onoff」としています。

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


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

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


○動作の確認
①ブラウザでデータ送信用HTMLを開きます。
②[ON]ボタンのクリックでLEDが点灯、[OFF]ボタンのクリックでLEDが消灯することを確認します。

Node-REDでIchigoJamを制御する

 Node-REDでIchigoJamを制御する方法を説明します。
 Node-REDを使うことで、Adafruit IO、IFTTT、M2XなどのIoTプラットフォームとのデータの送受信が簡単にできるようになります。
 
 Node-REDのインストール方法は、次の記事の①②手順を参照してください。

○PCとIchigoJamの接続
 Node-REDでIchigoJamを制御するには、シリアル通信を使います。USBシリアル変換ケーブルなどで、PCとIchigoJamを接続します。


 上記ケーブルを使用した場合は、次のように接続します。

ケーブル
IchigoJam
RXD(白)
TXD
TXD(緑)
RXD
VCC(赤)
CN5の1ピン
GND(黒)
CN5の5ピン


















○LEDの制御その1
 まず、基本として、IchigoJamのオンボードのLEDをオン・オフするフローを作成します。

①「inject」ノードを2つ、「serial」ノード(output)を次のように配置、接続します。
 
②1つ目の「inject」ノードのダブルクリックし、プロパティを表示します。
③「string」を選択します。
 
④「Payload」に「LED1」と入力し、[OK]ボタンをクリックします。
 
※Payload(msg.payload)は、Node-REDで処理するデータを格納するプロパティ(変数)です。ここでは、IchigoJamのBASIC命令の「LED1」を格納しています。

⑤2つ目の「inject」ノードのダブルクリックしてプロパティを表示し、「string」を選択し、「Payload」に「LED0」と入力し、[OK]ボタンをクリックします。
⑥「serial」ノード(output)のダブルクリックしてプロパティを表示し、通信に使用するポートを選択し、[鉛筆]ボタンをクリックします。
 
⑦「add split character to output messages」のチェックをオンにし、[Update]ボタンを」クリックします。
 
※他の項目が図の設定内容と異なる場合、図と同じになるように変更してください。
⑧「Deploy」をクリックし、フローをデプロイします。
 
⑨「inject」ノードの「LED1」の左側のボタンをクリックしてLEDが点灯、「inject」ノードの「LED0」の左側のボタンをクリックしてLEDが消灯することを確認します。
 


○LEDの制御その2
 LEDを5秒間隔で点滅させるフローを作成します。
①「inject」「function」「serial」(output)「debug」ノードを次のように配置、接続します。
 
※「debug」ノードは無くても構いません。
②「inject」ノードのプロパティを表示し、[Repeat]を「interval」に設定し、[every]を「5」「seconds」に設定します。
 
③「function」ノードのプロパティを表示し、[Function]に次のコードを入力します。


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

⑤「Deploy」をクリックし、フローをデプロイします。
※デプロイすると、5秒間隔でLEDが点滅します。