この記事の動作環境は、
パソコン PC/AT互換機
OS Debian squeeze(i386)
デスクトップ環境 GNOME
シリアル通信ソフト GTKTerm(2012年3月24日現在、最新バージョンは、0.99.5(作者ページによると開発は終了したそうです))
の組み合わせとなります。
読み方は、「ジーティーケー ターム」です。
シリアルポートを使って通信を行うソフトです。
端末からコマンドラインで入力します。
~$ su ;パスワードを入力して管理者権限になる
# aptitude install gtkterm
# adduser ○○○○(あなたのユーザ名) dialout ;※このコマンドは管理者権限で実行します
# chmod a+rwx /dev/ttyS0 ;※このコマンドは管理者権限で実行します(ttyS0の「S」は大文字なので注意)
# exit ;通常ユーザに戻る
※シリアルポートが複数付いているパソコンの場合は使用したいttySxすべてに読み書き権限を与えます
例えば、シリアルポートが2つ付いている場合は、
~$ su ;管理者権限になる
# chmod a+rwx /dev/ttyS0
# chmod a+rwx /dev/ttyS1
# exit ;通常ユーザに戻る
というように使う分だけ読み書き権限を与えます
インストールが完了するとデスクトップ画面左上「アプリケーション」→「アクセサリ」の中に
「serial port terminal」というのが出来ているのでそれを起動します。
「Configuration」→「Port」を選択します。
Speed: の項目で速度を決めます。ここではオシロスコープで観測しやすいように
一番遅い300にしました。
次に何かのファイルを実際に送信してみます。
ここでは.jpgファイルを送信してみます。
「Send raw file」を開きます。
適当に何か選択し送信するファイルを決定します。
ファイルの送信が開始されると下のようなウィンドウが開きます。
D-sub9ピンのシリアルポートです。
D-sub9ピンストレートケーブルとコネクターを用いてオシロスコープのプローブを繋ぎます。
繋ぐところは、3番(TxD)です。
GNDはGNDに繋ぎます。
オシロスコープで観測した信号が次の画像です。
本当はこういったデジタル信号の観測はロジックアナライザが適しています。
一通りファイルの送信が完了すると自動的に停止します。
何を繋いで使うかは工夫次第ですが、ショートによる破損には注意が必要です。
GTKTermでは、キーボードのF7、F8を使って
DTR(4ピン)、RTS(7ピン)のHI/LOWを切り替えることが出来ます。
GTKTermの画面右下にインジケータが表示されています。
このインジケータを見れば現在どのピンがHIになっているかLOWになっているか分かる仕組みです。
実際の電圧が何ボルトになっているかはテスターで実測します。
私のパソコンの場合はHIの時+10.5V前後、LOWの時-11V前後の電圧が出ています。
機種によって電圧が違う場合があるので、回路を作る前に自分で把握しておく必要があります。
RS-232Cの規格としては、±3V〜±15Vの範囲に入っていればいいことになっています。
下のような回路を作り、ファービーのモーターのON/OFFをパソコンのキーボードからおこなおうというものです。
FETのゲート電流はほとんど流れない性質を利用してスイッチングデバイスとして使いました。
シリアルポート自体は2〜3mA程度しか流せず、その点FETは好都合な部品です。
ゲートの耐圧も±20Vですので、LOWレベルの-11Vが印可されても大丈夫です。
100kΩは無接続時に誤作動しないように付けました。これは無くても動きます。
ショートさせるとシリアルポートの内部回路が壊れる可能性があるので注意が必要です。
まず、3番ピン(TxD)と2番ピン(RxD)を繋いでみます。
キーボードから何か入力すると、入力した内容がそのまま表示されます。
これは、送信したデータをそのまま受信して、受信した内容を表示しているからです。
3番ピン(TxD)と2番ピン(RxD)を接続すれば自分で送信したデータを自分で受信することも出来るのです。
次に7番ピン(RTS)と8番ピン(CTS)を繋ぎます。
7番ピン(RTS)からはHIレベル(+10.5V)が出力されているとします。
そこに8番ピン(CTS)を繋いだのでCTSのインジケータが点灯しました。
これは7番ピン(RTS)から出ている+10.5Vを8番ピン(CTS)に入力したということになります。
この状態でF8キーを押せばRTSがLOWレベルになるとともに、CTSも連動してインジケータが消灯します。
他の1番ピン(CD)、6番ピン(DSR)、9番ピン(RI)でも同じように動作します。
クロスケーブルを使って2台のパソコンを繋ぐとパソコン通信をすることが出来ます。
極めて原始的なパソコン通信です。
クロスケーブルもメーカー/品番によってまちまちなのですが、最低限この3本が繋がっていれば相互通信が出来ます。
(GTKTermを使ってチャットが出来る)
2台ともOSはDebianでGTKTermをインストールして起動しておきます。
通信設定はデフォルトのままです。
それでは送信してみます。
helloworld.cというテキストファイルを送信してみます。
受信側のGTKTermの画面に送信されたデータが表示されました。
通信は成功です。
受信したデータは名前をつけて保存出来ます。
保存したファイルがデスクトップに現れました。
2台のパソコン間で通信をしてファイルを送ることに成功しました。
なお、テキストファイルは問題なく送受信出来ますが
.jpg や .png などはデータ化けが起きてしまいます。
「a」(小文字のエー)の例
まず、下の信号波形を見てください。
自分で観測する場合はトリガモードで観測すると分かり易いです。
キーボードの「a」を押下すると一瞬だけ信号が表示されます。
(ボーレートは300ボーに設定して観測しやすくしています)
「a」(小文字のエー)というのは、2進数で表すと「01100001」です。
これは「asciiコード表」などで検索すると表が出てきます。(2進数を併記しているページを探してください)
本当はファーストMSB、正論理であれば人間から見て一番分かり易いのですが、
規格として制定されていますから慣れるしかありません。
各種設定は設定内容に名前をつけて設定ファイルとして保存出来ますが、
起動後にいちいち選択して変更しなければなりません。
起動したときのデフォルト設定を変更するには、
gtktermのドットファイルを変更します。
ドットファイルは、/home/○○○○(あなたのユーザ名)以下に置かれています。
ドットファイルは不可視属性ファイルですので、「表示(V)」→「隠しファイルを表示する(H)」をクリックして
ドットファイルを表示するようにします。
「.gtktermrc」というファイルがgtktermのドットファイルですので、
これをgeditなどで開いて編集します。
たとえば、デフォルトのシリアルポートをttyS0ではなくttyS1にしたい場合は、
[default]
port = /dev/ttyS0
と書かれている部分を、
port = /dev/ttyS1
と書き換えて保存すればOKです。(大文字小文字の区別注意)
そうすれば次の起動からはデフォルトのポートがttyS1になるという寸法です。
親側にsshをインストールし、子側にgtktermをインストールすると
子から親へシリアルポート経由でログイン出来るようになります。
gtkterm同士の接続の場合はファイルの転送程度しか出来ませんが
sshでログインする場合はコマンドを実行したりファイル操作したり出来ます。
ただし、あくまでもgtktermを通してCUIでの操作です。
まずsshをインストールします。
~$ su ;パスワードを入力して管理者権限になる
# aptitude install ssh
インストールしたら、/etc/inittab をgeditなどで開きます。
# gedit /etc/inittab ;※管理者権限で開く
63行目に、「T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100」という記述がありコメントアウトされているので
この#を外してアンコメントし、保存して閉じます。
その後PCを再起動し、RS-232Cクロスケーブルをシリアルポート(ttyS0)に接続します。
gtktermをインストールします。
~$ su ;パスワードを入力して管理者権限になる
# aptitude install gtkterm
インストールしたらRS-232Cクロスケーブルをシリアルポートに接続して
gtktermを起動しておきます。ボーレートはデフォルトで9600になっている筈ですが、
変更している場合はボーレートを9600にしておきます。
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
トップページへ戻る