【毕业设计】基于zigbee的智能鱼缸(鱼塘)养殖系统

简介

给大家介绍一下这个单片机项目。
个人体会:
当时是因为毕业设计,在网上查看相关资料时,发现有一些人,是接这个种毕业设计项目的,要好几千。我又不想花钱,就慢慢在B站上翻的学习资料(感谢B站让我完成80%的内容,感谢喜欢分析的大佬们)。这个毕业设计还是蛮有意义的,是实习的时候做的,白天上班,晚上做毕设,一天的社畜。不想花钱的学弟学妹们,可以作为参考。特别是用到了ZigBee组网的同学。

基于zigbee的智能鱼缸(鱼塘)养殖
本系统主要用到的ZigBee协议栈基础代码分享
链接:

1 项目介绍

该项目是物联网三层架构,感知层、网络层、应用层。

1.1 感知层*

通过ZigBee的协议栈进行组网,实现终端采集传感器的各项数据,在通过组网无线传输将数据发送到协调器。协调器利用串口传输将数据发送至Coterx-A53(6818)开发板子。

1.2 网络层:

在进行网关数据处理,通过腾讯云服务提供的公网IP实现TCP可靠传输将数据发送至云服务器中,数据在转发至手机APP中,进行显示和下发。

1.3 应用:

系统设计了手机APP,通过QT可视化界面交互编程,实现Coterx-A53(6818)开发板的数据显示和手机APP的实时监测传感器采集的数据,确保实时性的同时,能够让用户更加的方便,并且能够根据不同鱼类进行修改相关的阈值,来进行智能化控制单片机的外部设备,达到水体环境调节的作用。

控制部分可以采用自动控制和用户预定时控制用户手动控制,手机APP或者是Coterx-A53(6818)下发命令,鱼塘环境设备根据指令做出相应的动作;当数据超过阈值,设备自动进行处理并警报,当水体环境下降至正常状态,警报结束。总体功能分为:数据采集功能,数据执行设备,用户手动设备。

2 系统架构

在这里插入图片描述

3 实验效果

视频:https://www.bilibili.com/video/BV1ZX4y1n78u/?vd_source=bd8f37dbcfa78eb9a2851c0ec844f419

4 实验代码

4.1 ZigBee底层代码

4.1.1 ZigBee基础协议栈

4.1.1.1 ZigBee终端节点:接收:

主要用于接收,协调器AF射频发送的数据或者指令

void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )
{
   
  uint16 flashTime;
  char buf[10]={
   0};
  switch ( pkt->clusterId )
  {
   
    case SAMPLEAPP_PERIODIC_CLUSTERID:
    
   // HalUARTWrite ( 0, pkt->cmd.Data, 10 );
    //用一个缓冲区接收数据
      /*
      buff[0] = 步进电机指令
      buff[1] = 水阀1(加水)继电器
      buff[2] = 水阀2(放水)继电器
      buff[3] = 氧气泵(增氧)继电器
      1表示开,0表示关闭
      */
    sprintf(buf,"%s",pkt->cmd.Data);
    
    if(buf[0] == '1')
    {
   
      Motor_up();
      flag = 1;
    }
    else if(buf[1] == '1')
    {
   
      
    }
      break;
      

    case SAMPLEAPP_FLASH_CLUSTERID:
      flashTime = BUILD_UINT16(pkt->cmd.Data[1], pkt->cmd.Data[2] );
      HalLedBlink( HAL_LED_4, 4, 50, (flashTime / 4) );
      break;
  }
}

上面这个接收协调器数据的函数时ZigBee协议自带的

 // Received when a key is pressed
        case KEY_CHANGE:
          SampleApp_HandleKeys( ((keyChange_t *)MSGpkt)->state, ((keyChange_t *)MSGpkt)->keys );
          break;

        // Received when a messages is received (OTA) for this endpoint
        case AF_INCOMING_MSG_CMD:
          SampleApp_MessageMSGCB( MSGpkt );
          break;
4.1.1.2 ZigBee终端节点:发送:

这是点对点模式的ZigBee,目的是将终端节点采集到的数据发送至协调器的函数。

void SampleApp_Send_P2P_Message( void )
{
    
  uint8 str[15];
  uint8 temp;
  uint8 water = 0;
  float height =0;
  float perence;
  perence = GetFTU();
  height = GetWater();
  if((int)height>0)
  {
   
    water = 1;
  }else water = 0;
 
  //温度传感器
  temp =  ReadDs18B20();
  if(water == 1)
  {
   
    P0_1 =1;
    on_flag = 0;
  }
  str[0] = 49;
  str[1] = temp/10+48;
  str[2] = temp%10+48;
  str[3] = (int)perence/1000+48;
  str[4] = (int)perence/100%10+48
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值