中级
20 分钟

使用 IN100 和 STM32F031K6 确保资产的安全性和可见性

用户交互的未来

NanoBeacon Click with Nucleo 32 with STM32F031K6 MCU

已发布 10月 01, 2024

点击板

NanoBeacon Click

开发板

Nucleo 32 with STM32F031K6 MCU

编译器

NECTO Studio

微控制器单元

STM32F031K6

毫不费力地连接设备,创建一个适应您需求的网络,在任何环境中确保信息的无缝流动。

A

A

硬件概览

它是如何工作的?

NanoBeacon Click基于IN100,是InPlay的NanoBeacon™ SoC产品系列中多功能且紧凑的部分,它在2.4GHz频段作为蓝牙低功耗信标运行。该SoC装载了先进的功能,拥有高效且可配置的状态机,确保了最佳性能。它集成了用于存储用户定义数据负载的非易失性存储器和用于动态数据存储的数据SRAM。IN100进一步包括模拟到数字转换器、支持AES-128和EAX加密的强大安全引擎以及用于增强安全性的真随机数生成器(TRNG)。它还提供了一种独特的专有信标模式,可在2.4GHz ISM频段或MedRadio频段中使用。该设备封装在一个小型QFN封装中,为广泛的工业物联网(IIoT)应用提供了无缝安全的解决方案。凭借其用户友好的设计,该设备消除了对复杂的与蓝牙相关的软件编程的需求。一旦配置,它就会自动发送BLE广告或专有格式的广告数据包,实现轻松操作。IN100具有两种内置存储器:4Kb OTP存储器用于存储用户广告数据负载、安全密钥和预定义的寄存器设置,以及4KB SRAM用于动态广告数据存储。在休眠模式下,SRAM保持数据,而仅总是处于活动状态的(AON)域保持活动状态。IN100提供了广泛的支持的传感器接口协议,确保与各种传

感器设备的兼容性。此外,它支持流行的信标格式,如iBeacon、Eddystone,甚至自定义信标格式,可无缝集成到各种生态系统中。该Click board™使用UART接口与MCU通信,使用常用的UART RX和TX引脚。默认配置下,它以115200 bps的速率传输和交换数据与主机MCU。此外,IN100通过其UART接口实现了对广告数据负载和控制模式的即时更改。虽然UART通信可用作IN100与MCU之间的主要通信模式,但另外支持的接口,即I2C 2线接口,可用于通过Click board™上的mikroBUS™插座的板载堆栈连接器与连接到该设备的其他外部传感器进行通信。如前所述,OTP存储器存储用户的广告数据负载、安全密钥和预定义的寄存器设置。该存储器在使用前仅编程一次。将OTP SEL开关切换到ON,以将所需配置编程到设备的一次可编程存储器中。此操作将有效地将配置“烧录”到标签的OTP存储器中。配置烧录后,必须断开并重新连接(或重置板)Click board™的电源,以根据其编程行为启动标签的执行。该Click board™配备了一个迷你同轴U.FL系列天线连接器,可连接适当的天线以改善范围和接收信号强度。除了UART引脚外,NanoBeacon Click

还使用mikroBUS™插座的其他引脚来增强其功能。例如,EN引脚用作芯片使能引脚,AN引脚用于外部模拟传感器测量,一个DQ引脚用作通用I/O引脚,设备RESET按钮可用于将设备重置为其默认设置,以确保高效可靠的操作。两个橙色LED指示灯,GP6和GP7,可用于某些操作状态的可选用户配置的可视指示。此外,它还集成了两个低漏电负载开关,用于方便地控制外部电路和传感器IC的电源,这些开关可供用户在未使用的SW0-SW1引脚上使用,SW0用于外部传感器的电源,SW1用于其地线连接。该Click board™只能使用3.3V逻辑电压级别操作。此外,IN100可以使用备用电池电压,通过BATTERY开关选择,从连接到板背面的硬币电池中获得电源,如果您需要Click board™成为一个独立的设备。为了降低额外的功耗,解开板的背面的CT跳线,关闭电源LED指示灯并减少功耗。在使用不同逻辑电平的MCU之前,板必须执行适当的逻辑电压级别转换。但是,该Click board™配备了一个包含函数和示例代码的库,可用作进一步开发的参考。

NanoBeacon Click hardware overview image

功能概述

开发板

Nucleo 32开发板搭载STM32F031K6 MCU,提供了一种经济且灵活的平台,适用于使用32引脚封装的STM32微控制器进行实验。该开发板具有Arduino™ Nano连接性,便于通过专用扩展板进行功能扩展,并且支持mbed,使其能够无缝集成在线资源。板载集成

ST-LINK/V2-1调试器/编程器,支持通过USB重新枚举,提供三种接口:虚拟串口(Virtual Com port)、大容量存储和调试端口。该开发板的电源供应灵活,可通过USB VBUS或外部电源供电。此外,还配备了三个LED指示灯(LD1用于USB通信,LD2用于电源

指示,LD3为用户可控LED)和一个复位按钮。STM32 Nucleo-32开发板支持多种集成开发环境(IDEs),如IAR™、Keil®和基于GCC的IDE(如AC6 SW4STM32),使其成为开发人员的多功能工具。

Nucleo 32 with STM32F031K6 MCU double side image

微控制器概述 

MCU卡片 / MCU

default

建筑

ARM Cortex-M0

MCU 内存 (KB)

32

硅供应商

STMicroelectronics

引脚数

32

RAM (字节)

4096

你完善了我!

配件

Click Shield for Nucleo-32是扩展您的开发板功能的理想选择,专为STM32 Nucleo-32引脚布局设计。Click Shield for Nucleo-32提供了两个mikroBUS™插座,可以添加来自我们不断增长的Click板™系列中的任何功能。从传感器和WiFi收发器到电机控制和音频放大器,我们应有尽有。Click Shield for Nucleo-32与STM32 Nucleo-32开发板兼容,为用户提供了一种经济且灵活的方式,使用任何STM32微控制器快速创建原型,并尝试各种性能、功耗和功能的组合。STM32 Nucleo-32开发板无需任何独立的探针,因为它集成了ST-LINK/V2-1调试器/编程器,并随附STM32全面的软件HAL库和各种打包的软件示例。这个开发平台为用户提供了一种简便且通用的方式,将STM32 Nucleo-32兼容开发板与他们喜欢的Click板™结合,应用于即将开展的项目中。

Click Shield for Nucleo-32 accessories 1 image

WiFi 2.4GHz/5.4GHz Active FPC Antenna (W3918B0100)是来自Pulse Electronics的一款主动式平板天线,非常适合WiFi 6E、蓝牙、ZigBee、ISM频段无线电、物联网、机器对机器等应用。该平板天线具有2.4-2.5GHz和4.9-5.925GHz范围内的双频功能,中心频率分别为2.4GHz和5.4GHz,具有典型的3dBi增益和全向辐射模式。尺寸为35.2x8.5x0.15mm,天线尺寸紧凑而高效,标称阻抗为50Ω,设计用于与您现有的设置无缝配合。天线使用的FPC材料确保了耐用性和可靠性,额定功率为2W,您可以信赖它的稳定性能。U.FL连接器类型和10mm的电缆长度使其易于集成到您的系统中,凭借其出色的性能,WiFi 2.4GHz/5.4GHz Active FPC Antenna是您无线通信和网络需求的完美选择。

NanoBeacon Click accessories image

使用的MCU引脚

mikroBUS™映射器

Analog Output
PA0
AN
NC
NC
RST
NC
NC
CS
NC
NC
SCK
NC
NC
MISO
NC
NC
MOSI
Power Supply
3.3V
3.3V
Ground
GND
GND
General-Purpose I/O
PA8
PWM
NC
NC
INT
UART TX
PA10
TX
UART RX
PA9
RX
I2C Clock
PB6
SCL
I2C Data
PB7
SDA
NC
NC
5V
Ground
GND
GND
1

“仔细看看!”

Click board™ 原理图

NanoBeacon Click Schematic schematic

一步一步来

项目组装

Click Shield for Nucleo-144 front image hardware assembly

从选择您的开发板和Click板™开始。以Nucleo 32 with STM32F031K6 MCU作为您的开发板开始。

Click Shield for Nucleo-144 front image hardware assembly
Nucleo 144 with STM32L4A6ZG MCU front image hardware assembly
Stepper 22 Click front image hardware assembly
Prog-cut hardware assembly
Stepper 22 Click complete accessories setup image hardware assembly
Nucleo-32 with STM32 MCU Access MB 1 - upright/background hardware assembly
Necto image step 2 hardware assembly
Necto image step 3 hardware assembly
Necto image step 4 hardware assembly
Necto image step 5 hardware assembly
Necto image step 6 hardware assembly
STM32 M4 Clicker HA MCU/Select Step hardware assembly
Necto No Display image step 8 hardware assembly
Necto image step 9 hardware assembly
Necto image step 10 hardware assembly
Debug Image Necto Step hardware assembly

实时跟踪您的结果

应用程序输出

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”替换为要显示的参数。

软件支持

库描述

该库包含 NanoBeacon Click 驱动程序的 API。

关键功能:

  • nanobeacon_set_advertising - 此函数设置设备的MAC地址、间隔和广告原始数据。

  • nanobeacon_load_adv_to_ram - 此函数将广告数据加载到RAM。

  • nanobeacon_start_advertising - 此函数启动广告。

开源

代码示例

完整的应用程序代码和一个现成的项目可以通过NECTO Studio包管理器直接安装到NECTO Studio 应用程序代码也可以在MIKROE的GitHub账户中找到。

/*!
 * @file main.c
 * @brief NanoBeacon Click Example.
 *
 * # Description
 * This example demonstrates the use of NanoBeacon click board by setting
 * the Eddystone URI advertisement to click boards webpage.
 *
 * The demo application is composed of two sections :
 *
 * ## Application Init
 * Initializes the driver and logger.
 *
 * ## Application Task
 * Every 10 seconds, it restarts and configures the device for advertisement
 * with the Eddystone URI beacon format set to click boards webpage: https://www.mikroe.com/click
 * 
 * @note
 * During advertising, the click board should appear as an Eddystone URI beacon on
 * the BLE Scanner application.
 *
 * @author Stefan Filipovic
 *
 */

#include "board.h"
#include "log.h"
#include "nanobeacon.h"

static nanobeacon_t nanobeacon;
static log_t logger;

void application_init ( void ) 
{
    log_cfg_t log_cfg;  /**< Logger config object. */
    nanobeacon_cfg_t nanobeacon_cfg;  /**< Click config object. */

    /** 
     * 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.
    nanobeacon_cfg_setup( &nanobeacon_cfg );
    NANOBEACON_MAP_MIKROBUS( nanobeacon_cfg, MIKROBUS_1 );
    if ( UART_ERROR == nanobeacon_init( &nanobeacon, &nanobeacon_cfg ) ) 
    {
        log_error( &logger, " Communication init." );
        for ( ; ; );
    }
    
    log_info( &logger, " Application Task " );
}

void application_task ( void ) 
{
    // The device MAC address for advertisement
    static uint8_t mac_address[ 6 ] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 };

    // Eddystone advertisement raw data
    static uint8_t eddystone_adv_raw[ ] = 
    { 
        0x03, // Length of Service List
        0x03, // Param: Service List
        0xAA, 0xFE, // Eddystone ID
        0x12, // Length of Service Data
        0x16, // Service Data
        0xAA, 0xFE, // Eddystone ID
        0x10, // Frame type: URL
        0x00, // Power
        0x01, // https://www.
        'm','i','k','r','o','e', 
        0x00, // .com/
        'c','l','i','c','k' 
    };
    log_printf( &logger, "\r\n Restart device\r\n" );
    nanobeacon_restart_device ( &nanobeacon );
    
    while ( NANOBEACON_OK != nanobeacon_check_communication ( &nanobeacon ) )
    {
        log_error( &logger, " Check communication." );
        Delay_ms ( 1000 );
    }
    log_printf( &logger, " Configure device for advertisement\r\n" );
    if ( NANOBEACON_OK != nanobeacon_set_advertising ( mac_address, 1000, eddystone_adv_raw, 
                                                       sizeof( eddystone_adv_raw ) ) )
    {
        log_error( &logger, " Set advertising." );
    }

    if ( NANOBEACON_OK != nanobeacon_load_adv_to_ram( &nanobeacon ) )
    {
        log_error( &logger, " Load data to RAM." );
    }
    
    log_printf( &logger, " Start advertising\r\n" );
    if ( NANOBEACON_OK != nanobeacon_start_advertising ( &nanobeacon ) )
    {
        log_error( &logger, " Start advertising." );
    }    
    Delay_ms ( 10000 );
}

void main ( void ) 
{
    application_init( );

    for ( ; ; ) 
    {
        application_task( );
    }
}

// ------------------------------------------------------------------------ END

额外支持

资源

喜欢这个项目吗?

'购买此套件' 按钮会直接带您进入购物车,您可以在购物车中轻松添加或移除产品。