http://akizukidenshi.com/catalog/g/gM-08461/

最近「超小型USBシリアル変換モジュール」というのが秋月から出たみたいで、買ったのはいいけど、そのままだとちょっと使いにくいわけです。 ケースに組込むにしても MicroUSB だし取り付け用の穴もあいてないので難儀する。ブレッドボードで使うのがメインの用途なんでしょうけど…

なんかいいのないかと思いましたが、タカチ SW-20 (15x15x20) を買ってみたら完全にピッタリだったのでオススメです。ケースの蓋についている溝にピッタリハマってくれるサイズなので、ケースを少し削るだけで MicroUSB にアクセスでき、適当にエポキシで固めてしまえば便利。一応電源LED用の穴もあけたけど、なくてもよさそう。

  1. トップ
  2. tech
  3. 秋月の小型 USB Serial 基板とタカチの小型ケースがぴったり

KX3 と PC だけで SWR グラフにできたら便利なのになー と思っていたけど、少し前に調べたところ SWR を直接読む方法がなく、諦めていた。

しかし、KX3 Utility で Power Calibration を実行すると、SWR を読んでいるっぽい挙動が確認でき、読める方法があるということがわかった。KX3 Utility は親切にも全部のコマンドを出力してくれてるので、それを読んだだけでうまいこといけた。

やりかたとしては

  • TUNE ボタンを押す (SWH16; スイッチホールド)
  • ディスプレイに現在の SWR が表示される
  • DS; で「ディスプレイに表示されている内容」を取得する
  • SWR とれる

という感じだった。いろいろとコードを追加して、現在周波数の±を指定してSWRを取得するコードを書いてみた。結構いい感じ

#!ruby
require 'serialport'
@port = SerialPort.new(
"/dev/tty.usbserial-A402PY11",
38400,
8,
1,
0
)
@port.set_encoding(Encoding::BINARY)
TEXT_MAP = {
'<' => 'L',
'>' => '-',
'@' => ' ',
'K' => 'H',
'M' => 'N',
'Q' => 'O',
'V' => 'U',
'W' => 'I',
'X' => 'c-bar',
'Z' => 'c',
'[' => 'r-bar',
'\\' => 'λ',
']' => '',
'^' => '',
}
def get_swr(step=3)
ret = 0
step.times do
@port << "DS;"
data = @port.gets(";")
t, a, f = *data.match(/DS(........)(.)(.)/).captures
t = t.split(//).reduce("") {|r, i|
chr = (i.ord & 0b01111111).chr
r << ( ( (i.ord & 1<<7) != 0) ? ("." + chr) : (chr) )
}.gsub(Regexp.new(TEXT_MAP.keys.map {|i| Regexp.escape(i) }.join("|")), TEXT_MAP)
# KX3 displays SWR to main display as following : "1.2-1"
if m = t.match(/([\d]+.[\d]+)-I/)
swr = m[1]
else
return nil
end
ret += swr.to_f
# p [t, a, f, swr]
end
ret / step
end
def get_freq
@port << "FA;"
res = @port.gets(";")
freq = res.match(/FA(\d{11})/)[1].to_i
end
def set_freq(freq)
@port << ("FA%011d;" % freq)
get_freq == freq or raise "Failed to set freq"
end
def bypass_atu(&block)
@port << "MN023;"
@port << "MP;"
current = @port.gets(";")
current =~ /^MP\d{3}/ or raise "Unknown Responde #{current}"
@port << "MP001;MP;"
res = @port.gets(";")
res == "MP001;" or raise "Failed to set KAT3 bypass: #{res}"
@port << "MN255;"
block.call
ensure
@port << "MN023;"
@port << current
@port << "MN255;"
end
def tune(&block)
# Switch Hold Emulation 16 = TUNE
@port << 'SWH16;'
sleep 0.5
@port << 'TQ;'
@port.gets(";") == 'TQ1;' or raise "Band END"
sleep 0.3
block.call
ensure
@port << "RX;"
sleep 0.5
@port << "TQ;"
@port.gets(";") == 'TQ0;' or raise "Failed to back to RX"
end
def scan_swr
result = []
@port << "PC;"
current_power = @port.gets(";")
@port << "PC001;PC;"
@port.gets(";") == "PC001;" or raise "Failed to set power"
bypass_atu do
freq = get_freq
step = 20e3
range = Range.new(freq - 100e3, freq + 100e3)
catch(:done) do
begin
set_freq(range.first)
tune do
range.step(step) {|n|
set_freq(n)
swr = get_swr(3)
if swr.nil?
throw :done
end
r = [n, swr]
p r
result << r
}
end
rescue => e
if e.message = "Band END"
range = Range.new(range.first + step, range.last)
retry
end
ensure
set_freq(freq)
end
end
end
result
ensure
@port << current_power
@port << "PC;"
@port.gets(";") == current_power or raise "Failed to back to power"
end
p scan_swr
view raw kx3-read-swr.rb hosted with ❤ by GitHub

  1. トップ
  2. tech
  3. KX3 でシリアルポートから SWR を読み出す

BUFFALO 無線LAN子機 コンパクトモデル 11n技術・11g/b対応 WLI-UC-GNM -

2.0 / 5.0

WLI-UC-GNM を使ってたんだけど、24時間つけっぱなしのサーバみたいな用途だと、過熱しすぎて止まってしまうことが多々あり、ぶっちゃけ使いもんにならんよ! という感じだった。つけっぱにしないなら使えるんだけど……

ので、GW-USNANO2A を買ってみた。

PLANEX 無線LAN子機 (USBアダプター型) 11n/g/b 150Mbps MacOS X10.10対応 GW-USNANO2A (FFP) -

3.0 / 5.0

が、めちゃくちゃ接続が切れまくる。

ping を打ち続ければ大丈夫なので、またパワーマネジメント系の問題か…と思ったが、iwconfig の結果は Power Management:off となっており、よくわからなかった。

調べてみると、このドライバに関してはカーネルモジュールに対するオプションによってパワーマネジメントを決めるらしい……

現在の状態は sysfs を通し

$ cat /sys/module/8192cu/parameters/rtw_power_mgnt 
1

で確認できる。1 だとパワーマネジメントが効いている。

$ sudo su
# echo 'options 8192cu rtw_power_mgnt=0' > /etc/modprobe.d/8192cu.conf
# reboot

すると、パワーマネジメントを切って起動させることができる。

$ cat /sys/module/8192cu/parameters/rtw_power_mgnt 
0

これで切れることがなくなった。

  1. トップ
  2. tech
  3. RaspberyPi 用の WiFi アダプタ探し。または GW-USNANO2A が切れまくるのをなおす

【ノーブランド品】USB 簡易電圧・電流チェッカー ストレート型 (3.4V~8.0V,0A~3A) -

5.0 / 5.0

これ安いし1個あるととても便利。USB 充電がちゃんと急速充電になっているか? とか実測でわかる。

充電専用というわけではなくて、普通の USB 機器に挟んでも使えるので、どのUSBデバイスがどれぐらい電力食っているかを実測できる。

似たようなのを自分で作ろうかと思っていたけど、買ったほうが遥かにやすい例

  1. トップ
  2. tech
  3. USB 電圧・電流計