GNU Radio インストール

GNU Radio というものをインストールしてみました。

http://www.ettus.com/orderpage.html あたりから、ハードを購入すると
自由にソフトウェア無線がつかえるようです。

日本で使っているところは、確認したところ、2〜3カ所ぐらいしか見つかりませんでした。

とりあえず、このハードがほしいと思っているのですが、高い買い物なので購入する前にWindowsPCでどこまで動くか試してみました。


http://gnuradio.org/trac/wiki/CygwinInstallMain

Building a Minimal GNU Radio System

$ cd gnuradio-3.1.3/gnuradio-examples/python/audio
$ python dial_tone.py
まで実行して、イヤホンから音が出るところまで確認できた。

環境を整えるところが、ソースからコンパイルをしなくてはならないところが多数あ
るので、
Windows からcygwinをインストールして実行までこぎつけるには試行錯誤した時間も
あるが4時間ぐらいかかりました。

多分、きちんとAM変調とか通って、音が出ているものと思います。よくわからないですけど。

python ってそもそも何や?

見るからにオブジェクト指向っぽい言語ですが、道のりは遠そうです。

dial_tone.py のソース


#!/usr/bin/env python
#
# Copyright 2004,2005,2007 Free Software Foundation, Inc.
#
# This file is part of GNU Radio
#
# GNU Radio is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3, or (at your option)
# any later version.
#
# GNU Radio is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GNU Radio; see the file COPYING. If not, write to
# the Free Software Foundation, Inc., 51 Franklin Street,
# Boston, MA 02110-1301, USA.
#

from gnuradio import gr
from gnuradio import audio
from gnuradio.eng_option import eng_option
from optparse import OptionParser

class my_top_block(gr.top_block):

def __init__(self):
gr.top_block.__init__(self)

parser = OptionParser(option_class=eng_option)
parser.add_option("-O", "--audio-output", type="string", default="",
help="pcm output device name. E.g., hw:0,0 or /dev/dsp")
parser.add_option("-r", "--sample-rate", type="eng_float", default=48000,
help="set sample rate to RATE (48000)")
(options, args) = parser.parse_args ()
if len(args) != 0:
parser.print_help()
raise SystemExit, 1

sample_rate = int(options.sample_rate)
ampl = 0.1

src0 = gr.sig_source_f (sample_rate, gr.GR_SIN_WAVE, 350, ampl)
src1 = gr.sig_source_f (sample_rate, gr.GR_SIN_WAVE, 440, ampl)
dst = audio.sink (sample_rate, options.audio_output)
self.connect (src0, (dst, 0))
self.connect (src1, (dst, 1))


if __name__ == '__main__':
try:
my_top_block().run()
except KeyboardInterrupt:
pass