初学者
10 分钟

使用Ra-01S和PIC32MZ2048EFH100实现远距离的安全可靠数据传输

用于超远距离扩频通信的LoRa™无线射频模块

LR 6 Click with Flip&Click PIC32MZ

已发布 9月 04, 2024

点击板

LR 6 Click

开发板

Flip&Click PIC32MZ

编译器

NECTO Studio

微控制器单元

PIC32MZ2048EFH100

利用LoRa™技术的强大功能,解锁超长距离通信的潜力

A

A

硬件概览

它是如何工作的?

LR 6 Click基于Ai-Thinker Technology的Ra-01S LoRa™无线射频模块,专为超长距离扩频通信设计。Ra-01S模块采用SX1268无线电芯片,主要使用LoRa™调制技术以实现更长的通信范围。该模块以其强大的抗干扰能力和低功耗著称,特别适合需要可靠长距离通信的应用。凭借Semtech的专利LoRa™技术,SX1268芯片提供超过-148dBm的卓越灵敏度和+22dBm的输出功率。它支持多种调制方式,包括FSK、GFSK、MSK、GMSK、LoRa™和OOK,工作频率范围为433MHz(410MHz至525MHz)。与传统的调制技术相比,LoRa™在抗阻塞性和信号选择性方

面具有显著优势,能够有效解决距离、干扰和电源效率问题。LR 6 Click非常适合于各种应用场景,如自动抄表、家居和楼宇自动化、安全系统和远程灌溉系统,这些场景中长距离通信和可靠性至关重要。该Click板™通过标准的4线SPI接口与主MCU通信,支持最高10MHz的频率。除了接口引脚外,Ra-01S模块还使用来自mikroBUS™插座的MD引脚选择TX或RX操作模式。它配备了一个复位引脚(RST)和一个用于模块复位的RESET按钮。此板还包括两个未焊接的两针插头——一个用于I/O数字信号以进行附加的软件配置,另一个用于RF端口控制的额外UART接口,以

及一个BSY引脚和一个红色BUSY LED,用于指示数据传输活动(模块状态)。LR 6 Click还配备了一个阻抗为50Ω的SMA天线连接器,可与MIKROE提供的各种天线(如Rubber Antenna 433MHz)兼容,以增强其连接性。该Click板™只能在3.3V逻辑电平下运行。在使用具有不同逻辑电平的MCU之前,板上必须进行适当的逻辑电平转换。此外,它还配备了包含函数和示例代码的库,可作为进一步开发的参考。

LR 6 Click hardware overview image

功能概述

开发板

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 板™(超过一千块板),其数量每天都在增长,它涵盖了原型制作的许多方面。

Flip&Click PIC32MZ double image

微控制器概述 

MCU卡片 / MCU

default

建筑

PIC32

MCU 内存 (KB)

2048

硅供应商

Microchip

引脚数

100

RAM (字节)

524288

你完善了我!

配件

LR 6 Click accessories 1 image

使用的MCU引脚

mikroBUS™映射器

Mode Control
RB11
AN
Reset / ID SEL
RE2
RST
SPI Select / ID COMM
RA0
CS
SPI Clock
RG6
SCK
SPI Data OUT
RC4
MISO
SPI Data IN
RB5
MOSI
Power Supply
3.3V
3.3V
Ground
GND
GND
NC
NC
PWM
Status Indicator
RD9
INT
NC
NC
TX
NC
NC
RX
NC
NC
SCL
NC
NC
SDA
NC
NC
5V
Ground
GND
GND
1

“仔细看看!”

Click board™ 原理图

LR 6 Click Schematic schematic

一步一步来

项目组装

Flip&Click PIC32MZ front image hardware assembly

从选择您的开发板和Click板™开始。以Flip&Click PIC32MZ作为您的开发板开始。

Flip&Click PIC32MZ front image hardware assembly
GNSS2 Click front image hardware assembly
Prog-cut hardware assembly
GNSS2 Click complete accessories setup image hardware assembly
Board mapper by product7 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
Flip&Click PIC32MZ MCU 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

软件支持

库描述

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

关键功能:

  • lr6_send_data - 此函数通过SPI串行接口,使用选定的模式将所需数量的数据字节发送到缓冲区。

  • lr6_receive_data - 此函数通过SPI串行接口,接收所需数量的数据字节到缓冲区。

  • lr6_set_lr_config - 此函数通过SPI串行接口执行所需的LoRa配置。

开源

代码示例

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

/*!
 * @file main.c
 * @brief LR 6 Click example
 *
 * # Description
 * This example demonstrates the use of LR 6 Click board by processing
 * the incoming data and displaying them on the USB UART.
 *
 * The demo application is composed of two sections :
 *
 * ## Application Init
 * Initialization of SPI module and log UART.
 * After driver initialization, the app executes a default configuration.
 *
 * ## Application Task
 * The demo application is an echo example that sends a demo LoRa packet string 
 * and receives and processes all incoming data.
 * Results are being sent to the UART Terminal, where you can track their changes.
 *
 * @author Nenad Filipovic
 *
 */

#include "board.h"
#include "log.h"
#include "lr6.h"

static lr6_t lr6;
static log_t logger;

// Demo string to be sent
#define LR6_DEMO_TEXT            "MikroE\r\n" 

void application_init ( void )
{
    log_cfg_t log_cfg;  /**< Logger config object. */
    lr6_cfg_t lr6_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.
    lr6_cfg_setup( &lr6_cfg );
    LR6_MAP_MIKROBUS( lr6_cfg, MIKROBUS_1 );
    if ( SPI_MASTER_ERROR == lr6_init( &lr6, &lr6_cfg ) )
    {
        log_error( &logger, " Communication init." );
        for ( ; ; );
    }
    
    if ( LR6_ERROR == lr6_default_cfg ( &lr6 ) )
    {
        log_error( &logger, " Default configuration." );
        for ( ; ; );
    }
    
    log_info( &logger, " Application Task " );
    log_printf( &logger, " --------------------\r\n" );
}

void application_task ( void )
{
    uint8_t rx_data[ 255 ] = { 0 };
    if ( LR6_OK == lr6_send_data( &lr6, LR6_DEMO_TEXT, strlen( LR6_DEMO_TEXT ), LR6_TX_MODE_SYNC ) ) 
    {
        log_info( &logger, " Send - success" );
        uint8_t rx_len = 0;
        do 
        {
            if ( LR6_OK == lr6_receive_data( &lr6, rx_data, strlen( LR6_DEMO_TEXT ), &rx_len ) )
            {
                if ( rx_len > 0 )
                { 
                    log_info( &logger, " Receive - success" );
                    log_printf( &logger, " > Receive: " );
                    for ( uint8_t cnt = 0; cnt < strlen( LR6_DEMO_TEXT ); cnt++ )
                    {
                        log_printf( &logger, "%c", rx_data[ cnt ] );
                    }

                    int8_t rssi, snr;
                    if ( LR6_OK == lr6_get_packet_status( &lr6, &rssi, &snr ) )
                    {
                        log_printf( &logger, " Rssi Pkt: %d dBm\r\n", ( int16_t ) rssi );
                        log_printf( &logger, " Snr Pkt : %d dB\r\n", ( int16_t ) snr );
                        log_printf( &logger, " --------------------\r\n" );
                        break;
                    }
                }
            }
        } 
        while ( rx_len == 0 );
    }
    else
    {
        log_info( &logger, "Send - fail" );
    }
    Delay_ms ( 1000 );
}

int main ( void ) 
{
    /* Do not remove this line or clock might not be set correctly. */
    #ifdef PREINIT_SUPPORTED
    preinit();
    #endif
    
    application_init( );
    
    for ( ; ; ) 
    {
        application_task( );
    }

    return 0;
}

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

额外支持

资源

喜欢这个项目吗?

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