[XBee]RL78/G13とXBee、2MピクセルJPEGカメラ、サーモセンサー、SDカード、LED照明、サーボモーター等々で作った作品。[XBee]jumpwire.ioは日本発のIoTデバイス向けサービスです。Doボタンとの連携です。やりたい事ができる様になってきましたね。APIはjumpwire.ioに所定の書式でメールを送ると、その内容が反映されてコネクションが張られているIoTデバイスにThrowできるものですよっと。jumpwire.ioのドキュメントのところに使い方が書かれているリンクがあります。具体的にはmail@api.jumpwire.ioに以下の内容のメールを送るだけです。To:mail@api.jumpwire.ioFrom:あなたのメアドSubject:件名はなんでも構いません。Doボタンの連携そんな面倒くさがり屋さんの為にある様なアプリでやんす。Doボタンのアプリをインストールしてください。iOS用も有るみたいですが、良く知りません。インストールして起動すると早速適当なDoボタンを作成する様に強制されますが、チャネルはGmailとし、それ以外はこの時点では本当に適当に作って構いません。灰色のプラスボタンを押します。連携アプリを選びます。Recipeを押します。emailを押します。適当に項目を埋めてAddを押します。こんな感じで適当なボタンができました。DoボタンのアプリをインストールしてきとーなDoボタンを作成したら、PCでIFTTTにサインインします。自分のレシピのDoのタブに先程作成したてきとーなDoボタンが出来ていますので、ここで編集して使える様にします。該当のボタンをクリックして編集画面を開きます。最後に下のUpdateボタンを押して編集完了です。すまふぉんでDoボタンアプリを開き直すと、編集されたボタンになりました。メールで送るので反応は早くないです。10秒とか20秒とか掛かります。[XBee]jumpwire.ioは日本発のIoTデバイス向けサービスです。http://ja.jumpwire.ioさて、問題が無い訳でも無い訳でもない!いまのところ判っているのは2件1.接続が切れるLED.inoでもそうですがシリアルモニターを見ていると時折接続が切れています。なにが起きているのか判らん時はそうです、パケットモニターで見てみましょう。接続が切れている手前辺りを調べると、サーバー側から切断する前に特長的なパケットが送られて来ています。この内容はWebsocketのプロトコルで、送られて来たパケットの内容に不備が有るので切断するよん!って意味です。云々」をハイライトすると、、、出鱈目なデータが見えてきました。この出鱈目を送っているのはESP8266側です。ライブラリではJWIO_ESP8266_ArduinoIDE.cppのWebSocketSendTextの中のclient.printの様です。binaryデータを処理できていないのか?それともエンコード中にデータに0が発生しているのか?そもそも元はキャラクタデータだったとしても、エンコードしてバイナリーデータに変換しているので、本来はbyte型で扱うべきでしょう。String型で処理する事を止めてbyte型配列に入れてclient.printではなくclient.writeで送信すれば切断される事は無くなりました。少なくとも半日くらい確認。それ以上は判らん、、、2.接続に時間が掛かるちょっと致命的な気もします。wifiだとなっかなか接続できません。パケットモニターで見てみましょう。wifiで接続中の話です。wifiからのSYNにまったく反応していません。wifiはこの後SYNを何度か再送します。この再送を諦めるまではおよそ75秒程度掛かっているようです。その後新しいポート番号を設定して再び接続を試みます。この前やったら接続まで16分掛かりました(笑)。この画面はESP8266の場合です。ESP8266もあっさり無視されています(笑)。※ESP8266でもATモードで動かす場合はポート番号が固定化されない様である。wifiとESP8266との違いは再送間隔の違いです。wifiは失敗すると再送までの時間を延長して行きます。3秒、6秒、12秒、、、って感じで。ESP8266は再送間隔が約500ms固定です。ESP8266は再送処理が雑過ぎます。このESP8266の雑さのお蔭で見かけ上すんなり接続出来ている様に見えています。ESP8266を使ったアプリケーションの開発中にこの接続性の良さはだんだん悪くなる方向だと思います。SYNを無視するのか?うんサーバー側の話なので判りません。上記2件はjumpwire.ioに連絡済みです。接続はESP8266で行うか、それとも接続されるまでしばらく待ちましょう。[XBee]jumpwire.ioは日本発のIoTデバイス向けサービスです。IDE環境向け)のライブラリが用意されており、登録すればわりと簡単にサンプルの実行までは進みます。IDE環境を使ったESP8266単体です。wifiとGR-KURUMIでの運用を目的としています。jumpwire.ioの細かな説明はドキュメントページのスライドを見て行くとだいたい判ります。場合」のリンクからgitに飛び、ESP8266用の一式を手元にダウンロードします。展開してSample_Sketch/examples/LED以下のお試しスケッチをやってみました。JWIO_ESP8266_ArduinoIDE.cppとJWIO_ESP8266_ArduinoIDE.hをJWIO_ESP8266_ArduinoIDE-masterからコピーして来ます。zipファイルをライブラリとして登録している訳ではないので、ここを修正します。"JWIO_ESP8266_ArduinoIDE.h"ですね。ユーザー登録して取得したtokenと、アクセスポイントのssid、password、それに先程のtokenを以下の関数の引数とします。token","A");このサンプルスケッチが行っているのは、プロジェクトは"A"、5秒置きに内部時間をキー"B"としてjumpwire.ioに送信している事と、jumpwire.ioから受信したキー"A"の値を見てLEDを点けたり消したりする処理です。ESP8266のIO5にLEDを接続しておきます。スケッチをコンパイル→ESP8266に転送しておきます。シリアルモニターを起動しておいた方が良いでしょう。「Key」をAとしてValueに適当な値を書いて「Throw」ボタンを押します。1または0をValueとして送るとLEDの点灯/消灯が行えるはずです。コンソール画面のログにキー"B"の値が表示されます。jumpwire.ioを利用した場合のアクションはこのThrowとLED.inoの中のCatchが基本です。jumpwire.io側のサーバーも、ESP8266などのクライアント側もCatchで制御を受けてThrowで制御を送ります。IFTTTなどのクラウドサービスと異なる点は、IFTTTはクライアントがMakerチャネルに要求を行うと、Makerチャネルとクライアント側の接続はその時点だけ確立し、要求を送信後接続は解消します。同様にIFTTTからマイコン等のデバイス側に要求を送る場合も同じ事となり、IFTTTがクライアント、デバイスがサーバーとなってその場限りの接続を確立します。jumpwire.ioの場合は何が違うのか?この場合はESP8266などのデバイス側がクライアントとしてjumpwire.ioのサーバー側に接続を行うと、その接続は特に理由が無い限り解消せず、いつでもデバイス側から要求を送れますし、いつでもサーバー側からも要求を送れます。お互いに任意のタイミングで双方向でやりとりができるのです。常時接続の状態なのでとても反応よく動きます。このjumpwire.ioの特性を利用すると2つのIoTデバイスをjumpwire.ioだけ経由して接続が可能となります。Machine)と呼ばれるあれです。※IFTTTの場合もM2Mは可能ですが、制御を受ける側はグローバルIPアドレスまたはURLを事前に登録する必要があり、一般的なブロードバンド接続の場合はDDNSを利用するなど結構面倒な事前準備が必要です。DDNSを利用すればできる事も多いのですけれどね。Driveと連携できます。無料使用の場合はサーバー側に溜められるデータの量や時間に制限が有ります。Driveの残り容量分は大丈夫ですね(笑)。この設定はコンソール画面から行えます。connector.」をクリックするとその設定が開始されます。Driveに飛ばすのか?タイムゾーンは?を決めたら「Connect」ボタンを押せば連携が開始されます。この時勿論Googleのアカウントが必要です。Driveを見てみるとファイルが出来上がっています。ダブルクリックすると以下の様になります。タブの右端の赤い+を押すと機能タブを追加できます。ここでは「Chart」を追加してみました。グラフのフォーマットを幾つか選べますが、ここでは一般的な折れ線グラフを選んでみました。いや、これは便利ですね。Drive連携ができるのが3つまでで残念ですが、でも結構使えると思います。ver.6を使う上での操作方法や問題点などをまとめています。CQ出版の担当さんの話では過去の購入ユーザーにもこのPDFを配布する事に付いて聞いていますが、その方法など具体的なところまでは判らないので、なんだったら直接トラ技編集部さんにメールするとか、ツイートするとかしちゃってください。方法はどうするのでしょうね?とても気になります。以下のリンク先のページで公開が始まっています。誰でも読むことができますし、まぁ一回読めばいいかな~~位の内容なので、宜しければよんでみてください。[XBee]http://www.rovingnetworks.com/products/RN42XV今まで触って来たBluetoothモジュールは、ZEAL-S01http://www.musenka.com/bluetooth/s01.htmlとかFB155BChttp://firmtech.co.kr/01pro/main_eng.php?index=100&proinfo=13で、ちゃんとPCやAndroid端末と接続できるし、問題は無いのだけれど、デフォルトの初期状態はスレーブモードで、最初にマイコン側から接続の為の手続きを行わないと通信に入れないものでした。RN42XVは標準の初期状態が既にBluetoothでの通信READYで、そこから決められたエスケープコードでコマンドモードに入ります。買って来て、装置に組み込んで、PCとペアリングを完了すれば既に通信準備OKであり、その後はいきなりPC、マイコン間で通信できます。!これ形状を見れば判る様にXBeeのパクリ?です。データシートなどを見て行けば判りますが、"XBee"と直接的に書いていませんが、「IEEE802.15.4モジュールの置き換えに使える!」とか書いてありますから(笑)。IEEE802.15.4モジュールってもろにXBeeじゃん。標準状態でいきなり通信に入れるのはXBeeシリーズ1のトランスペアレントモードを意識しての話でしょう。どちらもペアリング、認証のプロセスが必要ですが。Blueoothモジュールとしては異例の安さですね。円安になった現在でも2000円ちょっとくらいの価格です。そのお味はどんなものでしょうか。miniよく知らないのでまあそう言われているらしいです。その互換ボードであるルネサスのRL78(G13)マイコンを使ったGR-KURUMIをXBeeで遠隔プログラミングするお話です。そもそもこのRL78G13のプログラミング方法が、デバッガーを使うか、専用書込み器を使うか、セルフプログラミングするか、それとも今回する様に外部からシリアルを使って書込みとなります。他のルネサスのマイコンなんかもそうですが、シリアルにプログラムデータを送り込んだからと言って自動的にROMの内容を書き換えてしまうなんて事は無く、当然手続きが必要となります。なくては怖くて使えませんからね。このマイコンの外部プログラミンモードへの入り方は、RESETを入力しながら特定のPIN(TOOL0)をLOWからHIGHに遷移させ、さらにその後76μs位の時間そのPINをLOWに維持し、今度はシリアルからコマンドを入力すると書込みモードに入ると言う手続きになっています。ローカルにあるこのマイコンに書込みを行うツールもルネサスから用意されていて、その動作はPCのシリアルのTXDやRXDはマイコンのRXD、TXDに接続するのは当然として、PCのDTRでRESET信号を生成し、PCのTXDをBREAK状態にするなどして上記のシーケンスを実行しています。遠隔で書き換えとなると上記の手順を遠隔で実行せねばなりませんので、通信用のTXDやRXD以外に自由に操作できるポートを2本必要とします。言った操作が容易にできるXBeeの登場となる訳です。XBeeのGPIOの内DIO1とDIO2をRESETとLOW入力に利用します。DIO0はコミッショニングスイッチに接続されています。XBeeはシリーズ2を使用しています。PCアプリなのでPC側とくるみちゃん側の双方にXBeeシリーズ2を用意する必要があります。I/Fボードなどを使用します。基板付の方は今現在売り切れみたいですが、大丈夫です5月位には再度販売されるとか。言う訳でXBeeの使い方の詳細は上記の本を参照して下さい。GR-KURUMIは通称KURUMIまたはくるみちゃんです。くるみちゃん側のXBeeとの接続は簡単です。基本的にXBeeのDOUTとくるみちゃんのRXI、XBeeのDINとくるみちゃんのTXO、XBeeのDIO1をくるみちゃんのRESET、XBeeのDIO2をくるみちゃんのTOOL0(CTS)に接続します。信号線は上記のみで、それ以外は当然電源の接続も必要です。I/F基板を使ってXBeeの設定をしておきます。PC側のXBeeはコーディネーターでAPIモードに、くるみちゃん側はルーターでトランスペアレントモードにしておきます。※エンドデバイス設定でもST時間等を上手く設定すれば行けると思う。操作手順を以下に記載して置きます。1.くるみちゃんwriterを起動する前にPC側のXBeeをPCに接続し、正常にCOMポートとして認識されている必要があります。2.くるみちゃんwriterを起動します。3.COMの下のプルダウンリストから該当するCOM番号を選択します。4.XBeeの端末速度をBAUDの下のプルダウンリストから選択します。※一度このアプリケーションでXBeeを操作すると、その後XBeeの端末速度は115200bpsに設定されています。不揮発性メモリに保存されている訳ではないので、XBeeの電源入切で元に戻ります。RATEの115200bps強制変更を行います。6.くるみちゃん側の電源を投入してアソシエーションLEDが点滅している事を確認します。discoveryを実行します。この時それぞれのXBeeのNIパラメーターに適当な文字列を入れておくと探すのが容易になります。8.NDの下のプルダウンリストからお目当てのXBeeを選択します。9.転送ボタンを押してファイルダイアログを開き、転送したいbinファイルを選択します。ROMの消去、プログラムの書込み、RESET後再起動が行われます。11.終了ボタンでアプリケーションを終了させます。一度転送ボタンを押してプログラム書込みを行う事ができます。NDの下のプルダウンリストから別のXBeeを選択して書込みを行う事ができます。注意点!XBeeシリーズ2の転送速度はあまり早くない、1HOPの位置にあっても実質的な転送レートは30kbpsがせいぜいです。書込み時間は掛かります。気長に完了を待ってください。Beeは標準ではRemote書込みに対応していないので、写真の様にジャンパーを飛ばして下さい。詳細は回路図にも書いてあります。4.0以上が必要です。Tubeにアップしてみました。上手く撮影できていませんが。今後の展開XBeeシリーズ1なら若干転送速度が速くなります。シリーズ1への移植もできたら行います。bluetoothでも書き換えしたいので、ポート操作ができるモジュールを探し中です。Wi-Fiもやりたいと思っています。ファイルフォーマットはMOTやHEXファイルにも対応したいなぁと。トラックバック(0)XBee解説本が出るらしいです。[XBee]お待たせしましたです。言うかすっごい待たせてしまってすいません。逆に対比の意味でもシリーズ1の解説を加えた方がよりシリーズ2を理解できる点から、シリーズ1の操作方法などもそれなりに入っています。共に2.4GHzのISMバンドを使用した無線モジュールで、ブランド名もXBeeで統一されている事からも共通点が多く、シリーズ1のみ、またはシリーズ2のみのユーザーの方でも役に立つと思います。DigiのUSサイトのナレッジベースを読んでみると、意外とみんな同じような事で躓くようで、トラブルシューティングのところも役立つと思いますよ。ページもそれ程多くないですし、まあ、軽ーく読める本です。ページの都合でシリーズ1のATコマンドリファレンスがCD-ROMでの収録となってしまったようです。それが残念ですが、CD-ROMのコンテンツも合わせてお読みください。2mW版XBee2個とフリスクサイズXBee/USBインタフェース基板と解説書が入った物が予価10,500円?。解説書が無くてキットのみの物が予価8,400円?。解説書のみの物が予価2,100円?。