• 您的位置: 紫荷精灵 >> 经验技巧 >> 树莓派+电视棒=iGate Raspberry Pi + SDR dongle = APRS iGate
  • 树莓派+电视棒=iGate Raspberry Pi + SDR dongle = APRS iGate

  • 作者:admin  来源:原创  日期:2016/6/15 2:00:15
  • 前几日好好研究了一下APRS,一下子被他的魅力所吸引,但是我在家里或者单位的时候很难通过协会的中继上传我的信息,所以就有了自己架设iGate的想法,查找资料了解到电视棒加树莓派可以实现,正好手里有一个树莓派,网淘一个820T的电视棒,芯片采用小螃蟹瑞昱的RTL2832U,这东西本来是国外的地面数字电视使用,国内也可以收到部分电视信号,不过我是用他不务正业,关于RTL2832U如何被发现这个功能的还有一段演绎的故事,摘抄如下“一天某大牛买了这款电视棒,想在linux下看看动作片,然而官方只有Windows版本的驱动,心急火燎的他便开始着手编写linux下的电视棒驱动,过程中发现这款电视棒允许原始I/O采样的传输,可用于DAB/DAB+/FM解调。于是他拉起裤子,开始了进一步的研究…”

    首先你要有一个树莓派,给他安装一个标准的操作系统即可,系统默认关闭root用户,root密码为空,可以通过命令开启,使用过程中大部分通过sudo命令来提升权限,所以没有root也无所谓。

    Login:  pi  #默认用户名

    Password: raspberry   #默认密码

    sudo apt-get update
    sudo apt-get upgrade
    sudo apt-get dist-upgrade
    sudo rpi-update
    sudo reboot

    以上命令用于升级树莓派的各种应用,鉴于各位网速的关系,可以先将源修改为国内的,
    sudo vi  /etc/apt/sources.list
    注释掉原来的默认源,插入以下源
    deb http://mirrors.ustc.edu.cn/raspbian/raspbian/   wheezy main contrib non-free rpi
    deb http://mirrors.neusoft.edu.cn/raspbian/raspbian/ wheezy main contrib non-free rpi
    由于数据量不小,如果您的下载网速在1MB那么全部更新完应该可以在一个小时内。
    sudo apt-get remove –purge pulseaudio
    sudo apt-get autoremove
    rm -rf /home/pi/.asoundrc /home/pi/.pulse
    sudo reboot
    移除音频相关的,这一步我没有搞懂是做什么,第一次部署的时候,并没有做这一步,造成设备无法接收到手台发射的信标,但是可以用于SDR,可以收听fm和U/V段。

    sudo vi /etc/modprobe.d/raspi-blacklist.conf
    在文件中加入如下内容,此文件为黑名单文件,不让系统自动加载电视棒驱动
    blacklist dvb_usb_rtl28xxu
    blacklist rtl_2832
    blacklist rtl_2830
    修改完毕后,reboot重启

    sudo apt-get install git build-essential cmake libtool libusb-1.0-0-dev autoconf automake libfftw3-dev qt4-qmake libpulse-dev libx11-dev python-pkg-resources sox
    一口气将后续需要的所有软件安装上,由于软件都不大,所以这个过程还是比较快的。

    cd ~/
    sudo mkdir rtl
    cd rtl
    回到家目录,并新建一个目录rtl,实际上这个目录的位置应该在/home/pi/下,
    sudo git clone git://git.osmocom.org/rtl-sdr.git
    驱动程序
    sudo git clone https://github.com/asdil12/kalibrate-rtl.git
    校准程序
    sudo git clone https://github.com/EliasOenal/multimonNG.git
    用于解码收到的aprs信号(我推断,并不确定)
    sudo git clone https://github.com/asdil12/pymultimonaprs.git
    aprs代理程序
    以上四个包是今天的全部大菜。
    继续我们的操作,第一步安装编译驱动,一说编译我也头疼,还好这次都很顺利。
    cd rtl-sdr
    sudo mkdir build
    cd build
    cmake .. -DINSTALL_UDEV_RULES=ON
    make
    sudo make install
    sudo ldconfig
    编译安装了驱动并更新了连接库。
    好了执行命令,验证一下。
    rtl_test

    rtl_fm -M wbfm -f 90.0M | play -r 32k -t raw -e s -b 16 -c 1 -V1 –

    rtl_fm -M fm -f 144.390M | play -r 24k -t raw -e s -b 16 -c 1 -V1 –

    好了,到这一步大家就知道硬件已经正常驱动起来了,我们开始校准电视棒,据说由于大批量生产,和做工的不严谨,所以频率并不是十分精准,需要进行校正,在学习校正的过程中我竟然发现,这小小的电视棒还能收集手机的数据,不过据说是加密的哈,请大家不要胡乱抓包了,这也不是本文需要讨论的范围。

    cd ~/rtl/kalibrate-rtl
    git checkout arm_memory
    ./bootstrap
    ./configure
    make
    sudo make install
    kal -s GSM900
    以手机的900M频段为基准,搜索手机基站信号,我这里用树莓派死活搜不到,只能用Windows系统搜了搜,没想到竟然成功了,所以截图以win版代替,效果是一样的。


    kal -c 16 -v
    选择一个信号最强的频道,然后与这个频道进行校准,-c后面就是频道号。

    经过反复测试发现,在树莓派下指定35,同样可以扫描到基站信号了。

    大家可以多试几次,我是尝试了四次,四次的结果都不一样,最后选择了一组速度最快的作为基准。这个过程较慢,请耐心等待,可能会持续1到五分钟。

    cd ~/rtl/multimonNG
    sudo mkdir build
    cd build
    qmake ../multimon-ng.pro
    make
    sudo make install

    安装解码软件
    rtl_fm -f 144.390M -s 22050 – | multimon-ng -a AFSK1200 -A -t raw –
    执行效果

     

    cd ~/rtl/pymultimonaprs
    sudo python setup.py build
    sudo python setup.py install
    安装aprs代理软件

    ./keygen.py BH1EWI
    计算你的密码,请使用你的呼号,并且不要添加任何SSID,计算出来的密码留在一边待用。
    cp pymultimonaprs.json /etc/pymultimonaprs.json
    将启动模板文件拷贝到etc目录下,
    vi /etc/pymultimonaprs.json

    “callsign”: “BH1EWI-10”,                                //请修改成您自己的呼号,并添加SSID
            “passcode”: “998998”,                           //刚才计算出来的密码放在这里
            “gateway”: [“euro.aprs2.net:14580″,”asia.aprs2.net:14580”],  //默认的aprs服务器地址及端口,我将默认配置文件中的一个修改为亚洲地区了
            “append_callsign”: true,
            “source”: “rtl”,
            “rtl”: {
                    “freq”: 144.640,                   //接收信标的频点
                    “ppm”: -17.376,                  //刚才校正电视棒得到的差值数据
                    “gain”: 0,
                    “offset_tuning”: false,
                    “device_index”: 0
            },
            “alsa”: {
                    “device”: “default”
            },
            “beacon”: {
                    “lat”: 39.89850,                              //纬度坐标
                    “lng”: 116.32120,                            //经度坐标
                    “table”: “/”,
                    “symbol”: “&”,                                 //应该是默认图标代码,但是我没有找到对应的关系图,就用了默认的
                    “comment”: “RTL-SDR-APRS iGate”,  //设备显示信息,这个大家根据实际情况填写。
                    “status”: {
                            “text”: “Running on Raspberry Pi with RTL dongle”,  //显示的文本信息,主要是显示运行于什么设备,设备天线情况等。
                            “file”: false
                    },
                    “weather”: false,
                    “send_every”: 300,
                    “ambiguity”: 0
            }
    }

    执行pymultimonaprs

     

    cp pymultimonaprs.init /etc/init.d/pymultimonaprs
    sudo chmod +x /etc/init.d/pymultimonaprs
    sudo update-rc.d pymultimonaprs defaults
    拷贝启动脚本到启动目录
    给启动脚本增加可执行权限
    将程序设置为开机自启动,
    sudo /etc/init.d/pymultimonaprs start
    手动开启应用,同理可以使用如下命令关闭程序
    sudo /etc/init.d/pymultimonaprs stop

    至此,整个部署过程进行完毕,大家可以享受自己的iGate了。

  • 上一篇:安卓手机妙用
    下一篇:APRS离线救援实战应用