原子的ATK-LORA-01模块的使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

记录一下学习过程,这里是原子的ATK-LORA-01模块的使用,因为我是在看不懂demo,所以就写了一下,以便后续自己查看。
(这里是我的第一篇文章,写的不好。。。就写的不好吧)

提示:以下是本篇文章正文内容,下面案例可供参考

一、LORA是什么?

这里仅仅以原子的ATK-LORA-01模块来说明,可以这样认为,起就是一个无线串口。
具体的一些工作方式请参考原子官网吧。

二、使用步骤

1.配置

就像是使用单片机的串口一样,使用前需要进行相应的配置,这里的模块使用的是AT指令形式
(注意:指令结尾要加\r\n,指令结尾要加\r\n,指令结尾要加\r\n。!!!重要的事情说3遍)
开始配置吧


## 1.设置一下串口

***
static void NVIC_Configuration(void)
{
    NVIC_InitTypeDef NVIC_InitStructure;

    NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

    NVIC_Init(&NVIC_InitStructure);
}

static void LoRa_USART_Config(u32 bound)
{
	GPIO_InitTypeDef GPIO_InitStructure;
  	USART_InitTypeDef USART_InitStructure;
	
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);
	
	GPIO_PinAFConfig(GPIOB,GPIO_PinSource11,GPIO_AF_USART3);
	GPIO_PinAFConfig(GPIOB,GPIO_PinSource10,GPIO_AF_USART3);
	
	GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
 	GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
 	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
 	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_10;
	
	GPIO_Init(GPIOB, &GPIO_InitStructure);
	
	USART_InitStructure.USART_BaudRate = bound;
	USART_InitStructure.USART_WordLength = USART_WordLength_8b;
	USART_InitStructure.USART_StopBits = USART_StopBits_1;
	USART_InitStructure.USART_Parity = USART_Parity_No;
	USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
	USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
	
	USART_Init(USART3, &USART_InitStructure);
	
	NVIC_Configuration();
	
	USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);
	USART_Cmd(USART3, ENABLE);
}

2.再写一下发送函数

static void LoRa_Usart_SendByte(u8 byte)
{
	USART_SendData(USART3,byte);
	while (USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET);
}
//因为AT指令都是一些字符,所以我打算整一个单独的sendstring
static void LoRa_SendString(char *c)
{
	while(*c != 0 )
	{
		LoRa_Usart_SendByte(*c++);
	}
}
void LoRa_Usart_Send(u8 *byte,uint16_t len)
{
	int i;
	for(i=0;i<len;i++)
	{
		LoRa_Usart_SendByte(byte[i]);
	}
	while (USART_GetFlagStatus(USART3,USART_FLAG_TC)==RESET);
}

3.lora配置

static void LoRa_GPIO_Init(void)
{
	GPIO_InitTypeDef  GPIO_InitStructure;
	
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC|RCC_AHB1Periph_GPIOF, ENABLE);
	//MD0
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
	GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
	GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;
	GPIO_Init(GPIOC, &GPIO_InitStructure);
	//AUX
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; 
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
	GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;
	GPIO_Init(GPIOF, &GPIO_InitStructure);
	
}
void LoRa_Set(void)
{	
	LoRa_GPIO_Init();
	
	LoRa_USART_Config(115200);
	
	while(LORA_AUX);//等稳定
	LORA_MD0=1;//进配置
	
	SysTick_Delay_Ms(100);
	LoRa_SendString("AT+WLRATE=23,5\r\n");//信道23,空速19.2
	
	SysTick_Delay_Ms(100);
	LoRa_SendString("AT+UART=3,0\r\n");//9600-8N-1
	
	SysTick_Delay_Ms(100);
	LoRa_SendString("AT+WLTIME=0\r\n");//休眠时间1
	
	SysTick_Delay_Ms(100);
	LoRa_SendString("AT+TPOWER=3\r\n");//发射功率20dbm
	
	SysTick_Delay_Ms(100);
	LoRa_SendString("AT+CWMODE=0\r\n");//一般模式
	
	SysTick_Delay_Ms(100);
	LoRa_SendString("AT+TMODE=0\r\n");//透传
	
	SysTick_Delay_Ms(100);
	LoRa_SendString(LORA_SET_ADDR);//地址00 00
	
	SysTick_Delay_Ms(100);
	
	LORA_MD0=0;//退配置
	
	SysTick_Delay_Ms(100);
	
	LoRa_USART_Config(9600);

}

4.验证
发送:

int main(void)
{
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
	
	LED_Init();
	
	uart_init(115200);
	
	printf("这是一个串口lora实验\n");
	printf("\n");
	
	LoRa_Set();

	while(1)
	{
		DS1_TOGGLE
		SysTick_Delay_Ms(1000);
		LoRa_Usart_Send(num,2);
	}
}

接收:

void USART3_IRQHandler(void)
{

    uint8_t Temp;
	
    if (USART_GetITStatus(USART3,USART_IT_RXNE)!=RESET) 
	{
        Temp = USART_ReceiveData( USART3 );
		//简单粗暴,直接打印,我就是想看看有没有配置成功返回ok就行
		//平时要是用的画就是放进数组中即可
		printf("%c",Temp);			
    }
	USART_ClearITPendingBit(USART3,USART_IT_RXNE);
}

2.其他

这篇文章没有其他,哈哈哈哈哈哈,我下楼买盒饭了

总结

真是能分层就分层、能分模块就分模块啊,乱七八糟。
ps:以后就以这种形式学习了,爽啊

  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
ATK-LORA-01无线串口模块用户手册是一本详细介绍ATK-LORA-01无线串口模块使用方法的说明书。这款无线串口模块采用了LoRaWAN的技术,可以实现可靠地无线通信。用户手册中包含了模块的物理特性、功能特点、使用方法以及示例程序等全面的介绍和实用的指导。 手册首先介绍了ATK-LORA-01无线串口模块的硬件特性,包括模块的尺寸、工作电压、接口定义和引脚说明等。接着,手册详细介绍了模块的功能特点,包括数据传输距离、通信速率、功耗等多个方面,为用户提供了使用模块前的参考数据。 用户手册的核心内容是实用的使用方法介绍。手册中包含了ATK-LORA-01无线串口模块的软件配置、数据传输和固件升级等方面的操作指南。该模块支持多种传输模式和协议,并提供了多种数据类型传输接口。手册通过图文并茂的方式,展示了模块使用方法,包括AT指令的使用、配置参数的设置及状态指示灯等。 在手册的最后,附有示例程序供用户参考。该示例程序包含了数据采集、射频通信和数据解析等关键过程,可直接应用于实际工程项目。用户可通过模块提供的软件API,快速实现无线通信和数据传输等功能,提高工作效率。 总之,ATK-LORA-01无线串口模块用户手册是一本针对该产品进行全面介绍和操作指导的说明书,为初学者提供了详细的操作方法和实现思路。同时,也提供了高级用户参考和拓展该模块功能的示例程序。该手册内容丰富、实用性强,适合广大使用该产品的用户。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值