Linux Install Memo

Archive for 3月, 2010

□世界地図を使ってグリッドロケータを基にしたリンクマップを作る

by on 3月.12, 2010, under MEMO

まず世界地図だけど

http://www.freemap.jp/

上記サイトからミラー図法の白地図をもらってくる。

ここの地図は地図としての精度はアバウトでサイズも正しくないので、
大体のところに自分で加工しないといけない。とりあえずミラー図法を
落としてくるが、きちんとしたグリッドロケーターにしたいなら、より
正確な地図を用意する必要がある。

で、ミラー図法だけど

ミラー図法
http://ja.wikipedia.org/wiki/%E3%83%9F%E3%83%A9%E3%83%BC%E5%9B%B3%E6%B3%95

↑というように、緯度方向については補正が必要。

緯度をy、経度をxとしたとき、Miller図法では緯度が上記のように補正
される。

でも、この式の通りにPHPで書くと、というか書き方が間違えているの
かもしれないけど、なぜかうまく計算できないので、ここの説明どおり
にメルカトル図法の式をPHPで起こして、そこから補正値を作って、その
結果を0~90度までのテーブル(array)にした。

で、コールサインのプリフィックスと所在地の確認だが、

http://www.arrl.org/awards/dxcc/dxcclist.txt
http://dvi.elcom.cz/ok2pbq/prog/dxcclist.php

で現在のカントリリストが得られるが、より細かい地域までは得られない。
コールサインから直接グリッドロケータを得るのがいいのだが、さすがに
それはないので、コールサインで国を特定して、あとはルートヘッダーに
書いてある地域(?)からある程度引っ張ってくるしかないか。

Yahoo!APIを使おうと思ったら、日本のYahoo!APIは「Minas Brazil」とか
での検索に対応していない…ダサ。

というわけで、GoogleMapAPIを使うことにする。

・まずはAPI-IDの取得。

http://code.google.com/intl/ja/apis/maps/signup.html

ABQIAAAACfjwIpOZi2MmzXkniFTDURT_fxjiJ6IOwJpxFDXgOhcn9rl2vxSs3cnH-hgVRzCmV6SgvMo2xTmZSg

・続いてデベロッパガイドを読め、と。

http://code.google.com/intl/ja/apis/maps/documentation/index.html

この中に「サービス」として「ジオコーディング」があって、そこに
「HTTP リクエスト経由のジオコーディング」というのがある。

http://code.google.com/intl/ja/apis/maps/documentation/services.html#Geocoding_Direct

ここを参考に以下のようなスクリプトを作る。

<?
// 環境変数を設定する
date_default_timezone_set(“Asia/Tokyo”);

// 地図ローカルサーチ
$API_URL = ‘http://maps.google.com/maps/geo’;

// API ID
$API_ID = ‘ABQIAAAACfjwIpOZi2MmzXkniFTDURT_fxjiJ6IOwJpxFDXgOhcn9rl2vxSs3cnH-hgVRzCmV6SgvMo2xTmZSg’;
?>
<?

// 検索する地域文字列を設定
$TARGET_ADDR = htmlentities(“Minas Brazil”);

$TARGET_URL = $API_URL.’?key=’.$API_ID.’&q=’.$TARGET_ADDR.’&output=xml’;

// 指定した地域の緯度経度を取ってくるスクリプト for YAHOO!
// RSS(XML)読み込み
$RESULT_XML = simplexml_load_file($TARGET_URL);

// 取得できたなら
if ($RESULT_XML)
{
 print “<PRE>\n”;
 print_r($RESULT_XML);
// print $RESULT_XML->Response->Placemark->Point->coordinates.”\n”;
 print “</PRE>\n”;
}
?>

とすると、以下のような構造のXMLが返ってくる。
最後の方に緯度経度が入ってきている。

> SimpleXMLElement Object
> (
>     [Response] => SimpleXMLElement Object
>         (
>             [name] => Minas Brazil
>             [Status] => SimpleXMLElement Object
>                 (
>                     [code] => 200
>                     [request] => geocode
>                 )
>
>             [Placemark] => SimpleXMLElement Object
>                 (
>                     [@attributes] => Array
>                         (
>                             [id] => p1
>                         )
>
>                     [address] => Minas Gerais, Brazil
>                     [AddressDetails] => SimpleXMLElement Object
>                         (
>                             [@attributes] => Array
>                                 (
>                                     [Accuracy] => 2
>                                 )
>
>                             [Country] => SimpleXMLElement Object
>                                 (
>                                     [CountryNameCode] => BR
>                                     [CountryName] => Brasil
>                                     [AdministrativeArea] => SimpleXMLElement Object
>                                         (
>                                             [AdministrativeAreaName] => MG
>                                         )
>
>                                 )
>
>                         )
>
>                     [ExtendedData] => SimpleXMLElement Object
>                         (
>                             [LatLonBox] => SimpleXMLElement Object
>                                 (
>                                     [@attributes] => Array
>                                         (
>                                             [north] => -12.4189187
>                                             [south] => -23.2752013
>                                             [east] => -35.5950443
>                                             [west] => -51.9866463
>                                         )
>
>                                 )
>
>                         )
>
>                     [Point] => SimpleXMLElement Object
>                         (
>                             [coordinates] => -43.7908453,-17.9301780,0
>                         )
>
>                 )
>
>         )
>
> )
>

で、実際には

$RESULT_XML->Response->Placemark->Point->coordinates

が判ればいいので、これを経度,緯度で分離すればよい。
ちなみに東経(西経)0度(=グリニッジ子午線)、北緯(南緯)0度(=赤道)が基準。

Leave a Comment more...

□ハンディ機でnewqpskを試す-通らないんですけどね-

by on 3月.09, 2010, under MEMO

秋月のUSB-シリアルキットAE-UM232R(FT232RL)もVine5で認識できたので
当初の目標どおりI/Fを作って、Vine5でsoundmodemを使ってnewqpskという
モードでパケット通信をしようと試みたが、なぜか430MHzのハンディでは
通らない。(KENWOODのTH-K48で試した)

パソコンのSP←→MICではしっかりと通るので、たぶんに帯域の問題だろう
と思ってみたものの、調べるすべがないので、ハンディの帯域ってどうな
のよという思いでぐぐっていたら、まさにどんぴしゃ音声帯域をスイープ
して帯域特性を調べられるソフトに出会いました。(やっぱり無線屋さんの
ぺーじでしたか)

WaveSpectra
http://www.ne.jp/asahi/fa/efu/soft/ws/ws.html

周波数特性の測定方法まであります
http://www.ne.jp/asahi/fa/efu/soft/ws/fresp/meas_fresp.html

で、早速ここのWaveSpectraとWaveGeneを落としてきて、パソコン的には
SP←→MICでやる分にはもちろん上の方まで行くことは判りました。

ンじゃということで早速無線機からの音をPCのMICに突っ込んでみて、
newqpskの音の特徴を見てみたら…

あらら、予想では上がNGなのかとおもったら違うみたい!?
上はしっかりと22.5kHzの搬送波まであるなぁ。

下はというと…えー、ここいらからすとんと落ちてるし…

あちゃー、この辺にも確か搬送波があったはずなのに…

というわけで、どうも下のほうの搬送波が帯域から外れているのかな!?
うーん、ハンディの変調が悪いのか復調が悪いのか、もう少し調べて
みないとなんともですが、newqpskは固定機専用のモードってことかな!?

とりあえず、まだまだ遊べそうです。

2010.03.13 追加

固定機であるFT-847を引っ張り出してきて、これでもう一度スペクトラムを撮ってみた。
送信は相変わらずTH-K48で、FT-847で受信したnewqpsk信号をWinSpectraで見て
見ると…

 信号無しの状態

 信号ありの状態

やっぱり音声帯域の下のほうがカットされている…これではnewqpskの搬送波を
すべて通していないので復調できないわけですね。

ちなみにこれがafskの1200bps、メジャーなパケットのスペクトラム。

1700Hzのキャリアを中心に±500Hzくらいのところに二つの副搬送波が
ちゃんといます。

Leave a Comment more...

□秋月AE-UM232R(FT232RL)キットをVine5で認識させる

by on 3月.03, 2010, under MEMO

秋月で1,000円以下で売っているFT232RLを使ったUSBシリアルモジュールを
Vine5で認識させてみる。

っていうか、挿せば

> Feb 28 12:09:37 localhost kernel: usb 3-1: new full speed USB device using uhci_hcd and address 2
> Feb 28 12:09:38 localhost kernel: usb 3-1: configuration #1 chosen from 1 choice
> Feb 28 12:09:38 localhost kernel: usbcore: registered new interface driver usbserial
> Feb 28 12:09:38 localhost kernel: usbserial: USB Serial support registered for generic
> Feb 28 12:09:38 localhost kernel: usbcore: registered new interface driver usbserial_generic
> Feb 28 12:09:38 localhost kernel: usbserial: USB Serial Driver core
> Feb 28 12:09:38 localhost kernel: usbserial: USB Serial support registered for FTDI USB Serial Device
> Feb 28 12:09:38 localhost kernel: ftdi_sio 3-1:1.0: FTDI USB Serial Device converter detected
> Feb 28 12:09:38 localhost kernel: ftdi_sio: Detected FT232RL
> Feb 28 12:09:38 localhost kernel: usb 3-1: FTDI USB Serial Device converter now attached to ttyUSB0
> Feb 28 12:09:38 localhost kernel: usbcore: registered new interface driver ftdi_sio
> Feb 28 12:09:38 localhost kernel: ftdi_sio: v1.4.3:USB FTDI Serial Converters Driver
> Feb 28 12:09:50 localhost NetworkManager: <info>  (ttyUSB0): ignoring due to lack of mobile broadband capabilties

と、こんな感じて認識してくれる。

FT232RLを使ったUSBシリアルモジュールはあちこちで扱っていて、秋月
だけでなく、いろいろ楽しいキットを出しているStrawberryLinuxとか
でも扱ってます。

ただし挿したり抜いたりを繰り返すとttyUSBxの番号がttyUSB1、ttyUSB2
と進んでいってしまう。自分の場合には最終的にttyUSB2で落ち着いてる
ので、まあこの辺はmessagesを確認したり、固定方法(?)をそのうち調査
しようかと思う。

というわけで、soundmodemでこのttyUSBxをPTT制御として使えばOK。

> <?xml version=”1.0″?>
> <modem>
>   <configuration name=”ThinkPadx31″>
>     <channel name=”Channel 0″>
>       <mod mode=”afsk” bps=”1200″ f0=”1200″ f1=”2200″ diffenc=”1″/>
>       <demod mode=”afsk” bps=”1200″ f0=”1200″ f1=”2200″ diffdec=”1″/>
>       <pkt mode=”MKISS” ifname=”sm0″ hwaddr=”JS1FVG-10″ ip=”192.168.10.1″ netmask=”255.255.255.0″ broadcast=”192.168.10.255″/>
>     </channel>
>     <chaccess txdelay=”150″ slottime=”100″ ppersist=”40″ fulldup=”0″ txtail=”10″/>
>     <audio type=”soundcard” device=”/dev/dsp” halfdup=”0″/>
>     <ptt file=”/dev/ttyUSB0″/>
>   </configuration>
> </modem>

こんな感じで、<ptt~>のところに書けばよい。

このキットのRTS#にテスターを当てると3.3V来ているので、ためしに
何か送信してみる。

ping 192.168.10.1 -i 10

(※sm0として192.168.10.10/255.255.255.0 を soundmodemに設定してる)

すると、ピーパープーという音ともにこのピンが0Vに落ちることが判る。

送信時のLEDも確実に駆動させたいので、ジャンパーピンを変更してこの
ピンのIOを3.3Vから5Vにする。秋月のキットの場合には、モノによって
J1の意味(5Vか3.3Vか)の意味がまったく逆になっているので注意。

で、ここまでできたのでこのキットを使って無線機とパソコンを繋ぐI/F
を作ってみようと思う。

Leave a Comment more...

何かお探しですか?

下記に探しているキーワードを入力してください:

ただし、もし探し物が見つからなくてもがっかりしないでください。
それは『あなたがドキュメントを作りなさい』というお告げなのです。

リンクリンクリンク!

きっとあなたにとって役立つリンクです...