✖
1アマ (第1級アマチュア無線技士) 試験を受験した
アマチュア無線の試験を前回 (3級) 受けたのは、まだ電信受信試験があった中1のときだったので、実に14年ぶりぐらいの試験になった。その間に電信の試験は廃止され2級と1級はあまり難易度に差がなくなったみたいなので (数学的な部分だけ?)、2級は受けないことにした。
動機
- 10MHz, 14MHz (2級以上で許可) に出てみたくなった
- 3級とか小学生でもとれるし恥ずかしい感じがする
- 資格の説明が「 アマチュア無線局の無線設備の操作」 とシンプルになってかっこいい
やりたいことは2級でもできるし、QRO (2級で最大200W、1級だと最大1000Wまで許可されるけど、集合住宅だと出力をあげるのは悪手) する気もないので、モチベーション的な問題が大きい。
勉強
昔はどうだったか知らないけど、1アマは難しい難しいと聞いていた割に、今はそんなに難しい試験ではないように思った。中学で数学ちゃんとやって卒業してたら余裕、みたいな感じだと思う…… (複素数の計算が一部あるけど、1アマだとたいしたことはしない) 電信聞き取りがないし、ほんと単に数学力が難易度に直結する。
自分は中学・高校で数学をちゃんとやらなかったばかりか、かけ算九九でミスをするレベルなので、そのへんが大変つらかった。問題を方程式にするまではできても、かなりの頻度で計算ミスをして、しばらく気付けないことがある。計算ミスが多いと、それに気をとられるがあまり、考慮不足で根本的に間違えることもあって辛い。
2ヶ月前から落ちてもいいから基礎からというつもりで準備をしたけど、本気でやりまくったのは最初の1ヶ月だけで、模試をしてみたら合格点を超えてしまったのでだんだんやる気が落ちていった。使った本は
と、中学生レベルの計算を思い出すためにドリルを買って2回ぐらいやった。高校受験用だと中1〜3まで纏まっていて便利。
ドリルは体感的にはかなり効果があって、その後問題を解くのが気分的にもだいぶ楽になった。
あと、本でよくわからなかったところは以下のサイトが大変わかりやすかった。たぶん以下のサイトと過去問題だけでも工学は受かると思う。
前述の通り、複素数に関しては1アマでは普通に文字式を解くのと変わらないレベルのことしか要求されないので、余計な勉強はしてないし、特に苦手意識もつかなかった。新たに覚えたのは分母にj がきたとき共役複素数で分母を有理化というルールだけだった。
本番
直近の過去3回の問題は事前にやってたけど、工学は本番の問題が思いのほか難しく感じた。これは1枚目に計算問題が集中しており、なおかつその全てが事前にやった問題集や試験問題に同じ形の問題がないというものだったからだと思う。なのでかなり焦った。そう難しい変化ではないとはいえ、方程式の変形をよくミスするので、結局念のため4回ぐらい解いたりした…… (おかげでこれらは正答できた)
能動素子 (半導体) の問題が全然でなかったなあという印象だった (出たことは出たんだけど)。ことごとく、出たらいいなあとなんとなく思っていた問題はでなかった。逆に、出たら捨てようと思っていた過渡状態の問題がでて悲しかった (けどこれは改めて考えたら解けた)
間違えた問題(A問題の2問)の原因は、理解不足による勘違いと、根本的な解きかたのケアレスミス (2倍するのを忘れた的な) だった。
久しぶりに全力で応用部分の頭使った感じだった。終わったあとヘロヘロになった。
法規は単に覚え間違いが多かった。「無線電信とは~通信設備である」が何度見ても納得いかない。設備じゃねーだろと思うんだけど、定義だから仕方ない……
答えあわせ
試験日の3日後?の15時に公式の解答が出るみたいで、答えあわせをした。(法規、工学ともに、150点満点中 105点 正答率70%以上が合格ライン)
- 法規: 130点 (正答率87%)
- 工学: 140点 (正答率93%)
だった。試験後の印象としては、法規は余裕で工学がヤバイ、だったけど、点数的には逆だった……
マークミスさえなければ、合格しているはず。25日に正式な合格発表がある。
まとめ
やればできた。勉強はじめる前はいろいろあって受かる気がしなかったんだけど、実際勉強してみると、そんなグダグダ言うほどには難しくなくて、これさえ受かないとかだと自分相当ダメなんじゃないかと思ってプレッシャーだった。(難易度的には1陸特より少し難しいぐらいらしく、無線資格としては1陸技・1総通まであるわけで、入門レベルなのだなあという感じ…)
たまには試験的なものをしてみるのもいいかもなあと思う。けど、受けるモチベーションが起こる試験があまりない。多少勉強する姿勢ができたので、継続して何かしら勉強をしたい。
✖
仮にも (こういう言い方をすると怒られそう) プログラマとして働いているのに、情報処理試験を一度も受けたことがなく、勉強の機運が高まっているので受けてみようと調べてみたけど、やはりメリットが感じられず、モチベーションが沸いてこなかった。
情報処理の試験は受かっても別になにか独占業務があるわけではないので、何に価値を見い出せばいいのかよくわからない。「情報セキュリティスペシャリスト」とか名前かっこいい!ぐらいしかない…… ウェブ業界だと、資格持ってても github しか見られないし就職には殆ど意味を感じられない。
勉強すること自体には意味があるけど、過程だけに意味があってもやる気沸いてこない。なんか「これは!!」っていうメリットはないんだろうか。
AVR progmem に long を置く方法
PROGMEM をつけると (const も必須)、その変数の示す先がプログラムメモリー領域になる。そのままだと使えないのでワーキングメモリ (SRAM) にコピーする必要がある、という話。大きい定数は SRAM に置けないので、基本的にプログラムメモリ (フラッシュメモリ) 上に置いて、必要なときだけコピーするようにする。
avr/pgmspace.h に byte やら word を読み出す関数は提供されているけど、long はない。どうするのが正しいのかなあと思ったけどよくわからなかった。
結局以下のように memcopy でうまくいった。
const uint32_t MORSE_CODES[] PROGMEM = {
...
};
uint32_t current_sign;
memcpy_P(¤t_sign, &MORSE_CODES[character], 4);
progmem 調べていると prog_ が prefix された型を使え、って書いてあるのがよく検索ででてくるけど、それは obsolete で、使うとエラーになる。ヘッダを読んだほうが良い。const と PROGMEM をつけるのが正しい。
しかしヘッダ見ると far とか near とかよくわかんない関数がいっぱいあって混乱する。far は 64KB 以上のフラッシュがあるデバイスしか関係ないっぽいので気にしないほうがいいっぽい。つまり near_ だけ使っていれば良い (実際、 near も far もついていない関数は near のエイリアスになっている)
ヘッダファイルの冒頭部分の一部を訳してみた。
\note If possible, put your constant tables in the lower 64 KB and use
pgm_read_byte_near() or pgm_read_word_near() instead of
pgm_read_byte_far() or pgm_read_word_far() since it is more efficient that
way, and you can still use the upper 64K for executable code.
All functions that are suffixed with a \c _P \e require their
arguments to be in the lower 64 KB of the flash ROM, as they do
not use ELPM instructions. This is normally not a big concern as
the linker setup arranges any program space constants declared
using the macros from this header file so they are placed right after
the interrupt vectors, and in front of any executable code. However,
it can become a problem if there are too many of these constants, or
for bootloaders on devices with more than 64 KB of ROM.
All these functions will not work in that situation.
可能なら、定数テーブルは 64KB 以下に配置し、pgm_read_byte_far() や pgm_read_word_far() の代わりに pgm_read_byte_near() や pgm_read_word_near() を使ったほうが効率が良いし、なおかつ 64KB 以上は実行コードに使える。
プリフィックスに _P がついている全ての関数はELPM 命令を使わず、フラッシュROMの64KB 以下を引数にとる。これは大抵の場合、このヘッダファイルのマクロを使って定義されたプログラムスペース定数はリンカーが割込みベクターのすぐ後に配置するので、気にすることはない。
しかしながら、もしこのような定数が多すぎる場合や、デバイス上のブートローダーが 64KB 以上の場合問題をひきおこすかもしれない。これらの関数はこのような状況では一切動かないだろう。
電子部品の整理
抵抗器とかコンデンサとかをうまく整理する方法を考えてる。とにかく種類が多いし、そこそこ体積があったりするので面倒くさい。
値わけして袋詰めするまではいいとして、袋がばらばらにあっても、ソートされていないと見つけることができないのでゴミと変わりがない。
抵抗
抵抗はそんなに大きくないので (100本ぐらいだと結構…) 100均のハガキ用バインダーにだいたい納まった。E24 系全部持ってたりすると2冊ないとダメそう。
コンデンサ
電界コンデンサだと特にだけど、そこそこ体積があるので、バインダーみたいのに入れこむのはつらい。こちらは普通に横長のプラスチックケースにソートして入れるみたいにしてみた。
本当は仕切りが可変できるパーツボックスがあればいいんだけど、結構高いのしかないので、これで我慢する。
半導体
半導体が一番悩ましい。ソートしようがないので、できるだけ 一覧性が高い形で保存したいけど、いい方法が思いついてない。
基本は用途別にわけていくのがよさそう。
- ダイオード
- 整流用
- 小信号用
- ツェナー
- LED
- 形別にわける
- トランジスタ
- 耐圧ごと? になんとなくソート?
- フォトカプラも
- FET
- 耐圧ごと? になんとなくソート?
- センサー系
- ロジックIC
- オーディオ関係IC
- マイコンチップ
✖
今年買ってよかったものまとめ
ドラム式洗濯・乾燥機
買ってから半年ぐらい経ったけど不満なし。常に乾燥まで一気にやっていて、一切外に干していない。
食洗機
これも買ってから半年ぐらい経ったけど一切不満がないし、これなしではもはや生きていけない。
手で洗うよりも確実に綺麗になるので安心感がある。無理してでも設置する価値が絶対にある。
食洗機用小物カゴ(丸型) TD10 cho45
小物洗うには別途カゴも必要。これは厚さを2段階に調節できて便利。ステンレスだから清潔な感じがするし良い。
ルンバ
これも買ってから半年ほどだけど満足度が高い。普段の掃除の殆どを自動化できる。
これに限らないけど、ここまで書いた「家事自動化」は確実に生活が向上する。特に、1つ自動化できればその間に他のことをすることができる。
シャトルシェフ
これは自分では買っていなくて、結婚祝いにもらったんだけど、同じように便利。
煮ている間、火を使わないのでつきっきりでいる必要がなくなる。家事自動化と同じような効果があって、他のことに時間を使うことができるようになる。洗濯機まわしつつ、食洗機まわしつつ、ルンバを起動して、シャトルシェフでカレーを作りながら風呂に入ったりとかできるようになる。神か。
髪の毛くるくるぽい
掃除しやすくなっていい。あと見てると渦ができて楽しい。ただ、設置方法的に、くるくるぽいに髪の毛が挟まっていることがあって、これがうまく解決したらいいなあと思う。
万年筆
kakuno のコストパフォーマンスが非常に高い。書くのが楽しくなる。勉強とかテンションあがらないけど、多少テンションをあげることができて良い。
これらも買うとさらにテンションをあげることができる。インクを早く使いきるぞ!っていうモチベーションが生まれるのでかなり良い。
スピードサラダ
スピードサラダ 19639 cho45
切れるピーラーを使うべき。千切り機能が思いのほか便利だった。
ロールシャープナー
包丁研ぐの面倒だけど、これだとすぐ研げるので良い。切れない包丁はかえって危険なのでこまめに研げるのがいい。
10口OAタップ
10口ある OA タップはなかなかない。四角でデザインもわるくない。横と縦につけれるので、幅が大きいACアダプタが多い場合も有効に使いやすい。
ACアダプタ繋げるタップ
AC アダプタばっかり繋げる場合、こういうのがあったほうが便利。
テービルタップボックス、モール
テーブルタップボックス、モールは「見た目」の観点から語られることが多いけど、ルンバを使う場合、ケーブルを床に這わせると悲しいことになるので、これらが必須。もちろん見た目もかなり良くなるので大変良かった。一旦設置したら動かすことも殆どないので、面倒くさがらず一回やったらよい。
ドリルドライバ
ドリルとしても使えるし、ドライバとしても使える。クラッチがついてるので一定の締め付け度になると空転してくれる。普通に使ってる。
踏み台 セノビー
トレードワン 踏み台 高さ39cm×幅39×奥行32cm 折り畳み 隙間収納 ステップ 室内・屋外 洗車 釣り ブラック セノ・ビー のっぽ君 10052 cho45
うちが狭いので、あまり踏み台とか買っても置き場がないんだけど、これだと折り畳めるので便利。普通に使いまくってる。
ワットモニター
消費電力の可視化は重要。まずは測定。間違った思い込みで節電しても効果は薄い。
✖
✖
つかれた
✖
✖
読んでて、実際実践しないとだめなそうな感じだけど、結局役に立たない気がする。
第七章を読んでて、じゃあタバコ臭いやつに対して怒りが出ないようにできるか?っていうと、全然解決方法が見えてこない。
- 「タバコなんて誰もが吸うべきではない」
- ↑ 反論:人の勝手
- 「路上喫煙はもはや禁止されてる」
- ↑ 反論:?
- 「タバコを吸うやつはゴミクズ」
- ↑ 反論:そうとは限らない
- 「タバコを吸うやつのドヤ顔に嘔吐がでる」
- ↑ 反論:誰もがドヤ顔ではない
こんなことしても意味があるように思えない。公正さが相対的だなんてあたりまえすぎる。
生理的に受け付けることができず、逃がれることもできないことに対しての対処法が示されていないように思う。それに対して「認知の方法を変えろ」っていうのはすなわち我慢しろってことと一緒だ。結局我慢するしかないってこと。怒らないで、諦めろってだけ。どうしようもないから、単に諦めて我慢しろ、としか言っていない。「なんであんなゴミクズ共がドヤ顔で路上喫煙してるのに、何も悪くない自分が我慢しなくてはいけないんだ?」とは考えてはいけない。単に我慢して通りすぎろってだけ。どうしようもない。何の救いもない。思考を停止しろってこと。こんなのなら、ツールとしての神様というのを考えると「あいつらには天罰が下るから放っておこう」と考えたほうが、精神のコントロール方法として惨めにならないぶんまだマシだと思う。
✖
認知療法の「考え方を変えろ」というやつが、そもそもアイデンティティを毀損していて、デッドロックが発生しているように感じる。
これまでの「考え方」はこれまでの人生そのものではあるけど、全てを変えない限りではアイデンティティは破壊されない。これからの人生は別に考え方を構築できる?
しかし自動思考ってものすごいアイデンティティに密着しているように感じる。1個取り外せば、全部こんがらがっているから、全部出してくるしかないような。
✖
習慣とか考え方って、急に変化させることはできない。徐々にしかできない。
ウェブサービスは「リニューアル」をすべきではないと思う。少しずつ変えていって、最終的に目的ものに変化させるしかない。過渡をおろそかにしているから、結局ユーザに大きな反感を買う。
✖
何をするにせよ出てきて、自分をバカにしてくる鬱陶しいドヤ顔というのがあって、それを消滅させたい。
何をするにせよ頭にイメージとして自動的に浮かんでくる。これは、特定の誰かというわけではなく (直近で嫌なことを言われた場合その人物になるけど)、いろんな顔が重ねあわさっている。
不愉快なことがあったときも、その「不愉快な顔の集合」みたいなのが脳裏に浮かんでくる。タバコ吸ってるゴミ共の場合、そういう人らのドヤ顔が合成されて脳裏に浮かぶ。
幻視・幻聴というレベルではないと思う。実際それがないことはわかっているけど、自動的に想像される。何が原因になってこれが起こるようになったのか、全くわからない。いつからなのかもわからない。少なくとも大学生のときにはあった。一番遡って思い出せる範囲でバカにされて傷ついたことを思い出すと小学1年生のときの給食で教師にバカにされたことだと思う。今思い出しても理不尽さに腹が立つ。とはいえ、たぶん特定の1事象でこうなったわけじゃなくて、積み増しされて不愉快な顔が合成されているんだと思う。
✖
タバコについては、独りでいるときはアンコントローラブルな部分があって、即殺したい感じになるけど、社会性にスイッチが入っているときはほぼ何も考えず無視できる程度の自動思考だと思う。実際、喫煙者がいる飲み会とかは (飲み会中は) キレたりはしない。帰ってからがひどいだけだ。
✖
不愉快な顔の自動思考も、社会性にスイッチが入っているときは起こらない。これは社会性にスイッチが入っているかどうかじゃなくて、単に社会性の負荷が重すぎるので、そのへんの自動思考まで負荷がかけられないからだと思う。
しかしタバコに対する不快感の場合、人前で抑えていれば十分なので、社会性スイッチと同期しているのは都合がいいというか、表面的には問題がないけど、何らかの学習とか、コードを書くとかの場合、社会性スイッチが必ず切れている状態になるから、非常に大きな問題になってる。
✖
22:00 ぐらいから1時間ぐらい、タバコの臭いがあまりにもひどかった。基本、止まっている換気扇から入ってくるから、プラスチックダンボールで蓋 (当然タンボールの方向的に隙間ができにくいようにはしてある) をつけてるにも関わらず、ひどい臭い。しかたないので換気扇をまわして、臭くない方向の窓をあけた。
外にいて多少タバコ臭い、というのがぎりぎり我慢できる限界で、家の中に臭いが入ってくるのは完全に我慢の限界を超えている。タバコ吸ってる汚物は、自分が汚物であることを自覚して、締めきった部屋でもちろん換気扇もつけずに、すなわち自分という汚物を完全に密閉して吸ってもらいたい。それができないならタバコを吸うな汚物。
✖
✖
梅の気持ち BOX cho45
異常に食べたくなったので買った。
梅みんつ的なものは100均で2種類ぐらい買ってみたけど、メーカーによる個体差が激しい (香料効かせすぎていて美味しくないやつもひいた…)。小さめのほうが好きだけど、オリオンのは少し大きい。
✖
元気が全く、全然出てこなくて、どうしようもない。1回大きい負荷がかかって以来全方面にすっかり心が折れてるのがずっと続いてる。
コーディングは、別に、個人的に書きたいコードとかは比較的普通に書けるしまぁまぁ楽しめるけど、誰か別の人間のためにコードを書こうという気が前にも増して一切失くなってる。
アルゴリズム的なものに実装に挑戦しようとしたりしているけど、全然どこから手をつけたらいいのかわからなくて、本当、自分は実力というのがなくて、積み木を積むことしかできないということを痛感してやる気がなくなる。理論的な部分が、イメージは掴めても、コードに落としこめない。コードが普通に書ける人からしたら「はぁ?」って感じのレベルだし、そのせいで、こういったコードを書こうとすると、コードを普通に書ける人にバカにされることばかり考える。「そんなこともできないでプログラマ〜やってるの?」「そんな実装普通しないよww」とか、そういったことが常に頭に浮かぶ。
具体的には、隠れマルコフモデルとかリードソロモン符号とかが、なんとなくかっこいいし実用的そうなのでやってみたいけど、途中で挫折してる。隠れマルコフモデルはモデルの作りかた(学習のさせかた)がさっぱりわからず、コードをコピってきたとしても、欲しいものを作りあげることができない。リードソロモン符号は根本的にガロア拡大体の変換規則みたいなやつが理解できない。リードソロモン、ググっていると「こんなのもできないのは〜」みたいのがひっかかってほんと萎える。
コード以外でも、モールスの聞き取りは気分転換にやっているつもりなんだけど、全然成長している感じがしない。こっちは定量的評価として聞き取り精度を記録していて、全く成長していないなんてことはないんだけど、とにかく成長が遅すぎてめげそう。ある程度は訓練が習慣になっているとはいえ、こんなことしても1円にもならないし、バカにされるだけというのが多重でつらい。
無線工学の勉強も、一定の成果は見せていて、テスト問題で評価する限りでは向上が見られるけど、主観的には向上した感じがしていない。
英語の勉強は毎回それをしようと始める前にめげる。何度始めようとしても「いくら勉強したってネイティブ並に喋れる日本人にバカにされる」状況しか思い浮かばず、メリットが押し潰される。ドヤ顔で日本人に説教されるのほどイライラすることはないと思う。そいつらがみんな死んだらやる気になってもいい。TOEIC満点とるのが普通です、みたいなのやめてほしい。そういった形でバカにされることがないぶん、モールスのほうが100倍ぐらいマシに感じる。モールスは、十分に習得した人がレベルが低い人をバカにすることはあまりない。なんで同じような技術訓練なのに、モールスと英語でこんなに違うのだろう。
いずれにせよ、遅かれ早かれ、技術力の向上を目指すならば以下の点を改善する必要がある
- 数学力
- 英語力
英語はともかく数学力を向上させる方法がさっぱり思い浮かばない。かけ算九九がクソ遅い時点で躓いてる。これら、できる人からひたすらバカにされ続ける感じの分野なので、本当につらい。
RPG のレベル上げみたいに、特に負荷をかけなくても、単純作業をやっていたらレベルが上がっていったらいいのにと思いながらドラクエ1をクリアした。現実は少し強めの負荷を継続的にかけないとレベルは上がらない。同レベル以下のモンスターだと経験値が0になるネトゲのような感じだ。
✖
✖
スマフォのテザリングを主回線にした家庭内LANの構築
結局これを買って、あとかなり昔に買ったしょぼいルーターを使って構築してみた。
- インターネット → (LTE) → スマフォ → (Wi-Fi) → イーサネットコンバーター LAN-PW150N → (LANケーブル) → ルーター → (Wi-Fi or LANケーブル) → 各端末
LAN-PW150N は初期設定に LAN ケーブルが必要だけど、昨今の Mac にはイーサネットポートがついてないので、Windows 機をひっぱりだしてきて設定した。スマフォのAPに特に問題なく設定できた。
スマフォのテザリングは切ったり入れたりをよくするので、LAN-PW150N がそれなりの速度で再接続を行ってくれるかが心配だったけど、特にそれも問題ない感じだった。
これで以下のようなことが可能になった
- 同じネットワーク間のコンピュータでの通信 (スマフォのテザリングのオンオフ関係なしに)
- DLNA
- ファイル共有
スマフォのテザリングは 2GHz バンドでしかできないっぽい。ルーターから出す電波は 5GHz バンドにしたほうが干渉しにくくなって良さそうだけど、うちにあるしょぼいルーターだとできないので多少そのへんが犠牲になってる。
↑ これが欲しい。
JT65
微弱信号通信用の通信プロトコルに JT65 というのがあるらしい。もともと VHF の EME (月面反射通信) 用に考えられたみたいだけど、それを HF 帯の地上間通信にも応用して流行ってる?みたい。実際信号を聞いたことはない。しかしプロトコル自体の解説が全然見つからなくてよくわからない。
- 72bit のメッセージに 6bit シンボルの RS(63,12) (リードソロモン12シンボル長データに51シンボルのパリティ)。
- 72 / 6 = 12 シンボル に対し訂正符号51シンボル
- 64 トーンの FSK
- 2の6乗、すなわち1シンボルにつき1トーン
- 1分間間隔で TX/RX が切り替わる (正確な時間で同期をかける)
細かい部分がまだよく理解できてない。ものすごいおおざっぱに理解すると、
- 厳密にお互い同期した時間を持っていることを前提に
- かなり強い誤り訂正符号を付与して
かすかに受信できる信号を本来のデータにデコードできるようにする、という話っぽい。あとよく使うメッセージに関してはショートハンドメッセージというのを定義してより受信しやすくしている (プロトコルにこういうヒューリスティックな要素があるのはだいぶ気持ちが悪いしチートっぽい)
EME の場合、月まで往復約2.5秒かかるけど、正確な時間の同期はどうしているんだろう? 定数?
換気扇から煙草の臭いが入ってきて不快
結構前からなんだけど、キッチンの換気扇を止めているとき、煙草の臭いが入ってくることがある。不愉快極まわりないうえに完全な対応法がない。吸ってるやつを見つけだして磔にしたい。ヒカリエに磔にしたい。
原因は
- 外にタバコの臭いがしばしば蔓延している
- うちはこのせいで窓が殆どあけれない。磔にしたい
- 部屋の中が負圧になってる
- 浴室の換気扇をつけっぱなしにしているからだと思う
解決方法としては
- 吸ってるやつを全員磔にする
が最も効果的で最良の方法なんだけど、合法的に行う方法が思いついていない。
なので仕方なく、換気扇をプラスチックダンボールと磁石で作った自作の蓋で塞いでる。3ヶ月ぐらいこれで (つまり運用で) カバーしているけど、プラスチックダンボールだと硬さが足りなくて耐久性が低く、よく落ちてきてしまって、これがまたストレスが溜まるんだけど、まぁまぁお手軽なので現状これでやってる…… もっといい方法を知りたい (例えば喫煙者を全員合法的に磔にする方法とか)。
✖
✖
ダイキンの空気清浄機を分解清掃
2年前の買ったダイキンのACK75L-Tの中に虫が入りこんで死んでいるっぽいので分解清掃した。
ダイキンは法人向け技術資料を普通に公開しているので、詳しい分解方法 (公式) を普通に知ることができる。だいぶ便利。普通のユーザー向け取説と同じぐらいイラスト付きで親切に書いてある。
幸い、1匹が原型を保ったまま死んでいるだけでよかった。粉々になったカメムシとかいなくてよかった。
一応、開いて掃除できる部分は掃除したけど、さすがに何重もフィルターしたあとの部分だけあって、目に見えるほこりはなくて、非常に細かい粒子みたいなのが一様についている感じだった。ウェットティッシュで拭くと真っ黒になる感じ。
Web Audio (JavaScript) で RTTY (周波数偏移変調) をデコード
RTTY (ラジオテレタイプ = 無線による文字伝送) というものがありまして、大変昔昔に考えられた通信プロトコルなのですが、アマチュア無線では一応現役のデジタルモードであります。
RTTY で通信すること自体にはあんまり興味沸いてなかったのですが、プロトコル自体には興味があったので、Web Audio と絡めて、試しに実装をしてみました。
RTTY のプロトコル
そもそも RTTY はラジオテレタイプの総称なのですが、アマチュア無線においては典型的には以下のようなプロトコルのようです。
- 170Hz シフトの FSK (複数の周波数を切り替えて信号を伝達する)
- 5bit の ITA2 コード Baudot Code (ボーコード) で、スタートビット1bit、ストップビット1.5bit の非同期方式
- 速度は 45.45 ボー (22msecごとの符号)
さらに、無線機とのインターフェースとしては AFSK (Audio? FSK)、直接FSK というのがあって、前者は LSB モードの音声としてオーディオ帯域を入力するもの。後者はキーイングに応じて無線機側で直接送信周波数を 170Hz シフトさせるものです。
AFSK だとマイク入出力だけで無線機とのインターフェイスが完結するので接続は簡単になりますが、無線機に表示されている周波数と実際発射される周波数にズレが生じたり、ALC の調整とか、電波の質とか、送信が少々面倒です。まぁしかしとにかく AFSK として実装をしました。
なので、送信側としては 2125Hzの「マーク」符号 (=ビット1に相当) と、シフトされた「スペース」符号 (=ビット0に相当) を作ります。
Baudot Code
RTTY が開発された当初には ASCII コードとか存在しなかったようです。
5bit しかないので、アルファベットと数字・記号をシフトコードで切り替えながら送受信することになってます。なので、シフトコードの受信にミスると文字化けが起こります。
出力 (送信)
まずデバッグしやすくするため、送信側から作りました。デバッグには既存の MMTTY を wine で起動してマイク経由で適当にやりました。仕様通りに信号を変調すればいいので送信は比較的楽です。ただ、以下の点にハマりました。
- LSB モードの復調結果を取り込むことを前提としているので、マークとスペースの位置が反転する (スペースが170Hzアップシフトになる)
- 下位ビットからの送信
入力 (受信)
まぁ当然めんどうくさくて、とりあえず同期検波を実装してみました。マーク周波数、スペース周波数それぞれについて、I と Q (1/4位相ずれ) 信号を作ってやるやつです。それで直流になるので、あとは頑張って22msec分のサンプルを数えながらデコードしています。
この方法だと特にフィードバックとかがいらず、ストリーム1パスで処理できるので気が楽でいい感じです。
今回は JS 側でフィルタとか書きたくなかったので、最後のほうまでダウンサンプリングせず、できるだけ Web Audio の API で実装してみました。単に面倒だったのと、Web Audio の知見を溜めようという狙いです。I/Q な信号が2本なので、合計4チャンネルの信号を作って一気に1つのローパスフィルタノードに入れたりして結構楽しい感じです (ただ、こうするとチャンネル間で干渉するっぽい)。オシレーターノードを使ってもっと綺麗に書けないかと思ったけど、かえって面倒だったので素直に sin/cos してます。
ちなみにローパスとハイパスの Q 値は 0 以上の場合、カットオフ周波数付近がなぜか増幅されるという挙動になるのでハマりました。減衰傾斜が急になるのだとばかり思っていたら全然違った。バンドパスの場合の Q 値は上げても減衰傾斜が急になるだけです。




























![NEC Aterm WR9500N[HPモデル] PA-WR9500N-HP - NEC](https://m.media-amazon.com/images/I/511gs8lfhgL._SL500_.jpg)


