自信导航,掌握顶级 GPS 技术。我们的解决方案融合了精确度和探索精神,确保您旅途中的每一步都由最高精度引导。
A
A
硬件概览
它是如何工作的?
Nano GPS 2 Click 使用 OriginGPS 的 Multi Micro Hornet 模块,这是最小的 GPS 模块,具有集成的板载天线元件,完美匹配接收器前端,并频率调整到 GPS 频段,右旋圆极化(RHCP)。该模块具有双级 LNA(低噪声放大器)、SAW(表面声波)滤波器、RTC 晶体、GNSS SoC 和 RF 屏蔽。模块上的 GNSS SoC 是一个混合定位处理器,结合多种星座配置,提供高性能导航解决方案,如 GPS、GLONASS、GALILEO、BEIDOU、SBAS、QZSS、DGPS 和 AGPS,允许在低计算资源的嵌入式解决方案中集成。ORG1510-MK05 模块支持操作模式,在降低整体电流消耗的情况
下提供定位信息。操作环境中 GNSS 信号的可用性也会影响电源管理模式的选择。用户可以选择提供性能与功耗最佳折衷的模式。可以通过命令启用几种电源管理模式,如全功率连续模式(最佳 GNSS 性能)、省电模式(优化功耗)和备份模式(接收器操作停止时的低静态功率状态)。Nano GPS 2 Click 可在接收到的信号水平低至 ‐167dBm 时工作,并且可能受到 GNSS 频段外的高绝对 RF 信号水平、GNSS 频段附近的中等水平 RF 干扰以及 GNSS 频段内的低水平 RF 噪声的影响。它使用标准 UART 端口,除了常用的 UART RX、TX、RTS 和 CTS 引脚,Nano GPS 2 Click 还具有 FON 和
WKP 引脚,分别路由到 mikroBUS™ 插槽的 PWM 和 AN 引脚。集成的 GPS SoC 包含高性能微处理器和复杂的固件,将定位负载从主机上卸载,允许在低计算资源的嵌入式解决方案中集成。创新的架构可以检测上下文、温度和卫星信号的变化,通过维护和机会性地更新其内部精细时间、频率和卫星星历数据,在消耗仅为微瓦特电池功率的情况下实现近乎连续的可用性。此 Click 板™ 只能在 3.3V 逻辑电压电平下运行。在使用不同逻辑电平的 MCU 之前,板子必须进行适当的逻辑电压电平转换。此外,它还配备了一个包含函数和示例代码的库,可用作进一步开发的参考。
功能概述
开发板
Flip&Click PIC32MZ 是一款紧凑型开发板,设计为一套完整的解决方案,它将 Click 板™的灵活性带给您喜爱的微控制器,使其成为实现您想法的完美入门套件。它配备了一款板载 32 位 PIC32MZ 微控制器,Microchip 的 PIC32MZ2048EFH100,四个 mikroBUS™ 插槽用于 Click 板™连接,两个 USB 连接器,LED 指示灯,按钮,调试器/程序员连接器,以及两个与 Arduino-UNO 引脚兼容的头部。得益于创
新的制造技术,它允许您快速构建具有独特功能和特性的小工具。Flip&Click PIC32MZ 开发套件的每个部分都包含了使同一板块运行最高效的必要组件。此外,还可以选择 Flip&Click PIC32MZ 的编程方式,使用 chipKIT 引导程序(Arduino 风格的开发环境)或我们的 USB HID 引导程序,使用 mikroC、mikroBasic 和 mikroPascal for PIC32。该套件包括一个通过 USB 类型-C(USB-C)连接器的干净且调
节过的电源供应模块。所有 mikroBUS™ 本身支持的 通信方法都在这块板上,包括已经建立良好的 mikroBUS™ 插槽、用户可配置的按钮和 LED 指示灯。Flip&Click PIC32MZ 开发套件允许您在几分钟内创建新的应用程序。它由 Mikroe 软件工具原生支持,得益于大量不同的 Click 板™(超过一千块板),其数量每天都在增长,它涵盖了原型制作的许多方面。
微控制器概述
MCU卡片 / MCU

建筑
PIC32
MCU 内存 (KB)
2048
硅供应商
Microchip
引脚数
100
RAM (字节)
524288
使用的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”替换为要显示的参数。

软件支持
库描述
该库包含 Nano GPS 2 Click 驱动程序的 API。
关键功能:
nanogps2_set_en_pin_state
- 设置 EN 引脚nanogps2_module_wakeup
- 唤醒模块nanogps2_generic_parser
- 通用解析函数
开源
代码示例
完整的应用程序代码和一个现成的项目可以通过NECTO Studio包管理器直接安装到NECTO Studio。 应用程序代码也可以在MIKROE的GitHub账户中找到。
/*!
* \file
* \brief NanoGps2 Click example
*
* # Description
* This example reads and processes data from Nano GPS 2 click.
*
* 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
* - nanogps2_process ( ) - The general process of collecting data the module sends.
*
* @note
* Depending on the environmental conditions and the satellites availability
* it may take some time for the module to receive the position fix.
*
* \author MikroE Team
*
*/
// ------------------------------------------------------------------- INCLUDES
#include "board.h"
#include "log.h"
#include "nanogps2.h"
#include "string.h"
#define PROCESS_COUNTER 10
#define PROCESS_RX_BUFFER_SIZE 600
#define PROCESS_PARSER_BUFFER_SIZE 600
// ------------------------------------------------------------------ VARIABLES
static nanogps2_t nanogps2;
static log_t logger;
static char current_parser_buf[ PROCESS_PARSER_BUFFER_SIZE ];
// ------------------------------------------------------- ADDITIONAL FUNCTIONS
static void nanogps2_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 = nanogps2_generic_read( &nanogps2, &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" );
nanogps2_generic_parser( rsp, NANOGPS2_NEMA_GNGGA, NANOGPS2_GNGGA_LATITUDE, element_buf );
if ( strlen( element_buf ) > 0 )
{
log_printf( &logger, "Latitude: %.2s degrees, %s minutes \r\n", element_buf, &element_buf[ 2 ] );
nanogps2_generic_parser( rsp, NANOGPS2_NEMA_GNGGA, NANOGPS2_GNGGA_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 ) );
nanogps2_generic_parser( rsp, NANOGPS2_NEMA_GNGGA, NANOGPS2_GNGGA_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;
nanogps2_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.
nanogps2_cfg_setup( &cfg );
NANOGPS2_MAP_MIKROBUS( cfg, MIKROBUS_1 );
nanogps2_init( &nanogps2, &cfg );
nanogps2_module_wakeup ( &nanogps2 );
}
void application_task ( void )
{
nanogps2_process( );
parser_application( current_parser_buf );
}
void main ( void )
{
application_init( );
for ( ; ; )
{
application_task( );
}
}
// ------------------------------------------------------------------------ END