Arduino ソフトシリアルの検証


Arduino には、ソフトウェアでシリアル通信のエミュレートをする ソフトシリアル という機能があります。

実機確認
(1) 相互通信
ソフトシリアルのIOピンに USB シリアルアダプタをつける。
ハードシリアルは、Arudino IDE のシリアルモニタに表示する。
USBシリアルアダプタは、MAC の screen コマンドで表示する。
相互に通信できることを確認した。

ソフトシリアルのスケッチ

#include <SoftwareSerial.h>
SoftwareSerial softSerial( 2, 3 );
void setup() {
    Serial.begin( 9600 );
    softSerial.begin( 9600 );
}
void loop() {
    if ( Serial.available() ) {
        softSerial.write( Serial.read() );
    }
    if ( softSerial.available() ) {
        Serial.write( softSerial.read() );
    }	
}

20150307_softserila_schematics_mutual20150307_softserila_device_mutual

(2) 直結
ソフトシリアルのTXピンとRXピンを直結したときは、動きませんでした。
送信と受信が同時には動作しないと思われます。
20150307_softserila_schematics_direct 20150307_softserila_device_direct

性能検証
そこで、受信の性能を検証してみました。
Arduino をもう1台用意して、送信専用にします。
数字を 0,1,2,… と順番に送ります。
被試験側の Arduino のソフトシリアルで受信して、シリアルモニタに表示します。

数字発生のスケッチ

int cnt = 0;
void setup() {
    Serial.begin( 9600 );
}
void loop() {
    Serial.println( cnt );
    cnt ++;	
}

20150307_softserila_schematics_verification 20150307_softserila_device_verification

結果は、下記のように、正しく受信できない文字がありました。

41
42
43
4 
45
4
47
4
49

さらに、受信と同時に送信を行うと、文字化けしてしまいます。

0
É5*šjRDjRTˆÈ©Hè©HSHSHS()SP¦¦!¡¦¦!LMCBLCBLM
…17

結論
ソフトシリアルは、取りこぼしや文字化けがある。
それが許容されるときに使うべきです。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です