ほんと明らかに何もかもに対して度胸というか自信が足りていなくて、どうしようもない。
✖
|
ほんと明らかに何もかもに対して度胸というか自信が足りていなくて、どうしようもない。
というのをちょっと前に作ったけど日記に書いていなかった。
デモ (音アリじゃないとよくわからない):
デフォルトだと、信号がありそうなところを適当に追跡してデコードする。上のスペクトラムをクリックで、その周辺の周波数領域のデコードだけをするようになる。一度に1つのデコーダーだけが動く。
何もハッシュをつけない場合マイク入力からになる。あと Chrome でしか見てない。
Web Audio を使って、マイク入力を信号処理しようと思うといくつか躓くところがあった。
モールスのデコードに高いサンプリング周波数は必要ない。しかしサンプリング周波数は Web Audio 側で固定になっているので、自力でダウンサンプリングしている。これは ScriptProcessorNode の onaudioprocess を使い、Float32Array にリングバッファ状に落としこんでる。なんかもっといい方法ありそうだけど、わからなかった。
まだ onaudioprocess の挙動が不安定で、データがこなくなったりすることがある。毎回 onaudioprocess に対してコールバックを代入しなおしたりいろいろやったけど、最近直ったような気がしないでもない。
FFT も AnalyserNode のを使うのではなく、このダウンサンプリングした信号に対し、JS レベルで実行してる。これは dsp.js を使ってる。
それなりに工夫して作った。最初のころ Description of RSCW's algorithms というのを見つけてよく読んでみたけどよくわからないことも多くて、僕でも実装できる程度に落としこんで結局以下のようになってる。
デモのようなホワイトノイズ + それなりの強さの信号でかつ、機械的に綺麗な符号なら、結構いい感じにデコードできるけど、実際の交信だと思ったより厳しい。
なので、なんらかの統計的な、機械学習のような要素を入れこんで (隠れマルコフモデルとか?) やりたいけど、そのような技術力がない。あと、別に全域常時 FFT して全チャンネル同時デコードとかも、ギジュツリョクがあればできるだろうけど、できてない。
なんかエクセルで計算できるのがでまわっているっぽいのだけれど、HTML で計算したいので JavaScript で書きなおした。
自分で書いたら欲しい機能増やせるし便利。特に、計算したパラメータから、必要な材料の長さを出したりしたかったので canvas で全体像をレンダリングしている。
コイルも密巻きの場合を簡単に求められるようにしたりした。ただ、細長いコイルはQ値がさがってよくないらしいので低い周波数では調整する必要があるのかもしれない。でもそれでどの程度効率が変わるのかがわからない。
φ25mm φ22mm のアルミパイプそれぞれを 1m ずつ買ってきて作った。設計上は 1m + 0.85m で 15cm ほど重ねるイメージ。
コイルを設計通りに巻くのがかなり難しく、はじまりとおわりの処理の仕方がよくわからなくて、これはうまくできたとは言い難い。
7MHz だとカウンターポイズが 8.3m 必要だけど、なんとなく買っておいた 10m の 5D-2V があったので頑張って計って切った。コアは 50MHz 用のコブラアンテナを試作したときのを流用した (12ターン 3D-2V がW1JR巻きで FT240 #44 に巻いてある)
ちなみに、設置ロケーションは給電点地上高 2m 程度で、建物からは 30cm 程度しか離すことができないので全く SWR が落ちないような予感がしていた。やってみなければわからない、と自分を励ましつつやったが、案の定全く下がらなかった。
複素インピーダンスを広域で一覧するとだいぶ下 (6.8MHzヘルツぐらい) に同調しているような感じだったのでエレメントを短くしてみたりしたが、なかなかうまくいかず。
カウンターポイズのはわせかたを変えたり、エレメントの長さを変えたりいろいろ試行錯誤しまくったあげく、7MHz 付近でエレメントは共振しているようだが SWR は下がらない (リアクタンスがないけどインピーダンスの実数が低すぎる)、という状態になったので、カウンターポイズを動かし、ようやく 1.5 程度まで下がった。
インピーダンスが低めに出ていたので、カウンターポイズをできるだけエレメントから離すように置いたら効果があった。
エレメントの長さによっては、特定の周波数 (だいたい6.8MHzぐらい) で SWR が 1.0 程度になったりした一方、7MHz 以上では SWR が下がりきらなかった。たぶんコイルの巻きすぎ?だと思うが、ほどくのが大変面倒なので、一度コイルには手をつけずエレメントだけで調整し、7.000〜7.200MHz、すなわち 7MHz 帯全域で SWR 2.0 以下にできた。最低 SWR 点が 1.5 程度なのがちょっと微妙だけど、とりあえず気にしない。
しかしその後一旦コイルの固定やらで取り外すことにしたので、コイルも1ターン巻き戻して再調整したところ、7.0MHz 付近で SWR 1.1〜1.2 ぐらいまで落とすことができた。もう1ターン戻してもよかったかもしれないが、メインで運用しているのはバンド下限あたりなのでこれでよさそう。
帯域が広いのは事前情報で知ってはいたけど、なんとなく信じていなかったので、設計時に 7MHz をターゲットにしたのがよくなかった。今回の場合 7.1MHz ぐらいをターゲットにして作る (計算上はコイルが1ターン減るだけ) と丁度よかったかもしれない。
UHV-6 という 2m 程度の短縮マルチバンドアンテナとの比較しかできないが、今のところ感じるのは以下の通り
ベランダのスペースの関係上、UHV-6 と今回作った MicroVert アンテナは開けている方角が違うので、相手局の位置によって変わりそう。もうすこし耳が良いのを期待したけど、それに関しては少し期待はずれだった。短いアンテナなので、結局その点に関しては短縮ホイップと同じなのかもしれない。
まずやはり終わって思うのは、LTとしてすら発表しなかったのが反省だな〜 と思った。「今年 Perl 関係でおもしろいことしてないし……」と思って応募できなかったけど、わりとみんな Perl 関係ないこと話してるので、堂々と JS の話すればよかったと後悔。他人が話しているのを見ると話したくなる。というか Teng の話があったな!と会期中に思いだした。
結構毎年顔ぶれが変わっているのか、オープニングで今年初めて参加した人として手を上げた数が想像よりもずっと多いことに驚いた。なんとなく印象としては普段 Perl を書きまくっている人というよりは、他のコミュニティの人が Perl 文化を見にきてる感じがした。
Hatena
Github
それぞれのサイトで任意のURLの登録は比較的自由。なので、それらが一致するものを抽出できればある程度アイデンティティが関連づけられそう。ただ、クロールしないとできないのでつらい。
それなりにユニークなのはメールアドレスだけど、表示されないことが多い。なにかいい方法はないか
交信ログの一部を公開するようにした。ずっとやってないと恥ずかしい感じになる。
Windows なら Turbo HAMLOG for Windows というのがあって、大変使いやすいし、それでいいのだれど、Mac だと無料で丁度いいのがない。有料で超高機能、みたいなのはあるけど、そこまで必要がないし、こういう「データ」が主のもので、データ管理とかが実際どうなっているのかもよくわからないソフトウェアに金を払いたいと思わない。
なので、自分に必要最低限の機能を実装しようと、SignalReports というロギングツールを自分で書いて使ってる。ローカルで動くウェブアプリの形式にした。
機能的には大変シンプルでただとにかく記録していくだけの機能がついてる。あえて「機能」と呼べるようなものはコールサインを入れると地域を表示したりするぐらい。この程度でも別に困ってない。QSL カードを発行する人は印刷機能とかいるんだろうけど、当面発行する予定もないのでこれでいい。
データは単に SQLite の DB に入れるようにしてる。プロジェクトディレクトリをまるごと Dropbox に入れているので、DB ファイルも Dropbox 上でバックアップ・履歴管理される。
Dropbox 上に DB ファイルが置いてあるので、Dropbox の API でその DB をダウンロードして、Perl で適当に HTML にして static に吐いている。特に変なことはしていなくて、あとは cron に登録してある。
火曜日の8時〜9時ごろ、出社前にワッチしていたら 21MHz バンドでカナダの局が強力に入っていた。少しきいてるとレポート交換だけのQSOだったので、すぐ呼んでみたら普通に 599 でとってもらえた。かなり嬉しい。
ちょっと満足したあと、21MHz が開けてるときなら 18MHz はもっと良かったりしないのかな?と思って 18MHz バンドをちょっとワッチしていたら、すぐマレーシアの局が弱め 559 程度で聴こえたので呼んでみた。こちらも599で返してくれた。
いつも出社する時間に決めてる時間が迫っていたのでそこでやめたけど、簡単な交信とはいえ短時間に2局もDXできたのですごく満足した。
コンディションと相手の設備さえ良ければ、こちらのロケーションが地上高が殆どないマンション1Fでアンテナが短縮多バンドモービルホイップでもとってもらえることを実感した。
マイコンに一種の憧れを抱きつつも、なかなか本当に手が出ない。とりあえずチップを買ってみたりしたけど、別に Arduino でもいいわけで、積読みたいな感じだ。
開発にうまく専念できない理由がいくつかあって
シミュレータとして simavr というのがあるんだけど、付属するサンプルプログラムでさえ、どうもうまく動いた試しがない。Ubuntu でやってもダメだし、何が悪いのかわからない。
ちょうどいいサイズの問題は大変難しい。今であれば CW インターフェイスを作りたいなあと思っているけど、ハードルが高い。AVR で USB をハンドリングするので VUSB とかライブラリを組込む必要があるし、PC との連携をうまくしないといけない。たぶん Arduino でとりあえず作ってみるほうが良さそう。
Arduino は、開発環境とハードウェアをスペックに落としてパッケージにして名前をつけたのが発明なんだよなあ。
FT-450D には CW ゼロイン時のインジケーターがないので作ってみたくなった。既にやってる人がいたので、それを参考にしつつ、定数だけちょっと変えた。NJM567 の 1pin, 2pin のコンデンサ容量をどちらも 2.2μF にした。ブレッドボードで組んでいくつか定数を試しながらやってから基盤に実装した。
この状態で実際よくよく使ってみると、かなり帯域が狭く (100Hz未満)、ほぼオンフレでないと反応しない感じ。このへんは好みだろうけど、もうちょっと広くてもよかったかもしれない。なんともいえない。帯域が狭いので弱い信号だととれない。
これがあってもなくても、どっちにしろ耳で音程をあわせる必要はあるので、完璧主義的には十分狭いほうがいいかもしれない。ただ、実際の交信では結構ずれて (ずらして?) 交信しているケースもあるので、100Hz〜200Hz ぐらい幅があってもいいような気がした。
もっと便利にするなら、どれぐらいずれているか、を表示するインジケーターにすべきだと思う。単純に考えて、5個ぐらい NJM567 を並べて、それぞれ調整して帯域をもたせたらそういうのは作れそう。しかしそんなに作ってる暇があったら耳を鍛えたほうが早いという感じがする。
仕様通りよりも減衰しているっぽい。普通のケーブルと切り替えながらパワーメーターの値を読んだ結果:
アナログメーターなのでちょっと適当なんだけど、50MHz で 0.39〜0.41dB ほど損失になってる。仕様だと 50MHz は 0.36dB なのでちょっと多い。誤差の範囲かな
外にリレーを置いて内から操作したいけど、そういう製品って売っていないみたいで、しかたなしに自分で作ることにした。別に現時点でアンテナが複数あるわけではないんだけど、作って試すにしてもそれがないとダルすぎるので作ってみることに。
調べてみると HF 帯ぐらいなら、通常のパワーリレーを使ってスイッチしても (つまり高周波リレーを使わなくても)、そこまでひどい特性にはならない、とのことで、一応それで実現してみることに。なにぶん高周波回路とかどういうふうに電流が流れていくのが大変わかりにくいうえ、素人なので全く自信がなく辛い感じだった。
既に解体してしまって写真も何もないけど、とりあえず2回路のものを作ることにした。リレーはパナソニックの廉価リレー AHJ3221 300円ぐらい。あとから気付いたけど、これはダイオードが入ってないタイプなので、面倒がないようにダイオード入りのを買えばよかった気がする。ただ、当面は単のスイッチで駆動するつもりなので問題ない。
グラウンドを共有にしたくなかったのと、オープン側をショートさせておきたかったので、2回路を切り替えるのに 2c 接点のリレーを2つ使うようにした。
結果的にいうと、25MHz で SWR 1.2 54MHz で SWR 1.5 程度になってしまって、あまり良くなかった。
リレーをシールドしてみたり、コネクタ部分のとりまわりを改良してみたりして、54MHz で 1.4 程度まで下がった。しかし、それ以上改良しずらい回路校正にしてしまったのでやめた。
そもそも1個のリレーでかなり単純な回路を組んでやってみた。これだと全体的に試作1から0.1ほどSWRが上がるぐらいだった。
グラウンドは分ける、オープン側はショートさせる、というのは変えず、回路構成を変えて、とりまわししやすいようにしてみた。
最初の同軸が2又になってしまっているのが、素人考えではよくない感じがする (オープンになると単なるコンデンサになってしまう) が結果的には試作1とほぼ同じような結果で、コネクタまわりと丁寧にやったぶんちょっと下がった程度だった。
やったこと、気をつけたことは以下の通り
あと、最初ちょっと長め (8cm ぐらい) の 3D-2V で配線していたけど、最短にしようと思い 5cm 程度 (限界) まで縮めてみたが、これは効果がなかった。
やはり 54MHz で 1.3〜1.4 程度までしか下がらず。本当は 1.2未満ぐらいまで下げたいが、対策が皆目検討つかなくなったのでここで諦めた。
実はリレーを6個ほど買ったので、せっかくなので4回路にしたくなった。そのせいでどれほど特性が悪化するかもわからないので試す。
回路構成は試作3と同じようにし、それを2段にすることで4回路にした。直列に繋いだほうが優先順位がつくれていいかもしれないけど、今回はそうしなかった。
これは正直かなり作るのが大変だったので2度と作りたくない感じ。
ちょくちょく計測しながらやってたけど、記録に残したのがあまりなかった。
まずダミーロード (DL50-A) の SWR を確認すると 54MHz で 1.12 ぐらいまでゆるやかに上がっていく。これはスペック通り。すなわち、これ以下の値に調整することはできない (これ以下に下がったら逆におかしい)
また、挿入地点でのパワーを計っておく。これが基準になる。手持ちのケーブルが足りないので CMF は付けっぱなし。
ポートA (000): 46W (7MHz) 36W (50MHz)
ポートB (010): 46W (7MHz) 36W (50MHz)
ポートC (100): 46W (7MHz) 36W (50MHz)
ポートD (101): 46W (7MHz) 36W (50MHz)
オープン側のアンテナはショートさせているので簡単には計測できず測定できてない。
1.3未満 (7MHz〜28MHz)
1.5未満 (50MHz)
2回路のときより 0.1 ぐらい全体的にあがってる。たぶんオープン側の同軸がキャパシタになってるせいなのかなあ。
HF 帯オンリーであれば、かなり適当に作っても実用に耐えるものはできそうだという感触を得た。しかし、頑張って特性をよくしようとすると泥沼にはまるし、技術力がないと、あるいは運が良くないとうまくいかせることができなそうだと感じた。
当然、こんなものを挿入せずに直結させたほうが、どんな悪影響もないので望ましいことだけれど、いちいち外にあるコネクタを切り替えるぐらいであれば、多少の特性の悪化も許容できるかな、と思う。あるいは、アンテナのテストのときのみ使って、あとははずしておくという使いかたもできるかもしれない。
いずれにせよ、まだ実際に使ってみてはいない。というのも、実際にリレーをコントロールする部分を一切作っていないのと、まともなアンテナ自体が1本しかないからです。
さらに追試をして、もっと SWR を下げられないか? と試行錯誤をした
とやってみて、出力端子に並列して適当なキャパシタを入れてみることにした。全く理論的ではなくて、うーんという感じだけど、同軸ケーブルを10cm程度に切り、これをキャパシタにみたてて出力近くに並列に入れたところ、下がる兆候があった。
短くしていくとどんどんあがっていくので、今度は15cm程度にして再度やってみると、全体で非常に下がった。
結果的に、各出力ポートごとに 15cm 程度の同軸 + 入力ポート直後に 8cm 程度の同軸を並列で繋ぐことで、54MHz まで 1.2以下になるようになった。
この方法が正しいのか、よくわからない。計測した限りでは SWR は下がり、挿入損失もそんなにひどく出ている感じではない。疲れたのであとでもう一度ちゃんと計測する。
ポートA (000): 47W (7MHz) 39W (50MHz)
ポートB (010): 47W (7MHz) 39W (50MHz)
ポートC (100): 47W (7MHz) 39W (50MHz)
ポートD (101): 47W (7MHz) 39W (50MHz)
すごい便利なのに誰も褒めてくれないので、応用例を紹介します。
もろもろの事情でアカウントが共有のサーバで、自分だけの環境を構築するためのメモです
以下は普通にインストール済みの前提 (インストールされてなくても入れればいいけど)
screen 初回時
SHELL=$(which zsh) HOME=$HOME/cho45/ script -c "cd $HOME/cho45/ && screen -S main" /dev/null
アタッチ
SHELL=$(which zsh) HOME=$HOME/cho45/ script -c "cd $HOME/cho45/ && screen -r main" /dev/null
これで $HOME が ~/cho45/ 以下になるので、だいぶ自由になる。SHELL も指定して screen を起動しとくと面倒くさくない。script -c してるのは、su してログインユーザと別のユーザから起動するときのため。
このまま、~/cho45/dotfiles とかに dotfiles を clone し、~/cho45/.zshrc とかをつくれば特に問題なく環境ができる。
vim はシステム既存のものだとバージョンが古くてイラっとするので、自分でビルドして ~/app (元の HOME においては ~/cho45/app) とかに入れてパスを通してる。その他、node とかもそのへんに入れてパスを通してる。
./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% 程度はだいたいとれるけど、それは本当に符号を聞きとる以外の全てのことを頭の外に追い出してやっていて、実践では半分もとれない感じ。聞きとること以外のことを考えながらだと、かなりつらい。
YAESU の無線機のエレキーはどうやらちょっと一般的なものと挙動が違うっぽい。なんか打ちにくいなと思ってエレキーキットを買ってやってみたけど、やっぱり違う。
実際打ってみた実感としてこんな感じかな、というので正確ではないかもしれないけど、入力は - が長点キー、. が短点で、実際のキー出力 # がオン、_ がオフだとすると、
# YAESU in: -------- out: ###_###_###_ (符号後のスペースのタイミングでキーが押しっぱなしだと、キーがメモリーされてしまう) # 一般的なエレキー in: -------- out: ###_###_ (スペースのタイミングでキーを離すと符号が途切れる) in: --------- out: ###_###_###_ (符号が出てから離さないと出力がない) 同じように、同じ入力でも出力が変わる # YAESU in : -. -. out: ###_#_###_# (最初の長点が終わった瞬間、メモリーされた短点が呼びされるので、その瞬間次のキーの予約ができる。つまり実際に点が出る前に予約可能になる) # 一般的なエレキー in : -. -. out: ###_###_# (YAESU と同じように入力すると、メモリーが上書きされるので短点入力が無視される) in : -. -. out: ###_#_###_# (短点をちゃんと聞いてから打つ必要がある)
この挙動の違い、些細に思えるかもしれないけど、実際やってみるとなかなかやっかいで、YAESU 式のエレキーだと、かなり早めにキーを離すイメージをしないと余計な点が出やすい。特に短点の場合、短点は100msecもないので、脳で聞いてから離すと指が追いつかない。頑張って前の符号が終わった瞬間に離さないといけない。
一般的なエレキーのほうは点が出終わってからキーを離してもいいので、慣れやすいように思う。一方あせって早く打ちすぎると符号が消える。
長点短点1点メモリー、スクイズと、外に出る機能ではわからないんことがある。
これ、いずれか一方に慣れると、もう一方ができなくなるのでつらい。しばらく YAESU 式のほうで訓練してようやく慣れてきたけど、一般的なほうに直すかどうか悩んでる。リグ内蔵のキーヤーを使えるほうが面倒くさくないけど、結構普通のほうがいい……
メリットデメリットを考えると
YAESU 式
一般的なタイプ
モールスの学習はヘタな入門本を買うよりもThe Art and Skill of Radio-Telegraphy (PDF 和訳: 無線電信の巧みと技)を読むべきだと思った。2版が和訳されて公開されていて簡単に読むことができる。すごく気を使って書かれていて、何度読んでもおもしろい。モールスに限らず、技能修練に関する習慣付けについて発見があって素敵だと思う。
この本は初版1992年 (21年前!)、非商用に限り再配布自由、というようなライセンスになっている。著者は残念ながら2003年に亡くなってしまっていて電信を覚えてこの人と交信しようというのは叶わない。