IM920sLを使用して無線通信のテストをしています。
センサーの値を送信→センサー値を受信してTeraTermに表示させたいです。
~機器構成~
送信側:センサー(HC-SR04)+Arduino UNO+IM920sL
受信側:Arduino UNO+IM920sL
※送信側はこれにセンサーが接続されています。
こちらのサイトを参考に送信側、受信側のスケッチを書き込んでみましたが、受信側のTeraTermには何も表示されません。
受信側のArduinoをIM920sLスターターキット内のUSBインターフェイスボードに変えると、送信されたデータは受信できるので、送信側は問題なさそうです。
送信側、受信側のスケッチは以下のようになっています。
<送信側>
C++
1#include <SoftwareSerial.h> 2 3SoftwareSerial IM920Serial(8,9); // RX, TX 4 5int TRIG = 12; // Trig出力ピン 6int ECHO = 13; // Echo入力ピン 7 8double duration = 0; 9double distance = 0; 10double speed_of_sound = 331.5 + 0.6 * 25; // 25℃の気温の想定 11 12void setup() { 13 IM920Serial.begin(19200); //ソフトウェアシリアル開始。IM920 とは 19200 ボーを指定 14 Serial.begin(19200); 15 16 pinMode(TRIG, OUTPUT); // 出力ピンの設定 17 pinMode(ECHO, INPUT); // 入力ピンの設定 18 digitalWrite(TRIG, LOW); // 初期状態をLOWにセット 19} 20 21void loop() { 22 digitalWrite(TRIG, LOW); 23 delayMicroseconds(2); 24 digitalWrite( TRIG, HIGH ); 25 delayMicroseconds( 10 ); 26 digitalWrite( TRIG, LOW ); 27 duration = pulseIn( ECHO, HIGH ); // 往復にかかった時間が返却される[マイクロ秒] 28 29 if (duration > 0) { 30 duration = duration / 2; // 往路にかかった時間 31 distance = duration * speed_of_sound * 100 / 1000000; 32 Serial.print("Distance:"); 33 Serial.print(distance); 34 Serial.println(" cm"); 35 } 36 37 IM920Serial.print("TXDA "); 38 IM920Serial.print(distance); 39 IM920Serial.println("\r\n"); 40 41 delay(10000); 42}
<受信側>
C++
1#include <SoftwareSerial.h> 2 3SoftwareSerial IM920Serial(8, 9); 4float i; //センサーの値は小数点を含むのでfloatとする 5 6void setup() { 7 Serial.begin(19200); 8 IM920Serial.begin(19200); 9 10 pinMode(10,OUTPUT);//busy 11 digitalWrite(10, HIGH); 12} 13 14void loop() { 15 if (IM920Serial.available()) { 16 i = IM920Serial.read(); 17 Serial.print(i); 18 } 19 delay(10000); 20}
TeraTermに表示させるにはどこを修正したらよいでしょうか。
よろしくお願いいたします。
回答3件