./configure --prefix=/usr/local/vim7 --enable-multibyte --enable-gpm --enable-cscope --with-features=huge --enable-fontset --disable-gui --without-x --disable-xim --disable-perlinterp

久しぶりにビルド

まだ2局ほど 599BK 形式でやっている局を呼んだだけで、それ以上のことはできてない。近畿あたりの局を呼んでみたりしたけど、パイルアップになっていないにも関わらずとってもらえなくて、聞こえるけど届かない経験をした。

いまいちバンド内の慣習 (空気を読む必要があるんだけど) がわからない。あと短縮アンテナなので全然飛んでない感じもする。

週末は ALL Asia コンテストの電話部門が行われていたらしく 21MHz が賑わっていたけど聞いただけ。ロシア?、アメリカあたりのごくごく強い局しか聞こえなかった。

CQ 出して 599BK だけをひたすらやれる限りやってみたいけど、キーイングが遅すぎると敬遠される感じがする。

90%以上ほぼ聞きとれるのが 15wpm なので、基本それで出しているんだけど、15wpm は聞いてる限りではかなり遅い感じ。18wpm 余裕でとれる程度まで上げないとスムーズにいかない感じがする。

訓練自体は 20wpm でやっていて 80% 程度はだいたいとれるけど、それは本当に符号を聞きとる以外の全てのことを頭の外に追い出してやっていて、実践では半分もとれない感じ。聞きとること以外のことを考えながらだと、かなりつらい。

  1. トップ
  2. アマチュア無線
  3. 無線

YAESU の無線機のエレキーはどうやらちょっと一般的なものと挙動が違うっぽい。なんか打ちにくいなと思ってエレキーキットを買ってやってみたけど、やっぱり違う。

実際打ってみた実感としてこんな感じかな、というので正確ではないかもしれないけど、入力は - が長点キー、. が短点で、実際のキー出力 # がオン、_ がオフだとすると、

# YAESU
 in:  --------
 out: ###_###_###_
 (符号後のスペースのタイミングでキーが押しっぱなしだと、キーがメモリーされてしまう)

# 一般的なエレキー
 in:  --------
 out: ###_###_
 (スペースのタイミングでキーを離すと符号が途切れる)

 in:  ---------
 out: ###_###_###_
 (符号が出てから離さないと出力がない)

同じように、同じ入力でも出力が変わる

# YAESU
 in :  -. -.
 out:  ###_#_###_#
 (最初の長点が終わった瞬間、メモリーされた短点が呼びされるので、その瞬間次のキーの予約ができる。つまり実際に点が出る前に予約可能になる)

# 一般的なエレキー
 in :  -. -.
 out:  ###_###_#
 (YAESU と同じように入力すると、メモリーが上書きされるので短点入力が無視される)

 in :  -.  -.
 out:  ###_#_###_#
 (短点をちゃんと聞いてから打つ必要がある)

この挙動の違い、些細に思えるかもしれないけど、実際やってみるとなかなかやっかいで、YAESU 式のエレキーだと、かなり早めにキーを離すイメージをしないと余計な点が出やすい。特に短点の場合、短点は100msecもないので、脳で聞いてから離すと指が追いつかない。頑張って前の符号が終わった瞬間に離さないといけない。

一般的なエレキーのほうは点が出終わってからキーを離してもいいので、慣れやすいように思う。一方あせって早く打ちすぎると符号が消える。

長点短点1点メモリー、スクイズと、外に出る機能ではわからないんことがある。

これ、いずれか一方に慣れると、もう一方ができなくなるのでつらい。しばらく YAESU 式のほうで訓練してようやく慣れてきたけど、一般的なほうに直すかどうか悩んでる。リグ内蔵のキーヤーを使えるほうが面倒くさくないけど、結構普通のほうがいい……

メリットデメリットを考えると

YAESU 式

  • メリット: C, Q など、メモリーを活用するとき正確に符号を出しやすい
  • デメリット: E I S H が出しにくい

一般的なタイプ

  • メリット: 聞いてから離せばいいので落ちついて打てる
  • デメリット: C, Q などを打つとき特に落ちついて打つ必要がある
  1. トップ
  2. アマチュア無線
  3. YAESU の無線機のエレキーの挙動

モールスの学習はヘタな入門本を買うよりもThe Art and Skill of Radio-Telegraphy (PDF 和訳: 無線電信の巧みと技)を読むべきだと思った。2版が和訳されて公開されていて簡単に読むことができる。すごく気を使って書かれていて、何度読んでもおもしろい。モールスに限らず、技能修練に関する習慣付けについて発見があって素敵だと思う。

この本は初版1992年 (21年前!)、非商用に限り再配布自由、というようなライセンスになっている。著者は残念ながら2003年に亡くなってしまっていて電信を覚えてこの人と交信しようというのは叶わない。

  1. トップ
  2. アマチュア無線
  3. モールスの入門本
  1. トップ
  2. モールス
  3. モールスの入門本

  1. 8月17日 (日) に電子申請
  2. (11日ほど進捗なし、一度フォームから問合せた)
  3. 8月28日 (水) ステータスが審査中に
  4. 8月29日 (木) 手数料払込の案内、即日払込み。前もって書いておいたSASEをポストに入れる
  5. 8月30日 (金) 審査終了
  6. 9月4日 (水) 免許到着

電子申請だしもっと早く終わるのかと思ったけど、思いのほかかかった。もっと時間がかかる人もいるらしい。技適オンリーの申請だし審査するところなんてなさそうだし自動化されていそうなもんなんだけど、たぶん僕が知らない何かがあるのだろう。

コールサインは復活させず、再割り当ての J* コールをもらった。JH1UMV だった。

インターフェア対策

電波が出せるようになったので、アンテナを含めた出力のテストができるようになった。ハムフェアで買ったRF 電流計を使っていろいろ見つつ、コモンモードフィルタ (KIT-DCF-RF-29L3) の接続方法というか、ケーブルの引き回しを調整した。

あとAC電源にも同じ大進無線の DCK-3 というフィルタを入れてある。

パッチンコアもいくらか用意してあるけど、リグから出ている線がそもそもそれぐらいしかなく、現状では実際のインターフェアは観測されていないのでどこにも入れていない。

アンテナ

アンテナはアンテナアナライザー (RigExpert AA-54) を買って調整してあるので、だいたいはあってる。このアナライザー、とても便利なのだけれど、PCを接続すると (というより正確には USB ケーブルを繋げると) 値がおかしくなって、それを信用して調整すると死ぬ。たぶんちゃんとアースとらないとだめなのかな。繋げないで測ることにした。

しかし雨が降ってアンテナの共振点がかなり下がっていて、運用バンドからはずれてしまっていたのでどうにもならない感じだった。もうちょっと雨でも使えるような調整をしたほうがいいかもしれない。

  1. トップ
  2. アマチュア無線
  3. 免許がきた

var randomUrl = String_random(/http:\/\/[a-z]{3,8}\.example\.com\/([a-z]+\/){3}/);
console.log(randomUrl); //=> "http://nsgd.example.com/epij/tmvlh/bkjmsyahwhj/"

正規表現からそれにマッチするようなランダム文字列を生成する String_random.js というのを書きました。

Perl の String::Random みたいなのが JS でも欲しいなあと時々思うことがあったので作りました。括弧によるグルーピング・パイプによる選択も実装してあるのでそれなりに楽しい感じです。

String_random という名前は、String.random = String_random; できる感じのイメージですが、そのまま String に突っ込むと怒る人がいそうなのでこのような感じです。

ランダム文字列生成の活用方法を書きました。

  1. トップ
  2. tech
  3. 正規表現からそれにマッチするランダム文字列を生成する String_random.js

最近とにかく元気がでなくて、特に仕事のやる気が全くまっさらで出てこなくて、前やってたタスク (自分の手からはずしてもらった) の影響を未だひっぱっている感じがする。

モールスの学習は、一つの現実逃避であると同時に、やればできるようになるという気持ちを取り戻したいという思いがある。現に、ちゃんとモチベーションがありさえすれば、僕のようなクズ人間でも、ちゃんと1ヶ月続けられているし、結果的に (記録をつけていないとわかりにくいんだけど) 着実に進歩している。

また、異分野の学習をすると、何かしらプログラミングで解決したい問題が発生するので、ちょうどいい問題をプログラミングで解いて楽しい思いをすることができる。

いくつか気付くことがあって、やはり以下の点が自分のモチベーション維持にとって重要だと思った

  • 誰かに強制されない
  • 誰かにバカにされない
  • やる価値を信じられる

基本、独りでいさえすれば、誰にもバカにされることなく、自分の考え自分が信じられることをやり続けられる。そこに誰か意味不明なことを言うクソ人間が介入することで、重要なタイミングで余計な口出しをされ、何もかもが台無しになる。社会生活上、それらを避けることができない以上、一生やる気が回復しない。

20wpm/10wpm でレッスン40まで行ったあと、20wpm/11wpm から 20wpm/18wpm まで徐々にあげてみてる。調子がいいときと悪いときとで全然正確さが違う (70%〜90%) ので、いかんともしがたい。いまいち、ちゃんと成長しているという実感がない。

実際の交信も聞くだけ聞いて、とにかくコールサインだけでもとろうとやっているけど、まず一発ではとれない。ないしは複数回聞いてもエリアまでしかわからないことも多い。ただ、送信側が気をつかってコールサインのときだけ文字スペースを長めにしてる場合があって、これだと1発でとれたりする。しかしコールサインがとれても本文が殆どとれない。599 5nn とか、交信終了時の E E は特徴があるのでわかるけど、BK あるいは K、もうっかりしてると聞きのがす始末。

実際、プレーンテキストを 15wpm/15wpm で聞いてみると、60〜80% 程度しかとれない。プレーンテキストの場合、E S T I など短い符号が頻発するので、難易度が増すように思う。とにかく聞き慣れるしかなさそうだけど、結構萎える。

  1. トップ
  2. アマチュア無線
  3. モールス学習 進捗
  1. トップ
  2. モールス
  3. モールス学習 進捗

いろいろ接続方法はあるけど、汎用・簡単なのは iBUFFALO USBシリアルケーブル (BSUSRC0610BS) とメスメス変換コネクタを使って無線機のCAT端子とコンピュータを接続する方法っぽい。ストレートに普通に接続すればいい。コネクタ一緒に買っても2000円ぐらい。

BUFFALO USBシリアルケーブル(USBtypeA to D-sub9ピン)1.0m ブラックスケルトン BSUSRC0610BS - バッファロー

バッファロー

3.0 / 5.0

BSUSRC0610BS は FTDI チップを使っている。Mac はバッファロー公式にはサポートされてはいないけど、FTDI のサイトで Mac 用のドライバも提供されていて、普通に使える。

ドライバをインストールした上で、接続すると、/dev/tty.usbserial-FTB3L9UG とかデバイスファイルができる。

Ruby で呼び出してみる。

Ruby でシリアルポート (RS-232C) を扱う場合、gem install serialport を使うと簡単なようだ。以下のようなコードでなんとなく操作できる。

プロトコルのマニュアルは八重洲のページからダウンロードできる。特に pack/unpack をする必要もないし、ASCII データのやりとりだけなので、プロトコル自体は難しくなく、そのまま読むことができる。

この例では、

  • VFO-A に切替え
  • AI をオン (こちらから要求しなくてもリグの状態が変化すると通知される)
  • VFO-A の周波数を設定
  • 上方向にスキャン開始
    • AI で送られてくる FA (周波数変化情報) が指定した周波数以上になるまで待つ
  • スキャンを停止
  • AI をオフ

ということをしている。

class CAT
	BAUDRATE    = 4800
	DATABIT     = 8
	STOPBIT     = 2
	PATITYCHECK = SerialPort::NONE

	Message = Struct.new(:cmd, :params)

	def initialize(args)
		@port = SerialPort.new(
			args[:port],
			BAUDRATE,
			DATABIT,
			STOPBIT,
			PATITYCHECK
		)

		@read_queue  = Queue.new
		@read_thread = Thread.start do
			while message = @port.gets(";")
				_, cmd, params = *message.match(/^(..)(.+);/)
				@read_queue.push(Message.new(cmd, params))
			end
		end
	end

	def command(cmd, param="")
		@port.write "#{cmd}#{param};"
		sleep 1
	end

	def scan(start, finish)
		# SELECT VFO-A
		command "VS", "0"
		# AUTO INFORMATION
		command "AI", "1"
		# SET FREQUENCY
		command "FA", "%08d" % start
		# START SCAN
		command "SC", "1"

		while m = @read_queue.pop
			next unless m.cmd  == 'FA'
			if finish < m.params.to_i 
				break
			end
		end

		# STOP SCAN
		command "SC", "0"

		# DISABLE AUTO INFORMATION
		command "AI", "0"
	end
end

cat = CAT.new({ :port => '/dev/tty.usbserial-FTB3L9UG' })

cat.scan(7_000_000, 7_030_000)

このように、連続してコマンドを送ったりする場合、適当に sleep を入れないとだめとか、そういうのがあるようで、ちょっと面倒くさい。うまくできるまで試行錯誤が必要そう。何かもっと正しいやりかたがあるかもしれない。

あと、応答が存在するコマンドを、こちらから一方的に連続して送りつけると、受信できるデータがまざっておかしなことになる。どんな実装になってんだよ、って感じだけど、コマンドを送るときは1つずつ確認しながら送る必要がある。ただし、応答がないコマンド (単にセット) は、応答がないので、いかんともしがたい。よくわからん!

さらにいえば、このような一連のコマンドでオートコントールしようとするなら、無線機側の操作を全 LOCK する必要がありそう。LOCK コマンド自体はあるけど、部分的にしかロックできなかったりするのでめんどい。

  1. トップ
  2. アマチュア無線
  3. Mac OS X でリグコントロール 基本 (YAESU FT-450D)