驴友花雕 发表于 2021-9-5 17:57:18

实验场景图动态图

驴友花雕 发表于 2021-9-5 18:18:54

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

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



驴友花雕 发表于 2021-9-5 18:19:36

实验串口返回情况


驴友花雕 发表于 2021-9-5 19:52:25

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百零九:Gravity: I2C & UART BC20 NB-IoT & GNSS通信模块
NB-IoT广域低功耗无线通信 GPS/北斗精准定位 户外物联网必备
项目之五:通过NB模块的LED灯的闪烁来判断信号强度

实验开源代码

/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百零九:Gravity: I2C & UART BC20 NB-IoT & GNSS通信模块
NB-IoT广域低功耗无线通信 GPS/北斗精准定位 户外物联网必备
项目之五:通过NB模块的LED灯的闪烁来判断信号强度
实验接线:
BC20       UNO
VIN      5V
GND      GND
SCL      A5
SDA      A4
*/

#include "DFRobot_BC20_Gravity.h"

//7种颜色可供选择
#defineRED 0
#defineBLUE 1
#defineGREEN 2
#defineYELLOW 3
#definePURPLE 4
#defineCYAN 5
#defineWHITE 6

//IIC通讯
#define USE_IIC

//硬件串口通讯
//#define USE_HSERIAL

//软件串口通讯
//#define USE_SSERIAL

DFRobot_BC20_IIC myBC20(0x33);

/*
   信号强度由两个以 dBm 为单位的数值表示
   和闪烁的 LED:
   信号强——快闪
   中等信号 - 慢闪
   弱信号 - 突发闪光。
*/
static void NB_Signal_Fun() {
//获取 NB-IoT 信号强度
myBC20.getSQ();

//信号质量 RSSI<10,弱信号强度
myBC20.changeColor(WHITE);
if (sSQ.rssi < 10 || sSQ.rssi == 99) {
    if (sSQ.rssi == 99) {
      Serial.println("信号不可检测");
    } else if (sSQ.rssi == 0) {
      Serial.println("信号强度:-113 dBm 或更少");
    } else {
      Serial.print("信号强度: ");
      Serial.print((sSQ.rssi - 2) * 2 - 109);
      Serial.println(" dBm 弱");
    }

    //Burst flash
    myBC20.LED_ON();
    delay(100);
    myBC20.LED_OFF();
    delay(900);
}

//信号质量 10<=RSSI<25,中等信号强度
else if (sSQ.rssi >= 10&& sSQ.rssi < 25) {
    Serial.print("信号强度: ");
    Serial.print((sSQ.rssi - 2) * 2 - 109);
    Serial.println(" dBm 中等");

    //慢闪
    myBC20.LED_ON();
    delay(500);
    myBC20.LED_OFF();
    delay(500);
}

//信号质量 RSSI>=25,信号强度强
else if (sSQ.rssi >= 25) {
    if (sSQ.rssi < 31) {
      Serial.print("信号强度: ");
      Serial.print((sSQ.rssi - 2) * 2 - 109);
      Serial.println(" dBm 强");
    } else if (sSQ.rssi == 31) {
      Serial.print("信号强度:-51 dBm 或更高");
    }

    //快速闪光
    for (int i = 0; i < 5 ; i++) {
      myBC20.LED_ON();
      delay(100);
      myBC20.LED_OFF();
      delay(100);
    }
}
else {
    ;
}
}

void setup() {
Serial.begin(115200);
myBC20.LED_OFF();

//初始化 BC20
Serial.print("正在启动BC20,请稍等......");
myBC20.changeColor(RED);
while (!myBC20.powerOn()) {
    Serial.print(".");
    myBC20.LED_ON();
    delay(500);
    myBC20.LED_OFF();
    delay(500);
}
Serial.println(" BC20 启动成功!");

//检查 SIM 卡是否插入
Serial.println("正在检查SIM卡...");
myBC20.changeColor(GREEN);
while (!myBC20.checkNBCard()) {
    Serial.println("请插入NB SIM卡!");
    myBC20.LED_ON();
    delay(500);
    myBC20.LED_OFF();
    delay(500);
}
Serial.println("SIM 卡检查OK!");

//打印 IMEI、ICCID 和 IMSI
myBC20.getGSN(IMEI);
Serial.print("BC20 IMEI: ");
Serial.println(sGSN.imei);
Serial.print("SIM card ICCID:");
Serial.print(myBC20.getQCCID());
Serial.print("SIM card IMSI: ");
Serial.println((char *)myBC20.getIMI());

/*
   模块将自动尝试连接到网络(移动站),
   检查它是否已连接到网络。
*/
Serial.println("正在连接网络...");
myBC20.changeColor(BLUE);
while (myBC20.getGATT() == 0) {
    Serial.print(".");
    myBC20.LED_ON();
    delay(500);
    myBC20.LED_OFF();
    delay(500);
}
Serial.println("网络已连接!");
}

void loop() {
//获取本地 NB-IoT 信号强度并打印
NB_Signal_Fun();
}

驴友花雕 发表于 2021-9-5 19:54:22

本帖最后由 驴友花雕 于 2021-9-6 07:24 编辑

实验串口返回情况



程序通过串口打印当前环境(接收到的)NB-IoT信号强度RSSI(单位dBm,通常为负值,测量范围:-113 ~ -51 dBm,数值越大信号越强)。

通过RGB(白光)闪烁的快慢来表示信号强度,分为三级:

爆闪:信号弱(-95 dBm或以下),0.1s亮,0.9s灭。
慢闪:信号中等(-93 ~ - 65 dBm之间),0.5s亮,0.5s灭。
快闪:信号强(- 63 dBm或以上),0.1s亮,0.1s灭。

驴友花雕 发表于 2021-9-5 20:16:34

本帖最后由 驴友花雕 于 2021-9-6 07:02 编辑

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

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




驴友花雕 发表于 2021-9-5 20:21:50

本帖最后由 驴友花雕 于 2021-9-5 20:24 编辑

实验串口返回情况



GNSS定位需要一定时间进行寻星,首次上电通常需要30s以上才能获取有效的定位信息。

程序通过串口打印GNSS定位的简单信息:
纬度坐标(Latitude):26.09 表示北纬26.09°,精确到小数点后2位。南纬用S表示。
经度坐标(Longitude):119.32 表示东经119.32°,精确到小数点后2位。西经用W表示。

驴友花雕 发表于 2021-9-6 07:12:41

配置BC20模块的通信接口
开头都有下面一段用于配置通信接口的代码,配合物理接线可配置I2C、UART(硬件)和UART(软件)串口三种不同的通信接口。若不作任何修改,默认使用I2C接口,地址0x33。

/*Communication by IIC*/
#define USE_IIC

/*Communication by HardwareSerial*/
//#define USE_HSERIAL

/*Communication by SoftwareSerial*/
//#define USE_SSERIAL


/******************IIC******************/
#ifdef USE_IIC
/*
   For general controllers. Communicate by IIC
   Connect Instructions
      Controller   |    Module(BC20)
          SDA      |       D/T
          SCL      |       C/R
          GND      |       GND
       5V or 3V3   |       VCC

   IIC address(A0,A1)
   0x30:(A0=0,A1=0)
   0x31:(A0=0,A1=1)
   0x32:(A0=1,A1=0)
   0x33:(A0=1,A1=1) default
*/
DFRobot_BC20_IIC myBC20(0x33);

/******************HardwareSerial******************/
#elif defined(USE_HSERIAL)
/*
   For MEGA2560/ESP32 HardwareSerial
   Connect Instructions
   esp32      |               MEGA Series    |    Module(BC20)
   IO17       |               D16(RX)      |       D/T
   IO16       |               D17(TX)      |       C/R
   GND      |               GND            |       GND
   5V(USB) or 3V3(battery)| 5V or 3V3      |       VCC
*/
#if defined(ARDUINO_ESP32_DEV)
HardwareSerial Serial2(2);
DFRobot_BC20_Serial myBC20(&Serial2);//ESP32HardwareSerial
#else
DFRobot_BC20_Serial myBC20(&Serial1);//others
#endif

/******************SoftwareSerial******************/
#elif defined(USE_SSERIAL)
/*
    For Arduino Series SoftwareSerial
    Connect Instructions
      UNO   |    Module(BC20)
      PIN_RXD   |       D/T
      PIN_TXD   |       C/R
      GND   |       GND
   5V or 3V3|       VCC
*/
#define PIN_TXD   3
#define PIN_RXD   4
SoftwareSerial ss(PIN_RXD, PIN_TXD);
DFRobot_BC20_SW_Serial myBC20(&ss);
#endif

驴友花雕 发表于 2021-9-6 07:17:52

使用I2C接口时,若出现IIC地址冲突,可修改下面一条语句中的参数0x33以改变IIC地址。可使用的I2C地址共有4个,拨动模块上的拨码开关,调整A0和A1,并修改如下相应I2C地址,复位程序完成修改。
0x30:(A0=0,A1=0)
0x31:(A0=0,A1=1)
0x32:(A0=1,A1=0)
0x33:(A0=1,A1=1) 默认

DFRobot_BC20_IIC myBC20(0x33);
使用UART(硬件)接口时,波特率为115200,如下取消#define USE_HSERIAL注释,注释掉另外两个宏定义#define,完成硬串口的配置。

/*Communication by IIC*/
//#define USE_IIC

/*Communication by HardwareSerial*/
#define USE_HSERIAL

/*Communication by SoftwareSerial*/
//#define USE_SSERIAL

使用UART(软件)接口时,波特率为9600,如下取消#define USE_HSERIAL,注释掉另外两个宏定义#define,完成软串口的配置。

/*Communication by IIC*/
//#define USE_IIC

/*Communication by HardwareSerial*/
//#define USE_HSERIAL

/*Communication by SoftwareSerial*/
#define USE_SSERIAL
调整UART(软件)接口管脚,修改如下两个宏定义#define PIN_TXD和#define PIN_RXD的值,前者配置主控的发送端TXD(与模块的接收端相连),后者配置主控的接收端RXD(与模块的发送端相连)。

#define PIN_TXD   3
#define PIN_RXD   4
SoftwareSerial ss(PIN_RXD, PIN_TXD);
DFRobot_BC20_SW_Serial myBC20(&ss);


驴友花雕 发表于 2021-9-6 08:00:54

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百零九:Gravity: I2C & UART BC20 NB-IoT & GNSS通信模块 NB-IoT广域低功耗无线通信 GPS/北斗精准定位 户外物联网必备
项目之七:获取物理位置精简版(在串口监视器上看到部分卫星信息)

实验开源代码

/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百零九:Gravity: I2C & UART BC20 NB-IoT & GNSS通信模块
NB-IoT广域低功耗无线通信 GPS/北斗精准定位 户外物联网必备
项目之七:获取物理位置精简版(在串口监视器上看到部分卫星信息)
实验接线:
BC20       UNO
VIN      5V
GND      GND
SCL      A5
SDA      A4
*/

#include "DFRobot_BC20_Gravity.h"

//RGB有7种颜色可供选择
#defineRED 0
#defineBLUE 1
#defineGREEN 2
#defineYELLOW 3
#definePURPLE 4
#defineCYAN 5
#defineWHITE 6

//IIC通讯
#define USE_IIC

//硬件串口通讯
//#define USE_HSERIAL

//软件串口通讯
//#define USE_SSERIAL

DFRobot_BC20_IIC myBC20(0x33);

void Display_Location_Information() {

//锚点的UTC时间
Serial.print("时间:");
Serial.print(sCLK.Hour);
Serial.print(":");
Serial.print(sCLK.Minute);
Serial.print(":");
Serial.println(sCLK.Second);

Serial.print("纬度:");
Serial.print(sGGNS2.LatitudeVal, 6);
Serial.print(" ° ");
Serial.println(sGGNS2.LatitudeDir());
Serial.print("经度:");
Serial.print(sGGNS2.LongitudeVal, 6);
Serial.print(" ° ");
Serial.println(sGGNS2.LongitudeDir());
Serial.print("海拔:");
Serial.print(sGGNS2.Altitude);
Serial.println("米");
Serial.print("修复状态: ");
Serial.println(sGGNS2.Status());
Serial.print("状态编号: ");
Serial.print(sGGNS2.StatelliteNum);
Serial.println(" “在使用中");
Serial.print("HDOP: ");
Serial.println(sGGNS2.HDOP);
Serial.println("");
}

void setup() {
Serial.begin(115200);
myBC20.LED_OFF();

//初始化 BC20
Serial.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);

//启动 GNSS
Serial.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.getQGNSSRD2();
Display_Location_Information();
myBC20.clearGPS();

myBC20.LED_ON();
delay(500);
myBC20.LED_OFF();
#ifndef ARDUINO_ESP32_DEV
delay(500);
#else
delay(5000);
#endif
}

驴友花雕 发表于 2021-9-6 08:23:31

本帖最后由 驴友花雕 于 2021-9-6 08:53 编辑

实验串口返回情况




GNSS定位需要一定时间进行寻星,首次上电通常需要30s以上才能获取有效的定位信息(建议通电3分钟)。

程序通过串口打印GNSS定位的关键信息:
时间(Time): 0:20:38表示当地时间为8时20分38秒(北京时间)**。需要注意的是,这里7时是指格林尼治时间GMT+0,北京时间为GMT+8,需要用户额外加上8小时才能得到北京时间,也可以自行根据经纬度计算出当地时区,从而自动换算出当地时间。
纬度坐标(Latitude):26.088882° N 表示北纬26.088882°,精确到小数点后6位。南纬用S表示。
经度坐标(Longitude):119.323715° E 表示东经119.323715°,精确到小数点后6位。西经用W表示。
海拔高度(Altitude):单位m。WGS84 椭球面为基准。
定位状态(Fix Status):为DGPS或者GNSS时,代表成功定位。
水平精度因子(HDOP):水平分量的相对误差,为纬度和经度等误差平方和的开根号值。数值越小,代表经纬坐标精度越高,一般小于3比较理想。

驴友花雕 发表于 2021-9-6 09:23:34

本帖最后由 驴友花雕 于 2021-9-6 09:28 编辑

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百零九:Gravity: I2C & UART BC20 NB-IoT & GNSS通信模块
NB-IoT广域低功耗无线通信 GPS/北斗精准定位 户外物联网必备
项目之八:在串口监视器上看到部分卫星信息

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




驴友花雕 发表于 2021-9-6 09:24:25

本帖最后由 驴友花雕 于 2021-9-6 09:26 编辑

实验串口返回情况




实验注意事项
1、GPS适用于室外使用,在室内效果很差,窗户边有时也可以使用(实际效果打点折扣)。
2、GPS刚通电时,需要短暂时间用以寻星,刚开始不能准确定位,属于正常。
3、物联网卡在使用时,插入SIM卡时,要注意大小,不需要剪卡,直接扣下来的卡片大小就是合适的。
4、物联网SIM卡不能用于手机、平板、2G/3G/4G模组等非NB-IoT设备,否则会导致SIM卡停机。已机卡绑定的SIM卡不能插入其它设备内进行通信,否则会导致SIM卡停机。物联网SIM卡仅能数据传输,无语音通信和短信功能。
5、注意你使用的板子的内存大小。

驴友花雕 发表于 2021-9-6 10:11:22

本帖最后由 驴友花雕 于 2021-9-6 10:15 编辑

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百零九:Gravity: I2C & UART BC20 NB-IoT & GNSS通信模块
NB-IoT广域低功耗无线通信 GPS/北斗精准定位 户外物联网必备
项目之九:在串口监视器上看到所有完整的卫星信息
(说明:由于UNO内存偏小,有可能出错)


实验开源代码

/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百零九:Gravity: I2C & UART BC20 NB-IoT & GNSS通信模块
NB-IoT广域低功耗无线通信 GPS/北斗精准定位 户外物联网必备
项目之九:在串口监视器上看到所有完整的卫星信息
(说明:由于UNO内存偏小,有可能出错)
实验接线:
BC20       UNO
VIN      5V
GND      GND
SCL      A5
SDA      A4
*/

#include "DFRobot_BC20_Gravity.h"

/* 7 colors are available */
#defineRED 0
#defineBLUE 1
#defineGREEN 2
#defineYELLOW 3
#definePURPLE 4
#defineCYAN 5
#defineWHITE 6

/*Communication by IIC*/
#define USE_IIC

/*Communication by HardwareSerial*/
//#define USE_HSERIAL

/*Communication by SoftwareSerial*/
//#define USE_SSERIAL

DFRobot_BC20_IIC myBC20(0x33);


void Display_Location_Information() {
//UTC time of the anchor point
Serial.print("Time:\t\t");
Serial.print(sCLK.Year);
Serial.print("/");
Serial.print(sCLK.Month);
Serial.print("/");
Serial.print(sCLK.Day);
Serial.print("");
Serial.print(sCLK.Hour);
Serial.print(":");
Serial.print(sCLK.Minute);
Serial.print(":");
Serial.println(sCLK.Second);

Serial.print("Latitude:\t");
Serial.print(sGGNS.LatitudeVal, 6);
Serial.print(" deg ");
Serial.println(sGGNS.LatitudeDir);
Serial.print("Longitude:\t");
Serial.print(sGGNS.LongitudeVal, 6);
Serial.print(" deg ");
Serial.println(sGGNS.LongitudeDir);
Serial.print("Altitude:\t");
Serial.print(sGGNS.Altitude, 1);
Serial.println(" m");
Serial.print("Speed:\t\t");
Serial.print(sGGNS.Speed);
Serial.println(" km/h");
Serial.print("Heading:\t");
Serial.print(sGGNS.Heading);
Serial.println(" deg");
Serial.print("Status:\t\t");
Serial.println(sGGNS.FixStatus);
Serial.print("PDOP:\t\t");
Serial.println(sGGNS.PDOP);
Serial.print("HDOP:\t\t");
Serial.println(sGGNS.HDOP);
Serial.print("VDOP:\t\t");
Serial.println(sGGNS.VDOP);
Serial.println();
}

void Display_Satellite_Information() {
Serial.print(sSAT.NUM);
Serial.println(" in view.");
Serial.print(sSAT2.USE);
Serial.println(" in used.");
Serial.print("PRN\t");
Serial.print("Elev(deg)\t");
Serial.print("Azim(deg)\t");
Serial.print("SNR(dBHz)\t");
Serial.print("SYS\t");
Serial.println("Used");
for (uint8_t i = 0; i < sSAT.NUM; i++) {
    Serial.print(sSAT2.data.PRN);
    Serial.print("\t");
    Serial.print(sSAT2.data.Elev);
    Serial.print("\t\t");
    Serial.print(sSAT2.data.Azim);
    Serial.print("\t\t");
    Serial.print(sSAT2.data.SNR);
    Serial.print("\t\t");
    Serial.print(sSAT2.data.SYS);
    Serial.print("\t");
    Serial.println(sSAT2.data.Status);
}
Serial.println("");
}

void setup() {
Serial.begin(115200);
myBC20.LED_OFF();

/*Initialize BC20*/
Serial.print("Starting the BC20.Please wait. . . ");
myBC20.changeColor(RED);
while (!myBC20.powerOn()) {
    Serial.print(".");
    myBC20.LED_ON();
    delay(500);
    myBC20.LED_OFF();
    delay(500);
}
Serial.println("BC20 started successfully!");

/* Disable sleep mode */
myBC20.configSleepMode(eSleepMode_Disable);

/*Power up GNSS*/
Serial.print("Turning on GNSS ... ");
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 is ON.");
myBC20.changeColor(CYAN);
}

void loop() {

/**
   Is used to obtain the specified satellite information, and the parameter is used to specify the type of information to be obtained.
   The parameter is selected as follows:
*/
myBC20.getQGNSSRD();
Display_Location_Information();
Display_Satellite_Information();
myBC20.clearGPS();

myBC20.LED_ON();
delay(500);
myBC20.LED_OFF();
#ifndef ARDUINO_ESP32_DEV
delay(500);
#else
delay(5000);
#endif
}

驴友花雕 发表于 2021-9-6 10:20:02

实验串口返回情况(实际测试运行超过10分钟,BC20模块仍未能启动)


驴友花雕 发表于 2021-9-6 10:27:45

本帖最后由 驴友花雕 于 2021-9-6 10:48 编辑

程序占用了80%存储空间,使用了89%的动态内存,实测一直不工作,看来UNO无法查看完整的卫星信息。


驴友花雕 发表于 2021-9-6 13:04:19

【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       UNO
VIN      5V
GND      GND
SCL      A5
SDA      A4
*/

#include "DFRobot_BC20_Gravity.h"

//RGB有7种颜色可供选择
#defineRED 0
#defineBLUE 1
#defineGREEN 2
#defineYELLOW 3
#definePURPLE 4
#defineCYAN 5
#defineWHITE 6

//IIC通讯
#define USE_IIC

//硬件串口通讯
//#define USE_HSERIAL

//软件串口通讯
//#define USE_SSERIAL

DFRobot_BC20_IIC myBC20(0x33);

void setup() {
Serial.begin(115200);
myBC20.LED_OFF();

//初始化 BC20
Serial.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());
}
}

驴友花雕 发表于 2021-9-6 13:06:38

实验串口返回情况


驴友花雕 发表于 2021-9-6 13:14:15

常用的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 命令手册”

驴友花雕 发表于 2021-9-6 13:35:17

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

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



驴友花雕 发表于 2021-9-6 13:36:55

实验串口返回情况


页: 1 2 [3] 4 5 6
查看完整版本: 【Arduino】168种传感器系列实验(209)---移远 BC20 NB+GNSS模块