(三)STM32串口2发送指令打开关闭LED(添加指定时间定时打开和关闭)

最终要实现的功能:

1、STM32采集温湿度通过串口1发送至AIR800,然后通过AIR800将温湿度上传至阿里云
2、阿里云物联网云平台下发命令通过AIR800控制STM32的LED亮灭(打开或关闭功能,或者定时 自动打开和自动关闭)
3、通过nrf24l01实现点对点通信,阿里云下发数据至air800,STM32(A)串口2接收数据之后进行判断,如果需要控制另一个STM32的LED灯,则会将数据发送至另外一个STM32(B),STM32(B)通过数据判断执行相应的功能

本模块实现的功能:
串口2发送“led on”“ledoff”打开和关闭LED
串口2发送“set21232334”格式类型字符串进行指定时间打开和关闭LED

在这里插入图片描述

在这里插入图片描述

串口2发送的字符串"set12401241"中设置12点40分打开led,到达1241自动关闭,时间长短自己定
在这里插入图片描述
串口2发送的字符串"set12401241"中1240代表12点40分打开led
在这里插入图片描述

串口2发送的字符串"set12401241"中1241代表12点41分关闭led
在这里插入图片描述

在这里插入图片描述

一 :程序编写

1、在串口2的中断函数中添加数据处理部分
在这里插入图片描述

	//对接收到的数据做判断
	if(USART2_RX_BUF[0]=='l'&&USART2_RX_BUF[4]=='o')//接收到ledon
		{
				recv_flag=1;	
		}
		else if(USART2_RX_BUF[0]=='l'&&USART2_RX_BUF[5]=='f')//接收到ledoff
		{
				recv_flag=2;
		}
		
		//这是设置定时模式
		if(USART2_RX_BUF[0]=='s'&&USART2_RX_BUF[1]=='e'&&USART2_RX_BUF[2]=='t')
		{
			
				memset(set_time,0,sizeof(set_time));//将数组清零
				strcpy(set_time,USART2_RX_BUF);//将定时数据copy到另外一个数组中,防止再次接受数据时清空
		}

2、在主函数中添加执行操作

					//这是开启时间
		if(set_time[3]-0x30==calendar.hour/10&&set_time[4]-0x30==calendar.hour%10&&set_time[5]-0x30==calendar.min/10&&set_time[6]-0x30==calendar.min%10)
		{
				settime_flag=1;
		}
		//这是关闭时间
		else if(set_time[7]-0x30==calendar.hour/10&&set_time[8]-0x30==calendar.hour%10&&set_time[9]-0x30==calendar.min/10&&set_time[10]-0x30==calendar.min%10) 
		{
					settime_flag=2;
   }
		
		//这是执行定时功能时执行的操作
		if(settime_flag==1)
		{
			LED0=0;
		}
		if(settime_flag==2)
		{
			LED0=1;
		}
		
				//这是开关执行的操作
		if(recv_flag==1)
		{
			LED1=0;
		}
		if(recv_flag==2)
		{
			LED1=1;
		}

3、下面是我用串口2发送数据,转发到串口1中,已验证的确发出去了,实验效果前面已经看到了
在这里插入图片描述

如果想要同时在OLED上显示温湿度和时间日期,可以添加按键换页操作进行显示,毕竟一个屏幕显示不开

接下来是STM32将采集的温湿度通过串口1发送至AIR800,AIR800进行接收处理并上传至阿里云

  • 7
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 15
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永栀哇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值