STM32+Zigbee模块实现串口通信获取传感器数据

这篇具有很好参考价值的文章主要介绍了STM32+Zigbee模块实现串口通信获取传感器数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.所用的资源

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

2.Zigbee模块简介

DL-22无线串口模块
STM32+Zigbee模块实现串口通信获取传感器数据

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发送数据的命令。
STM32+Zigbee模块实现串口通信获取传感器数据
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://www.toymoban.com/news/detail-404860.html

到了这里,关于STM32+Zigbee模块实现串口通信获取传感器数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 通过串口中断的方式进行ASR-01S模块与STM32通信(问题与解决)

    最近在做一个智能家居的项目,需要实现语音控制的功能,于是我选用了ASR-01S模块与STM32通信,这个模块最大的好处在于有配套的编程软件和语音库,不用自己训练且编程简单(少儿编程的程度)。ASR-01S的代码架构在这不多说,总之在收到语音后它会通过串口发送一串命令给

    2024年04月22日
    浏览(49)
  • # 项目一:‍‍‍STM32+串口DMA+RS485+MODBUS+传感器实现SO2的测试

    通过STM32控制传感器实现气体浓度的测量:RS485+MODBUS+串口DMA+定时器。 其中,USART2负责控制数据的发送和接受,USART3负责将询问帧、应答帧以及处理后数据打印出来,TIM1负责每隔1秒发送一次询问帧。 持续更新手中的项目(导师给的活)经验。。。 打工人加油🐱‍🚀🐱‍🚀

    2024年02月11日
    浏览(36)
  • MQ-7一氧化碳传感器模块功能实现(STM32)

            首先来认识MQ-7模块,MQ-7可以检测空气中的一氧化碳(CO)浓度。他采用半导体气敏元件来检测CO的气体浓度,其灵敏度高、反应速度快、响应时间短、成本低廉等特点使得它被广泛应用于智能家居、工业自动化、环保检测等领域。         MQ-7模块的工作原理 基于

    2024年02月03日
    浏览(50)
  • ZIGBEE协议栈通信——阿里云上传数据(STM32)(一)

    Zigbee是一种低功耗、低成本的无线通信协议,特别适用于物联网设备之间的通信。Zigbee协议栈是一组硬件和软件层级结构,用于支持Zigbee设备之间的通信。 Zigbee协议栈通常由以下几个层级组成: 1. 物理层(Physical Layer):负责处理物理无线通信的细节,例如频率、功率控制和

    2024年02月02日
    浏览(38)
  • STM32(1)-简单实现串口收发与通信

    本文通过串口收发实验来说明具体的串口的使用过程,以及与其他外设通过串口进行通信从而实现相关功能。 前言 在STM32里,串口通信是USART,STM32可以通过串口和其他设备进行传输并行数据,是全双工,异步时钟控制,设备之间是点对点的传输。对应的STM32引脚分别是RX和TX端

    2024年02月08日
    浏览(38)
  • STM32CubeMX实现USART串口通信

    硬件:stm32f103c8t6核心板 软件:STM32CubeMX 6.6.1 keil5 mdk 这里就不再详细介绍了,详细请参考上一篇博客: https://blog.csdn.net/qq_55894922/article/details/127232999?spm=1001.2014.3001.5501 若点击 Manage embedded software packages 后,出现失败,则需要随便点击其它任一选项,进行下载一些文件,比如点

    2023年04月17日
    浏览(52)
  • STM32通过DMA方式实现串口通信

    目录 一、DMA工作原理  二、创建工程项目 三、编写代码 1.在main.c写入以下函数 2.main函数中的while循环中写入以下代码

    2024年02月15日
    浏览(41)
  • # STM32中断方式实现串口通信(标准库)

    主要任务 : 1)当stm32接收到字符“s”时, 停止持续发送 “hello windows!”; 当接收到字符“t”时, 持续发送 “hello windows!”; 2)当stm32接收到字符“stop stm32!”时,停止持续发送“hello windows!”; 当接收到字符“go stm32!”时,持续发送“hello windows!” 实验工具: (1)软件 标

    2024年02月11日
    浏览(32)
  • FPGA与stm32实现串口通信(stm32发,FPGA收)

    要使用FPGA与STM32实现串口通信,以下是一般的步骤: 配置STM32的串口模块:使用STM32的库函数或者寄存器配置,选择一个可用的串口模块(例如USART1、USART2等)并设置相应的波特率、数据位、停止位等参数。确保STM32串口的引脚与FPGA连接正确。 配置FPGA与STM32之间的通信接口:

    2024年02月14日
    浏览(33)
  • 【STM32】STM32F103C8T6串口通信,实现3个串口收发数据

    串口通信(Serial Communications)实现单片机与电脑或者其它外设进行通信,通信时只需两根线(TX,RX)就可以实现数据传输。STM32f103有三个串口,分别为串口1(RX PA10, TX PA 9),串口2(RX PA3,TX PA2),串口3(RX PB11,TX PB10)。 以下代码是配置三个串口: usart.c usart.h main.c 注意,

    2024年02月12日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包