72086浏览
楼主: 驴友花雕

[项目] 【Arduino】168种传感器系列实验(209)---移远 BC20 NB+GNSS模块

[复制链接]

驴友花雕  中级技神
 楼主|

发表于 2021-9-7 16:40:02

IRQ:PSM休眠唤醒管脚,当模块处于PSM低功耗模式下,将该管脚拉高以唤醒模块。连接示意图如下:


【Arduino】168种传感器系列实验(209)---移远 BC20 NB+GNSS模块图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-9-7 16:42:57

中断唤醒实验实际接线图
【Arduino】168种传感器系列实验(209)---移远 BC20 NB+GNSS模块图1




回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-9-7 19:14:24

  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二百零九:Gravity: I2C & UART BC20 NB-IoT & GNSS通信模块
  NB-IoT广域低功耗无线通信 GPS/北斗精准定位 户外物联网必备
  项目二十二:串口监视器上可以看到NB模块被PSM周期性唤醒进入

  实验开源代码

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验二百零九:Gravity: I2C & UART BC20 NB-IoT & GNSS通信模块
  4.   NB-IoT广域低功耗无线通信 GPS/北斗精准定位 户外物联网必备
  5.   项目二十二:串口监视器上可以看到NB模块被PSM周期性唤醒进入
  6.   实验接线:
  7.   BC20       UNO
  8.   VIN        5V
  9.   GND        GND
  10.   SCL        A5
  11.   SDA        A4
  12.   ISR        D2
  13. */
  14. #include "DFRobot_BC20_Gravity.h"
  15. //RGB有7种颜色可供选择
  16. #define  RED 0
  17. #define  BLUE 1
  18. #define  GREEN 2
  19. #define  YELLOW 3
  20. #define  PURPLE 4
  21. #define  CYAN 5
  22. #define  WHITE 6
  23. //IIC通讯
  24. #define USE_IIC
  25. //硬件串口通讯
  26. //#define USE_HSERIAL
  27. //软件串口通讯
  28. //#define USE_SSERIAL
  29. DFRobot_BC20_IIC myBC20(0x33);
  30. /*
  31.    唤醒UNO,
  32.    模块上的 IRQ 引脚应连接到 WAKEUP_PIN
  33. */
  34. #define WAKEUP_PIN 2
  35. void setup() {
  36.   Serial.begin(115200);
  37.   myBC20.LED_OFF();
  38.   //初始化 BC20
  39.   Serial.print("正在启动BC20,请稍等...... ");
  40.   myBC20.changeColor(RED);
  41.   while (!myBC20.powerOn()) {
  42.     Serial.print(".");
  43.     myBC20.LED_ON();
  44.     delay(500);
  45.     myBC20.LED_OFF();
  46.     delay(500);
  47.   }
  48.   Serial.println("BC20 启动成功!");
  49. //检查 SIM 卡是否插入
  50.   Serial.println("正在检查SIM卡……");
  51.   myBC20.changeColor(GREEN);
  52.   while (!myBC20.checkNBCard()) {
  53.     Serial.println("请插入NB SIM卡!");
  54.     myBC20.LED_ON();
  55.     delay(500);
  56.     myBC20.LED_OFF();
  57.     delay(500);
  58.   }
  59.   Serial.println("SIM 卡检查OK!");
  60.   //打印 IMEI、ICCID 和 IMSI
  61.   myBC20.getGSN(IMEI);
  62.   Serial.print("BC20 IMEI: ");
  63.   Serial.println(sGSN.imei);
  64.   Serial.print("SIM card ICCID:");
  65.   Serial.print(myBC20.getQCCID());
  66.   Serial.print("SIM card IMSI: ");
  67.   Serial.println((char *)myBC20.getIMI());
  68.   /*
  69.      模块将自动尝试连接到网络(移动站)。
  70.      检查它是否已连接到网络。
  71.   */
  72.   Serial.println("正在连接网络...");
  73.   myBC20.changeColor(BLUE);
  74.   while (myBC20.getGATT() == 0) {
  75.     Serial.print(".");
  76.     myBC20.LED_ON();
  77.     delay(500);
  78.     myBC20.LED_OFF();
  79.     delay(500);
  80.   }
  81.   Serial.println("网络已连接!");
  82.   //开启 PSM 模式(PSM 默认开启)
  83.   myBC20.setPSMMode(ePSM_ON);
  84.    /*
  85.       深度/轻度睡眠模式。(CPU)
  86.       处于深度睡眠模式时,BC20 不会响应来自主控面板的任何 AT 命令
  87.       直到被STM32唤醒(再次BC20退出PSM)
  88.       当进入 Light Sleep Mode 时,BC20 仍然可以接收来自 ESP32 的 AT 命令。
  89.       但是,它的功耗比前者要大。
  90.   */
  91.   myBC20.configSleepMode(eSleepMode_DeepSleep);
  92. }
  93. void loop() {
  94.   
  95.   /*
  96.     控制器和 BC20 由 UNO(在模块上)桥接。
  97.     要将模块置于低功耗模式,
  98.     将 UNO 置于深度睡眠模式。
  99.     BC20 将自动进入最低功耗(PSM + 深度睡眠模式)。
  100.     要唤醒模块,
  101.     先唤醒UNO,再唤醒BC20。
  102.   */
  103.   // 使UNO进入睡眠模式。
  104.   if (!myBC20.stmLowpower()) {
  105.     Serial.println("UNO进入睡眠模式!");
  106.   }
  107.   delay(30000);
  108.   //唤醒UNO
  109.   Serial.println("唤醒UNO!");
  110.   //IRQ 的上升沿唤醒 UNO
  111.   myBC20.stmWakeup(WAKEUP_PIN);
  112.   //从 PSM 和深度睡眠模式唤醒 BC20
  113.   Serial.print("BC20正在醒来......");
  114.   while (!myBC20.BC20Wakeup()) {
  115.     Serial.print(".");
  116.     delay(1000);
  117.   }
  118.   Serial.println("OK");
  119.   delay(10000);
  120. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-9-7 19:16:07

实验串口返回情况

【Arduino】168种传感器系列实验(209)---移远 BC20 NB+GNSS模块图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-9-7 20:12:19

  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二百零九:Gravity: I2C & UART BC20 NB-IoT & GNSS通信模块
  NB-IoT广域低功耗无线通信 GPS/北斗精准定位 户外物联网必备
  项目二十三:在串行监视器上循环低功耗唤醒,然后将消息上传到云端

  实验开源代码

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验二百零九:Gravity: I2C & UART BC20 NB-IoT & GNSS通信模块
  4.   NB-IoT广域低功耗无线通信 GPS/北斗精准定位 户外物联网必备
  5.   项目二十三:在串行监视器上循环低功耗唤醒,然后将消息上传到云端
  6.   实验接线:
  7.   BC20       UNO
  8.   VIN        5V
  9.   GND        GND
  10.   SCL        A5
  11.   SDA        A4
  12.   ISR        D2
  13. */
  14. #include "DFRobot_BC20_Gravity.h"
  15. //RGB有7种颜色可供选择
  16. #define  RED 0
  17. #define  BLUE 1
  18. #define  GREEN 2
  19. #define  YELLOW 3
  20. #define  PURPLE 4
  21. #define  CYAN 5
  22. #define  WHITE 6
  23. //配置设备证书信息
  24. char* Iot_id = "wGkCJkIng";
  25. char* Client_ID  = "BC20 NB-IoT";
  26. char* Iot_pwd    = "QMkC1kInRz";
  27. //配置域名和端口号
  28. char* EasyIot_SERVER = "182.254.130.180";
  29. char* PORT = "1883";
  30. //设置需要发布的设备编号
  31. char* pubTopic = "hJmOvRIng";
  32. //IIC通讯
  33. #define USE_IIC
  34. //硬件串口通讯
  35. //#define USE_HSERIAL
  36. //软件串口通讯
  37. //#define USE_SSERIAL
  38. DFRobot_BC20_IIC myBC20(0x33);
  39. //连接IRQ唤醒模块
  40. #define WAKEUP_PIN 2
  41. void ConnectCloud() {
  42.   Serial.print("尝试MQTT连接... ");
  43.   myBC20.changeColor(YELLOW);
  44.   while (!myBC20.connected()) {
  45.     Serial.print(".");
  46.     myBC20.LED_ON();
  47.     delay(500);
  48.     myBC20.LED_OFF();
  49.     delay(500);
  50.     if (myBC20.connect(Client_ID, Iot_id, Iot_pwd)) {
  51.       Serial.println("服务器可用");
  52.     } else {
  53.       //用于检测设备与服务器的连接
  54.       if (myBC20.getQMTCONN())
  55.         break;
  56.     }
  57.   }
  58. }
  59. void setup() {
  60.   Serial.begin(115200);
  61.   myBC20.LED_OFF();
  62.   //初始化 BC20
  63.   Serial.print("正在启动BC20,请稍等...... ");
  64.   myBC20.changeColor(RED);
  65.   while (!myBC20.powerOn()) {
  66.     Serial.print(".");
  67.     myBC20.LED_ON();
  68.     delay(500);
  69.     myBC20.LED_OFF();
  70.     delay(500);
  71.   }
  72.   Serial.println("BC20 启动成功!");
  73.   //检查 SIM 卡是否插入
  74.   Serial.println("正在检查SIM卡……");
  75.   myBC20.changeColor(GREEN);
  76.   while (!myBC20.checkNBCard()) {
  77.     Serial.println("请插入NB SIM卡!");
  78.     myBC20.LED_ON();
  79.     delay(500);
  80.     myBC20.LED_OFF();
  81.     delay(500);
  82.   }
  83.   Serial.println("SIM 卡检查OK!");
  84.   /*如果你使用的是大内存主控,你可以开启
  85.     以下功能可查看SIM卡详情
  86.     打印IMEI、ICCID和IMSI */
  87.   //  myBC20.getGSN(IMEI);
  88.   //  Serial.print("BC20 IMEI: ");
  89.   //  Serial.println(sGSN.imei);
  90.   //  Serial.print("SIM card ICCID:");
  91.   //  Serial.print(myBC20.getQCCID());
  92.   //  Serial.print("SIM card IMSI: ");
  93.   //  Serial.println((char *)myBC20.getIMI());
  94.   /*
  95.       模块将自动尝试连接到网络(移动站)。
  96.       检查它是否已连接到网络。
  97.   */
  98.   Serial.println("正在连接网络...");
  99.   myBC20.changeColor(BLUE);
  100.   while (myBC20.getGATT() == 0) {
  101.     Serial.print(".");
  102.     myBC20.LED_ON();
  103.     delay(500);
  104.     myBC20.LED_OFF();
  105.     delay(500);
  106.   }
  107.   Serial.println("网络已连接!");
  108.   Serial.println("连接到DFRobot Easy-IoT");
  109.   //配置物联网服务器
  110.   myBC20.setServer(EasyIot_SERVER, PORT);
  111.   Serial.println("服务器可用!");
  112.   //连接DFRobot Easy-IoT
  113.   ConnectCloud();
  114.   Serial.println("云连接成功!");
  115.   //启用 PSM(调制解调器)
  116.   myBC20.setPSMMode(ePSM_ON);
  117.   //启用深度睡眠模式(CPU)
  118.   myBC20.configSleepMode(eSleepMode_DeepSleep);
  119. }
  120. void loop() {
  121.   Serial.println("发送消息到云端... ");
  122.   myBC20.publish(pubTopic, "Hello");
  123.   Serial.println("消息已发送");
  124.   /*
  125.     控制器和 BC20(NB-IoT 模块)由 UNO 桥接。
  126.     要将模块置于低功耗模式,
  127.     只需将 UNO 置于深度睡眠模式即可。
  128.     BC20 将自动达到最低功耗(PSM + 深度睡眠模式)。
  129.     要唤醒模块,
  130.     先唤醒UNO,再唤醒BC20。
  131.   */
  132.   if (!myBC20.stmLowpower()) {
  133.     Serial.println("UNO进入睡眠模式!");
  134.   }
  135.   //唤醒间隔
  136.   delay(60000);
  137.   // IRQ 的上升沿唤醒 UNO
  138.   myBC20.stmWakeup(WAKEUP_PIN);
  139.   Serial.println("UNO退出睡眠模式!");
  140.   //唤醒 BC20
  141.   myBC20.changeColor(WHITE);
  142.   while (!myBC20.BC20Wakeup()) {
  143.     myBC20.LED_ON();
  144.     delay(500);
  145.     myBC20.LED_OFF();
  146.     delay(500);
  147.   }
  148.   Serial.println("BC20 成功退出 PSM!");
  149. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-9-7 20:17:35

在Easy-IOT平台工作间,可看到收到三条信息

【Arduino】168种传感器系列实验(209)---移远 BC20 NB+GNSS模块图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-9-7 20:21:06

UNO主板和BC20模块大概休眠50秒后发送一条信息,循环

【Arduino】168种传感器系列实验(209)---移远 BC20 NB+GNSS模块图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-9-7 20:22:56

实验串口返回情况

【Arduino】168种传感器系列实验(209)---移远 BC20 NB+GNSS模块图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-9-7 21:07:29

  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二百零九:Gravity: I2C & UART BC20 NB-IoT & GNSS通信模块
  NB-IoT广域低功耗无线通信 GPS/北斗精准定位 户外物联网必备
  项目二十四:通过Easy-IOT平台发布消息(数字0或1),唤醒BC20模块

  实验开源代码

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验二百零九:Gravity: I2C & UART BC20 NB-IoT & GNSS通信模块
  4.   NB-IoT广域低功耗无线通信 GPS/北斗精准定位 户外物联网必备
  5.   项目二十四:通过Easy-IOT平台发布消息(数字0或1),唤醒BC20模块
  6.   实验接线:
  7.   BC20       UNO
  8.   VIN        5V
  9.   GND        GND
  10.   SCL        A5
  11.   SDA        A4
  12.   ISR        D2
  13. */
  14. #include "DFRobot_BC20_Gravity.h"
  15. //RGB有7种颜色可供选择
  16. #define  RED 0
  17. #define  BLUE 1
  18. #define  GREEN 2
  19. #define  YELLOW 3
  20. #define  PURPLE 4
  21. #define  CYAN 5
  22. #define  WHITE 6
  23. //配置参数休眠模式
  24. #define  SLEEP_INTERVAL 10000
  25. static uint32_t timeStamp = 0;
  26. bool sleepFlag = false;
  27. //配置设备证书信息
  28. char* Iot_id = "wGkCJkIng";
  29. char* Client_ID  = "BC20 NB-IoT";
  30. char* Iot_pwd    = "QMkC1kInRz";
  31. //配置域名和端口号
  32. char* EasyIot_SERVER = "182.254.130.180";
  33. char* PORT = "1883";
  34. //设置需要发布的设备编号
  35. char* pubTopic = "hJmOvRIng";
  36. //IIC通讯
  37. #define USE_IIC
  38. //硬件串口通讯
  39. //#define USE_HSERIAL
  40. //软件串口通讯
  41. //#define USE_SSERIAL
  42. DFRobot_BC20_IIC myBC20(0x33);
  43. /*
  44.    每次模块收到消息时,都会调用此函数。
  45.    它将打印消息和相应的主题。
  46. */
  47. void callback(char * topic, uint8_t * payload, unsigned int len) {
  48.   Serial.print("接收[主题:");
  49.   Serial.print(topic);
  50.   Serial.print("] ");
  51.   for (int i = 0; i < len; i++) {
  52.     Serial.print((char)payload[i]);
  53.   }
  54.   Serial.println();
  55.   timeStamp = millis();
  56.   sleepFlag = true;
  57. }
  58. void ConnectCloud() {
  59.   Serial.print("尝试MQTT连接...");
  60.   while (!myBC20.connected()) {
  61.     Serial.print(".");
  62.     if (myBC20.connect(Client_ID, Iot_id, Iot_pwd)) {
  63.       Serial.println("连接服务器正常");
  64.     } else {
  65.       //用于检测设备与服务器的连接
  66.       if (myBC20.getQMTCONN())
  67.         break;
  68.     }
  69.   }
  70.   
  71.   while (!myBC20.subTopic('0', '1',pubTopic, '0')) {
  72.     Serial.print(".");
  73.   }
  74.   Serial.print("主题:");
  75.   Serial.print(pubTopic);
  76.   Serial.println("已经订阅了!");
  77. }
  78. void setup() {
  79.   Serial.begin(115200);
  80.   myBC20.LED_OFF();
  81.   //启动BC20
  82.   Serial.print("正在启动BC20,请稍等...... ");
  83.   myBC20.changeColor(RED);
  84.   while (!myBC20.powerOn()) {
  85.     Serial.print(".");
  86.     myBC20.LED_ON();
  87.     delay(500);
  88.     myBC20.LED_OFF();
  89.     delay(500);
  90.   }
  91.   Serial.println("BC20 启动成功!");
  92.   //检查 SIM 卡是否插入
  93.   Serial.print("检查SIM卡...");
  94.   myBC20.changeColor(GREEN);
  95.   while (!myBC20.checkNBCard()) {
  96.     Serial.print(".");
  97.     myBC20.LED_ON();
  98.     delay(500);
  99.     myBC20.LED_OFF();
  100.     delay(500);
  101.   }
  102.   Serial.println("OK!");
  103.   /*如果你使用的是大内存主控,你可以开启
  104.    *以下功能可查看SIM卡详情
  105.    *打印IMEI、ICCID和IMSI */
  106.   //  myBC20.getGSN(IMEI);
  107.   //  Serial.print("BC20 IMEI: ");
  108.   //  Serial.println(sGSN.imei);
  109.   //  Serial.print("SIM card ICCID:");
  110.   //  Serial.print(myBC20.getQCCID());
  111.   //  Serial.print("SIM card IMSI: ");
  112.   //  Serial.println((char *)myBC20.getIMI());
  113.   /*
  114.      模块将自动尝试连接到网络(移动站)。
  115.      检查它是否已连接到网络。
  116.   */
  117.   Serial.print("正在连接网络......");
  118.   myBC20.changeColor(BLUE);
  119.   while (myBC20.getGATT() == 0) {
  120.     Serial.print(".");
  121.     myBC20.LED_ON();
  122.     delay(500);
  123.     myBC20.LED_OFF();
  124.     delay(500);
  125.   }
  126.   Serial.println("已连接!");
  127.   //设置回调函数
  128.   myBC20.setCallback(callback);
  129.   Serial.println("连接到DFRobot Easy-IoT");
  130.   //配置物联网服务器
  131.   myBC20.setServer(EasyIot_SERVER, PORT);
  132.   Serial.println("服务器可用!");
  133.   //连接DFRobot Easy-IoT
  134.   ConnectCloud();
  135.   Serial.println("云连接成功!");
  136.   //启用深度睡眠模式
  137.   myBC20.configSleepMode(eSleepMode_DeepSleep);
  138.   //当进入 PSM 时,BC20 将不会收到任何从云端发出的消息。
  139.   //禁用 PSM
  140.   myBC20.setPSMMode(ePSM_OFF);
  141.   //使模块进入睡眠模式。
  142.   if (!myBC20.stmLowpower()) {
  143.     Serial.println("BC20模块进入睡眠模式!");
  144.   }
  145. }
  146. void loop() {
  147.   myBC20.loop();
  148. /*
  149.      笔记:
  150.      1.云端发送的第一条消息是唤醒模块。
  151.      此消息将被丢弃。
  152.      2.第二条消息和后面的消息将被接收并打印
  153.      在模块进入睡眠模块之前。
  154.      3.当模块再次进入睡眠模式时,又一次唤醒信息
  155.      在发送有效消息之前需要。
  156.      4.确定进入每个睡眠模式的时间间隔
  157.      按 SLEEP_INTERVAL。
  158.   */
  159.   if (sleepFlag == true) {
  160.     if (millis() - timeStamp > SLEEP_INTERVAL) {
  161.       sleepFlag = false;
  162.       //使模块进入睡眠模式。
  163.       if (!myBC20.stmLowpower()) {
  164.         Serial.println("BC20模块进入睡眠模式!");
  165.       }
  166.     }
  167.   }
  168. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-9-7 21:09:13

通过Easy-IOT平台发布消息(数字0或1),唤醒BC20模块


【Arduino】168种传感器系列实验(209)---移远 BC20 NB+GNSS模块图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-9-7 21:09:58

实验串口返回情况

【Arduino】168种传感器系列实验(209)---移远 BC20 NB+GNSS模块图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-9-8 07:51:27

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

Arduino 系列传感器和执行器模块实验目录清单:
一块扩展板完成Arduino的10类37项实验(代码+图形+仿真)
https://mc.dfrobot.com.cn/thread-280845-1-1.html
连杆形式的腿机构十一种:盘点机器人行走背后的机械原理
https://mc.dfrobot.com.cn/thread-308097-1-1.html
【花雕动手做】超低成本,尝试五十元的麦克纳姆轮小车!
https://mc.dfrobot.com.cn/thread-307863-1-1.html
【花雕动手做】超迷你哦,用徽商香烟盒做个智能小车!
https://mc.dfrobot.com.cn/thread-307907-1-1.html
【花雕动手做】太搞笑啦,一支胶管制成二只蠕动机器人
https://mc.dfrobot.com.cn/thread-308046-1-1.html
【花雕动手做】快餐盒盖,极低成本搭建机器人实验平台
https://mc.dfrobot.com.cn/thread-308063-1-1.html
【花雕动手做】特别苗条,使用微波传感器控制的纤细小车
https://mc.dfrobot.com.cn/thread-308866-1-1.html
【花雕动手做】脑洞大开、五花八门的简易机器人66种
https://mc.dfrobot.com.cn/thread-307900-1-1.html

实验一百五十八:QMC5883L电子指南针罗盘模块 三轴磁场传感器GY-271
https://mc.dfrobot.com.cn/thread-308195-1-1.html
实验一百六十三:BMI160 6轴惯性运动传感器 16位3轴加速度+超低功耗3轴陀螺仪  I2C/SPI 14LGA
https://mc.dfrobot.com.cn/thread-310371-1-1.html
实验一百六十五:2.4 英寸 TFT LCD 触摸屏模块 XPT2046 PCB ILI9341 240x320 像素 8 位 SPI 串口显示器
https://mc.dfrobot.com.cn/thread-309803-1-1.html
实验一百七十六:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
https://mc.dfrobot.com.cn/thread-309845-1-1.html
实验一百八十三:GY-530 VL53L0X 激光测距 ToF测距 飞行时间测距传感器模块 IIC通信协议
https://mc.dfrobot.com.cn/thread-310273-1-1.html
实验一百八十五:MAX4466声音传感器 驻极体话筒放大器 麦克风可调功放模块 microphone
https://mc.dfrobot.com.cn/thread-310193-1-1.html
实验一百八十九:TDA1308 硅麦克风 数字咪头放大模块 拾音器放大板 楼氏SUNLEPHANT
https://mc.dfrobot.com.cn/thread-310246-1-1.html
实验一百九十三:TCS34725颜色识别传感器 RGB IIC明光感应模块 ColorSensor
https://mc.dfrobot.com.cn/thread-310209-1-1.html
实验二百:RCWL-0515微波雷达感应开关 人体感应 智能感应探测传感器 12-15米远距离2.7G微波检测模块
https://mc.dfrobot.com.cn/thread-310313-1-1.html
实验二百零三:Air724UG合宙 Cat14G模块 DTU物联网UART串口通信数据TCP透传 核心板组合套餐
https://mc.dfrobot.com.cn/thread-310342-1-1.html
实验二百零九:Gravity: I2C & UART BC20 NB-IoT & GNSS通信模块 NB-IoT广域低功耗无线通信 GPS/北斗精准定位
https://mc.dfrobot.com.cn/thread-310433-1-1.html


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-9-8 09:02:52

DFRobot_BC20_Gravity库部分函数

  1. /**
  2.    * @用于以布尔返回值打开BC20。  
  3.    */  
  4.   bool powerOn(void);  
  5.   /**
  6.    * @用于检查是否存在带有bool返回值的NB卡
  7.    */  
  8.   bool  checkNBCard(void);
  9.   
  10.   /**
  11.    * @对于网络连接,成功返回1,失败返回0
  12.    */  
  13.   uint8_t  getGATT(void);
  14.   /**
  15.    * @用于配置bc20的休眠模式,参数为枚举类型
  16.    */
  17.   typedef enum {
  18.     eSleepMode_Disable,   
  19.     eSleepMode_DeepSleep  
  20.     eSleepMode_Light   
  21.   }eSleepMode_t;
  22.   
  23.   bool  configSleepMode(eSleepMode_t mode);
  24.   
  25.   /**
  26.    * @获得扩展信号质量
  27.    */  
  28.   void  getESQ(void);
  29.   
  30.   /**
  31.    * @获取网络注册状态   
  32.    */  
  33.   void  getEREG(void);
  34.   
  35.   /**
  36.    * @获取PDP地址
  37.    */
  38.   void  getGPADDR(void);
  39.   
  40.   /**
  41.    * @对于bc20的远程固件升级,参数为升级的url
  42.    */
  43.   bool  setQFOTADL(String url);
  44.   
  45.   /**
  46.    * @用于检测当前设备是否连接
  47.    */
  48.   bool  connected();
  49.   
  50.   /***
  51.    * @用于将设备连接到服务器
  52.    */
  53.   bool  connect(char * clientID, char * username,char * password,char connectID ='0');
  54.   
  55.   /**
  56.    * @用于检测设备和服务器之间的连接
  57.    */
  58.   bool  getQMTCONN(void);
  59.   
  60.   /**
  61.    * @用于连接物联网站点
  62.    */
  63.   bool  setServer(char* IPAddress,char* port,char connectID = '0');
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-9-8 09:04:43

DFRobot_BC20_Gravity库部分函数之二

  1. /**
  2.    * @用于向服务器发送消息,参数说明:第一个参数用于指定主题,  
  3.    * @第二个参数是要发送的具体数据
  4.    */
  5.   bool  publish(char* topic,char* msg);
  6.   
  7.   /**
  8.    * @这个函数用于在服务器发送给订阅者时接收数据
  9.    */
  10.   void  loop();
  11.   
  12.   /**
  13.    * @订阅的第三个参数是指定主题
  14.    */
  15.   bool  subTopic(char connectID, char msgID, char* topic, char qos);
  16.   
  17.   /**
  18.    * @用于模块电源控制。如果返回值为1,则模块处于供电状态;
  19.    * @如果返回值为0,模块处于掉电状态   
  20.    */
  21.   uint8_t  getQGNSSC(void);
  22.   
  23.   /**
  24.    * @用于获取指定的卫星信息,该参数用于指定要获取的信息类型。
  25.    * @参数选择如下:
  26.    */
  27.   bool  getQGNSSRD(char* sth);
  28.   
  29.   /**
  30.    * @这两个函数用于控制led灯的亮灭
  31.    */
  32.   void  LED_ON();void LED_OFF();
  33.   
  34.   /**
  35.    * @获取NB卡的序列号
  36.    */
  37.   void  getGSN(uint8_t cmd=0);
  38.   
  39.   /**
  40.    * @获取SIM卡号
  41.    */
  42.   String  getQCCID(void);
  43.   
  44.   /**
  45.    * @获取当前网络时间
  46.    */
  47.   String  getCLK(void);
  48.   
  49.   /**
  50.    * @用于通过外部中断唤醒开发板,外部中断引脚输出信号
  51.    */
  52.   bool  stmWakeup(uint8_t Awake_Pin);
  53.   
  54.   /**
  55.    * @用于获取当前网络信号的强度
  56.    */
  57.   void  getSQ(void);
  58.   
  59.   /**
  60.    * @检查来自 BC20 的数据
  61.    */
  62.   void  available(void);
  63.   /**
  64.    * @发送单个字符到 bc20
  65.    */
  66.   void  sendATCMDBychar(void);
  67.   /**
  68.    * @Receive bc20 返回的数据
  69.    */
  70.   void  readData(void);
  71.   /**
  72.    * @用于处理接收数据的格式
  73.    */
  74.   void setCallback(void (*call)(char*, uint8_t*, unsigned int));
复制代码




回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-9-8 09:06:13

DFRobot_BC20_Gravity库部分函数之三

  1.   /**
  2.    * @用于控制LED灯的颜色
  3.    * @它的参数是字符串
  4.    * @"LED_R_ON";"LED_R_OFF";
  5.    * @"LED_G_ON";"LED_G_OFF";
  6.    * @"LED_B_ON";"LED_B_OFF";
  7.    * @"LED_P_ON";"LED_P_OFF";
  8.    * @"LED_C_ON";"LED_C_OFF";
  9.    * @"LED_W_ON";"LED_W_OFF";
  10.    * @"LED_B_ON";"LED_Y_OFF";
  11.    */
  12.   void controlLED(String str);
  13.   void changeColor(uint8_t newColor);
  14.   
  15.   /**
  16.    * @设置低功耗模式
  17.    */
  18.   bool setPSMMode(ePSM_t status);
  19.   typedef enum {
  20.     ePSM_OFF,
  21.     ePSM_ON,
  22.     ePSM_OFF_ResetParam
  23.   } ePSM_t;
  24.   /**
  25.     * @启用/禁用深度睡眠唤醒指示
  26.     * @参数是宏观定义的
  27.     * @开或关
  28.    */
  29.   bool setQATWAKEUP(uint8_t enable);
  30.   
  31.   /**
  32.    * @进入低功耗模式
  33.    */
  34.   void stmLowpower();
  35.   
  36.   /**
  37.    * @发送命令,参数可以是String/char/uint8_t
  38.    * @这些参数由AT指令集决定
  39.    */
  40.   void sendATCMD(char* str);
  41.   
  42.   void LEDFlash(String Color);
  43.   
  44.   /**
  45.    * @发送命令,参数可以是String/char/uint8_t
  46.    * @这些参数由AT指令集决定
  47.    */
  48.   bool stmWakeup(uint8_t Awake_Pin);
  49.   
  50.   bool BC20Wakeup();
复制代码


回复

使用道具 举报

123456
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail