基于树莓派3B的潜航器的通信开发(1)

一、开发平台与材料

        树莓派3.b,ubuntu 16.04 LTS,QT,lora模块( E32 ,SX1276)


二、原理

        1.lora

              lora模块具有三种通信方式:定点传输,透明广播和空中唤醒模式,本脚本中采用定点传播模式(需要两个lora模块),在该模式下,模块的通信数据发送形式为十六进制,格式为:地址  信道  传输数据,其中地址为四个十六进制位,信道为两个,数据根据需求来定;eg:目标lora地址为0x00 01,信道为0x01,传输数据为'A',则给本端lora发送格式为0x00 01 01 41(A转换为十六进制为41),则目标lora模块会收到数据0x41,目标模块的TXD引脚会自动发送收到数据,目标端通过串口调试工具即可看到收到数据。
          模块的地址信道,工作模式配置以及引脚的连接见下图
          


                其中,配置工具为亿佰特公司提供,M0,M1引脚悬空时默认可以进行配置,而需要模块发送时则需要把M0,M1置高电平或者低电平,本脚本中两个均直接接GND(除了配置其他模式都不可悬空!)


        2.脚本

             lora作为USB直接与树莓派相连,Linux下一切均文件,因此以读写形式打开USB即可,默认目录为/dev/ttyUSB0,如果有多个串口相连需要通过串口序列号来识别,打开后接着需要配置串口的波特率、数据位、停止位、校验位等,该lora模块波特率位9600,其他配置按默认配置即可,最后便可以像读写文件一样进行发送接受了(写入文件相当于发送,读文件相当于接受)。
            本程序采用QT来写,因为其有丰富的API可以调用,方便后续开发,缺点是需要在潜航器上装QT的支持,QT写出的执行效率也会比较低,在工程量大之后影响会比较大,优化需要进行用C或者C++进行转化。
            本程序实现了基本的向lora发送数据,后续利用QT的readall便可以实现接受数据,设计一定的指令格式,接受到指令执行相应动作便可以实现两端的交互,代码会实时更新。

       3.源码

             https://github.com/XDTD/Ubuntu_Td

            目前内容基本全在main.cpp,后续会改变,运行sscom需要root权限以及QT支持,可参考一个linux 上的sscom调试工具

            https://github.com/kangear/sscom

            

猜你喜欢

转载自blog.csdn.net/qq_40405705/article/details/80599810
今日推荐