手把手教你打造自己的4G数传模块

2023-05-16

如何低成本打造自己的4G数传模块
大家好,现在给大家介绍一种简单的方法打造自己的4G数传。
在这里插入图片描述目录
一、背景 1
二、材料清单 2
2.1 G43模块 2
2.2 PSHAT接口板 5
三、使用方法 5
3.1 硬件连接 6
3.2 IOT Bridge注册,生成ServiceID 7
3.3 IOT Service 工具下载安装 7
3.4 IOTService 软件启动,填写ServiceID连接服务器 8
3.5 IOT Service 添加设备 9
3.6 配置串口波特率和虚拟通道 10
3.7 删除虚拟通道 15
3.8 连接MP 16

一、背景
现阶段做物联网的企业越来越多,物联网模块的价格和相应配套服务的价格也越来越低,功能也越来越稳定强大。但这些企业并没有针对航模常用的通信链路进行优化,直接拿过来用会不方便。为了解决模友的需求,不少无人机业内的硬件厂家推出了无人机专用的4G数传和图传。笔者使用过其中的几款,效果还是不错的。缺点是价格太高,不易被广大的模友接受。本论坛大神在论坛分享了低成本解决方案,笔者认真阅读了相关的帖子,确实很佩服这些大神。在此,再次表达对论坛大神的崇拜!大神的解决方案确实便宜可用,但是对绝大部分模友来讲,复制起来不简单。在此,笔者给大家介绍一种简单稳定的4G数传,价格接近传统的无线数传。笔者使用最少的步骤来实现4G数传功能,还请大家跟着步骤一步一步来,早日体会4G数传带来的乐趣。

二、材料清单
G43模块一个,链接:

https://detail.tmall.com/item.htm?spm=a230r.1.14.16.40071b11C4Judd&id=586629078887&ns=1&abbucket=4&skuId=4171604479007

PSHAT接口板一个链接, 爬山虎 4g数传传

https://item.taobao.com/item.htm?spm=a230r.1.14.1.39fc1aadwxrmgk&id=607912815997&ns=1&abbucket=4#detail

下面将分别介绍G43模块和PSHAT接口板。
2.1 G43模块在这里插入图片描述

G43是全网通模块,支持5-18V输入,自带nano SIM卡槽和TTL串口。G43适用于APM和pixhawk的通信,也适用于其他通信协议,以下是G43的产品参数。

在这里插入图片描述在这里插入图片描述在这里插入图片描述2.2 PSHAT接口板
单独的G43模块就可以实现4G数传功能,模友们可以找到对应的引脚焊接串口接线和供电线。但是飞线的方法毕竟不可靠,而汉枫没有提供适用于航模的小型安装板。为了解决接线的问题,笔者设计制作了如下图的安装板,带有JST供电插头、外挂nano SIM自弹卡座、GH1.25mm串口、SMA内孔天线座。将G43安装到PSHAT上,接上天线馈线就完成了安装。笔者定制了配套的数据线,可以很方便的连接标准的pixhawk飞控和USB转TTL模块。
在这里插入图片描述
将G43安装到PSHAT接口板上,注意安装的方向
在这里插入图片描述
三、使用方法
本文旨在帮助模友快速搭建4G数传,只叙述笔者认为必要的步骤。更详细的信息请参考汉枫提供的相关文档。
3.1 硬件连接
在这里插入图片描述
① 供电:支持5-18V输入,图中接入2S锂电池
② 数传:使用定制的数传线,黑线-GND、黄线-RXD、白线-TXD
③ SIM卡:nano SIM卡(G43和PSHAT上的卡槽同时只有一个可用),安装SIM卡时注意缺口朝里如下图
在这里插入图片描述
④ 指示灯:
在这里插入图片描述
⑤ RELOAD:长按RELOAD键3秒,恢复出厂设置
⑥ 天线:PSHAT的天线端子和G43的天线座扣在一起
3.2 IOT Bridge注册,生成ServiceID
IOT Bridge是汉枫提供的免费云平台。
① IOTBridge 云平台注册地址:

http://bridge.iotworkshop.com

② 打开 IOT Bridge 网页后,右上角点击“注册”,进入注册页面,如下图所示。填写用户名,密码,邮箱及邮箱收到的验证码,公司信息等所要求的内容。
在这里插入图片描述
③ 注册成功后,登录 IOT Bridge 平台,点击左侧“IOT Service”菜单,进入 ServiceID管理页面,如下图所示,点击“添加”, 生成一个 ServiceID,复制此 ID,用于IOTService 工具填写。
在这里插入图片描述
3.3 IOT Service 工具下载安装
IOT Service是汉枫提供的PC软件,可以在PC上虚拟出通信串口,MP或者QGC可以通过这个虚拟串口获取飞控数据。
下载路径如下:
主页(www.hi-flying.com) > 资源 > 下载中心 > 应用程序 > IOTService 点击下载按钮 进行下载。
在这里插入图片描述
下载后解压软件包,安装与PC系统对应的软件。

3.4 IOTService 软件启动,填写ServiceID连接服务器
点击“ IOTService”图标,打开 IOT Service 管理页面,如下显示:
在这里插入图片描述
在 IOT Service 软件中依次点击 “设置” > “软件设置”,打开如下页面:
使能远程连接:选择 Enable
服务器标志:填写在 IOTBridge 添加的 ServiceID (注意不是 UserID)
IOT Bridge 服务器端地址采用默认设置即可,无需修改。
点击“确认”后,IOT Service 工具会重启。
在这里插入图片描述
若有新版本,请点击“升级”后,重新打开软件。
连上服务器后,软件右侧显示图标“ 已连接服务器”
在这里插入图片描述
注意:
① 本工具基于 JRE 环境,不能正常启动显示该界面时,请重新安装下电脑 Java 环境,Java
下载地址为:https://www.java.com/
② IOTService中英文界面切换按钮点击“中文“”English”进行且切换。
③ 为了保证 IOT Servcie正常使用,请右键勾选“以管理员身份运行此程序”
④ 部分电脑出现不能发现设备时,请选择“关闭 Windows Defender 防火墙”

3.5 IOT Service 添加设备
① 设备上电,连上Internet网络
② 打开 IOTService 软件,等待显示“已连接服务器”
③ 查找设备 MAC 地址,一般通过如下方式获取到设备 MAC 地址:
查看设备外壳上的标贴,标注的IMEI码后面有一串字符,后12位字母或数字为MAC地址
④ 在 IOTService 软件上面,选择“设置->添加设备”,会弹出一个添加设备对话框,如下图所示,在 MAC 地址栏输入设备的 MAC 地址,点击“添加”,然后点击“确认”,完成设备添加过程。
在这里插入图片描述
⑤ 添加完成后,IOTService 主页面会显示已添加的设备并显示设备相关信息,如下图所示:
在这里插入图片描述
3.6 配置串口波特率和虚拟通道
添加完设备,当设备状态显示“在线”时,可以查看和编辑设备参数。
点击选中设备
在这里插入图片描述
点击子菜单“设备编辑”进入页面
在这里插入图片描述
在下拉菜单中将波特率设置为57600,适配pixhawk和APM。
点击“虚拟通道”
在这里插入图片描述
进入虚拟通道列表
在这里插入图片描述
点击“添加虚拟通道”
在这里插入图片描述
下拉菜单中设置空闲的COM口(根据自己情况设置),点击确认退出
在这里插入图片描述
点击“关闭”退出
在这里插入图片描述
点击“确认”退出,弹出对话框
在这里插入图片描述
点击“确认”回到主界面,一般一分钟内虚拟通道建立完成,显示如下界面
在这里插入图片描述
在主界面点击“虚拟通道”
在这里插入图片描述
弹出对话框,显示当前虚拟串口状态
在这里插入图片描述
点击“关闭”退回到主界面。

3.7 删除虚拟通道
在本界面点击红色按钮可以删除当前虚拟通道
在这里插入图片描述
3.8 连接MP
打开MP地面站,在对应位置选择指定的COM口和波特率,点击连接
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

手把手教你打造自己的4G数传模块 的相关文章

  • C++小结 析构函数、函数后面接冒号 等等

    讲在前面 本小结有析构函数 C 43 43 函数后面接 xff1a 的含义 C 43 43 中public protected及private用法 条件运算符 fabs 和abs 区别 C 43 43 中的结构体内的函数 类中成员函数声明后
  • C++学习笔记:子类构造函数中冒号的使用 — 同时创建父类和子类对象

    C 43 43 中 xff0c 子类对象创建需要预先创建父类对象 xff0c 对象销毁顺序与此相反 假如父类构造函数只存在有参构造 xff0c 在子类对象实例化之前 xff0c 便需要创建一个父类对象 xff0c 在不存在默认无参构造情况下
  • C语言头文件详解

    1 include的作用 简单一句话 xff1a 在include的地方 xff0c 把头文件里的内容原封不动的复制到引用该头文件的地方 2 头文件的引用 头文件引用有两种形式 xff1a include lt stdio h gt 和 i
  • 字符数组进行复制需要加结束符‘\0’

    如想将str1数组内容复制到str2中 xff08 不用strcpy xff0c 如果按照以下格式复制 xff09 xff0c 需要加字符结束符 0 xff1b span class token macro property span cl
  • 学习Kafka

    1 Kafka是什么 xff1f 学习Kafka的目的 xff0c 为了解决高吞吐量项目的需求 xff0c Kafka号称大数据的杀手锏 xff0c 这款为大数据而生的消息中间件 xff0c 以其百亿级tps的吞吐量名声大噪 xff0c 迅
  • cmake命令之option使用案例

    option的命令形式如下 option lt variable gt 34 lt help text gt 34 value option简介 cmake中option起到编译开关的作用 xff0c CMakeLists txt中opti
  • docker学习

    现代软件开发的一大目的就是隔离 xff0c 应用程序在运行时相互独立互不干扰 xff0c 这种隔离实现起来是很不容易的 xff0c 其中一种解决方案就是上面提到的虚拟机技术 xff0c 通过将应用程序部署在不同的虚拟机中从而实现隔离 但是虚
  • 3.编写CMakeLists文件

    本章将介绍为您的软件编写有效的 CMakeLists 文件的基础知识 它将涵盖处理大多数项目所需的基本命令和问题 虽然 CMake 可以处理极其复杂的项目 xff0c 但对于大多数项目 xff0c 你会发现本章的内容会告诉你所有你需要知道的
  • boost库简介

    欢迎来到boost org Boost 提供免费的经过同行评审的可移植 C 43 43 源库 我们强调与 C 43 43 标准库配合良好的库 Boost 库旨在广泛使用 xff0c 并可用于广泛的应用程序 Boost 许可证鼓励所有用户以最
  • 解决mavros源码安装过程中wstool update -t src -j4报错(网络限制)问题

    继上一篇解决了mavlink安装的网络问题后 xff0c 没想到这个指令更新也需要链接到github 而直接执行时 xff0c 报错 xff1a span class token punctuation span mavlink span
  • QT事件详解

    一 简介 在Qt中 xff0c 事件作为一个对象 xff0c 继承自 QEvent 类 xff0c 常见的有键盘事件 QKeyEvent 鼠标事件 QMouseEvent 和定时器事件 QTimerEvent 等 xff0c 与 QEven
  • QT事件系统之二:鼠标事件和滚轮事件

    一 QMouseEvent的详细描述 QMouseEvent 类用来表示一个鼠标事件 xff0c 当在窗口部件中按下鼠标 释放鼠标和移动鼠标指针时 xff0c 都会产生鼠标事件 QMouseEvent 利用 QMouseEvent 类可以获
  • Qt事件系统之三:键盘事件

    QKeyEvent类用来描述一个键盘事件 当键盘按键被按下或者被释放时 xff0c 键盘事件便会被发送给拥有键盘输人焦点的部件 QKeyEvent的key 函数可以获取具体的按键 xff0c 对于Qt中给定的所有按键 xff0c 可以在帮助
  • 第一个自己写的程序

    22年8月份花了三周时间快速过了一遍某站一位大佬的视频 xff0c 前几天刷朋友圈时偶然看见一位道友写了个矩阵乘积的计算器 xff0c 瞬间给了我灵感 xff0c 直接开始操作 理想很丰满 xff0c 现实很扯淡 xff0c 刚开始写了个4
  • CEF学习质料

    目录 一 编译CEF3里的lib xff1a 1 下载CEF3 http opensource spotify com cefbuilds index html 2 下载CMake xff0c 运行CMake GUI exe 3 CMake
  • 【无标题】

    5 1 内存模型基础 这里从两方面来讲内存模型 xff1a 一方面是基本结构 xff0c 这与事务在内存中是怎样布局的有关 xff1b 另一方面就是并发 对于并发基本结构很重要 xff0c 特别是在低层原子操作 所以我将会从基本结构讲起 C
  • C++`中的原子操作和原子类型

    5 2 C 43 43 中的原子操作和原子类型 原子操作 是个不可分割的操作 在系统的所有线程中 xff0c 你是不可能观察到原子操作完成了一半这种情况的 xff1b 它要么就是做了 xff0c 要么就是没做 xff0c 只有这两种可能 如
  • 编写一个使用锁的线程安全查询表

    6 3 基于锁设计更加复杂的数据结构 栈和队列都很简单 xff1a 接口相对固定 xff0c 并且它们应用于比较特殊的情况 并不是所有数据结构都像它们一样简单 xff1b 大多数数据结构支持更加多样化的操作 原则上 xff0c 这将增大并行
  • __declspec(dllexport)和__declspec(dllimport)以及QT中public: static struct QMetaObject const xxx:staticMe

    假设你的头文件如下 xff1a span class token macro property span class token directive hash span span class token directive keyword

随机推荐

  • /MD 与 /MT、/MTD与/MDD的区别

    VS在 属性页的 C C 43 43 gt Code Generation gt Runtime Library 一项中总共有四个选项 MD 与 MT MTD与 MDD xff0c 它们分别有什么区别 xff1f 1 MD 与 MT 用于R
  • C++多线程案列

    C 43 43 多线程案列 话不多说 xff0c 直接上代码 xff1a span class token comment CMakeList txt ThreadDemo1 的 CMake 项目 xff0c 在此处包括源代码并定义 spa
  • 右值引用、移动语义、完美转发

    右值引用 移动语义 完美转发 左值 右值 xff1a 在c 43 43 中 xff0c 所有的值不是左值 xff0c 就是右值 有名字的对象都是左值 xff0c 右值没有名字 还有一个可以区分左值和右值的方法 xff1a 看能不能对表达式取
  • Deep Meta Learning for Real-Time Target-Aware Visual Tracking 论文阅读

    这篇文章是韩国的一个组做的 一直没中 直到19年中了ICCV xff0c 据说是第一篇将元学习引入目标跟踪的文章 xff0c 用的架构是siamese网络的架构 xff0c 但是在模型在线更新的时候使用了meta learning的思想 M
  • 单链表倒序

    单链表倒序 题目来源 牛客网 题目描述 输入一个链表 xff0c 按链表从尾到头的顺序返回一个ArrayList span class token keyword public span span class token keyword c
  • VS2019中编写C语言

    建立C 43 43 控制台程序 xff0c 将main函数所在的文件后缀名从cpp改成c xff0c 然后复制下列模板即可 xff1b 模板如下 xff1a dsa zju cpp 此文件包含 34 main 34 函数 程序执行将在此处开
  • CMake编译工程/第一个CMakeLists.txt(最详细案例演示)

    目录 在 linux 平台下使用 CMake 构建C C 43 43 工程的流程 当前项目目录结构 最小CMake工程 进入文件夹5 3 1 xff0c VScode打开项目文件5 3 1 在项目5 3 1顶层目录中 xff0c New F
  • 数据分析岗-机器学习相关知识

    1 解释共线性 我们进行回归分析需要了解每个自变量对因变量的单纯效应 xff0c 多重共线性就是说自变量间存在某种函数关系 xff0c 如果你的两个自变量间 xff08 X1和X2 xff09 存在函数关系 xff0c 那么X1改变一个单位
  • make,Makefile简易教程

    一 概述 make是一个类UNIX系统下的编译命令 xff0c 也可以理解为一个项目管理工具 xff0c 通过make可以按照自己指定的编译命令编译整个项目 xff0c 相当于将在命令行的编译命令按序执行 xff0c 省去了反复键入编译命令
  • @Transactional注解事务失效的七种原因分析

    64 Transactional是一种基于注解管理事务的方式 xff0c spring通过动态代理的方式为目标方法实现事务管理的增强 64 Transactional使用起来方便 xff0c 但也需要注意引起 64 Transactiona
  • C头文件相互包含

    今天遇见一个很头疼的事 xff0c 就是1 h头文件包含2 h xff0c 但是1 h里面却找不到2 h定义的一个结构体变量 最后排查发现是2 h里面又包含了1 h导致的 C语言中头文件包含的处理原则 之前一直以为 xff0c 一个 c文件
  • spring-kafka通过@KafkaListener实现消费者监听流程分析

    文章目录 主流程处理EnableKafka注解实现BeanPostProcessor接口postProcessAfterInitialization扫描 64 KafkaListenerregisterListenerContainer注册
  • c语言strrchr函数,strrchr_字符串 | Strings_C_参考手册_非常教程

    strrchr 在头文件中定义 char strrchr const char str xff0c int ch 通过 str 指向的以空字符结尾的字节字符串 每个字符解释为无符号字符 查找 ch 的最后一次出现 在转换为 char 之后
  • cmake中多级CMakeLists.txt调用

    文章目录 一 工程目录结构二 工程源代码2 1 上层目录2 1 1 cmaketest CMakeLists txt2 1 2 cmaketest main cpp2 1 3 cmaketest inc func1 hpp2 1 4 cma
  • c++ 函数后面加一个冒号的含义

    转载自 xff1a https www cnblogs com Allen rg p 11529949 html 冒号后面跟的是赋值 xff0c 这种写法是C 43 43 的特性 括号赋值只能在变量定义并初始化中 不能用在变量定义后再赋值
  • 理解死锁产生的四个必要条件

    死锁的定义 死锁是指两个或两个以上的进程在执行过程中 xff0c 由于竞争资源或者由于彼此通信而造成的一种阻塞的现象 xff0c 若无外力作用 xff0c 它们都将无法推进下去 此时称系统处于死锁状态或系统产生了死锁 xff0c 这些永远在
  • c++ error 2064: term does not evaluate to a function taking 1 arguments解决方法

    首先来看一个简单的示例 xff1a class T public T 61 default T 61 default int convertToInt double x return ceil x void doSomething vect
  • SZU_OnlineJudge_C++多态实验总结

    父类和子类的赋值问题 1 子类可以直接赋值给父类 如Cpoint 61 CRect 2 通过强制类型转换 xff0c 可以让父类赋值给子类 如 Cpoint Crect 61 cpoint 3 派生类对象指针 或引用 可以赋值给基类对象指针
  • 奇偶校验码原来这样算!!!

    数据传输的正误 数据发出方A像数据接收方B发送一串加密过后的情书 但是信息在传输过程中可能发生错误 比如某人截获并修改内容 一段美好的爱情就结束了 手动狗头 在电路传输中 电信号很容易受到干扰 电梯打电话你就知道了 于是我们要在原有的信息之
  • 手把手教你打造自己的4G数传模块

    如何低成本打造自己的4G数传模块 大家好 xff0c 现在给大家介绍一种简单的方法打造自己的4G数传 目录 一 背景 1 二 材料清单 2 2 1 G43模块 2 2 2 PSHAT接口板 5 三 使用方法 5 3 1 硬件连接 6 3 2