[Diao Ye aprende a programar] Arduino práctico (193) --- Quectel BC20 NB+GNSS módulo 7

La referencia a 37 sensores y módulos ha estado muy difundida en Internet, de hecho, debe haber más de 37 módulos sensores compatibles con Arduino. En vista del hecho de que he acumulado algunos módulos de sensores y actuadores a la mano, de acuerdo con el concepto de verdadero conocimiento (debe ser práctico), con el propósito de aprender y comunicar, aquí voy a tratar de hacer más. experimentos uno por uno. Ya sea que tenga éxito o no, se registrará —— Pequeño progreso o problemas irresolubles, espero poder arrojar ladrillos y chispas de jade.

[Arduino] Experimentos de la serie de módulos de sensores 168 (código de datos + programación de simulación + programación de gráficos)
experimento 193: Gravedad: I2C y UART BC20 Módulo de comunicación NB-IoT y GNSS
Comunicación inalámbrica de baja potencia de área amplia NB-IoT GPS / Beidou Posicionamiento preciso Necesario para Internet de las cosas al aire libre

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
Puntos de conocimiento: Quectel BC20
BC20 es un módulo de comunicación inalámbrica NB-IoT con alto rendimiento, bajo consumo de energía, multibanda y compatible con la función de posicionamiento GNSS. Su tamaño es de solo 18,7 mm × 16,0 mm × 2,1 mm, lo que puede satisfacer al máximo las necesidades de los equipos terminales para productos de módulos de tamaño pequeño y, al mismo tiempo, ayudar de manera efectiva a los clientes a reducir el tamaño del producto y optimizar el costo del producto.

BC20 está diseñado para ser compatible con los módulos de la serie MC20 de Quectel GSM/GPRS/GNSS, lo cual es conveniente para que los clientes diseñen y actualicen productos de manera rápida y flexible. BC20 proporciona una gran cantidad de interfaces externas y pilas de protocolos, y admite plataformas en la nube de IoT como China Mobile OneNET, China Telecom IoT y Alibaba Cloud IoT, lo que brinda una gran comodidad para las aplicaciones de los clientes.

Basado en tecnología GNSS avanzada, BC20 puede admitir el algoritmo de demodulación de BeiDou y el sistema de navegación satelital dual GPS, lo que hace que su posicionamiento sea más preciso y la interferencia anti-múltiple más fuerte, lo que tiene más ventajas que el módulo de posicionamiento GPS único tradicional. Además, el módulo BC20 tiene un LNA incorporado y un algoritmo de bajo consumo: el primero garantiza una mayor sensibilidad y el segundo garantiza un menor consumo de corriente en el modo de bajo consumo.

En comparación con la solución tradicional NB-IoT + GNSS, el diseño integrado de BC20 reduce su volumen en un 40 %. Con su tamaño compacto, consumo de energía ultra bajo y rango de temperatura de funcionamiento ultra amplio, BC20 tiene mayores ventajas en varias aplicaciones; sus principales áreas de aplicación son: antirrobo de bicicletas y motocicletas, seguimiento de mascotas, seguimiento de propiedades financieras y grabadora de conducción, etc.

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

[Arduino] 168 tipos de experimentos de la serie de módulos de sensores (código de datos + programación de simulación + programación de gráficos)
experimento 209: Gravedad: I2C y UART BC20 NB-IoT y módulo de comunicación GNSS
NB-IoT comunicación inalámbrica de baja potencia de área amplia GPS/Beidou Posicionamiento preciso al aire libre IoT Necesario
Artículo 10: Enviar comandos AT al módulo BC20 a través del puerto serie USB

Código fuente abierto experimental

/*
  【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种颜色可供选择
#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_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());
  }
}

Retorno de puerto serie experimental

inserte la descripción de la imagen aquí

Comandos AT de uso común:
AT - Prueba de comando
AT AT+QRST=1 - reset BC20
ATI - revisión de la versión de firmware
AT+CSQ - informe de calidad de la señal
0 - <=-113 dBm
1 - -111 dBm
2 - -109 dBm
3 - -107 dBm
… …
30 - -53 dBm
31 - >-51 dBm
99 -
AT+CGATT desconocido o indetectable - Conexión o desconexión de PS. Consulta el estado de conexión de la red.
0 - desconectado de la red
1 - conectado a la red
AT+CGATT=1 - conectado a la red
AT+CGATT=0 - desconectado de la red
AT+CIMI - consulta el número IMSI de BC20
AT+CGSN=1 - consulta el BC20 IMEI.
AT+CGSN=0 - Consulta el SN (número de serie) de BC20.
AT+QCCID - Identificación de tarjeta USIM (ICCID). Esto generalmente se usa para verificar el estado de la tarjeta SIM.
AT+CCLK: devuelve la fecha y la hora actuales.
AT+QPOWD=0: apaga el módulo. (Use "myBC20.powerOn()" para encender el módulo)

Los siguientes comandos AT se utilizan para GNSS:
AT+QGNSSC: consultar el estado de energía del GNSS
0: apagar el GNSS
1:
encender el GNSS AT+QGNSSC=1: encender el GNSS
AT+QGNSSC=0: apagar el GNSS
AT+QGNSSRD: obtener toda la información GNSS

Para obtener más detalles, consulte el "Manual de comandos AT de Quectel BC20"
o el "Manual de comandos AT de BC20 GNSS".

[Arduino] 168 tipos de experimentos de la serie de módulos de sensores (código de datos + programación de simulación + programación de gráficos)
experimento 209: Gravedad: I2C y UART BC20 NB-IoT y módulo de comunicación GNSS
NB-IoT comunicación inalámbrica de baja potencia de área amplia GPS/Beidou el posicionamiento preciso es necesario para el Internet de las cosas en exteriores
Elemento 11: El procedimiento de prueba del módulo BC20 más simple: medir la intensidad de la señal de NB-IoT

Experimente con la programación de gráficos de código abierto (Mind+, Mixly, aprendiendo mientras programa)

inserte la descripción de la imagen aquí
Retorno de puerto serie experimental

inserte la descripción de la imagen aquí

Descripción del hardware experimental
1. Antena NB-IoT
Las funciones de posicionamiento GNSS y comunicación NB-IoT requieren una antena externa. Los usuarios pueden usar la antena provista en el paquete del producto o comprar una antena externa compatible adicional para mejorar aún más la capacidad de enviar y recibir señales o como respaldo.

La placa de desarrollo admite la comunicación NB-IoT en las dos bandas de frecuencia de B5/B8. En la actualidad, el NB-IoT de los tres principales operadores nacionales, China Mobile, China Telecom y China Unicom, también opera principalmente en estas dos bandas de frecuencia. Los parámetros específicos son los siguientes: NB-IoT doméstico
principalmente portadores y bandas de comunicación

inserte la descripción de la imagen aquí

Los usuarios pueden usar antenas de PCB (suministradas con el producto), antenas de PCB flexibles FPC, antenas de resorte, antenas de barra adhesiva y otras antenas que cubran la banda de frecuencia B5/B8 (es decir, la frecuencia operativa es de 824 MHz~960 MHz), que generalmente se usan en celular 2G/GSM/GPRS La antena de comunicación también se puede utilizar para comunicación NB-IoT (siempre y cuando la frecuencia de trabajo cubra la banda de frecuencia B5/B8), cabe señalar que el conector de la antena es de primera generación Conector IPEX.

2. Antena GNSS
La placa de desarrollo admite navegación y posicionamiento de doble estrella GPS/BeiDou (BeiDou), y los parámetros específicos son los siguientes:
banda de frecuencia de trabajo GNSS

inserte la descripción de la imagen aquí
Los usuarios pueden usar GPS activo/BeiDou (Beidou) antena cerámica de doble frecuencia, o usar GPS activo de frecuencia única o antena cerámica BeiDou (Beidou) Cabe señalar que el conector de la antena es un conector IPEX de primera generación.
Se recomienda utilizar una antena de cerámica activa cuadrada con polarización circular derecha para igualar la polarización de la señal del satélite y obtener una mejor señal. La forma de la antena de cerámica es cuadrada para polarización circular derecha y rectangular para polarización lineal.
No se recomiendan las antenas pasivas. La antena pasiva necesita cooperar con el amplificador LNA para mejorar la fuerza de la señal recibida, pero la placa de desarrollo no está equipada con el amplificador LNA.

3. Tarjeta SIM
La comunicación NB-IoT requiere una tarjeta SIM NB-IoT IoT dedicada, como tarjetas SIM de teléfonos móviles, tarjetas 4G IoT y otros tipos de tarjetas SIM que no se pueden reemplazar. En la actualidad, el paquete del producto contiene una tarjeta SIM dedicada de Internet de las cosas NB-IoT de China Unicom, que incluye un paquete básico anual, que se puede usar al insertarla en la placa de desarrollo NB-IoT o en el módulo de comunicación.Si el tráfico no puede cumplir con el uso requisitos, se puede recargar El paquete de datos mensual aumenta el tráfico del mes en curso. En el futuro, se lanzarán más tarjetas SIM de operadores dedicadas a NB-IoT Internet of Things para que los usuarios elijan. Los cargos de la tarjeta SIM NB-IoT de China Unicom son los siguientes:

inserte la descripción de la imagen aquí

Nota
#De acuerdo con los requisitos del Ministerio de Industria y Tecnología de la Información y otros seis departamentos, para prevenir y combatir de manera efectiva el fraude de información de comunicación, todas las tarjetas SIM dedicadas de NB-IoT Internet of Things tienen la función de enlace de tarjeta de máquina, que no puede ser cancelado
#La tarjeta SIM se inserta en el dispositivo, y la comunicación exitosa con el primer encendido (con la estación base) se considera activada y vinculada al módulo de comunicación (conexión máquina-tarjeta), y el ciclo de facturación anual ( 360 días) comienza.
Las tarjetas SIM de teléfonos móviles #2G/3G/4G o las tarjetas IoT de alto flujo no se pueden usar en lugar de dispositivos NB-IoT.
#La tarjeta SIM de Internet de las cosas no se puede utilizar para dispositivos que no sean NB-IoT, como teléfonos móviles, tabletas, módulos 2G/3G/4G; de lo contrario, la tarjeta SIM se apagará.
# Si la tarjeta SIM que se ha vinculado a la tarjeta de la máquina se inserta en otros dispositivos para la comunicación, la tarjeta SIM se apagará.
#La tarjeta SIM de Internet de las cosas solo puede transmitir datos, sin comunicación de voz ni funciones de SMS.
#Los usuarios pueden buscar y prestar atención a la cuenta pública "DF Internet of Things" a través de WeChat, autoverificar el uso del tráfico SIM o recargar tarjetas SIM.

[Arduino] 168 tipos de experimentos de la serie de módulos de sensores (código de datos + programación de simulación + programación de gráficos)
experimento 209: Gravedad: I2C y UART BC20 NB-IoT y módulo de comunicación GNSS
NB-IoT comunicación inalámbrica de baja potencia de área amplia GPS/Beidou el posicionamiento preciso es necesario para el
proyecto 12 de Internet de las cosas al aire libre: consulta la información del protocolo GGA del sistema global de navegación por satélite a través del puerto serie

Código fuente abierto experimental

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二百零九:Gravity: I2C & UART BC20 NB-IoT & GNSS通信模块
  NB-IoT广域低功耗无线通信 GPS/北斗精准定位 户外物联网必备
  项目十二:通过串口查询全球导航卫星系统GGA协议的信息
  实验接线:
  BC20       UNO
  VIN        5V
  GND        GND
  SCL        A5
  SDA        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_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 启动成功!");

  //禁用睡眠模式
  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.getQGNSSRD(NMEA_GGA);
  /*
     UTC 时间,格式:hhmmss.ss,例如。162436.54 => 16:24:36.54
     h - 小时
     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_DEV
  delay(500);
#else
  delay(5000);
#endif
}

Retorno de puerto serie experimental

inserte la descripción de la imagen aquí
Ejemplo de GPGGA: Ejemplo de GPGGA:Ejemplo de GPGG A : GPGGA,092204.999,4250.5589,S,14718.5084,E,1,04,24.4,19.7,M,0000*1F
campo 0: $GPGGA, ID de declaración, que indica que la declaración es Datos fijos del sistema de posicionamiento global ( GGA) Información de posicionamiento GPS
Campo 1: Hora UTC, hhmmss.sss, formato de hora-minuto-segundo
Campo 2: Latitud ddmm.mmmm, formato de grado-minuto (si los primeros dígitos son insuficientes, complete con 0)
Campo 3: Latitud N (latitud norte) o S (latitud sur)
Campo 4: Longitud dddmm.mmmm, en formato de grado-minuto (si el primer dígito es insuficiente, agregue 0)
Campo 5: Longitud E (longitud este) o W (longitud oeste)
Campo 6: estado del GPS, 0=no posicionado, 1=posicionado no diferencial, 2=posicionamiento diferencial, 3=PPS no válido, 6=
campo de estimación 7: el número de satélites en uso (00 - 12) (llene 0 si el principal dígitos son insuficientes)
campo 8: HDOP factor de precisión horizontal (0.5 - 99.9)
campo 9: Altitud (-9999.9 - 99999.9)
Campo 10: La altura del elipsoide de la tierra relativa al geoide
Campo 11: Tiempo diferencial (el número de segundos desde que se recibió la última señal diferencial, estará vacío si no es un posicionamiento diferencial)
Campo 12 : ID de estación diferencial número 0000 - 1023 (si el número de dígitos iniciales es insuficiente, complete 0, si no es diferencial posicionamiento, estará vacío)
Campo 13: valor de verificación

Supongo que te gusta

Origin blog.csdn.net/weixin_41659040/article/details/132138578
Recomendado
Clasificación