IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STM32+Zigbee模块实现串口通信获取传感器数据 -> 正文阅读

[嵌入式]STM32+Zigbee模块实现串口通信获取传感器数据

1.所用的资源

1.两个Zigbee透传模块
2.两块32板(我手上的是VET6和RCT6的两块板子),其它的板子也可以,不过注意一下启动文件对应
3.颗粒物传感器

2.Zigbee模块简介

DL-22无线串口模块
在这里插入图片描述

1.工作模式分为点对点和广播模式
点对点模式,要设置一个发送端,一个接收端,根据它说明书进行设置就好,还需要设置相同的信道,信道就是与传输数据的通道,不同的信道不会相互干扰
2.广播模式,所有的Zigbee模块都在同一个信道,任何一个模块发出的数据都可以被其它模块接收
我这里采用的是点对点模式,根据说明书已设置好发送与接收

3. STM32板上用到的资源

1.发送端32板:用到三个USART串口,串口1用于检验单独节点传感器数据是否采集成功,与串口助手通信,在确保传感器数据采集ok的情况下也可以不用,串口2用于与采集传感器数据,串口3用来连接Zigbee模块。
2.接收端32板:用到两个USART串口,串口1用于与串口助手通信,串口2用于连接Zigbee模块。
3.我这里串口对应的板子引脚
串口1:PA9 PA10
串口2: PA2 PA3
串口3: PB10 PB11

4.代码部分

1.在之前记录的串口通信博客的基础上。
2.Zigbee模块其实就是透传作用,发送端通过串口2采集颗粒物传感器数据到单片机内,通过串口3传给Zigbee模块,两个Zigebee模块通信,接收端Zigbee模块通过串口2将接收的数据传到板内,再通过串口1与串口助手进行通信。所以关键的地方就在发送端的串口2接收传感器数据完成后,把数据通过串口3发送到Zigbee模块,所以需要在串口二的中断函数里面加入串口3发送数据的命令。
在这里插入图片描述
3.发送端串口2中断

//功能:串口2中断服务程序,接收到数据会进入这个函数
//参数:无
//返回:无
 
 u8 USART_RX_BUF[10];//定义接收数组,看传感器返回的有多少字节数据
 u8 USART_RX_STA=0;//数组标志位,如第0位、第一位
 static char  start=0;  //开始接收数据标志位

void USART2_IRQHandler(void)
{
  u8 Res=0;//定义一个数来接收每次读取的数据
   if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)  //接收中断,每一个字节都会中断一次
    {
        Res =USART_ReceiveData(USART2);	//读取接收到的字节数据
        //接收数据时不要随便加入占用时间的命令,如串口打印,会影响下面数据字节的接收
      
			if(Res == 0xFF) //如果接收的第一位数据是0XFF(这个是查看传感器的手册得知的,这里相当于进行校验)
            {
                 start=1;   //开始接收数据标志位,一旦第一个接收正确,就就继续向下接收
            }

            if(start== 1)
            {
                USART_RX_BUF[USART_RX_STA] = Res ; //把接收到的数据存到数组里面		
                USART_RX_STA++;//数组标志位加1
                if(USART_RX_STA >= 10 && (USART_RX_BUF[1]==0X01))//这里还校验了接收的第二个数据
                    {
                     printf("PM2.5:%d\n",USART_RX_BUF[3]);//通过                         串口1打印接收数组里的数据	
                        							  	USART_SendData(USART3,USART_RX_BUF[3]);	//将数据通过串口3发出							  uart3_send_buff(USART_RX_BUF,10);
                        USART_RX_STA=0;//重新开始接收   
                        USART_RX_BUF[0] = 0;
					              start=0;
                    }
            } 
        
		}
	}		

4.接收端的代码就和之前串口采集传感器数据主动上传的差不多了,只是把采集传感器的数据换成了采集Zigbee获得的数据。
下面是发送端和接收端的完整代码:
百度网盘接:https://pan.baidu.com/s/1pVGY3GZsY5feTuPM7yQuqw
提取码: CCCC

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-09-24 21:12:15  更:2022-09-24 21:14:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 14:52:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码