|
【Nucleo G071评测】接上串口LORA模块进行实验&远程控制继电器
[复制链接]
本帖最后由 donatello1996 于 2019-1-27 23:18 编辑
原计划中需要用到两个LORA模块进行无线串口数据透传,大致的框图如下,仅仅是做了一个非常简单的示意图:
G0板子和CH340串口模块都连上LORA模块,两个LORA模块配置好通信的频率信道等,通过串口与G0板子和CH340模块通信,并且为了加强信号,两个LORA模块均使用5V供电,插上专用天线:
CH340模块连接电脑,可虚拟成串口:
G0板子单独供电,进行透传工作:
使用语句
sprintf(s,"%.1f℃ %.1f%%\n",temper_value,humi_value);
UART1_Send_String(s);
并循环执行,可在虚拟串口终端打印温湿度信息:
光检测不够,再做个控制,如远程控制一个继电器,在中断处理函数中加入代码,检测电脑端串口LORA模块发出的数据,第5个字节的数据即rx_buf[4]控制PD6引脚电平,PD6上再接一个继电器,就可以实现远程控制继电器,为1则控制继电器闭合,为2则控制继电器断开:
void UART_DMA_Get()
{
if(recv_end_flag==1)
{
recv_end_flag=0;
//printf("rx_buf=%s\n",rx_buf);
if(rx_buf[0]==0x01)
{
TIM3->CCR1=rx_buf[1];
TIM3->CCR3=rx_buf[2];
TIM3->CCR4=rx_buf[3];
if(rx_buf[4]==0x01)
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_6,0);
else if(rx_buf[4]==0x02)
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_6,1);
}
}
HAL_UART_Receive_DMA(&huart1,(unsigned char*)rx_buf,BUFFERSIZE);
}
|
|