- 締切済み
思い通りに動かせず、困っています
ZIG100BeeモジュールとPIC12F675を2つずつ使って回路を作ろうとしているのですが、 ZIGBeeがどんなプログラムで動くのか、検索しても全く解りません。 送信側PIC 4ピン→1kΩ抵抗でプルアップ+スイッチ 7ピン→ZIGBeeTxDに接続 6ピン→ZIGBeeRxDに接続 受信側PIC 4ピン→ZIGBeeTxDに接続 5ピン→ZIGBeeRxDに接続 7ピン→LEDアノード側に接続 6ピン→ブザー+側に接続 このような回路で、送信側スイッチを押すと受信側LEDが点灯、ブザーが鳴るようにしたいのです。 送信側プログラム #include<12F675.h> #byte GPIO =0x09 #byte TRISTO =0x85 #byte CMCON = 0x19 #byte ANSEL =0x9F #fuses INTRC_IO,NOWDT,PUT,NOPROTECT,NOMCLR,NOBROWNOUT #use delay(clock=4000000) #use rs232(BAUD=9600,xmit=PIN_A1,rcv=PIN_A0,bits=8) #use fast_io(a) void main() { set_tris_a(0x09); delay_ms(50); while(1){ if(input(PIN_A3)==0x00){ putc(0x00); delay_ms(50); output_A(0x09); } } } 受信側プログラム #include<12f675.h> #byte GPIO =0x05 #byte TRISTO =0x85 #byte CMCON = 0x19 #byte ANSEL = 0x9F #fuses INTRC_IO, NOWDT, PUT, NOPROTECT,NOMCLR,NOBROWNOUT #use delay(clock = 4000000) #use rs232(BAUD = 9600, XMIT = PIN_A2, RCV = PIN_A3,bits = 8) #use fast_io(A) void main() { set_tris_A(0x08); delay_ms(50); while(1) { if(input(PIN_A3)== 0x00) { if(kbhit()) { delay_ms(500); output_high(PIN_A0); delay_ms(500); output_low(PIN_A1); } } } } このようなプログラムにしたのですが、受信側が送信側の操作に反応せず、 電源プラグを挿しただけで動作してしまいました。 すみませんが、誰か解る方がいたら教えてくれませんか?
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- ninoue
- ベストアンサー率52% (1288/2437)
ここで書かれているようなプログラムで動かす事は出来ないとおもいます。 まず使われているZigBeeモジュールについて、メーカーの説明書を見てください。 次にZigBeeについての市販の解説書を入手して理解に努めてください。 (Amazon等でサーチする等してください) ZigBeeシステムでは無線通信を通じて複数の装置との間で、一斉通信、個別通信等の機能を果たすようになっています。 従って相手毎に番号が割り振られています。 各装置は無線信号の上に特定のパターンが現れるのを監視しており、そのパターンが現れたら、その後に装置アドレス、コマンド(装置リセット、コントロール、データ送信、データ要求他)、データバイト数、データ、チェックデータ(チェックサム、CRC?)等からなるデータパケットが送られてくるのを確認し、チェックデータが正しくデータに誤りが無い事が確認できたら指定された動作をするように動いていきます。 以上のような形で動きますので、通常ZigBeeドライバーソフトを介して、そのサブルーチン仕様に従って送受信パラメータを渡し、信号のやり取りを行います。 少数のオンオフ信号のやり取りを行うだけで、詳細についてはブラックボックスのままでかまわないといった使い方をされる場合もあると思います。 ZigBeeモジュールにドライバーソフトも付属している場合には、それを使って動かすことが出来ます。 付属していない場合、フリーのZigBeeドライバーソフトもあるとは思うのですが、簡単に動かす事は出来ませんので次を検討されるのが早いのではと思われます。 "ZigBee 工作キット PIC" 等でサーチし、調べてください。