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はこのような指定はできないのでしょうか?
皆さん、色々ありがとうございます。以下の状況です。 ほかにヒントがあったら引き続き、教えてください。
一 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 を制御しているところをバッサリ削除するのが解決の手段としては早いのではないかと思います。
fujita様
状況は理解しました。ありがとうございます。 互換性ありとはいえ、なかなか難しいのですね。 D10は念の為にスケッチの中で、 pinMode(10, INPUT);でインプットにしているのですが、そんなもんじゃダメということでうね。 arduinoのSPIライブラリがD10-D13を制御しているとは、全く勉強不足でした。 しかしながら、SPIライブラリがPCのあちこちにあり、どのフォルダのSPIライブラリのどこを変更すればよいのか皆目わかりません。また、たとえばC:\Program Files\Arduino\hardware\arduino\avr\libraries\SPI フォルダにあるSPI.hやSPI.cppの中をみてもD10を制御しているようなところが探し当てられません。SSという単語はでてくるのですが。。。 具体的な変更箇所はご提示可能でしょうか?あるいは、変更の方向性などもう少し情報はないでしょうか?
お手間を取らせて、相変わらず大変恐縮です。 宜しくお願いいたします。
自己レス
pinMode(10, INPUT);をsetup()の直後にれて、後ろの方でkurumi.begin();を実行していましたが、先のご指摘を聞いて、kurumi.begin();の後にpinMode(10, INPUT);を入れたら、なんか動いているようですが、あっていますか?
すみません。このリプライは軽く受け流してくださいね。今、藤田様の心の声が聞こえたような気がしました。
『だから最初に言ったでしょ。GR-KURUMIを使った方が簡単だと思いますよ。』と。
くれぐれも受け流して下さいね。tomoさんの背中を押したのは私でしたので。(受け流すという表現だと
藤田様に失礼な言い方になってしまうかもしれませんが。)
NoMay様
いえいえ、頭の体操になっています。 Pro-miniは廉価ですしね。
> 先のご指摘を聞いて、kurumi.begin();の後にpinMode(10, INPUT);を入れたら、なんか動いているようですが、あっていますか?
AVR 版 Arduino の SPI ライブラリは Arduino IDE をインストールしたフォルダ下 hardware/arduino/avr/libraries/SPI/src/ にソースがありますが、SS への操作はそのフォルダにあるものでのみ行われてる保証もありません。現状の操作で問題がないかはご自身で判断して下さい。
hardware/arduino/avr/libraries以下のcppの中のSSマクロを検索してみましたが、使われているのはSPI.cppのbegin()の中だけみたいですね。
他にもチェックするところが有るのかなぁ?
> 他にもチェックするところが有るのかなぁ?
少なくとも同一のポートに対する操作で悪さが行われないことが保証されない限りは不確定要素として疑う必要があります。
SoftwareSerial と SPI ライブラリの両方で同一のピンに初期化を行い、それに対して対症療法的な方法を行ったとしてそれが適当であるかは内容に拠ります。AVR の PORT は入力状態で出力を HIGH にすると PULLUP されるという変な仕様がありますが、そういった部分が何かに悪く作用しないとは限りません。
がじぇっとるねさすコミュニティは個人的にユーザー同士の情報を交換する場所だと思っていますが、職務としてサポート業務を行っているわけでもないところで「あっていますか?」と尋ねられても何らかの保証のある回答ができるわけもなく、正しいかどうかは自己判断される以外ないと考えています。
fujitasa様
貴意了解しております。ちょっと表現が宜しくなかったですね。もとより業務で使うのではありません。