移远L76K模组实现GPS定位

移远L76K模组简介

L76K 是一款支持多卫星系统(GPS、BeiDou、GLONASS、QZSS)、可多系统联合定位和单系统独立定位、支持AGNSS 功能、内置低噪声放大器和声表面滤波器、可向用户提供快速、精准、高性能定位体验的 GNSS 模块。
多卫星系统相比于单一的 GPS 系统,使得可见和可用卫星数目大幅度增加,提高定位精度,即使是在复杂城市环境中也能实现稳定的高精度定位。支持 AGNSS 功能,能够大大的减少首次定位的时间。
在这里插入图片描述

编写程序测试功能

在Arduino环境下编写一个L76K_GNSS的程序,主要实现通过串口读取并解析L76K的GPS数据

#include <TinyGPSPlus.h>
#include <SoftwareSerial.h>

#define RXD2 16
#define TXD2 17
#define GPSRXD 14
#define GPSTXD 4

HardwareSerial SerialPort(2);
SoftwareSerial GPSSerial(GPSTXD, GPSRXD);
TinyGPSPlus gps;

void CommandtoNBIOT (String cmd, char *res)
{
  while (1)
  {
    SerialPort.println(cmd);
    delay(300);
    while (SerialPort.available() > 0)
    {
      if (SerialPort.find(res))
      {
        Serial.println(res);
        return;
      }
      else
      {
        Serial.print(cmd);
        Serial.println("Return ERROR!");
      }
    }
    delay(200);
  }
}

void BC260Y_init(void)//初始化BC260Y
{
  Serial.println("1");
  // prints title with ending line break
  CommandtoNBIOT("AT", "OK");
  //SerialPort.println("ATE0&W");//关闭回显
  delay(300);
  CommandtoNBIOT("ATI", "OK");//返回制造商信息
  delay(300);

  CommandtoNBIOT("AT+CPIN?", "+CPIN: READY"); //返+CPIN:READY,表明识别到卡
  Serial.println("2");
  CommandtoNBIOT("AT+CGATT?", "+CGATT: 1"); //返+CGACT: 1,就能正常工作
  Serial.println("3");
  SerialPort.println("AT+QMTCLOSE=0");//关闭上一次socekt连接
  delay(300);
}

void displayInfo()
{
  Serial.print(F("Location: ")); 
  if (gps.location.isValid())
  {
    Serial.print(gps.location.lat(), 6);
    Serial.print(F(","));
    Serial.print(gps.location.lng(), 6);
  }
  else
  {
    Serial.print(F("INVALID"));
  }

  Serial.print(F("  Date/Time: "));
  if (gps.date.isValid())
  {
    Serial.print(gps.date.month());
    Serial.print(F("/"));
    Serial.print(gps.date.day());
    Serial.print(F("/"));
    Serial.print(gps.date.year());
  }
  else
  {
    Serial.print(F("INVALID"));
  }

  Serial.print(F(" "));
  if (gps.time.isValid())
  {
    if (gps.time.hour() < 10) Serial.print(F("0"));
    Serial.print(gps.time.hour());
    Serial.print(F(":"));
    if (gps.time.minute() < 10) Serial.print(F("0"));
    Serial.print(gps.time.minute());
    Serial.print(F(":"));
    if (gps.time.second() < 10) Serial.print(F("0"));
    Serial.print(gps.time.second());
    Serial.print(F("."));
    if (gps.time.centisecond() < 10) Serial.print(F("0"));
    Serial.print(gps.time.centisecond());
  }
  else
  {
    Serial.print(F("INVALID"));
  }

  Serial.println();
}

void setup(){
    Serial.begin(9600);
    SerialPort.begin(9600, SERIAL_8N1, RXD2, TXD2);
    GPSSerial.begin(9600);
    BC260Y_init();
    delay(2000);
}

void loop(){
    while (GPSSerial.available() > 0){
          int c = GPSSerial.read();
          if(gps.encode(c)){
              displayInfo();
            }
            if (millis() > 5000 && gps.charsProcessed() < 10)
            {
              Serial.println(F("No GPS detected: check wiring."));
              while(true);
            }
      }
}

编译程序后上传到板卡,执行结果如下
在这里插入图片描述
可正常采集到经纬度数据,可以到百度地图上查看一下获取到的位置
在这里插入图片描述
这个定位位置有一定偏差,需要进一步的处理,至此已经可以正常采集到GPS数据。

移远EC600模组是一种具有开放性的移动通信模组,广泛应用于物联网领域。它支持多种无线通信技术,包括2G、3G、4G和NB-IoT等,能够与不同的网络进行通信。EC600模组具有开放性的特点,可以让开发者自由地进行二次开发和定制,以满足各种应用的需求。 首先,EC600模组提供了丰富的开放接口,包括GPIO、UART、SPI等,可以与其他外围设备进行连接和通信。开发者可以根据具体的项目需求,自由选择和配置这些接口,实现与其他设备的互联互通。 其次,EC600模组支持多种操作系统,如Linux和RTOS等。开发者可以根据自己的开发经验和项目需求,选择合适的操作系统进行开发。这样一来,开发者可以灵活地使用各种开发工具和编程语言,进行应用的开发和调试。 另外,EC600模组还提供了丰富的软件开发包(SDK),其中包含了各种通信协议和功能模块。开发者可以基于这些功能模块进行快速开发,减少重复劳动,提高开发效率。 最后,EC600模组具有强大的网络连接能力和数据处理能力。它支持高速数据传输,稳定可靠,并能够实现数据的安全传输和存储。在物联网应用中,开发者可以利用EC600模组提供的功能,实现设备之间的数据交换和互联互通。 总之,移远EC600模组是一种具有开放性的移动通信模组,通过其丰富的接口、多样化的操作系统选择、丰富的软件开发包以及强大的网络连接能力,开发者可以进行二次开发和定制,实现各种物联网应用的需求。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值