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)の所定のポートにわりあてられているのかご教示頂ければ幸いです。
宜しくお願いいたします。
tomoさん
IDE for GRのサンプルスケッチに、UploadXivelyがあります。
こちらクラウドサーバーにデータをUPするスケッチでした。
(GR-KURUMI用です。)
場所は、下記になります。
ファイル-スケッチの例-10.SNShield-UploadXively
ソフト移植などについては、他の方がくわしいのでゆずります。
(がじぇっとるねさすコミュニティーのフォーラムに投稿された
ほうがよいかと思います。GR-KURUMI/SNShieldががじぇっと
ルネサス扱いなので。)
K.T
Kimiyoshi 様
早々にありがとうございます。
ご指摘のスケッチを見つけました。ide4gr-0.8.0をD/Lしていたのですが、ここにはありませんでした。ide4gr-0.4.1にあるのですね。
この中の、Serial2がXBee用のシリアルのようですが、これが使用しているポートはどこで定義されているのかおわかりになりますか?
s/wシリアルについて、
ご指定のスケッチを探していたら、たまたま IDE for GRの、スケッチブックにsoftserilatestというのにありますが、そこでは、
SoftwareSerial softSerial(2,3);
のようにポートがアサインされるのですが、前記のSerial2はこのような指定はできないのでしょうか?
がじぇっとるねさすのフォーラム内ですが、Okamiyaさんの記事があります。
japan.renesasrulz.com/.../kurumi-xbee-wifi-snshield.aspx
GR-KURUMIはハードウエアのシリアルが3本あり、それぞれSerial、Serial1、Serial2と割り付けされています。
すでに3本も用意されているので、特にソフトシリアルは重要視されてません。
Arduinoでやる場合はソフトシリアルの端子の割り付けにSerial1、Serial2で使用している端子を指定して下さい。
ここにGR-KURUMIのリソースの説明があります。
japan.renesasrulz.com/.../dd.aspx
管理人のAyrです。
tomo 様 Kimiyoshi Tomohiro 様
このスレッドの内容がGR-KURUMIとArduinoに関してなのでかふぇルネからがじぇるねえの移動が提案されております。切り替えてよろしいでしょうか?
Ayr様
私のほうは問題ないです。
Ayr 様
私も問題ありません。
tomo
どっちかと言えばSNシールドのフォーラムでしたね。
japan.renesasrulz.com/.../113.aspx
>GR-KURUMIはハードウエアのシリアルが3本あり、それぞれSerial、Serial1、Serial2。。。
だから、サンプルスケッチで何の前触れもなく Serial2.begin(115200)などと出てきていたのですね。
kurumiのpin mapはみていたのですが、よく理解できていないでした。
私は、arduino Pro-miniなので、Serial2のピンにS/Wseiralを割り振ってトライしてみます。
ところで、私の使っているXBeeはZBです。
XBeeにS/Wシリアルが割り当てることができません。
XBeeをS/Wシリアルで実現するために下記の行をスケッチに入れました。
#include <SNShield.h>
SoftwareSerial mySerial(10, 9); または SoftwareSerial mySerial = SoftwareSerial(10, 9);
しかし、下記のXBeeにS/Wシリアルを割り当てるところでコンパイルエラーがでます。
xbee.setSerial(mySerial);
そこで、試しに
#include <SNShield.h> をはずすとエラーは出ません。
エラーは下記です。
心当たりのある方はおられませんか?
---エラーはじめ----
Arduino: 1.6.4 (Windows 7), ボード:"Arduino Pro or Pro Mini, ATmega328 (5V, 16 MHz)"
SNShield_sent_via_XBee_to_Processing.ino: In function 'void setup()':
SNShield_sent_via_XBee_to_Processing:75: error: no matching function for call to 'XBee::setSerial(SoftwareSerial&)'
SNShield_sent_via_XBee_to_Processing.ino:75:26: note: candidate is:
In file included from C:\Program Files\Arduino\libraries\SNShield/SNShield.h:27:0,
from SNShield_sent_via_XBee_to_Processing.ino:9:
C:\Program Files\Arduino\libraries\SNShield/utility/XBee.h:724:7: note: void XBee::setSerial(HardwareSerial&)
void setSerial(HardwareSerial &serial);
^
C:\Program Files\Arduino\libraries\SNShield/utility/XBee.h:724:7: note: no known conversion for argument 1 from 'SoftwareSerial' to 'HardwareSerial&'
no matching function for call to 'XBee::setSerial(SoftwareSerial&)'
---エラー終わり---
tomoさん、こんにちは。
推測で申し訳ないですが、SNShield¥utilit¥フォルダに
GR-KURUMIのHardwareSerial向けに岡宮様(もしくはテセラ殿)がカスタマイズした
XBee.hが含まれているのが原因では無いでしょうか? 同じフォルダにあるXBee.cppも
GR-KURUMIのHardwareSerial向けにカスタマイズされていると思われます。
ですので、SNShield¥フォルダのSNShield.hの以下の行と一緒に上の2つのファイルを
削除すると解決しそうな気がします。
#include "utility/XBee.h"
NoMaY 様
おっしゃる通りにすると、コンパイルにエラーは出ませんでした。
私も、utilityフォルダのXbee.cppなどを疑ったのですが、目視ではauruinoのオリジナルのファイルとutilityフォルダの内容が同じだったのでこのままでもよいのかなと思っていました。目視しかできないので、違いがみつけられなかったのですかね。
-->岡宮様 参考までお聞きしますが、Xbee.cppや、XBee.hをカスタマイズされているのでしょうか?
それと #include "utility/XBee.h" はコメントアウトしたのですが、これだけではだめで、NoMay様のおっしゃる通りフォルダから削除する必要がありました。 よく理由が分かりません。コメントアウトした状態で、かつ utilityフォルダのXbee.cppなどをリネームしてもそのファイルを参照しようとしてエラーになるのです。
コンパイルはエラーなしとなりましたが、本当にSoftwareSerialがアサインされてXBeeの転送の可否の確認はこれからですが、取り急ぎお礼まで。。。
arduino Pro-miniで、SoftwareSerial(ポート9,10を使用)でSNShieldの XBeeが動作しました。 NoMay様のご指摘が完璧でした。 ありがとうございました。
しばらく無沙汰しております。
また、困難にぶち当たりました。
SoftwareSerialで、ポート10を入力、9を出力に設定したのは、11/12の報告通りです。SNShieldからのXBee経由での温度、照度、加速度のPCへの送信はうまくいくのですが、送信後のステータス確認でデータが取得できません。具体的には、xbee.send(zbTx)後の xbee.readPacket(500)で faultが返ってきます。 ためしにserial.availableで覗いても 0 が返ってきますので、受信がまったくできていないようです。H/W的に信号がきていないのかなと思い、XCTUで該当XBeeが他のXBeeと相互通信できるかどうか確認したところ他のXBeeは相互に通信しているのでXBeeの故障ではありません。 半田付け不良を疑い、XBeeのDout(2ピン)端子と、Pro-miniのポート10の接続を テスターで確認しましたがつながっています。 又、データを受信したPCからダミーデータを送信しましたが、やはり受信されません。
Pro-miniを使ってのSoftwareSerialの送受信は、別のポートでは自分自身は実績があるので懸念しておりませんでしたが、SNSieldではうまくいかないように思われます。
スケッチは2013_11_23_Kurumi_snShield.pdf を参考にさせていただいております。 なにか見落としがあると考えられますが、ご存知の方はいらっしゃらないでしょうか?
ボーレートをいくつに設定しているのか判りませんが、目一杯落としてみては如何でしょうか?
ボーレートは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ほしいなぁ。。
オシロが一番確実だとは思いますが、苦肉の策として、Arduino Pro Miniにスケッチを書き込む為にUSBシリアル変換モジュールを1つは持って
いらっしゃると思いますので、ボーレートが分かっているのであれば、そのUSBシリアル変換モジュールのRX入力に信号を入れて、TeraTermなどの
通信ソフトでRX入力からの受信内容を表示させてみれば、XBeeから何か出力されているかどうか分かるかも知れません。