【雕爷学编程】Arduino动手做(193)---移远 BC20 NB+GNSS模块7

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百九十三:Gravity: I2C & UART BC20 NB-IoT & GNSS通信模块
NB-IoT广域低功耗无线通信 GPS/北斗精准定位 户外物联网必备

在这里插入图片描述
在这里插入图片描述
知识点:移远BC20
BC20 是一款高性能、低功耗、多频段、支持 GNSS 定位功能的 NB-IoT 无线通信模块。其尺寸仅为 18.7 mm × 16.0 mm× 2.1 mm,能最大限度地满足终端设备对小尺寸模块产品的需求,同时有效帮助客户减小产品尺寸并优化产品成本。

BC20 在设计上兼容移远通信 GSM/GPRS/GNSS 系列 MC20 模块,方便客户快速、灵活的进行产品设计和升级。BC20提供丰富的外部接口和协议栈,同时支持中国移动 OneNET、中国电信 IoT 以及阿里云 IoT 等物联网云平台,为客户的应用提供极大的便利。

基于先进的 GNSS 技术,BC20 可支持 BeiDou 和 GPS 双卫星导航系统解调算法,使其定位更加精准、抗多路径干扰能力更强,比传统的单 GPS 定位模块具有更多优势。另外,BC20 模块内置 LNA 和低功耗算法:前者保证更高的灵敏度,后者保证低功耗模式下更低的耗流。

相较传统的 NB-IoT + GNSS 方案,BC20 的一体化设计使其体积减少 40 %。凭借其紧凑尺寸、超低功耗和超宽工作温度范围,BC20 在各种应用中占具更大优势;其主要应用领域为:自行车和摩托车防盗、宠物追踪、金融财产追踪及行车记录仪等等。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百零九:Gravity: I2C & UART BC20 NB-IoT & GNSS通信模块
NB-IoT广域低功耗无线通信 GPS/北斗精准定位 户外物联网必备
项目之十:通过 USB 串口向 BC20 模块发送 AT 命令

实验开源代码

/*【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)实验二百零九:Gravity: I2C & UART BC20 NB-IoT & GNSS通信模块NB-IoT广域低功耗无线通信 GPS/北斗精准定位 户外物联网必备项目之十:通过 USB 串口向 BC20 模块发送 AT 命令实验接线:BC20       UNOVIN        5VGND        GNDSCL        A5SDA        A4
*/#include "DFRobot_BC20_Gravity.h"//RGB有7种颜色可供选择
#define  RED 0
#define  BLUE 1
#define  GREEN 2
#define  YELLOW 3
#define  PURPLE 4
#define  CYAN 5
#define  WHITE 6//IIC通讯
#define USE_IIC//硬件串口通讯
//#define USE_HSERIAL//软件串口通讯
//#define USE_SSERIALDFRobot_BC20_IIC myBC20(0x33);void setup() {Serial.begin(115200);myBC20.LED_OFF();//初始化 BC20Serial.print("正在启动BC20,请稍等...... ");myBC20.changeColor(RED);while (!myBC20.powerOn()) {Serial.print(".");myBC20.LED_ON();delay(500);myBC20.LED_OFF();delay(500);}Serial.println("BC20 启动成功!");/* 每次开机时都会自动启用深度睡眠模式。当进入此模式时,BC20 不会响应任何来自控制器的 AT 命令禁用睡眠模式以确保 BC20 始终响应 AT 命令*/myBC20.configSleepMode(eSleepMode_Disable);/* * 每个 AT 命令应以“AT”或“at”开头,以“回车”结尾。* 命令可以是大写或小写,比如:“AT+CSQ”或“at+csq”。*/Serial.println("输入 AT 命令:");
}void loop() {//*与 BC20 的串行透传if (Serial.available()) {myBC20.sendATCMDBychar((char)Serial.read());}if (myBC20.available()) {Serial.println(myBC20.readData());}
}

实验串口返回情况

在这里插入图片描述

常用的AT命令:
AT - AT 命令测试
AT+QRST=1 - 重置 BC20
ATI - 固件版本的修订
AT+CSQ - 信号质量报告
0 - <=-113 dBm
1 - -111 dBm
2 - -109 dBm
3 - -107 dBm
… …
30 - -53 dBm
31 - >-51 dBm
99 - 未知或无法检测
AT+CGATT - PS 附加或分离。查询网络连接状态。
0 - 与网络断开连接
1 - 已连接到网络
AT+CGATT=1 - 连接到网络
AT+CGATT=0 - 断开网络连接
AT+CIMI - 查询BC20的IMSI号
AT+CGSN=1 - 查询BC20的IMEI。
AT+CGSN=0 - 查询 BC20 的 SN(序列号)。
AT+QCCID - USIM 卡标识 (ICCID)。这通常用于检查 SIM 卡状态。
AT+CCLK - 返回当前日期和时间
AT+QPOWD=0 - 关闭模块电源。(使用“myBC20.powerOn()”打开模块电源)

以下 AT 命令用于 GNSS:
AT+QGNSSC - 查询GNSS电源状态
0 - GNSS 电源关闭
1 - GNSS 开机
AT+QGNSSC=1 - 打开 GNSS
AT+QGNSSC=0 - 关闭 GNSS
AT+QGNSSRD - 获取所有 GNSS 信息

更多详情请参考《移远通信BC20 AT指令手册》
或“BC20 GNSS AT 命令手册”

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百零九:Gravity: I2C & UART BC20 NB-IoT & GNSS通信模块
NB-IoT广域低功耗无线通信 GPS/北斗精准定位 户外物联网必备
项目十一:最简单的BC20模块测试程序:测量NB-IoT的信号强度

实验开源图形编程(Mind+、Mixly、编玩边学)

在这里插入图片描述
实验串口返回情况

在这里插入图片描述

实验硬件说明
1、NB-IoT天线
NB-IoT通信和GNSS定位功能需要外接天线。用户可使用产品包装中所提供的天线,也可额外购买兼容的外接天线以进一步增强收发信号的能力或作为备用。

开发板支持B5/B8这两个频段的NB-IoT通信,而目前国内移动、电信、联通三大运营商NB-IoT也主要运行在在这两个频段,具体参数如下:
国内NB-IoT主要运营商与通信频段

在这里插入图片描述

用户可使用覆盖B5/B8频段(即工作频率在824MHz~960MHz)的PCB天线(产品附送)、FPC柔性PCB天线、弹簧天线、胶棒天线等各类天线,通常用于2G/GSM/GPRS蜂窝通信的天线也可用于NB-IoT通信(只要工作频率覆盖B5/B8频段),需要注意天线的接头为1代 IPEX接头。

2、GNSS天线
开发板支持GPS/BeiDou(北斗)双星定位导航,具体参数如下:
GNSS工作频段

在这里插入图片描述
用户可使用有源GPS/BeiDou(北斗)双频陶瓷天线,也可使用单频的有源GPS或BeiDou(北斗)陶瓷天线,需要注意天线的接头为1代 IPEX接头。
建议使用正方形的右旋圆极化有源陶瓷天线,以便和卫星信号极化匹配,获得更好的信号。陶瓷天线形状为正方形的为右旋圆极化,长方形为线极化。
不建议使用无源天线。无源天线需要配合LNA放大器来提高接收信号的强度,而开发板并未搭载LNA放大器。

3、SIM卡
NB-IoT通信需要专用的NB-IoT物联网SIM卡,如手机SIM卡,4G物联网卡等其它类型的SIM卡无法代替。目前产品包装内包含有一张中国联通NB-IoT物联网专用SIM卡,包含一份年度基础套餐,插入NB-IoT开发板或通信模组内即可使用,若流量满足不了使用需求,可通过充值月度流量包增加当月流量。后续将会推出更多运营商的NB-IoT物联网专用SIM卡供用户选择。联通NB-IoT SIM卡资费情况如下表:

在这里插入图片描述

注意
#根据国家工业和信息化部等六部门要求,为有效防范和打击通讯信息诈骗,所有NB-IoT物联网专用SIM卡均具有机卡绑定功能,不可取消。
#SIM卡插入设备,首次上电(与基站)成功通信即视为激活且与通信模组绑定(机卡绑定),开始年度计费周期(360天)。
#2G/3G/4G手机SIM卡或大流量物联网卡无法代替用于NB-IoT设备。
#物联网SIM卡不能用于手机、平板、2G/3G/4G模组等非NB-IoT设备,否则会导致SIM卡停机。
#已机卡绑定的SIM卡若被插入其它设备内进行通信会导致SIM卡停机。
#物联网SIM卡仅能数据传输,无语音通信和短信功能。
#用户可通过微信搜索并关注公众号“DF物联网”,自助查询SIM流量使用情况或对SIM卡进行充值。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百零九:Gravity: I2C & UART BC20 NB-IoT & GNSS通信模块
NB-IoT广域低功耗无线通信 GPS/北斗精准定位 户外物联网必备
项目十二:通过串口查询全球导航卫星系统GGA协议的信息

实验开源代码

/*【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)实验二百零九:Gravity: I2C & UART BC20 NB-IoT & GNSS通信模块NB-IoT广域低功耗无线通信 GPS/北斗精准定位 户外物联网必备项目十二:通过串口查询全球导航卫星系统GGA协议的信息实验接线:BC20       UNOVIN        5VGND        GNDSCL        A5SDA        A4
*/#include "DFRobot_BC20_Gravity.h"//RGB有7种颜色可供选择
#define  RED 0
#define  BLUE 1
#define  GREEN 2
#define  YELLOW 3
#define  PURPLE 4
#define  CYAN 5
#define  WHITE 6//IIC通讯
#define USE_IIC//硬件串口通讯
//#define USE_HSERIAL//软件串口通讯
//#define USE_SSERIALDFRobot_BC20_IIC myBC20(0x33);
void setup() {Serial.begin(115200);myBC20.LED_OFF();//初始化 BC20Serial.print("正在启动BC20,请稍等...... ");myBC20.changeColor(RED);while (!myBC20.powerOn()) {Serial.print(".");myBC20.LED_ON();delay(500);myBC20.LED_OFF();delay(500);}Serial.println("BC20 启动成功!");//禁用睡眠模式myBC20.configSleepMode(eSleepMode_Disable);//启动 GNSSSerial.print("打开全球导航卫星系统...  ");myBC20.setQGNSSC(ON);myBC20.changeColor(YELLOW);if (myBC20.getQGNSSC() == OFF) {Serial.print(".");myBC20.LED_ON();delay(500);myBC20.LED_OFF();delay(500);}Serial.println("GNSS 开启");myBC20.changeColor(CYAN);
}void loop() {myBC20.getQGNSSRD(NMEA_GGA);/*UTC 时间,格式:hhmmss.ss,例如。162436.54 => 16:24:36.54h - 小时m - 分钟s - 秒*/Serial.print("UTC 时间: ");Serial.println(sGGA.UTC_Time());/*纬度,格式:ddmm.mmmmm,例如。3150.7820 => 31 度 50.7820 分钟d - 度m - 分钟*/Serial.print("纬度: ");Serial.print(sGGA.LatitudeVal());Serial.print(" ");/*北纬或南纬N - 北S - 北*/Serial.println(sGGA.LatitudeDir());/*经度,格式:dddmm.mmmmm,例如。12135.6794 => 121 度 35.6794 分钟d - 度m - 分钟*/Serial.print("经度: ");Serial.print(sGGA.LongitudeVal());Serial.print(" ");/*经度标识E - 东W - 西*/Serial.println(sGGA.LongitudeDir());/*修复状态0 - 度1 - GPS 定位2 - DGPS 修复*/Serial.print("修复状态: ");Serial.println(sGGA.Status());//使用的卫星数量 (0 - 24)Serial.print("卫星数量: ");Serial.print(sGGA.StatelliteNum());Serial.println(" 颗在使用中");//显示水平精度因子Serial.print("水平精度因子: ");Serial.println(sGGA.HDOP());//海拔,根据WGS84椭球的高度,单位为米Serial.print("海拔: ");Serial.print(sGGA.Altitude());Serial.println(" m");//地理ID分隔,WGS84 椭球以上GeoID(指海平面)的高度,单位为米Serial.print("地理ID分隔: ");Serial.print(sGGA.GeoID_Separation());Serial.println(" m");//DGPS数据的累计时间,不使用DGPS则为空,单位为秒Serial.print("DGPS 计时: ");Serial.println(sGGA.DGPS_Age());//DGPS站号,如果不使用DGPS则为空Serial.print("DGPS站号: ");Serial.println(sGGA.DGPS_StationID());Serial.println();myBC20.clearGPS();myBC20.LED_ON();delay(500);myBC20.LED_OFF();
#ifndef ARDUINO_ESP32_DEVdelay(500);
#elsedelay(5000);
#endif
}

实验串口返回情况

在这里插入图片描述
G P G G A 例: GPGGA 例: GPGGA例:GPGGA,092204.999,4250.5589,S,14718.5084,E,1,04,24.4,19.7,M,0000*1F
字段0:$GPGGA,语句ID,表明该语句为Global Positioning System Fix Data(GGA)GPS定位信息
字段1:UTC 时间,hhmmss.sss,时分秒格式
字段2:纬度ddmm.mmmm,度分格式(前导位数不足则补0)
字段3:纬度N(北纬)或S(南纬)
字段4:经度dddmm.mmmm,度分格式(前导位数不足则补0)
字段5:经度E(东经)或W(西经)
字段6:GPS状态,0=未定位,1=非差分定位,2=差分定位,3=无效PPS,6=正在估算
字段7:正在使用的卫星数量(00 - 12)(前导位数不足则补0)
字段8:HDOP水平精度因子(0.5 - 99.9)
字段9:海拔高度(-9999.9 - 99999.9)
字段10:地球椭球面相对大地水准面的高度
字段11:差分时间(从最近一次接收到差分信号开始的秒数,如果不是差分定位将为空)
字段12:差分站ID号0000 - 1023(前导位数不足则补0,如果不是差分定位将为空)
字段13:校验值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/26714.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数学建模学习(9):模拟退火算法】

模拟退火算法(Simulated Annealing, SA)的思想借 鉴于固体的退火原理&#xff0c;当固体的温度很高的时候&#xff0c;内能比 较大&#xff0c;固体的内部粒子处于快速无序运动&#xff0c;当温度慢慢降 低的过程中&#xff0c;固体的内能减小&#xff0c;粒子的慢慢趋于有序&a…

空地协同智能消防系统——无人机、小车协同

1 题目 1.1 任务 设计一个由四旋翼无人机及消防车构成的空地协同智能消防系统。无人机上安装垂直向下的激光笔&#xff0c;用于指示巡逻航迹。巡防区域为40dm48dm。无人机巡逻时可覆盖地面8dm宽度区域。以缩短完成全覆盖巡逻时间为原则&#xff0c;无人机按照规划航线巡逻。发…

2019年09月 Python(一级)真题解析#中国电子学会#全国青少年软件编程等级考试

一、单选题 第1题 关于Python的编程环境,下列的哪个表述是正确的? A:Python的编程环境是图形化的; B:Python只有一种编程环境ipython; C:Python自带的编程环境是IDLE; D:用windows自带的文本编辑器也可以给Python编程?,并且也可以在该编辑器下运行; 正确答案…

自动驾驶传感器选型

360的场景&#xff0c;避免有盲区&#xff0c;长距离 Lidar&#xff08;激光雷达&#xff09; 典型特点一圈一圈的&#xff0c;轮廓和很高的位置精度 禾赛的机械雷达 速腾的固态雷达 固态雷达是车规级的&#xff0c;车规级的意思是可以装到量产车上 Radar&#xff08;毫米…

门面模式(C++)

定义 为子系统中的一组接口提供一个一致(稳定) 的界面&#xff0c;Facade模式定义了一个高层接口&#xff0c;这个接口使得这一子系统更加容易使用(复用)。 应用场景 上述A方案的问题在于组件的客户和组件中各种复杂的子系统有了过多的耦合&#xff0c;随着外部客户程序和各子…

数据结构—哈夫曼树及其应用

5.6哈夫曼树及其应用 5.6.1哈夫曼树的基本概念 路径&#xff1a;从树中一个结点到另一个结点之间的分支构成这两个结点间的路径。 结点的路径长度&#xff1a;两结点间路径上的分支数。 树的路径长度&#xff1a;从树根到每一个结点的路径长度之和。记作 TL 结点数目相同的…

【jvm】jvm整体结构(hotspot)

目录 一、说明二、java代码的执行流程三、jvm的架构模型3.1 基于栈式架构的特点3.2 基于寄存器架构的特点 一、说明 1.hotspot vm是目前市场上高性能虚拟机的代表作之一 2.hotspot采用解释器与即时编译器并存的架构 3.java虚拟机是用来解释运行字节码文件的&#xff0c;入口是字…

混合云环境实现K8S可观测的6大策略

2023年&#xff0c;原生云应用及平台发展迅猛。大量企业都在努力发挥其应用程序的最大潜力&#xff0c;以确保极致的用户体验并推动业务增长。 混合云环境的兴起和容器化技术(如Kubernetes)的采用彻底改变了现代应用程序的开发、部署和扩展方式。 在这个数字舞台上&#xff0c;…

命令模式 Command Pattern 《游戏设计模式》学习笔记

对于一般的按键输入&#xff0c;我们通常这么做&#xff0c;直接if按了什么键&#xff0c;就执行相应的操作 在这里我们是将用户的输入和程序行为硬编码在一起&#xff0c;这是我们很自然就想到的最快的做法。 但是如果这是一个大型游戏&#xff0c;往往我们需要实现一个按键…

研发工程师玩转Kubernetes——hostPath

有别于《研发工程师玩转Kubernetes——emptyDir》一文中介绍的emptyDir&#xff0c;hostPath可以在同一个Node的不同Pod间共享卷。 下面的清单文件利用了Pod亲和性&#xff0c;让Pod集中到一个Node上。 apiVersion: apps/v1 kind: Deployment metadata:name: hostpath-deploy…

中间人攻击

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、启动 Kali Linux准备 Apache 服务器使用Ettercap插件进行欺骗使用 Wireshark 捕获 Https 流量总结 前言 您可能已经熟悉中间人攻击&#xff1a;攻击者通过…

网络安全(秋招)如何拿到offer?(含面试题)

以下为网络安全各个方向涉及的面试题&#xff0c;星数越多代表问题出现的几率越大&#xff0c;祝各位都能找到满意的工作。 注&#xff1a;本套面试题&#xff0c;已整理成pdf文档&#xff0c;但内容还在持续更新中&#xff0c;因为无论如何都不可能覆盖所有的面试问题&#xf…

C语言预处理命令 #error 学习

#error命令是C/C语言的预处理命令之一&#xff0c;当预处理器预处理到#error命令时将停止编译并输出用户自定义的错误消息。 如下代码输出数字1000&#xff0c;如果加了 #error&#xff0c;构建时不会通过&#xff0c;提示出错如下&#xff1b; 这可能在大型项目中比较有用&am…

8.4一日总结

1.远程仓库的提交方式(免密提交) a.ssh:隧道加密传输协议,一般用来登录远程服务器 b.使用 git clone 仓库名 配置(生成公私钥对) ssh-Keygen [-t rsa -C 邮箱地址] 通过执行上述命令,全程回车,就会在~/.ssh/id_rsa(私钥)和id_rsa.pub(公钥),私钥是必须要保存好的,并不能…

TeeChart NET for MAUI Crack

TeeChart NET for MAUI Crack 跨平台图表-移动或桌面应用程序的核心图表代码相同。 图表集合-60多种图表类型和50多种财务和统计指标。 图表类型 60多种2D和3D图表类型以及多种组合&#xff0c;包括&#xff1a; 标准&#xff1a;线条(条形)、条形、区域、饼图、快线、点(散点…

【Java可执行命令】(十七)JVM运行时信息动态维护工具 jinfo:一个维护 JVM 相关的配置参数和系统属性的工具,辅助故障排除、诊断和优化 ~

Java可执行命令之jinfo 1️⃣ 概念2️⃣ 优势和缺点3️⃣ 使用3.1 语法格式3.2 -flags&#xff1a;查看进程的启动参数3.3 -sysprops&#xff1a;查看进程的系统属性3.4 -flag < name>&#xff1a;查看特定虚拟机参数的值3.5 -flag [/-]< name>&#xff1a;启用或禁…

2023年8月份华为H12-811更新了

801、[单选题]178/832、在系统视图下键入什么命令可以切换到用户视图? A quit B souter C system-view D user-view 试题答案&#xff1a;A 试题解析&#xff1a;在系统视图下键入quit命令退出到用户视图。因此答案选A。 802、[单选题]“网络管理员在三层交换机上创建了V…

【CSS】CSS 选择器

CSS 选择器 1.基础选择器 1.1 元素选择器 语法&#xff1a;标签名{...} 元素选择器会选中对应标签名的HTML元素&#xff0c;例如&#xff1a;p{...}&#xff0c;div{...}&#xff0c;span{...}等 1.2 类选择器 语法&#xff1a;.类名{...} 类选择器会选中class属性为指定…

配置两台数据库为主从数据库模式

一、主库配置 1、修改配置文件 /etc/my3306.cnf #mysql服务ID&#xff0c;保证整个集群环境中唯一&#xff0c;默认为1server-id1#是否只读&#xff0c;1代表只读&#xff0c;0代表读写read-only0#忽略的数据&#xff0c;指不需要同步的数据库#binlog-ignore-dbmysql#指定同步…

OSPF作业3

题目 地址配置 R1&#xff1a; R2&#xff1a; R3&#xff1a; R4&#xff1a; R5&#xff1a; R6&#xff1a; R7&#xff1a; R8&#xff1a; R9&#xff1a; R10&#xff1a; R11&#xff1a; R12&#xff1a; 私网通及LSDB优化 R1&#xff1a; ospf 1 router-id 1.1.1.1 …