GR-SAKURA
GR-KURUMI
GR-COTTON
GR-CITRUS
GR-PEACH
GR-KAEDE
GR-ADZUKI
GR-LYCHEE
GR-ROSE
GR-MANGO(*)
SNShield
Web Compiler
IDE for GR
TOPPERS関連
女子美コラボ
その他
※プロデューサミーティング中
作り方使い方資料
イベント関連
作品記事
体験記事
ライブラリ
ツール
その他・過去ファイル
SNShieldをardino Pro-miniで動かす方法についてお世話になったものです。センサーはまだ、若干疑問点がありますが、そこそこアクセスできています。
次にXBeeを動かしたいのです。具体的方策が見えません。
私の過去のarduinoでの方法は、、arduinoでH/WシリアルはPCとの通信、S/WシリアルをXBeeとの通信でやっていました。かふぇルネをみていてもS/Wシリアルの話がないようが気がしたので、皆さんはどのようにXBeeのTx・Rxをkurumi(私の場合はPro-mini)の所定のポートにわりあてられているのかご教示頂ければ幸いです。
宜しくお願いいたします。
ボーレートをいくつに設定しているのか判りませんが、目一杯落としてみては如何でしょうか?
ボーレートは9600です。それほど無理な速度じゃないと思いますが、もっと下げたほうがよいですかね
無理かどうかは判断付かないので、出来る事を全部やってみてください。
Arduino の SoftwareSerial って送信中には割り込みを禁止し受信はタイマー割り込みで行ってる実装により送受信を並列して同時に行う全二重通信が安全にできるものではありませんが XBee との通信に支障はないですかね?
GR-KURUMI ではなく SNShield の話題であればSNShield フォーラムで行うべきでは
XBeeとの通信は全二重ですので、送信中に受信してしまうと、齟齬が発生する可能性が有ります。
ただし、運用上で半二重になっている可能性もあり、特にコマンド&レスポンスでやっている場合、なんにも受信できないってのも不思議な気がしますね。
トランスペアレントモードで、もっとシンプルな受信をしてみて、それでも受信できないのか?とか確認してもらいたいところ。
> GR-KURUMI ではなく SNShield の話題であればSNShield フォーラムで行うべきでは
かふぇるねから移動された時、何故かGR-KURUMIに移動させられてしまった経緯があり、まぁいいのではないでしょうか?tomoさんにはもうどうしようも無いですし。
オシロスコープがあればハナシが早そうですけどね。持ってないですか?>tomoさん
皆さん、色々ありがとうございます。以下の状況です。 ほかにヒントがあったら引き続き、教えてください。
一 speedを2400まで落としましたが変わりません
二 フォーラムの変更の件、chobichanさんのおっしゃる通りで、私になすすべがみあたりません。
三 fujitaさんの割り込み云々の件、ちょっと気になるのですが、どうしたもの試す手だてがわかりません。
四 chobisanさんのトランスペアレントモードの件は、今APIがやっとなので、頭がこんがらがるので、ちょっとすぐにためせそうにありません。受信の方はPCでprocessingなのですが、こっちも変更するのが慣れていないのでちょっと大変。
五 chobisanさんの、半二重のけんですが、送信をやめてみた(xbee.send(zbTx)をコメントアウト)のですが、PC側からの送っているダミーのデータは依然、受信できません。
六 オシロスコープはご推察の通り、持っていません。
SNシールドとのハードウエア的な接続は、基板が壊れていない限り問題ありません。GR-KURUMIのハードウエアシリアルで動いていますから。
トランスペアレントモードはXBeeの標準のモードです。
SNシールドのライブラリに問題が有るのかもしませんから、特別なライブラリを経由せずに、単純なシリアル入力が可能かどうかを切り分けをした方が良いでしょう。
X-CTUでデフォルト(工場出荷状態)に戻してください。その後、トランスペアレントモードのコーディネーターを選んで設定します。
PC側のXBeeもトランスペアレントモードに戻します。こちらはルーターになっています。
コーディネーターを起動してLEDが1秒周期で点滅を開始してからPC側のルーターを起動し、こちらが0.5秒周期でLEDが点滅を開始したらネットワークが接続していますので、PC側のX-CTUのターミナル画面から適当な文字を送信すれば、コーディネーター側に伝わってArduinoでそれが読めると思います。
XBeeについてはこのような書籍が参考になります。
shop.cqpub.co.jp/.../48241.htm
オシロは、なんでもいいから1個もってるとラクですよー。このへんとか。
akizukidenshi.com/.../gK-09726
akizukidenshi.com/.../gM-09474
akizukidenshi.com/.../gM-05415
自分はPDS-5022T使ってますが、DSO-Touchほしいなぁ。。
tomoさん、こんにちは。
オシロが一番確実だとは思いますが、苦肉の策として、Arduino Pro Miniにスケッチを書き込む為にUSBシリアル変換モジュールを1つは持って
いらっしゃると思いますので、ボーレートが分かっているのであれば、そのUSBシリアル変換モジュールのRX入力に信号を入れて、TeraTermなどの
通信ソフトでRX入力からの受信内容を表示させてみれば、XBeeから何か出力されているかどうか分かるかも知れません。
皆様
色々とコメントをありがとうございます。 昨日夜、PCを立ち上げたらたくさんコメントをいただいて恐縮しています。若干進展があったので取り急ぎ連絡致します。
その後、X-CTUで受信を確認したのと、chobichan 様のコメントに押されて、受信専用の簡単なスケッチをAPI2モードで作成したところ、データが受信できてしまいました。SNShieldのライブラリは入っていませんが、これの有無が原因かどうかは判断早計だと思っています。(chobichan 様には申し訳ありませんが、トランスペアレントモードでは試していません。)いずれにしても、SoftwareSerial(ポート9、10)でSNShield上のXBeeから、Pro-miniまで、データがきていることが確認できました。 お騒がせしてすみません。当初のスケッチはまだうごいていませんが、スケッチを見比べながら改善したいところです。
その他、flux様や、NoMay様のコメントも今後の参考にさせて頂きます。
受信できない状況証拠がでてきました。
受信できていたスケッチで、SNShield kurumi; 後、 kurumi.begin(); を有効にすると、受信できなくなりました。 やはり、SNShield のライブラリが影響してるようですね。
どなたか、原因心当たりないでしょうか?
SNShield::begin() から呼び出してる R_SAIC_Write() の中で SNShield の Smart Analog IC との接続に使用している SPI の初期化をしてますが、Arduino pro mini では SPI に D10~13 を割り当てており、SoftwareSerial に D9 と D10 を使用されているのであれば、ピンが被っているので問題が起こるのではないかと思います。
SNShield の中で Smart Analog IC は SS に D4 を独自に制御して使用しており、SPI ライブラリ で D10 を SS に使用する意味はないので、Arduino ライブラリの中の SS を制御しているところをバッサリ削除するのが解決の手段としては早いのではないかと思います。