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)

中学生のときに1度行ったきりだったけど、改めて行ってみた。特に知り合いとかがいないので、アイボール (ネット用語的にはオフ会のことです) の楽しみはなく割とアウェイな感じだったけど、思ったよりも全然人が多くて、ハム人口は減った減ったと言われてるけど、自分は今回あんまりそういうの感じなかった。ただ、年齢層はかなり高く感じた。

やはりこういうところも、自分でいろいろ作っている人の話を聞くのがおもしろく、いい感じのおじさんが目をキラキラさせて自作品のいいところを喋ってるのを見るのはこちらも楽しいです。

あとは普通にコネクタとかフェライトコア、コモンモードフィルタとか安くなっていていろいろ買った。アンテナアナライザ (AA-54) は安くなってはいなかったけど買ってしまった。

  1. トップ
  2. アマチュア無線
  3. ハムフェア2013

メモ: コモンモードは+と-が同位相なので、+と-を同時にコアに巻いてやることで強いインピーダンスを発生させることができる。ノーマルモードは+と-が逆位相なので、インピーダンスが発生しにくい。

ノーマルモードのノイズ (意図しない高調波) はローパスフィルタなどでカットする。

コモンモードのノイズ (ほぼ全て意図しない) はコモンモードフィルタを適切に使ってカットする

  1. トップ
  2. ham