71506浏览
楼主: 驴友花雕

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

[复制链接]

驴友花雕  中级技神
 楼主|

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

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

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

  实验开源代码
  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验二百零九:Gravity: I2C & UART BC20 NB-IoT & GNSS通信模块
  4.   NB-IoT广域低功耗无线通信 GPS/北斗精准定位 户外物联网必备
  5.   项目十八:设备通过Easy-IoT物联网云平台发送消息到云端
  6.   实验接线:
  7.   BC20       UNO
  8.   VIN        5V
  9.   GND        GND
  10.   SCL        A5
  11.   SDA        A4
  12. */
  13. #include "DFRobot_BC20_Gravity.h"
  14. //RGB有7种颜色可供选择
  15. #define  RED 0
  16. #define  BLUE 1
  17. #define  GREEN 2
  18. #define  YELLOW 3
  19. #define  PURPLE 4
  20. #define  CYAN 5
  21. #define  WHITE 6
  22. //配置设备证书信息
  23. char* Iot_id = "qlZ0uezGR";
  24. char* Client_ID  = "BC20 NB-IoT";
  25. char* Iot_pwd    = "3_W0uezGgz";
  26. //配置域名和端口号
  27. char* EasyIot_SERVER = "182.254.130.180";
  28. char* PORT = "1883";
  29. //设置需要发布的设备编号
  30. char* pubTopic = "hJmOvRIng";
  31. //IIC通讯
  32. #define USE_IIC
  33. //硬件串口通讯
  34. //#define USE_HSERIAL
  35. //软件串口通讯
  36. //#define USE_SSERIAL
  37. DFRobot_BC20_IIC myBC20(0x33);
  38. void ConnectCloud() {
  39.   Serial.print("尝试MQTT连接...");
  40.   myBC20.changeColor(YELLOW);
  41.   while (!myBC20.connected()) {
  42.     Serial.print(".");
  43.     myBC20.LED_ON();
  44.     delay(500);
  45.     myBC20.LED_OFF();
  46.     delay(500);
  47.     if (myBC20.connect(Client_ID, Iot_id, Iot_pwd)) {
  48.       Serial.println("\n连接服务器正常");
  49.     } else {
  50.       //用于检测设备与服务器的连接
  51.       if (myBC20.getQMTCONN())
  52.         break;
  53.     }
  54.   }
  55. }
  56. void setup() {
  57.   Serial.begin(115200);
  58.   myBC20.LED_OFF();
  59.   //初始化 BC20
  60.   Serial.print("正在启动BC20,请稍等...... ");
  61.   myBC20.changeColor(RED);
  62.   while (!myBC20.powerOn()) {
  63.     Serial.print(".");
  64.     myBC20.LED_ON();
  65.     delay(500);
  66.     myBC20.LED_OFF();
  67.     delay(500);
  68.   }
  69.   Serial.println("BC20 启动成功!");
  70.   //检查 SIM 卡是否插入
  71.   Serial.println("正在检查SIM卡……");
  72.   myBC20.changeColor(GREEN);
  73.   while (!myBC20.checkNBCard()) {
  74.     Serial.println("请插入NB SIM卡!");
  75.     myBC20.LED_ON();
  76.     delay(500);
  77.     myBC20.LED_OFF();
  78.     delay(500);
  79.   }
  80.   Serial.println("SIM 卡检查OK!");
  81.   //打印 IMEI、ICCID 和 IMSI
  82.   myBC20.getGSN(IMEI);
  83.   Serial.print("BC20 IMEI: ");
  84.   Serial.println(sGSN.imei);
  85.   Serial.print("SIM card ICCID:");
  86.   Serial.print(myBC20.getQCCID());
  87.   Serial.print("SIM card IMSI: ");
  88.   Serial.println((char *)myBC20.getIMI());
  89.   /*
  90.      模块将自动尝试连接到网络(移动站)。
  91.      检查它是否已连接到网络。
  92.   */
  93.   Serial.println("正在连接网络...");
  94.   myBC20.changeColor(BLUE);
  95.   while (myBC20.getGATT() == 0) {
  96.     Serial.print(".");
  97.     myBC20.LED_ON();
  98.     delay(500);
  99.     myBC20.LED_OFF();
  100.     delay(500);
  101.   }
  102.   Serial.println("网络已连接!");
  103.   Serial.println("连接到DFRobot Easy-IoT!");
  104.   //Configure IoT Server
  105.   myBC20.setServer(EasyIot_SERVER, PORT);
  106.   Serial.println("服务器可用!");
  107.   ConnectCloud();
  108. }
  109. void loop() {
  110.   delay(10000);
  111.   Serial.println("发送消息到云端...");
  112.   myBC20.publish(pubTopic, "Hello World");
  113.   Serial.println("消息已发送");
  114. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-9-7 07:24:00

实验串口返回情况

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

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-9-7 07:36:18

设备通过Easy-IoT发送消息到云端de核心设置
1、模块按照连线图与主控板相连,连接好NB-IoT天线,插入SIM卡。
2、将记录下来Iot_id、Iot_pwd和Topic这三个参数的值填入样例代码中,其它参数不变。(Client_ID用于区分不同设备,可任意配置一个数值,这里使用“BC20 NB-IoT")

  1. //配置设备证书信息
  2. char* Iot_id = "HJZv1ZFRSQ"; //填入Iot_id
  3. char* Client_ID = "BC20 NB-IoT";
  4. char* Iot_pwd = "ByfP1-YABX"; //填入Iot_pwd
  5. //配置域名和端口号(这是固定的)
  6. char* EasyIot_SERVER = "182.254.130.180";
  7. char* PORT = "1883";
  8. //设置需要发布的设备编号
  9. char* pubTopic = "JoUOAg_WR"; //填入Topic
复制代码




回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-9-7 08:39:30

为了验证云平台是否确实收到设备端所发送的信息“Hello World”,回到Easy-IoT云平台的工作间,最上面一行,6/1000,表示已经接收到6条信息,具体可点击Topic下方的查看详情(红点处)查看。

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

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-9-7 08:41:04

在查询结果一栏中可找到云端接收到的消息。

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

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-9-7 09:44:06

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

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

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

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-9-7 09:45:29

实验串口返回情况

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

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-9-7 09:47:51

在查询结果一栏中可找到云端接收到的消息。


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

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-9-7 11:30:02

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

  实验开源代码

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


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-9-7 11:36:57

打开工作台,点发送消息

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

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-9-7 11:39:43

在发送框填入待发送的信息“everything fine?”,点发送


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

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-9-7 11:41:07

查看信息

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

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-9-7 11:43:04

实验串口返回情况

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

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-9-7 12:27:55

在工作台,发送“RED”


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

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-9-7 12:28:37

实验串口返回情况

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

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-9-7 12:31:16

实验场景图——LED 是红色的


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

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-9-7 12:38:04

发送不同字符串命令,BC20模块上RGB灯显示不同的颜色


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

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-9-7 12:39:03

实验串口返回情况

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

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-9-7 14:06:45

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

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

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

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-9-7 14:09:36

通过工作台,发送字符串命令“topic”和“data”

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

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-9-7 14:10:28

实验串口返回情况

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

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail