基于无线传感器网络的压力采集系统(附详细使用教程+完整代码+原理图+完整课设报告)


🎊项目专栏:【Zigbee课程设计系列文章】(附详细使用教程+完整代码+原理图+完整课设报告)

前言

  • 👑由于无线传感器网络(也即是Zigbee)作为🌐物联网工程的一门必修专业课,具有很强的实用性,因此很多院校都开设了zigbee的实训课程;
  • 👑同时最近很多使用了我的单片机课设的同学又来私信咨询我基于Zigbee的的课程设计的相关问题;
  • 👑所以为了帮助各位有需要的同学顺利完成自己的课程设计,有个顺利的假期,同时为了方便各位想要学习ZigBee的同学查找学习,建立了本专栏。
  • 💞但是由于笔者正在读研,每天的任务比较重,只能在从实验室回来后,晚上抽一个小时的时间来写,所以,更新不易,靠爱发电。

在这里插入图片描述

正在更新中~ ✨

🚨 我的项目环境:

  • 平台:Windows 11
  • 编译器:IAR for 8051 8.10
  • Zigbee协议栈:Zstack-CC2530-2.5.1a
  • 芯片型号:CC2530

在这里插入图片描述

🎊无线传感器网络专栏地址:【Zigbee课程设计系列文章】(附详细使用教程+完整代码+原理图+完整课设报告)


提示:以下是本篇文章正文内容,下面案例可供参考,代码链接以及电路图已经放在文末,点击获取,如失效请私信


1 实物图与功能介绍

  1. 终端数据采集:基于 HX711 压力传感器完成物理量到数字信号的转换,终端节点通过 ADC 采样实现压力数据的实时获取​
  2. 无线数据传输组网:各终端节点通过 ZigBee 协议栈构建的无线传感器网络,将压力数据帧以 IEEE 802.15.4 标准格式发送至协调器节点​
  3. 协调器数据处理:协调器节点通过处理事件解析机制,对多终端上传的压力数据进行聚合处理与校验
  4. LCD数据展示:协调器通过 SPI 接口驱动 LCD 显示模块,实时展示各终端节点的压力数据​
  5. 串口数据交互接口:协调器将汇总的压力数据按自定义通信协议打包,通过 UART 接口传输至 PC 端监控软件

在这里插入图片描述

在这里插入图片描述

2 系统设计

2.1 系统框架

在这里插入图片描述

2.2 硬件选型

压力传感器HX711

在这里插入图片描述

ZigBee模块开发板

在这里插入图片描述

3 硬件设计原理图

在这里插入图片描述

4 软件设计

4.1 HX711驱动代码

unsigned long Weight_Maopi = 0; //皮重
#define GapValue 400
//****************************************************
//延时函数
//****************************************************
void Delay__hx711_us(void)
{
  asm("nop");  
  asm("nop");  
}

//****************************************************
//读取HX711
//****************************************************
unsigned long HX711_Read(void)	//增益128
{
  unsigned long count; 
 
}

//****************************************************
//称重
//****************************************************
long Get_Weight()
{
 
}



//****************************************************
//获取毛皮重量
//****************************************************
void Get_Maopi()
{
  Weight_Maopi = HX711_Read();	
} 

void hx711_init()
{}

4.2 协调器定时器处理函数

  if ( events & SAMPLEAPP_SEND_PERIODIC_MSG_EVT )
  {
    //协调器定时输出数据
    {
      uint8 buff[20]={0};
      uint8 i=0;
      for(i = 0;i<nodeCount;i++){
        //串口输出字符串
        sprintf(buff,"Net:%04X Weight:%dg\r\n",nodeDataArray[i].netAddress,nodeDataArray[i].Weight);
        HalUARTWrite(0, buff, osal_strlen(buff));
        
        // OLED显示
        sprintf(buff,"%04X G:%dg",  nodeDataArray[i].netAddress, nodeDataArray[i].Weight);
        //HalUARTWrite(0, buff, osal_strlen(buff));
        HalLcdWriteString(buff, HAL_LCD_LINE_3+i); //LCD显示  
      }
    }
    osal_start_timerEx( SampleApp_TaskID, SAMPLEAPP_SEND_PERIODIC_MSG_EVT,
        (SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT ));
    return (events ^ SAMPLEAPP_SEND_PERIODIC_MSG_EVT);
  }

4.3 协调器接收无线信息处理函数

void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )
{
  uint16 flashTime;
  switch ( pkt->clusterId )
  {
    case SAMPLEAPP_P2P_CLUSTERID:
      if(pkt->cmd.Data[0]==1){
        uint16 netAddress = pkt->srcAddr.addr.shortAddr; //读出数据包的 16 位短地址
        long weight = (long)pkt->cmd.Data[1] <<  0 |
                      (long)pkt->cmd.Data[2] <<  8 |
                      (long)pkt->cmd.Data[3] << 16 |
                      (long)pkt->cmd.Data[4] << 24;
        UpdateWeight(netAddress, weight);
      }
      break;    

4.4 终端节点无线发送压力函数

void SampleApp_Send_P2P_Message( void )
{
  uint8 buf[10]={0};
  int len=0;
  char strTemp[20];
  long weight=Get_Weight();  //称重
  
  if(weight>=0){
    buf[0]=1;
    //LCD 显示
	..........

    //格式化数据上传协调器
   .................
    len=5;
  }
  else{}

  if ( AF_DataRequest( &SampleApp_P2P_DstAddr, &SampleApp_epDesc,
                       SAMPLEAPP_P2P_CLUSTERID,
                       len,
                       buf,
                       &SampleApp_TransID,
                       AF_DISCV_ROUTE,
                       AF_DEFAULT_RADIUS ) == afStatus_SUCCESS )
  {
  }
  else
  {
    // Error occurred in request to send.
  }
}

5 链接

资料详情
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  下载链接1🔐:点击跳转下载➡️基于无线传感器网络的压力采集系统(附详细使用教程+完整代码+原理图+完整课设报告)
   链接易失效,亦可直接私信我要!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Stanford_sun

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

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

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

打赏作者

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

抵扣说明:

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

余额充值