adalm pluto (2) mesh组网通信

2023-12-12 06:38
文章标签 通信 组网 mesh pluto adalm

本文主要是介绍adalm pluto (2) mesh组网通信,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2.mesh组网通信

接上一篇,其实对我来说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/

这篇关于adalm pluto (2) mesh组网通信的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/483601

相关文章

RabbitMQ工作模式中的RPC通信模式详解

《RabbitMQ工作模式中的RPC通信模式详解》在RabbitMQ中,RPC模式通过消息队列实现远程调用功能,这篇文章给大家介绍RabbitMQ工作模式之RPC通信模式,感兴趣的朋友一起看看吧... 目录RPC通信模式概述工作流程代码案例引入依赖常量类编写客户端代码编写服务端代码RPC通信模式概述在R

在Spring Boot中实现HTTPS加密通信及常见问题排查

《在SpringBoot中实现HTTPS加密通信及常见问题排查》HTTPS是HTTP的安全版本,通过SSL/TLS协议为通讯提供加密、身份验证和数据完整性保护,下面通过本文给大家介绍在SpringB... 目录一、HTTPS核心原理1.加密流程概述2.加密技术组合二、证书体系详解1、证书类型对比2. 证书获

Python模拟串口通信的示例详解

《Python模拟串口通信的示例详解》pySerial是Python中用于操作串口的第三方模块,它支持Windows、Linux、OSX、BSD等多个平台,下面我们就来看看Python如何使用pySe... 目录1.win 下载虚www.chinasem.cn拟串口2、确定串口号3、配置串口4、串口通信示例5

基于C#实现MQTT通信实战

《基于C#实现MQTT通信实战》MQTT消息队列遥测传输,在物联网领域应用的很广泛,它是基于Publish/Subscribe模式,具有简单易用,支持QoS,传输效率高的特点,下面我们就来看看C#实现... 目录1、连接主机2、订阅消息3、发布消息MQTT(Message Queueing Telemetr

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

vue2 组件通信

props + emits props:用于接收父组件传递给子组件的数据。可以定义期望从父组件接收的数据结构和类型。‘子组件不可更改该数据’emits:用于定义组件可以向父组件发出的事件。这允许父组件监听子组件的事件并作出响应。(比如数据更新) props检查属性 属性名类型描述默认值typeFunction指定 prop 应该是什么类型,如 String, Number, Boolean,

linux中使用rust语言在不同进程之间通信

第一种:使用mmap映射相同文件 fn main() {let pid = std::process::id();println!(

C++编程:ZeroMQ进程间(订阅-发布)通信配置优化

文章目录 0. 概述1. 发布者同步发送(pub)与订阅者异步接收(sub)示例代码可能的副作用: 2. 适度增加缓存和队列示例代码副作用: 3. 动态的IPC通道管理示例代码副作用: 4. 接收消息的超时设置示例代码副作用: 5. 增加I/O线程数量示例代码副作用: 6. 异步消息发送(使用`dontwait`标志)示例代码副作用: 7. 其他可以考虑的优化项7.1 立即发送(ZMQ_IM

数据集 3DPW-开源户外三维人体建模-姿态估计-人体关键点-人体mesh建模 >> DataBall

3DPW 3DPW-开源户外三维人体建模数据集-姿态估计-人体关键点-人体mesh建模 开源户外三维人体数据集 @inproceedings{vonMarcard2018, title = {Recovering Accurate 3D Human Pose in The Wild Using IMUs and a Moving Camera}, author = {von Marc