« 2012年10月 | トップページ | 2012年12月 »

2012年11月26日 (月)

受信用TNCの製作(4)

 受信用TNCはAX.25の受信を目的としていますので、今回はAX.25について解説します。
 通信のプロトコル(手順)は、物理層、データリンク層、ネットワーク層、トランスポート層、セッション層、プレゼンテーション層、アプリケーション層の7つに分かれています。
 AX.25は物理層からネットワーク層までが規定されているのですが、今回は音声信号(パケット音)をデータに変換することが目的なので、データの0と1がどのような周波数を使用してどのような速度で送信されているのかという物理層と、送信されたデータの0と1の羅列がどのような意味を持つのかというデータリンク層の部分がわかれば足りることになります。
 これに関する参考書は、物理層についてはトランジスタ技術スペシャルNo.113「ワイヤレスデータ通信の基礎と応用」、データリンク層については「パケット通信ハンドブック」と「パケット無線ネットワーク」、その他“TNC-X: An Expandable Microcontroller-Based Terminal Node Controllerを中心としたインターネット上の各種情報です。
 特に“TNC-X: An Expandable Microcontroller-Based Terminal Node Controller”は実際に作成されたTNCで使用されているプログラムを基に説明されていることから、理解の中心となりました。
 以下に、受信用TNCでポイントとなる部分を説明します。
(1) Bell202規格【物理層】
 周波数変調の際の副搬送波に、1200Hzと2200Hzを使用するものです。それぞれの周波数がビットの0と1に対応するのではありません(これについては後のNRZIを参照)が、音声信号の1200Hzと2200Hzが区別(各周波数を検出)できればよいことになります。
(2) データ転送速度(1200bps)及び変調速度(1200baud)【物理層】
 データの転送速度は1200bps、すなわち1200分の1秒ごとに1ビットのデータが送信されることになります。変調速度も1200baud、つまり1ビットのデータ送信のために1200分の1秒ごとに(1)の周波数が切り替わることになります。
(3) NRZI【物理層】
 (1)で説明した副搬送波の2つの周波数に対して一方がビットの0や1に対応するのが、RZI符号化です。
 これに対して、Ax.25では、一方から他方へ変化する場合には「0」、変化しない場合は「1」を表すというNRZI符号化を使用しています。
 この2つの差は、RZIの場合、ある局が1200Hzを「0」2200Hzを「1」として送信している場合に、受信側が1200Hzを「1」2200Hzを「0」と解釈してしまうとビットデータが反転してしまうのに対して、NRZIでは副搬送波が変化すれば「0」直前と同じなら「1」と判定するため、周波数の高低の解釈の差でデータが反転してしまうことはありません。
これはSSBでの送受信のときに、LSBとUSBの違いがあってもNRZIの場合は復調可能という利点があります。
 RZIとNRZIのどちらも、周波数の変化点をビットの切れ目と捉えることで、データの同期をとることができます。
(4) スタートフラグ及びエンドフラグ【データリンク層】
 データの始まりあるいは終わりを示すために、「01111110」、16進数で表すと「0x7E」を使用します。
(5) ゼロ・インサーション【物理層】
 上記(3)のNRZIの場合、データに「1」が連続すると副搬送波が変化しないため、データの同期がとりにくくなります。
 また、上記(4)で説明したスタートフラグあるいはエンドフラグと、データの「1」が6つ連続した時の区別がつかなくなってしまいます。
 そこで、送信時にデータの「1」が5回連続した場合には、その次には必ず「0」を挿入し、受信側で「1」が5回連続したら続く「0」を削除するという方法がとられます。
 これにより、「1」が6回連続したらヘッダー又はフッターであることが検出できます。
 なお、余分なビット「0」が随時追加されるため、送信されるビット数は必ずしも8ビットの倍数にはなりません。余分な「0」を取り除けば、8ビットの倍数になります。
(6) アドレスフィールド【データリンク層】
 Ax.25はコンピュータのLANで使用されるHDLCという伝送制御方式と同様のデータ形式ですが、アドレス部に宛先局と送信局のコールサインを入れることができように、長くなっています。
 HDLCではアドレス部が1バイトしかありませんが、Ax.25ではコールサインが6バイト+SSIDに1バイトの計7バイトが最低宛先局と送信局の2つ分必要なため、14バイトとなっています。さらに、中継局の情報を入れると7バイトずつ増えることになります。
 このアドレスの長さは一定ではないため、コールサインをアスキーコードで表したもの(たとえば「J」は2進数で「01001010」になります)、これを左シフトして最下位が「0」の場合(先の「J」は「10010100」になります)は次の1バイトもアドレスを示し、最下位が「1」の場合(先の「J」は「10010101」になります)はアドレス部の最後を示すとしています。
 なお、アドレスは宛先局、送信局、中継局の順に送信されます。これに対してデコード結果は、送信局、宛先局、中継局の順に表示するのがパケットのデータ形式となっていますので、一工夫が必要です。
(7) 誤り検出【データリンク層】
 データの送受信には、有線無線を問わず、エラーがつきものです。
 このエラーを検出するために、Ax.25のデータの最後にチェック用のデータが追加されています。このチェック用のデータをFCS(フレームチェックシークエンス)といいます。
 これは、アドレス部を含む全データに対してある演算(CRC-16-CCITT)をした結果の2バイト(FCS)を送信時に末尾に加え、受信側でFCSを除く全データに対して同じ演算をした結果とFCSの値とを比較し、一致すれば誤りがないデータであると判断するものです。
以上説明した(1)から(7)の7つのポイントに対処すれば、目的が達成できることになります。
 次回からは、各項目をどのように解決したのかを説明します。
 なお実際の開発では、周波数計測以下の各項目を行きつ戻りつして改良を重ねたのですが、各項目では開発結果を機能ごとに説明します。

| | コメント (0) | トラックバック (0)

2012年11月25日 (日)

受信用TNCの製作(3)

CQ誌掲載の受信用TNCは、パソコンのRS-232C端子に接続してデータを取得することを目的として作成しました。
その後、多摩美術大学と東京大が共同で行っている「ARTSAT:衛星芸術プロジェクト」というものを知り、プロジェクトメンバーと交流する中で、このTNCをArduinoのシールドとして作成し、衛星芸術への利用を検討していくこととなりました。実際にシールドを作成し、さらに音声合成ICを組み合わせて、PRSIMのテレメトリデータから、衛星の太陽電池の発電電圧や表面温度を音声で表現することが可能となりました。次の写真の一番下がArduino互換機(秋月電子通商のATmega168/328マイコンボードキット)、その上が"Aques Talk pico"という音声合成ICを搭載した自作シールド、一番上が受信用TNCを基に作成したパケットシールドです。
Pb240429_3

このシステムを、来週12月1日(土)~2日(日)に、日本科学未来館で開催される"Maker Faire Tokyo 2012"で、「ARTSAT:衛星芸術プロジェクト」の展示の一部として紹介していただけることとなりました。展示場所は、1階D-01になります。
このArduinoのシールドについても、今後このブログで順次説明していく予定です。

Maker Faire Tokyo 2012

| | コメント (0) | トラックバック (0)

受信用TNCの製作(2)、XI-IV再び(85)

XI-IVの新規画像が完成しました。この画像取得にあたっては、既成品のTNC(TNC-22)と同時に、CQ誌12月号掲載の受信用TNC(モデムICなし)でもデータ取得し、性能比較してみました。今後もXI-IV画像の取得は同様の比較をしばらく続ける予定です。
掲載画像の撮影推定日時は、2012年11月10日15時32分36秒(日本時間)です。左がTNC-22による100%取得完了画像、右が受信用TNCによる画像で取得率は55.0%となっています。
Xiiv_121123_1800_rom4 Xiiv_121123_1801_rom4

| | コメント (0) | トラックバック (0)

2012年11月19日 (月)

受信用TNCの製作(1)

11月19日発売のCQ ham radio 12月号に、以前このブログで触れたワンチップマイコンによるTNCが、「受信用TNCの製作」として紹介記事が掲載されました。これから、このTNCの詳細について、再度説明していく予定です。質問等はブログのコメントに書込みをお願いします。

| | コメント (2) | トラックバック (0)

2012年11月11日 (日)

XI-IV再び(84)

XI-IV画像を2つ掲載します。左の画像の撮影推定日時は2012年10月8日16時32分34秒(日本時間)右の画像は2012年10月28日16時33分46秒です。
右の画像には太陽も写っています。
Xiiv_121103_1808_rom4 Xiiv_121111_1839_rom1

| | コメント (0) | トラックバック (0)

« 2012年10月 | トップページ | 2012年12月 »