adalm pluto (2) 自组网通信

2.自组网通信

接上一篇,其实对我来说plutosdr最有意义的是这个自组网通信的应用,上一篇讲的三维频谱图只是显示效果比较酷炫,而且可以脱机使用,但是其实频谱图本身不太稀奇,玩sdr看了不少能画频谱图的工具了。

但是这个自组网通信十分厉害,我认为它的优点有以下几个:

1.不需要像LTE基站那样,所有无线设备都必须围绕基站,脱离基站范围后终端不能互相通信。

2.所有信号处理都在sdr板子上完成,不需要电脑处理基带数据,这样电脑运行的操作系统是任意的。

3.部署快速,配置完成后,直接上电就能在几秒钟内开始运行。

4.所有无线口都可以自己加功放(得有业余无线电执照),可以实现远距离通信。

刷固件步骤其实比上一次讲的还要简单。

https://github.com/tvelliott/charon

到上面这个链接里下载,build_pluto_image是已经编译好的固件,这里面就一个文件pluto.frm,把它放到plutosdr的u盘里,然后弹出,就刷好了。

刷完以后还不能马上用。因为既然是自组网,到时候会有好多个设备接在一起,要确保所有设备的ip地址都是不一样的,而刚刷完固件后,ip都是一样的。我说的ip包含2个ip,一个是plutosdr自己的ip,还有接在plutosdr上的电脑的ip,都需要不一样。

比如我今天测试的时候有2个plutosdr,和两台电脑。

第一套设备的plutosdr ip是192.168.2.1,电脑ip(host ip)是192.168.2.10。

第二套设备的plutosdr ip是192.168.2.3,电脑ip(host ip)是192.168.2.50。

这些都在plutosdr的u盘里config.txt里面改。

# Device Configuration File
# Edit, Save and then Eject the USB Drive

[NETWORK]
hostname = pluto3
ipaddr = 192.168.2.3
ipaddr_host = 192.168.2.50
netmask = 255.255.255.0

[WLAN]
ssid_wlan = 
pwd_wlan = 
ipaddr_wlan = 

[USB_ETHERNET]
ipaddr_eth = 
netmask_eth = 255.255.255.0

[SYSTEM]
xo_correction = 
udc_handle_suspend = 0

[ACTIONS]
diagnostic_report = 0
dfu = 0
reset = 0
calibrate = 0

我的其中一个文件是这样的,为避免重复我把hostname也改为不一样的了,改完了保存后,弹出u盘就行。

但是我发现光这样还不行,如果用ssh登录plutosdr,它的ip其实还是默认的192.168.2.1,需要登录进去运行一遍重启服务

 /etc/init.d/S100-start_charon restart

才能把ip改过来,你可以看到终端窗口上启用了新ip,这时候ssh会中断,因为ip变了,所以以后都需要用新的ip才能登录。

我不知道这是不是bug,因为照道理设备启动就会启动这一套程序,而这个restart只不过是作者为了让人能在终端上看到设备状态才用的。不知道为啥设置ip也需要手动调用这个restart。

总之这样就设置好ip了。

设置完ip后,可能你会发现你电脑还是无法ssh登录plutosdr,这是因为plutosdr的dhcp服务有时候有点问题,你只需要在你电脑的网卡(plutosdr会在你的电脑上创建虚拟网卡)设置里手动设置ip就行,电脑ip就是你前面设置的host ip,网关和dns都是plutosdr的ip。 

这样其实就设置完成了,如果你是第一次使用还不太会用,你可以用之前运行过的那个restart命令在终端上观察一下plutosdr内部的报文。

程序一启动会有好多初始化,里面也会说有一些service有点问题,不用理会。

接着就是跳出下面这样的内容。

TAPDEV_IN -> RF_OUT , len=54
RF_IN->TAPDEV_OUT_, len=54, rssi: -77.4 dBm, rx EVM -22.7 dB, in-gain: 65 dB, d-rate 272 Kbps, #sub-carriers=64, mod: qam16
TAPDEV_IN -> RF_OUT , len=54
TAPDEV_IN -> RF_OUT , len=54
RF_IN->TAPDEV_OUT_, len=54, rssi: -82.6 dBm, rx EVM -21.7 dB, in-gain: 65 dB, d-rate 272 Kbps, #sub-carriers=64, mod: qam16
TAPDEV_IN -> RF_OUT , len=54
RF_IN->TAPDEV_OUT_, len=54, rssi: -88.4 dBm, rx EVM -21.9 dB, in-gain: 65 dB, d-rate 272 Kbps, #sub-carriers=64, mod: qam16
TAPDEV_IN -> RF_OUT , len=54
RF_IN->TAPDEV_OUT_, len=54, rssi: -78.9 dBm, rx EVM -20.9 dB, in-gain: 65 dB, d-rate 272 Kbps, #sub-carriers=64, mod: qam16
RF_IN->TAPDEV_OUT_, len=54, rssi: -76.2 dBm, rx EVM -23.7 dB, in-gain: 65 dB, d-rate 272 Kbps, #sub-carriers=64, mod: qam16
TAPDEV_IN -> RF_OUT , len=54
TAPDEV_IN -> RF_OUT , len=54
RF_IN->TAPDEV_OUT_, len=54, rssi: -82.1 dBm, rx EVM -21.1 dB, in-gain: 65 dB, d-rate 272 Kbps, #sub-carriers=64, mod: qam16
TAPDEV_IN -> RF_OUT , len=54
RF_IN->TAPDEV_OUT_, len=54, rssi: -76.5 dBm, rx EVM -27.9 dB, in-gain: 65 dB, d-rate 272 Kbps, #sub-carriers=64, mod: qam16
RF_IN->TAPDEV_OUT_, len=54, rssi: -89.3 dBm, rx EVM -25.0 dB, in-gain: 65 dB, d-rate 272 Kbps, #sub-carriers=64, mod: qam16
TAPDEV_IN -> RF_OUT , len=54

比较短的TAPDEV_IN -> RF_OUT表示你在发射。比较长的RF_IN -> TAPDEV_OUT_表示你从另一个plutosdr上收到的数据包。一开头你可能只有比较短的报文,没有长的报文,你可能要等待一会,挪动2个plutosdr(不是越近越好),或者调整一下频率(因为时钟有误差,导致你设置的915MHz,不一定正好在915MHz上,如果2个设备的收发频点对不上,就收不到了),如果看到比较长的那种报文,就表示大功告成了。

接下来你就可以在两台电脑上互相ping对方的ip了,比如在192.168.2.10那台电脑上ping 192.168.2.50。

一开头要等一段时间建立arp表,然后才会ping通,我这里实测ping的延迟在100ms以下。搞定以后也可以尝试ssh登录对方电脑并且复制文件,我实测速度80kbps,比原作的慢。原作4个节点,没有多跳状态下也能达到114kbps,理论应该在272kbps。

我估计是ppm导致的问题,我虽然能成功连接2个设备,但是还是有误差,导致浪费了一些资源。但是暂时还不敢去改这个参数。

我前两天用mobaxterm改配置文件,结果提示crc错误,然后那个plutosdr就变砖了,dfu模式也进不去,看来以后还是得用linux内部的vi来改。

这是我的一台电脑的照片,大的终端窗口是登录到plutosdr上然后显示的自组网程序的输出。小的终端窗口是我用的这台电脑在ping自组网里的另一个电脑的ip。

使用视频(2套系统): https://www.bilibili.com/video/BV1sa4y1j7PX/

猜你喜欢

转载自blog.csdn.net/shukebeta008/article/details/108754397