此解决方案为智能互联生态系统奠定了基础,在这些生态系统中,物体、设备和环境能够无缝响应人类的运动和接近。
A
A
硬件概览
它是如何工作的?
Microwave 2 Click 基于 JRC 的 NJR4265RF2C1,这是一款智能 24GHz 微波运动传感器。板载微波运动传感器基于多普勒效应。它发射波并在波从移动物体反射回来时接收。根据多普勒效应原理,物体相对于听者(在这种情况下为传感器)的移动会导致反射波在物体靠近时频率增加,或者在物体远离(离开)时频率减小。比较反射波与发射波的基频可以揭示物体的运动特性。NJR4265RF2C1 模块的集成 MCU 处理信号,减少噪声并增强有效信号,从而实现可靠的检测和稳定的运动感知。然后,它根据收集的数据做出运动方向决定,并将信号传回主 MCU。两个 LED,分别标记为 DL(绿色)和 DA(黄色),连接到专用模块引脚,标记为 DETECT APPROACHING 和 DETECT LEAVING。当传感器检测到相应事件时,这些引脚将发出信号。这些引脚也连
接到 mikroBUS™ 的 AN 和 INT 引脚,分别标记为 DA 和 DL。在 Click board™ 上,这样运动检测事件也可以传送到主 MCU。NJR4265RF2C1 模块能够感知传感器前方高达 10 米的移动物体。检测锥角约为相对于传感器中心垂直轴的 ±35°。物体运动速度应在 0.25 m/s 到 1 m/s 之间。发射波的频率稳定性在中心频率 24.15 至 24.25 GHz 下温度范围为 -20°C 至 +60°C 时在 1MHz 以内,允许在各种条件下进行稳定和准确的检测。由叶子、空气运动、昆虫和其他类似物体等随机物体引起的波反射被片上集成 MCU 抑制,从而提高目标物体检测的可靠性。然而,由于其特性,噪声抑制算法限制了可检测物体的速度和大小,这有时可能是不理想的。考虑到这些限制,该模块最好用于需要检测较大、慢速移动物体的应用,例如行人运动应用、人类或动物检测应用等。主 MCU 可以使
用 UART 接口与 Microwave 2 Click 通信。NJR4265RF2C1 模块的 UART 引脚连接到 mikroBUS™ 的 RX 和 TX 引脚。UART 通信参数固定为 9600 bps、8 数据位、无奇偶校验和一个停止位(9600, 8, N, 1)。MCU 可以使用 UART 命令设置检测阈值、设置传感器模式、获取检测结果和其他传感器数据。NJR4265RF2C1 模块数据手册提供了 UART 命令列表,并对每个命令进行了详细解释。然而,Microwave 2 Click 提供了一个与所有 MikroE 编译器兼容的库,提供一组简化控制和快速开发自定义应用的函数。Microwave 2 Click 可以与 3.3V 和 5V MCU 接口。要选择模块的适当工作电压,可以将标记为 PWR SEL 的 SMD 跳线移动到所需的电压位置,跳线下方清楚标记。
功能概述
开发板
Nucleo-64 搭载 STM32G474R MCU 提供了一种经济高效且灵活的平台,供开发者探索新想法并原型设计他们的项目。该板利用 STM32 微控制器的多功能性,使用户能够为他们的项目选择最佳的性能与功耗平衡。它配备了 LQFP64 封装的 STM32 微控制器,并包含了如用户 LED(同时作为 ARDUINO® 信号)、用户和复位按钮,以及 32.768kHz 晶体振荡器用于精确的计时操作等基本组件。Nucleo-64 板设计考虑到扩展性和灵活性,它特有的 ARDUINO® Uno
V3 扩展连接器和 ST morpho 扩展引脚头,提供了对 STM32 I/O 的完全访问,以实现全面的项目整合。电源供应选项灵活,支持 ST-LINK USB VBUS 或外部电源,确保在各种开发环境中的适应性。该板还配备了一个具有 USB 重枚举功能的板载 ST-LINK 调试器/编程器,简化了编程和调试过程。此外,该板设计旨在简化高级开发,它的外部 SMPS 为 Vcore 逻辑供电提供高效支持,支持 USB 设备全速或 USB SNK/UFP 全速,并内置加密功能,提升了项目的功效
和安全性。通过外部 SMPS 实验的专用连接器、 用于 ST-LINK 的 USB 连接器以及 MIPI® 调试连接器,提供了更多的硬件接口和实验可能性。开发者将通过 STM32Cube MCU Package 提供的全面免费软件库和示例得到广泛支持。这些,加上与多种集成开发环境(IDE)的兼容性,包括 IAR Embedded Workbench®、MDK-ARM 和 STM32CubeIDE,确保了流畅且高效的开发体验,使用户能够充分利用 Nucleo-64 板在他们的项目中的能力。
微控制器概述
MCU卡片 / MCU

建筑
ARM Cortex-M4
MCU 内存 (KB)
512
硅供应商
STMicroelectronics
引脚数
64
RAM (字节)
128k
你完善了我!
配件
Click Shield for Nucleo-64 配备了两个专有的 mikroBUS™ 插座,使得所有的 Click board™ 设备都可以轻松地与 STM32 Nucleo-64 开发板连接。这样,Mikroe 允许其用户从不断增长的 Click boards™ 范围中添加任何功能,如 WiFi、GSM、GPS、蓝牙、ZigBee、环境传感器、LED、语音识别、电机控制、运动传感器等。您可以使用超过 1537 个 Click boards™,这些 Click boards™ 可以堆叠和集成。STM32 Nucleo-64 开发板基于 64 引脚封装的微控制器,采用 32 位 MCU,配备 ARM Cortex M4 处理器,运行速度为 84MHz,具有 512Kb Flash 和 96KB SRAM,分为两个区域,顶部区域代表 ST-Link/V2 调试器和编程器,而底部区域是一个实际的开发板。通过 USB 连接方便地控制和供电这些板子,以便直接对 Nucleo-64 开发板进行编程和高效调试,其中还需要额外的 USB 线连接到板子上的 USB 迷你接口。大多数 STM32 微控制器引脚都连接到了板子左右边缘的 IO 引脚上,然后连接到两个现有的 mikroBUS™ 插座上。该 Click Shield 还有几个开关,用于选择 mikroBUS™ 插座上模拟信号的逻辑电平和 mikroBUS™ 插座本身的逻辑电压电平。此外,用户还可以通过现有的双向电平转换器,使用任何 Click board™,无论 Click board™ 是否在 3.3V 或 5V 逻辑电压电平下运行。一旦将 STM32 Nucleo-64 开发板与我们的 Click Shield for Nucleo-64 连接,您就可以访问数百个工作于 3.3V 或 5V 逻辑电压电平的 Click boards™。
使用的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”替换为要显示的参数。

软件支持
库描述
此库包含 Microwave 2 (for EU) Click 驱动程序的 API。
关键功能:
microwave2_dl_state
- 设置 DL 引脚状态microwave2_da_state
- 设置 DA 引脚状态
开源
代码示例
完整的应用程序代码和一个现成的项目可以通过NECTO Studio包管理器直接安装到NECTO Studio。 应用程序代码也可以在MIKROE的GitHub账户中找到。
/*!
* \file
* \brief Microwave2 Click example
*
* # Description
* This application is an accurate and reliable short to medium range motion detection.
*
* The demo application is composed of two sections :
*
* ## Application Init
* Initializes the click board for communication.
*
* ## Application Task
* Data sent from the click board is captured and different actions are applied.
*
* \author MikroE Team
*
*/
// ------------------------------------------------------------------- INCLUDES
#include "board.h"
#include "log.h"
#include "microwave2.h"
#include "string.h"
#define PROCESS_COUNTER 10
#define PROCESS_RX_BUFFER_SIZE 500
#define PROCESS_PARSER_BUFFER_SIZE 500
// ------------------------------------------------------------------ VARIABLES
static microwave2_t microwave2;
static log_t logger;
static char current_parser_buf[ PROCESS_PARSER_BUFFER_SIZE ];
// ------------------------------------------------------- ADDITIONAL FUNCTIONS
static void microwave2_parser ( char * buffer )
{
for ( uint16_t cnt = 0; cnt < sizeof( buffer ); cnt++ )
{
if ( buffer[ cnt ] == '@' )
{
if ( buffer[ cnt+1 ] == 'C' ) {
log_printf( &logger, "Approaching \r\n" );
}
if ( buffer[ cnt+1 ] == 'L' ) {
log_printf( &logger, "Moving away \r\n" );
}
if ( buffer[ cnt+1 ] == 'N' ) {
log_printf( &logger, "No movement \r\n");
}
}
}
}
static void microwave2_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 = microwave2_generic_read( µwave2, &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_10ms( );
}
}
microwave2_parser(current_parser_buf);
}
// ------------------------------------------------------ APPLICATION FUNCTIONS
void application_init ( void )
{
log_cfg_t log_cfg;
microwave2_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.
microwave2_cfg_setup( &cfg );
MICROWAVE2_MAP_MIKROBUS( cfg, MIKROBUS_1 );
microwave2_init( µwave2, &cfg );
}
void application_task ( void )
{
microwave2_process();
}
void main ( void )
{
application_init( );
for ( ; ; )
{
application_task( );
}
}
// ------------------------------------------------------------------------ END