[经验] 【Nucleo G071评测】接上串口LORA模块进行实验&远程控制继电器

donatello1996   2019-1-27 22:59 楼主
原计划中需要用到两个LORA模块进行无线串口数据透传,大致的框图如下,仅仅是做了一个非常简单的示意图: 17.jpg G0板子和CH340串口模块都连上LORA模块,两个LORA模块配置好通信的频率信道等,通过串口与G0板子和CH340模块通信,并且为了加强信号,两个LORA模块均使用5V供电,插上专用天线: IMG_20190127_224054.jpg CH340模块连接电脑,可虚拟成串口: IMG_20190127_224210.jpg G0板子单独供电,进行透传工作: IMG_20190127_224528.jpg 使用语句 sprintf(s,"%.1f℃ %.1f%%\n",temper_value,humi_value); UART1_Send_String(s); 并循环执行,可在虚拟串口终端打印温湿度信息: 18.jpg 光检测不够,再做个控制,如远程控制一个继电器,在中断处理函数中加入代码,检测电脑端串口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); } 19.jpg IMG_20190127_231518.jpg 本帖最后由 donatello1996 于 2019-1-27 23:18 编辑

回复评论 (1)

你好能看下你串口接收是怎么写的么,我的搞了半天中断接收没处理好很尴尬
点赞  2019-3-25 20:00
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复