開発キットをリニューアルします。
EDK400Jからの主な変更点は
・PTM210J/ECO200/PTM430J —> X3200HB-W-R-920
※半完成品から市販の量販品に変更
・STM400J —> STM400J_for_proto
※2.54mmピッチで使いやすくした
・TCM410J_on_XBの追加
※EDK400JにTCM410Jは含まれていませんでした
Self-powered Internet of Things
開発キットをリニューアルします。
EDK400Jからの主な変更点は
・PTM210J/ECO200/PTM430J —> X3200HB-W-R-920
※半完成品から市販の量販品に変更
・STM400J —> STM400J_for_proto
※2.54mmピッチで使いやすくした
・TCM410J_on_XBの追加
※EDK400JにTCM410Jは含まれていませんでした
1ホップのリピーターをWebに掲示していたら、大手企業さんからいくつかお問合せを頂いた。こういう超ニッチな製品は、欲しい人は確実にいるんだが、数が見込めないので大手企業さんは製品化はまずしないだろうと踏んでいるのです。
超ニッチな理由その1:EnOceanプロトコルにしか対応していない
超ニッチな理由その2:まだEnOceanの無線が普及していない時期に、飛距離を稼ぐリピーターが必要な人が何人いるんだ?
超ニッチな理由その3:1ホップにしか対応していない。しばらくしたらマルチホップ対応が欲しいという人は現れると思うが、技術的にハードルが高いんですよね。
こんな製品が作れます、という例として見ていただければいいです。
「帝〇データバンク」と名乗ってアポを取らずに突然の訪問がありました。
「近くに来たから」だそうですが。「近くに来たから」という理由で面会は受けておりません。アポのない方はお帰り願っております。悪しからず。
彼らのレポートを取り寄せようとした方。「面会拒否された」と書かれてあってもそういう事情ですから。
温度センサーが手元になかったので、動きが分かるように30秒ごとに1,2,3,,,をポストしていくスケッチを動かしました。
www.ermine.co.jpに3GIMの使い方、トラブルシュートの方法などを書くことにします。
ようやく3G回線上でHTTPが開通しました。その悪戦苦闘の記録です。
===
前回までの概要。
Arduino Uno <-> 3GIMの通信が開通しました。そこでセンサー値をxively.comに投稿するスケッチを動かしたら>httpPOST requestingでFailedになったところまで。
前回以降、今回までの記録。
ライブラリ仕様書にサンプルスケッチが公開されているので、これをstep by stepで実行してみることにした。
blink_led.ino:3GIM上のLEDをblinkさせるもの。Arduino <-> 3GIMの通信はできていることがわかる。
sample_TCPIP.ino:connectTCP() can’t connectになる。そこでライブラリ(a3gs.cpp)をデバッグモードにして動作させると以下のようになった。
==================
※デバッグモード:a3gs.cppのコメントアウトされている//#define DEBUG 1の//を取り除いて再コンパイルする
==================
Initializing.. ** >start():Turn on and wait for a moment..
** >start():IEM is available now.
** >begin():9600
** <sendCommand():$YV
** <getResult:$YV=OK 2.0
** >getVersion():$YV=OK 2.0
Succeeded.
** <sendCommand():$TC www.arduino.cc 80
** <getResult:$TC=NG 608 534
** >connectTCP():$TC=NG 608 534
connectTCP() can’t connect
===========
ここで <getResult:$TC=NG 608 534が臭そうなのでコマンド仕様を見ると607も609も出ているのに608が出ていない。ここでメーカ(タブレイン)にヘルプ。するとプロファイルに問題あるだろうとの回答。因みに608はDNSのエラーだそう。
そこでライブラリにset_defaultprofile.inoがあることを発見、DTIのプロファイルに設定した。その結果、sample_TCPIP.inoを動かすと
Ready.
Initializing.. Succeeded.
www.arduino.cc : Page title is “Arduino – Home”
Shutdown..
が出てめでたしめでたし。システムが大きいのでトラブルシューティングは結構厄介です。xivelyまで動いたら、センサー情報をサーバに上げるまでの一連の作業やその際のトラブルシューティング方法をわかる範囲でまとめようと考えています。
今日はここまで。
その1から進んだこと。
1)マイクロSIMを入手しました。
2)DC output12VのACアダプタから4Vを出力する回路を組んでArduino UnoのDC Jackから3GIMの電源を取るようにし、その他信号線も結線しました。
3)step by stepで動作を確認したいのですが、そのためだけのスケッチを組むのが面倒なのと、実績のあるスケッチが公開されているので、いきなりxivelyにつないでみることにしました。どこかで引っかかったらそのとき調べる、という方針。
4)早速取ってきたサンプルスケッチのコンパイルが通らない。error: stray ‘’ in programという謎のメッセージをネットで調べると、半角にすべきところを全角にしたときしばしば出るメッセージらしいことが判明。サンプルに”が大文字で入っていることを発見、修正したらコンパイルが通った。
5)Arduino Unoに書き込んで動作させたらvoid setupを抜けない。a3gs.start() == 0 && a3gs.begin() ==0にならないようで、Arduino <–> 3GIMが交信できていないことが判明。まずa3gs.hのシンボル、a3gsBAUDRATE=9600に修正しないといけないことがわかったがまだエラーになる。エラーコードを見ると、ライブラリが古いことが判明、最新をダウンロードしたらvoid setupは抜けた。次>httpPOST requestingでFailedになった。
今日はここまで。
とりあえずの備忘録。
http://blog.felicalauncher.com/sdk_for_air/?page_id=2699
上記からダウンロードしたライブラリですが、最近のIDE(私のは1.5.8)では
#include “WProgram.h” を #include “arduino.h” に変更しないとだめ
のようです。
3Gゲートウェイの話題についてはSIMが来るまで一休みするとして。
有線・無線を問わず通信関係の仕事をしていると、どのメーカのものでも相互に繋がる「相互接続性」が気になります。
「相互接続性」の身近な例では、国内でAC100V電源は、通常気にすることなくどのコンセントにもプラグが刺さって電源が取れます。JISで規格化されているからですね。
ところが私の関わっている、半導体チップ、基板モジュールのレベルになると、「相互接続性」がぐっと下がります。
最初に問題になるのが物理的な接続。つまりピンやソケットなどです。初めから半導体や基板モジュールに最適なマザー基板を設計するつもりならそれほど気にすることはないですが、1つか2つ作って動作試験をしたいとか、ソフト開発を先行するのにプロトタイプが数個欲しいとかのとき困ります。
電子回路のプロトタイピングはシリコンバレーが発祥地と思われ、「ブレッドボード」や「ユニバーサル基板」はヤードポンド法の2.54mm(0.1inch)ピッチが主流です。
2.54mmで事が足りていた時代は良かったのですが、半導体やそのモジュールが小型化して、次世代のプロトタイピングがどうなるか混沌としてきました。
ヨーロッパ系の半導体のためにメートル法の2mmピッチの基板が出始めています。2.54mmとの互換性を重視して1.27mm(0.05inch。ハーフピッチと称する)のものも出始めています。
2.54mmピッチの「ブレッドボード」や「ユニバーサル基板」はこのまま残り、2mmや1.27mmに全てが置き換わることはないでしょう。なぜなら2mmや1.27mmだと手作業がしにくいからです。日本含む先進国では技術者が高齢化しており、細かい仕事が苦手なはずだからです。
つまり、高密度の半導体や基板モジュールを「ブレッドボード」や「ユニバーサル基板」に載せるための、2->2.54/1.27->2.54への変換基板の需要は当面なくならない、と読んでいます。
(因みに「ブレッドボード」とは「パンを焼く板」に釘を打って回路を組んだのが語源らしい)
次回は電源について書こうと思います。