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