致力于提升旅行体验,这一解决方案作为指导灯塔,照亮路线和目的地,增强探索的信心。
A
A
硬件概览
它是如何工作的?
GPS Click 基于来自 u-blox 的高性能定位引擎模块 LEA-6S。这款多功能的独立接收器 LEA-6S 结合了广泛的功能和灵活的连接选项。其易于集成的特性使得各种汽车和工业应用能快速上市。定位引擎包括冷启动导航、AssistNow Autonomous 以加快定位获取、可配置的电源管理、混合 GPS/SBAS 引擎(WAAS、EGNOS、MSAS)以及抗干扰技术。GPS 模块需要一个 SMA GPS 天线用于 GPS 应用,可以单独从 Mikroe 购买。不同的电源模式(最大性能、Eco、省电模式)允许您控制获取和跟踪引擎,以平衡性能和功耗。在冷启动期间,处于最大性能模式的接收器会持续部署获取引擎来搜索所有卫星。一旦接收器获得位置修正(或者如果有预定位信息可用),获取引擎将继续搜索所有未被跟踪的可见卫星。在 Eco 模式下
的冷启动过程与最大性能模式完全相同。一旦能够计 算出位置并跟踪到足够数量的卫星,获取引擎就会关闭,从而显著节省电力。跟踪引擎将持续跟踪已获取的卫星并获取其他可用或新出现的卫星。即使获取引擎关闭,卫星仍将继续被获取。省电模式通过选择性地开启和关闭接收器部分来减少系统功耗。GPS Click 可以同时跟踪多达 16 颗卫星,同时搜索新的卫星。LEA-6S 模块的 TTFF(首次定位时间)少于一秒——这是 GPS 接收器获取卫星信号和导航数据,并基于这些信息计算位置(修正)所需的时间。GPS Click 配备了一个 TIME PULSE LED 作为 1PPS LED 来实现此功能。Time Pulse 的准确性为 99%,其频率范围可从 0.25Hz 调整至 1kHz。Time Pulse 也可以通过 mikroBUS™ 插座的 TP 引脚进行跟踪。GPS
Click 默认与主机 MCU 通信使用标准的 2 线 UART 接口,常用 UART RX 和 TX 支持 4800 和 9600bps,具体取决于设置。还可以使用与 I2C 兼容的显示数据通道(DDC)与主机 MCU 接口。它是符合标准模式的,最大带宽为 100kbps。另一方面,GPS Click 支持 1.2Mbps 的全速 USB 2.0。如果出现这种情况,您可以通过 RST 引脚重置模块。此 Click 板™ 只能在 3.3V 逻辑电压水平下操作。在使用具有不同逻辑水平的 MCU 之前,板必须执行适当的逻辑电压水平转换。此外,这款 Click 板™ 配备了一个包含易于使用的功能和示例代码的库,可用作进一步开发的参考。
功能概述
开发板
Clicker 2 for Kinetis 是一款紧凑型入门开发板,它将 Click 板™的灵活性带给您喜爱的微控制器,使其成为实现您想法的完美入门套件。它配备了一款板载 32 位 ARM Cortex-M4F 微控制器,NXP 半导体公司的 MK64FN1M0VDC12,两个 mikroBUS™ 插槽用于 Click 板™连接,一个 USB 连接器,LED 指示灯,按钮,一个 JTAG 程序员连接器以及两个 26 针头用于与外部电子设备的接口。其紧凑的设计和清晰、易识别的丝网标记让您能够迅速构建具有独特功能和特性
的小工具。Clicker 2 for Kinetis 开发套件的每个部分 都包含了使同一板块运行最高效的必要组件。除了可以选择 Clicker 2 for Kinetis 的编程方式,使用 USB HID mikroBootloader 或外部 mikroProg 连接器进行 Kinetis 编程外,Clicker 2 板还包括一个干净且调节过的开发套件电源供应模块。它提供了两种供电方式;通过 USB Micro-B 电缆,其中板载电压调节器为板上每个组件提供适当的电压水平,或使用锂聚合物 电池通过板载电池连接器供电。所有 mikroBUS™ 本
身支持的通信方法都在这块板上,包括已经建立良好的 mikroBUS™ 插槽、重置按钮和几个用户可配置的按钮及 LED 指示灯。Clicker 2 for Kinetis 是 Mikroe 生态系统的一个组成部分,允许您在几分钟内创建新的应用程序。它由 Mikroe 软件工具原生支持,得益于大量不同的 Click 板™(超过一千块板),其数量每天都在增长,它涵盖了原型制作的许多方面。
微控制器概述
MCU卡片 / MCU

建筑
ARM Cortex-M4
MCU 内存 (KB)
1024
硅供应商
NXP
引脚数
121
RAM (字节)
262144
你完善了我!
配件
主动 GPS 天线旨在提升您的 GPS 和 GNSS Click 板™的性能。这款外部天线拥有坚固的构造,非常适合各种天气条件。其频率范围为 1575.42MHz,阻抗为 50Ohm,确保了可靠的信号接收。天线在广泛的角度范围内提供高于 -4dBic 的增益,确保超过 75% 的覆盖范围。其 +/- 5MHz 的带宽进一步保证了精确的数据获取。天线采用右旋圆极化(RHCP),提供稳定的信号接收。其紧凑的尺寸为 48.53915mm,配备 2 米长的电缆,便于安装。磁性天线类型配有 SMA 男性连接器,确保了安全方便的连接。如果您需要一款可靠的外部天线来配合您的定位设备,我们的主动 GPS 天线是完美的解决方案。
使用的MCU引脚
mikroBUS™映射器
“仔细看看!”
Click board™ 原理图

一步一步来
项目组装
实时跟踪您的结果
应用程序输出
1. 应用程序输出 - 在调试模式下,“应用程序输出”窗口支持实时数据监控,直接提供执行结果的可视化。请按照提供的教程正确配置环境,以确保数据正确显示。

2. UART 终端 - 使用UART Terminal通过USB to UART converter监视数据传输,实现Click board™与开发系统之间的直接通信。请根据项目需求配置波特率和其他串行设置,以确保正常运行。有关分步设置说明,请参考提供的教程。

3. Plot 输出 - Plot功能提供了一种强大的方式来可视化实时传感器数据,使趋势分析、调试和多个数据点的对比变得更加直观。要正确设置,请按照提供的教程,其中包含使用Plot功能显示Click board™读数的分步示例。在代码中使用Plot功能时,请使用以下函数:plot(insert_graph_name, variable_name);。这是一个通用格式,用户需要将“insert_graph_name”替换为实际图表名称,并将“variable_name”替换为要显示的参数。

软件支持
库描述
此库包含 GPS Click 驱动程序的 API。
关键功能:
gps_generic_parser
- 通用解析函数gps_generic_read
- 通用读取函数gps_module_wakeup
- 唤醒模块函数
开源
代码示例
完整的应用程序代码和一个现成的项目可以通过NECTO Studio包管理器直接安装到NECTO Studio。 应用程序代码也可以在MIKROE的GitHub账户中找到。
/*!
* \file
* \brief Gps Click example
*
* # Description
* This example reads and processes data from GPS clicks.
*
* The demo application is composed of two sections :
*
* ## Application Init
* Initializes driver and wake-up module.
*
* ## Application Task
* Reads the received data and parses it.
*
* ## Additional Function
* - gps_process ( ) - The general process of collecting data the module sends.
*
*
* \author MikroE Team
*
*/
// ------------------------------------------------------------------- INCLUDES
#include "board.h"
#include "log.h"
#include "gps.h"
#include "string.h"
#define PROCESS_COUNTER 15
#define PROCESS_RX_BUFFER_SIZE 600
#define PROCESS_PARSER_BUFFER_SIZE 600
// ------------------------------------------------------------------ VARIABLES
static gps_t gps;
static log_t logger;
static char current_parser_buf[ PROCESS_PARSER_BUFFER_SIZE ];
// ------------------------------------------------------- ADDITIONAL FUNCTIONS
static void gps_process ( void )
{
int32_t rsp_size;
uint16_t rsp_cnt = 0;
char uart_rx_buffer[ PROCESS_RX_BUFFER_SIZE ] = { 0 };
uint16_t check_buf_cnt;
uint8_t process_cnt = PROCESS_COUNTER;
// Clear parser buffer
memset( current_parser_buf, 0 , PROCESS_PARSER_BUFFER_SIZE );
while( process_cnt != 0 )
{
rsp_size = gps_generic_read( &gps, &uart_rx_buffer, PROCESS_RX_BUFFER_SIZE );
if ( rsp_size > 0 )
{
// Validation of the received data
for ( check_buf_cnt = 0; check_buf_cnt < rsp_size; check_buf_cnt++ )
{
if ( uart_rx_buffer[ check_buf_cnt ] == 0 )
{
uart_rx_buffer[ check_buf_cnt ] = 13;
}
}
// Storages data in parser buffer
rsp_cnt += rsp_size;
if ( rsp_cnt < PROCESS_PARSER_BUFFER_SIZE )
{
strncat( current_parser_buf, uart_rx_buffer, rsp_size );
}
// Clear RX buffer
memset( uart_rx_buffer, 0, PROCESS_RX_BUFFER_SIZE );
}
else
{
process_cnt--;
// Process delay
Delay_100ms( );
}
}
}
static void parser_application ( char *rsp )
{
char element_buf[ 200 ] = { 0 };
log_printf( &logger, "\r\n-----------------------\r\n" );
gps_generic_parser( rsp, GPS_NEMA_GPGGA, GPS_GPGGA_LATITUDE, element_buf );
if ( strlen( element_buf ) > 0 )
{
log_printf( &logger, "Latitude: %.2s degrees, %s minutes \r\n", element_buf, &element_buf[ 2 ] );
gps_generic_parser( rsp, GPS_NEMA_GPGGA, GPS_GPGGA_LONGITUDE, element_buf );
log_printf( &logger, "Longitude: %.3s degrees, %s minutes \r\n", element_buf, &element_buf[ 3 ] );
memset( element_buf, 0, sizeof( element_buf ) );
gps_generic_parser( rsp, GPS_NEMA_GPGGA, GPS_GPGGA_ALTITUDE, element_buf );
log_printf( &logger, "Altitude: %s m", element_buf );
}
else
{
log_printf( &logger, "Waiting for the position fix..." );
}
}
// ------------------------------------------------------ APPLICATION FUNCTIONS
void application_init ( void )
{
log_cfg_t log_cfg;
gps_cfg_t cfg;
/**
* Logger initialization.
* Default baud rate: 115200
* Default log level: LOG_LEVEL_DEBUG
* @note If USB_UART_RX and USB_UART_TX
* are defined as HAL_PIN_NC, you will
* need to define them manually for log to work.
* See @b LOG_MAP_USB_UART macro definition for detailed explanation.
*/
LOG_MAP_USB_UART( log_cfg );
log_init( &logger, &log_cfg );
log_info( &logger, "---- Application Init ----" );
// Click initialization.
gps_cfg_setup( &cfg );
GPS_MAP_MIKROBUS( cfg, MIKROBUS_1 );
gps_init( &gps, &cfg );
gps_module_wakeup( &gps );
Delay_ms( 5000 );
}
void application_task ( void )
{
gps_process( );
parser_application( current_parser_buf );
}
void main ( void )
{
application_init( );
for ( ; ; )
{
application_task( );
}
}
// ------------------------------------------------------------------------ END