2021年7月31日土曜日

Raspberry Pi のヘッドレスセットアップ

Raspberry PiのOSインストールと基本セットアップについて忘備録を兼ねて紹介します。OSをSDカードに入れる作業はWindowsパソコンを使いました。

1)ここのURLを開いて、OSイメージをダウンロードする。Raspberry Pi OS with Desktopでよいかと。

2)8GB以上の容量のマイクロSDカードを用意。USBアダプタなどを介してPCに接続。

3)SD Card Formatter を使って、SDカードを初期化。 クイックフォーマットでよいでしょう。SDカードにパーティションが切ってあったりすると、面倒なので、完全初期化してしまいます。


4)balenaEtcherでSDカードにOSを書き込む。Flash from Fileをクリックし、先程ダウンロードしたRaspberry Pi OS with DesktopのZipファイルを指定する。

Select targetでSDカードのドライブ文字を指定する。

わたしの環境ではGドライブでした。

Flashを押し、インストール開始。

しばらくかかります。

Flash Complete!と出たらOKです。このあと、ファイルを2個追加するので、そのままで。

ちなみにbalenaEtcherは、ユーザーの使用状況を収集するので、それが嫌な場合は、画面右上の設定ボタンをクリック。


2箇所オフにしておきます。

ここをオフにしても、balenaEtcher起動時に、なにかサーバーへ接続するので、わたしは、WindowsのFirewallでbalenaEtcherのネットアクセスを全部ブロックしています。ブロックしても動作には問題ないようです。

5)WiFiからコンソールに入れるように、2個のファイルを用意します。ssh と wpa_supplicant.conf です。sshは中身が空でOK。wpa_supplicant.confはWiFiのアクセスポイントの設定ファイルになります。

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP
network={
    ssid=SSID_OF_ACCESS_POINT
    psk=SECRET_PASSWORD
}

SSID_OF_ACCESS_POINTとSECRET_PASSWORDはご自分のアクセスポイントに合わせて書き換えてください。 これら ssh と wpa_supplicant.conf の2つのファイルを作ったSDカードの一番上、ルートフォルダにコピーします。

6)SDカードを「取り出し」して、Raspberry Piへ装着します。

7)電源オン。しばらくすると、WiFiにつながるはずです。2分くらい、待つ。

8)PCでTeratermなどのターミナルソフトを開き、Raspberry PiのコンソールへTCP接続します。 


初期値のログインIDは pi、パスワードはraspberry です。別のパスワードに変更しておいたほうが安心かもしれません。

2021年7月26日月曜日

ステッピングモータをPCから制御する

 


 

ステッピングモータを制御するためステッピングモータコントローラL6470を使っています。なかなか高機能なコントローラで、以下の特徴を持ちます。

  • 1相をフルステップ、1/4、1/8、1/16、1/32、1/64、1/128ステップ(マイクロステップ)に細分可能
  • マイコンのSPIインタフェイスで2相バイポーラステッピングモータの正・逆転、加・減速、ブレーキ、速度制御、位置制御が可能

パソコン上でプログラムを組み、そのプログラムからUSBを通してステッピングモータを回してみたかったので、贅沢にもArduinoをUSBシリアル<ーー>SPIコンバータとして使ってみました。 Arduino内のプログラムはこんな感じです。

#include <SPI.h>

#define SPI_MOSI  11
#define SPI_MISO  12
#define SPI_SCK   13
#define SPI_SS    10

#define LED_PIN1  3
#define LED_PIN2  2

#define CLOCKOUT  9

void setup() {  
  Serial.begin(9600);
  pinMode( SPI_MOSI, OUTPUT );
  pinMode( SPI_MISO, INPUT );
  pinMode( SPI_SCK, OUTPUT );
  pinMode( SPI_SS, OUTPUT );
  digitalWrite( SPI_SS, HIGH );
  SPI.begin();
  SPI.setDataMode( SPI_MODE3 );
  SPI.setBitOrder( MSBFIRST );
  pinMode( CLOCKOUT, OUTPUT );
  TCCR1A = bit( COM1A0);
  TCCR1B = bit( WGM12 ) | bit( CS11 ) | bit( CS10 );
  OCR1A = 0xFFFF;  //7 = 1MHz, 15 = 0.5MHz
  pinMode( LED_PIN1, OUTPUT );
  pinMode( LED_PIN2, OUTPUT );
  onLed();
  delay(100);
  offLed();
  delay(500);
  onLed();
  delay(100);
  offLed();
}

void loop() {
  unsigned char c;
  unsigned char rc;
  if( Serial.available() ){
    onLed();
    c = Serial.read();
    digitalWrite( PIN_SPI_SS, LOW );
    rc = SPI.transfer( c );
    digitalWrite( PIN_SPI_SS, HIGH );
    Serial.write( rc );
    offLed();
  }
}
 
void onLed(){
  digitalWrite( LED_PIN1, HIGH );
  digitalWrite( LED_PIN2, LOW );  
}

void offLed(){
  digitalWrite( LED_PIN1, LOW );
  digitalWrite( LED_PIN2, HIGH );  
}

 

SPI制御は基本的にこれだけでできるので、便利ですね。

  SPI.begin();
  SPI.setDataMode( SPI_MODE3 );
  SPI.setBitOrder( MSBFIRST );
  SPI.transfer( c );



2021年7月24日土曜日

TM-D710を1台で1200bpsと9600bpsのAPRS I-Gateを同時に動かす

TM-D710はとても多機能なトランシーバーで、日頃からAPRSを楽しんでいらっしゃる方なら1台は持っているのではないでしょうか。特に、1200bpsと9600bpsのモデムを内蔵しているので、使い勝手がとてもよいです。

日本で、APRSの標準運用周波数は、1200bpsが144.66MHz、9600bpsが144.64MHzになっています。今回のBlogでは、TM-D710を1台で両方のAPRS I-Gateを同時に動かす方法を紹介します。

基本構成として、左のAバンドが144.64MHzで9600bpsを、右のBバンドが144.660MHzで1200bpsを担当します。


まず、通常の手順でAバンドを使い9600bpsのI-Gateを構成します。詳しい設定手順は、TM-D710の取扱説明書や、解説書(1)(2)などを参考にしてください。

続いてBバンドで1200bpsのI-Gateを構成します。TM-D710の内蔵モデムは9600bpsで使っていますので、外付けモデムを使います。わたしは、Argent Data SystemsのTracker3を使いました。BバンドはAPRSのI-Gateというよりも、EchoLinkなどのVOIPアクセスポイントを構成するような形とし、TM-D710本体裏面のDATA端子からオーディオとしてAPRS信号を送受信することになります。

Tracker3 などのAPRSインターフェイスを使わなくても、EchoLinkのインターフェイスを流用し、AGWPEなどのソフトウェアモデムを使ってもできるかもしれません。わたしは、試したことがありませんが、Tracker3のような外付けAPRS専用モデムを使わなくてもよいので、面白いかもしれません。

 


パソコンでは、I-GateアプリとしてUIView32を2つ同時に走らせていますが、別のアプリでもできると思います。シリアルポートを別々に設定すれば、同時に二つのUIView32インスタンスを走らせても問題ありません。

TM-D710は2波同時受信が可能ですので、144.66MHzで1200bpsのAPRS信号、144.64MHzで9600bpsのAPRS信号を同時に受信し、それぞれ対応しているUIView32を通してAPRS-ISシステムへフィードすることが出来ます。

一方、2波同時送信は出来ません。1200bpsと9600bps両方から同時にパケット送信の要求がTM-D710へ入ったらどうなるか、大丈夫、TM-D710がきちんとアービトレーション(仲裁)してくれます。見た感じ、1200bps送信中に9600bps送信要求がCOMポートから来た場合は、9600bps送信は一旦バッファリングして、1200bps送信後に送信してくれているようです。逆に、9600bps送信中に1200bps送信要求がDATAポートから入ってきた場合は、バッファリングせずに、そのまま捨てているように見えます。違うかもしれません。それでも、パケットがとぎれとぎれになることはありません。

TM-D710、よく出来ていますね。すばらしい無線機です。

2021年7月23日金曜日

EchoLinkとWires-Xを1台のPCで動かす

 2021年7月現在、EchoLinkノード(JA7UDE-L)とWires-Xノード(JA7UDE-ND)を動かしています。1台のPCで両方同時に動かしているのですが、その構成を知りたいというご質問がありましたので、ご紹介します。特に難しいことはやっておらず、普通にEchoLinkとWires-Xのアプリを同時に動かしています。周波数はEchoLinkが144MHz、Wires-Xが430MHzです。無線機はEchoLinkがFT-7800、Wires-XがFTM-400です。インターフェイスはEchoLinkがSCU-17、Wires-XはHRI-200です。どちらもPCとは一般のUSBケーブルで接続しています。アンテナも144/430のデュアルバンダーGP1本で、間にDuplexerを入れています。図にすると下のようになっています。


EchoLinkとWires-Xの運用は完全に独立しており、間にブリッジはありません。お互いかぶりはありませんし、両方の無線機が同時に送信になっても特に問題は発生していません。

2021年7月17日土曜日

SCU-17を使ったEchoLinkノードインターフェイス

 EchoLinkノードであるJA7UDE-Lですが、2, 3年前までは、自作のインターフェイスを使っていました。EchoLinkを始めた最初の最初から使っていたので、10年くらい使っていたでしょうか。コネクタの接触がおかしくなり、見栄えもよくないので、市販のインターフェイスで使えるものがないかと探していたところ八重洲無線のSCU-17が使えそうだということで購入し、実際に今日まで使っています。2年以上全く問題なく使えていますので、ここに紹介したいと思います。SCU-17をEchoLinkノードのインターフェイスとして使ったときの利点は以下のとおりです。

  1. ちゃんとしたメーカー品なので、コンパクト、堅牢、ノイズや高周波が回り込みにくい。
  2. サウンドデバイスがSCU-17に内蔵されているので、SCU-17とPC間はUSBケーブル1本をつなぐだけの簡単セットアップ。SCU-17と無線機は、無線機にDATAポートがあれば、DATAケーブル1本でつなげばOK。
  3. 電源はPCからUSBケーブル経由で供給されるので、別電源 不要。
  4. 受信音声レベル、送信音声レベルがSCU-17前面についているボリュームで簡単に調節できる。
  5. スケルチコントロールができる(簡単な改造が必要、後述)。

欠点は、あまりないのですが、価格が2万円弱することでしょうか。

Echolinkノードを運用している方はよくご存知でしょうが、スケルチコントロール(COS)とは、無線機が電波を受信し、スケルチが開いたとき、開いたよという信号を使って受信音声をEchoLinkアプリからインターネットへ送出開始するものです。これがないと、VOXを使うことになり、電波が来ていても音声が途切れると、インターネットへの送出が断続してしまいます。Echolinkノードでは、混信を避けるためトーンスケルチを使うことが多いので、スケルチコントロールが使えると、とても便利です。注:ただし、無線機によっては、トーンスケルチを使った場合に、受信電波にトーンが入っていなくてスケルチが開かないようなときも、Squelch Control信号が出てきてしまうものもあるようです。当局はFT-7800を使っていますが、問題なく動作しています。

上の図のスケルチコントロール信号をシリアルポートのCD信号へつなぐことで、 これを実現するのですが、SCU-17そのままでは、無線機からきたスケルチコントロール信号がCD信号へつながっていません。そこで、SCU-17を改造します。

SCU-17のバージョンによってはジャンパの位置が違う、あるいは、ジャンパが無いなどの違いがあり、改造ができないかもしれません。また、改造は自己責任でお願いします。壊れてもわたしは責任を負いません。

SCU-17の上蓋を開けて、下の写真に示すJP1003をハンダブリッジします。

また、直接は関係ありませんが、PTTはRTS信号で行うようDIPスイッチを設定しておくとよいでしょう。

Echolinkアプリの設定ですが、Sysop SetupのRx Ctrlタブで、Carrier DetectをCDにします。

 

PTT ActivationはRTSにしておきます。


 以上でEcholinkノードインターフェイスとしてSCU-17が働きます。

2021年7月16日金曜日

日本アマチュア無線機名鑑

CQ出版から出ている「日本アマチュア無線機名鑑」を読んでいます。なつかしい無線機の写真がたくさん載っていて、ざっと見るだけでも楽しいです。自分の知らない無線機も数多く載っていて驚いています。定価は3,300円、自分で買うのはちょっと高いので、図書館から借りています。CQ出版さん、すみません。


 

2021年7月15日木曜日

GridTracker

 JA7DNO島OMのブログで紹介されていたGridTrackerを試してみました。自分がWSJT-Xで受信した信号を元にどことどこが交信しているか、どこでCQが出ているかをリアルタイムで表示してくれます。交信している局間に2点鎖線のような、あるいはモールス信号のRのような線が張られ、しかも送信方向に流れるという芸の細かいところがFBです(双方向の信号が確認できると、両方向に流れる)。当局の7MHzのアンテナは短縮ロータリーダイポールなので、そもそもDX局はあまり聞こえませんが、見ていて楽しいです。

 



2021年7月14日水曜日

WSJT-Xユーザーインターフェイスの日本語化

WSJT-Xのバージョン2.2.0から日本語PC環境下ではユーザーインターフェイスが自動的に日本語で表示されるようになりました。

実は、WSJT-XではQtという開発環境を使っており、Qt Linguistというツールを使えば誰にでも日本語化(もちろん別の言語にも)できます。また日本語の修正もできます。今回は、WSJT-Xを自分で日本語化する(あるいは修正する)手順を紹介します。Qt自体はいろいろなプラットフォームで動作するのですが、手元の環境がWindowsですので、以下の画面のスナップショット等はWindows上のものとなります。また、WSJT-X自体のバージョンとユーザーインターフェイスの単語情報であるTranslation Sourceのバージョンが異なると、ごく一部表示がうまくできなくなることがあります。それでも、殆どの場合問題ありません。

Qt LinguistというツールをGitHubからダウンロードします。今回はStandaloneバージョンを使うことにします。

Zipファイルをダウンロードし、適当な場所に解凍します。するとQtLinguistというフォルダができると思います。その下のbinフォルダーの中にlinguist.exeという実行ファイルがあり、それを実行すると下に示すような画面が出ます。

次に、WSJT-Xユーザーインターフェイスの元英語ファイル(Translation Source)である wsjtx_en.tsをダウンロードします(zipされているので解凍してください)。

QtLinguistから開きます。


 なんか聞いてきますが、そのままOKで進みます。

 

このような初期画面が表示されます。


 左側のコンテキストを見ると、さまざまなカテゴリーに分かれて単語が登録されていることがわかります。項目数というのが元の英語の項目数、そして翻訳した項目数を示しています。

 では、試しにひとつ翻訳してみましょう。おなじみのWSJTーXのメイン画面のBand Activityを日本語にしてみます。

 コンテキストでMainWindowをマウスで選択。続いて文字列ウィンドウのBand Activityをクリックします。

 

そして、Translation to American English という箱に日本語を入力します。ここではそのまま「バンドアクティビティ」としてみます。

入力後、上部のチェックボタンを押します。すると、Band Activityの左側についていたクエスチョンマークがチェックマークに変わります。

 

最後にファイルメニューからリリースを選ぶと、wsjtx_en.ts と同じフォルダーにwsjtx_en.qmというファイルが出来ます。

では、WSJT-Xを起動して「Band Activity」が「バンドアクティビティ」に置き換わっているかどうか確かめてみましょう。デスクトップにWSJT-Xのショートカットがある場合で説明します。

 

WSJT-Xのショートカットを右クリックしてプロパティを選びます。

リンク先に--language=en オプションがついていないときはつけます。さらに、作業フォルダーが C:\wsjtx になっていることを確認してください。

WSJT-Xを別のフォルダへインストールしている場合はリンク先と作業フォルダの設定が違っていると思います。その場合は、リンク先には、そのまま--language=enをつけ、さらに自分の作業フォルダーを覚えておきます。 

一度WSJT-Xを起動して、英語モードで立ち上がることを確認します。確認できたら一旦終了します。そして、次に、先程作ったwsjtx_en.qmを上で確認した作業フォルダーへコピーします。コピー場所が違うとうまくいきませんので注意してください。

再びWSJT-Xを立ち上げると、「Band Activity」が「バンドアクティビティ」になっていると思います。

ユーザーインターフェイスの日本語化は以上になります。実際は、wsjtx_en.tsからwsjtx_ja.tsを作り、そのファイルで作業するのですが、そうすると、日本語PC環境でWSJT-Xを起動すると、すでに日本語のユーザーインターフェイスになってしまっていて、変化がわかりにくいので、 ここでは、あえて英語モードを使って説明しました。

 

2021年7月10日土曜日

Echolinkをバージョン2.3.121に更新

2021年7月1日にEcholinkの新しいバージョン2.3.121が出ました。本日JA7UDE-LノードのEcholinkを更新しました。

変更点は以下のとおりだそうです。

  • DMKエンジニアリングのUSB Radio Interfaceのサポートを追加。 
  • 2次オーディオデバイスを使う機能を追加。この機能を使うとSysopモードでローカルリンクをモニタするとき便利。またSysopモードで、PCローカルのマイクとスピーカーからQSOに参加することが可能。
  • 確認信号機能を追加。ローカルのRFユーザが最後の送信がEcholinkに傍受され、相手方に送出されたことがわかる。追記:実際に使ってみたところノードアクセス送信が終了した直後、CWでRを返してくる。
  • Webリモート制御の強化。 Call CQをリモートからオンにできるよう変更。
  • 音声ID、ようこそメッセージ、オーディオ再生に使うWavファイルフォーマットを拡大。モノラル、ステレオ、8, 16, 24, 32ビット、各種サンプリングレートが使用可能。従来は8000Hzモノラルのみサポートしていた。
  • Sysopモードでボリューム設定を自動的に記憶する機能を追加。
  • 最初のオーディオ設定とリンクの設定ウィザードを追加。
  • Explorer表示形式のお気に入り表示がうまく更新されないバグを修正。 
  • インストーラで、デスクトップのショートカットがEcholink本体にうまくリンクされない問題を修正。
  • SysopモードにおいてSubaudibleトーンオプションを使ったとき、クラッシュすることがある問題を修正。
  • Windows11 互換性を確認。 
 

2021年7月7日水曜日

WSJT-X 2.5.0-rc3リリース

 WSJT-X 2.5.0-rc3がリリースされました。リリースノートの和訳を公開します。

WSJT-X 2.5.0-rc3 2021年7月5日

WSJT-X 2.5.0パッケージはMAP65 3.0.0を含みます。WSJT-X 2.5.0-rc2からの変更点は以下に示すとおりです。

MAP65:

  • デコーダを停止させる2つのバグを修正
  • Q65デコードでDFの絶対値が500Hz以下になるよう周波数表示を変換
  • ヘルプメニューにリリースノートへのリンクを追加
  • livecqへのQ65メッセージ形式を修正
  • Xpol偏波計算停止バグを修正
  • コンソール表示無しでMAP65を起動するよう変更
WSJT-X:

  • 他のメッセージが送出されない場合、UDPプロトコルのハートビートメッセージが送出されないバグを修正

同軸ケーブルを使ったトラップフィルタのシミュレーション、その3

 前回作った28MHzのトラップフィルタモデルに別の周波数のソースを追加して動作を見てみます。追加するソースの周波数は14MHzとします。

Drawメニュー、Inputs and SourcesからAdd AC Voltage Source (1 terminal)をクリックしてソースを追加します。


続いてDrawメニューのAdd Resistorで抵抗を追加します。


配線し、ソースの周波数と抵抗値を変更します。

14MHzと28MHzのソースが並列に接続されますので、ソースに入れる抵抗は100Ωに変更して合成抵抗値50Ωとします。

RUNして動作を見てみると、トラップ左側の給電ラインは濃淡が細かく(水色で囲った部分)、右側は濃淡が広がっている(赤色で囲った部分)ことがわかります。

28MHzだけ阻止されて、14MHzは終端まで届いているようです。少しわかりにくいので、波形を表示してみます。観測したい場所を右クリックし、「View in New Scope」を選びます。


すると、画面下に波形がプロットされます。

横に間延びして見にくいときは、プロットを右クリックし、Propertiesを選びます。

Horizontal Scaleのスライダを左右に動かして横軸のスケールを調節します。スライダーを動かすとリアルタイムで表示に反映されるのがいいですね。

14MHzと28MHzが重なっていることがわかります。

一方、右端の終端抵抗ではどうでしょう。同じように50Ωの終端抵抗の下側をスコープしてみます。


14MHzの波形だけが見えていて、28MHz信号はトラップされていることがわかります。

ここまでのソースコードは以下になります。

ここから
$ 1 1e-12 100.89512123094175 50 5 50 5e-11
171 176 192 336 192 0 1.0000000000000001e-7 50 80 0
w 128 272 176 272 0
w 496 192 544 192 0
w 496 272 544 272 0
r 128 192 176 192 0 100
g 544 272 544 288 0 0
g 128 272 128 288 0 0
R 128 192 96 192 0 1 28000000 5 0 0 0.5
r 544 192 544 272 0 50
171 336 192 496 192 0 1.0000000000000001e-7 50 80 0
g 336 272 336 288 0 0
171 336 80 416 80 0 8.9286e-9 50 80 0
w 336 160 304 160 0
w 304 160 304 272 0
w 304 272 336 272 0
w 336 80 272 80 0
w 272 80 272 192 0
w 272 192 336 192 0
g 416 160 416 176 0 0
R 128 128 96 128 0 1 14000000 5 0 0 0.5
r 128 128 176 128 0 100
w 176 128 176 192 0
o 1 512 0 4099 0.0000762939453125 0.05 0 2 1 3
o 3 512 0 4099 0.0000762939453125 0.025 1 2 3 3
ここまで

2021年7月6日火曜日

同軸ケーブルを使ったトラップフィルタのシミュレーション、その2

 前回作った伝送線路モデルに同軸ケーブルトラップをつなげて動作を見てみます。

 

 給電ラインを2分割しそこにトラップをつなげる準備をします。給電ラインの右上ポイントをコントロールキーを押しながらマウスでクリックし、半分くらいに縮めます。

 

 給電ラインを選択し、Cntl-C、Cntl-Vでコピペします。

 

出来たもうひとつの給電ラインを直列につなぎます。つなぐといっても端点をきれいに重ねて置けばOKです。


メニューのDrawからグランドを選択し、真ん中の給電ライン下側に追加接続します。 

一度、RUNして、問題なく動作するか確認します。

では、トラップを追加してみます。給電ラインをコピーして少し短くします(Cntlキーを押しながらマウスドラッグすると対象の大きさや向きを変えられます)。

このトラップの長さは28MHzの4分の1波長にしたいのですが、シミュレーターでは長さではなく遅延でセットしますので、1÷28,000,000÷4=8.9286nと計算し、その値をトラップに入力します。

DrawのAdd Wireで配線します。


トラップの後ろにグランドを追加して出来ました。

RUNしてみましょう。どうでしょうか、トラップを接続したところから右へは電気が流れていかなくなることがわかると思います。


リセット直後からよく観察していると、最初の1周期だけは、トラップが励起されていないので、右に抜けているのがわかります。芸が細かいです。

作ったシミュレーションモデルのソースコード を貼っておきます。

ここから
$ 1 1e-12 100.89512123094175 50 5 50 5e-11
171 176 192 336 192 0 1.0000000000000001e-7 50 80 0
w 128 272 176 272 0
w 496 192 544 192 0
w 496 272 544 272 0
r 128 192 176 192 0 50
g 544 272 544 288 0 0
g 128 272 128 288 0 0
R 128 192 96 192 0 1 28000000 5 0 0 0.5
r 544 192 544 272 0 50
171 336 192 496 192 0 1.0000000000000001e-7 50 80 0
g 336 272 336 288 0 0
171 336 80 416 80 0 8.9286e-9 50 80 0
w 336 160 304 160 0
w 304 160 304 272 0
w 304 272 336 272 0
w 336 80 272 80 0
w 272 80 272 192 0
w 272 192 336 192 0
g 416 160 416 176 0 0

ここまで

28MHzの信号はトラップできました。では、ここに他の周波数が加わるとどうなるでしょうか。次回へ続く。


WSJT-X 2.7.0-rc3 公開

 WSJT-X 2.7.0-rc3 リリースノート 2024年1月1日 WSJT-X 2.7.0-rc3では、いくつかの新しい機能、たくさんの強化改善、バグの修正を行いました。 「Hamlib更新」機能追加。Windows版では、WSJT-Xから直接Hamlibを更新することがで...